• Stars
    star
    280
  • Rank 147,492 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 7 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Plug and Play Real-Time Object Detection App with Tensorflow and OpenCV

realtime_object_detection

Realtime Object Detection based on Tensorflow's Object Detection API and DeepLab Project

Version 1: use branch r1.0 for the original repo that was focused on high performance inference of ssd_mobilenet
(x10 Performance Increase on Nvidia Jetson TX2)

Version 2: use branch Master or to be additionally able to run and test Mask-Detection Models, KCF-Tracking and DeepLab Models (merge of the repo realtime_segmenation)

ROS Support: To use this Repo as ROS-Package including detection and segmentation ROS-Nodes use branch ros. Alternativley use the repo objectdetection_ros

About the Project

The Idea was to create a scaleable realtime-capable object detection pipeline that runs on various systems.
Plug and play, ready to use without deep previous knowledge.

The project includes following work:

  • optional download of tensorflow pretrained models
  • do Inference with OpenCV, either through video input or on selected test_images.
    supported Models are all research/object_detection as well as research/deeplab models
  • enjoy this project's own ssd_mobilenet speed hack, which splits the model in a mutlithreaded cpu and gpu session.
    Results in up to x10 performance increase depending on the running system
    ⇒ which makes it (one of) the fastest inference piplines out there
  • run statistic tests on sets of images and get statistical information like mean and median fps, std dev and much more
  • create timeline files measuring the exact time consumption of each operation in your model
  • inspect, summarize, quantize, transform and benchmark models with the provided scripts/
  • Use this Repo as ROS Package. the detection subscirbes a ROS Image topic and publishes the detection as ROS Node.

Inference:

  • create a copy of config.sample.yml named config.yml and only change configurations inside this file
    For example: If you are not interested in visualization: set VISUALIZE to False,
    or if you want to switch off the speed hack set SPLIT_MODEL to False,
  • to be able to use KCF_Tracking inside scripts/ run bash build_kcf.sh to build it and set USE_TRACKER to True to use it
    (currently only works for pure object detection models without SPLIT_MODEL)
  • new class (Model,Config,Visualizer) structure. Simply create your own test file with:
    from rod.model import ObjectDetectionModel, DeepLabModel
    from rod.config import Config
    
    model_type = 'od'                                              #or 'dl'
    input_type = 'video'                                           #or 'image'
    config = Config(model_type)
    model = ObjectDetectionModel(config).prepare_model(input_type) #or DeepLabModel
    model.run()
    
  • Alternativley run python + objectdetection_video.py or objectdetection_image.py or deeplab_video.py or deeplab_image.py or allmodels_image.py

Scripts:

To make use of the tools provided inside scripts/ follow this guide:

  • first change all paths and variables inside config_tools.sh to your needs / according to your system
  • When using the first time run: source config_tools.sh and in the same terminal run only once source build_tools.sh to build the tools. this will take a while.
  • For all following uses first run: source config_tools.sh(due to the exported variables) and after that you are able to run the wanted scripts always from the same terminal with source script.sh.
  • All scripts log the terminal output to test_results/

Setup:

Use the following setup for best and verified performance

  • Ubuntu 16.04
  • Python 2.7
  • Tensorflow 1.4 (this repo provides pre-build tf wheel files for jetson tx2)
  • OpenCV 3.3.1

Note: tensorflow v1.7.0 seems to have massive performance issues (try to use other versions)

Current max Performance on ssd_mobilenet:

  • Dell XPS 15 with i7 @ 2.80GHZ x8 and GeForce GTX 1050 4GB: 100 FPS
  • Nvidia Jetson Tx2 with Tegra 8GB: 30 FPS

Related Work:

  • objectdetection_ros: This Repository as ROS Package ready to use
  • test_models: A repo for models i am currently working on for benchmark tests
  • deeptraining_hands: A repo for setting up the ego- and oxford hands-datasets.
    It also contains several scripts to convert various annotation formats to be able to train Networks on different deep learning frameworks
    currently supports .xml, .mat, .csv, .record, .txt annotations
  • yolo_for_tf_od_api: A repo to be able to include Yolo V2 in tf's object detection api
  • realtime_segmenation: This repo was merged into v2.0
  • Mobile_Mask_RCNN: a Keras Model for training Mask R-CNN for mobile deployment
  • tf_training: Train Mobile Mask R-CNN Models on AWS Cloud
  • tf_models: My tensorflow/models fork which includes yolov2 and mask_rcnn_mobilenet_v1_coco
  • eetfm_automation: Export and Evaluation of TensorFlow Models Automation based on the Object Detection API

More Repositories

1

DataChad

Ask questions about any data source by leveraging langchains
Python
314
star
2

realtime_segmenation

Realtime Semantic Segmentation for Mobile Platforms based on Tensorflow's Deeblap Model
Python
84
star
3

whatsbot

python flask app serving as webhook for whatsapp business accounts making prompts to openai api
Python
64
star
4

AttractiveNet

AttractiveNet - Regressing on Facial Attractiveness with Neural Networks - An End-to-End Deep Learning Tutorial in Python.
Jupyter Notebook
35
star
5

deeptraining_hands

Dataset, necessary Scripts and trained SSD Model for detecting Hands in Realtime.
Python
31
star
6

yolo_for_tf_od_api

Files Added or Updated to be able to use yolo-darknet in tensorflows object detection api
Python
24
star
7

objectdetection_ros

ROS Object Detection Package [based on github/gustavz/realtime_object_detection]
Python
14
star
8

jaivus

JAIvus is a ChatGPT powered personal assistant implemented in python and deployed as streamlit app
Python
13
star
9

computer_vision

TUM Master Course "Computer Vision" Assignment Solutions
MATLAB
8
star
10

setup_jetsontx2

Scripts and Information to setup my jetson tx2 developer environment
C++
4
star
11

tf_training

Training Repository for Tensorflow Models (Currently mask_rcnn_mobilenet_v1_coco)
Python
4
star
12

music_generator

Android App for Music Generation. TUM Master Course Project
Java
3
star
13

roboSoccer_championship

Winner Team C++ Code of TUM Robosoccer Championship 2016
C++
3
star
14

audio-to-text

streamlit app to transcript audio to text using openai's whisper library
Python
3
star
15

text-to-speech

A simple tool to create speech from text to use as overlay for demo videos
Python
1
star
16

eetfm_automation

eetfm_automation: Export and Evaluate TensorFlow Model Automation based on TensorFlow Object Detection API
Python
1
star
17

test_models

Benchmark Testing Purpose: test model frozen graphs for my realtime_detection_api
PureBasic
1
star
18

codewars_challanges

Completed Codewars Challanges
Python
1
star
19

streamlit_terminal

Security Warning: This app allows execution of arbitrary commands which can be used to compromise your system
Python
1
star