This is a multiple object tracker with human label interface created by OpenCV and Python. Given a proper trained model (like a keras model in model directory in this repository), it can auto stop while the tracker lost the objects and auto retarget the objects.
- OS: Windows 7
- Python 3.5.2
- Keras 2.0.4
- OpenCV 3.1.0
Type python main.py at command prompt and choose the video to initialze tracker by drawing target objects.
Press 'h' in this tracker for more details.
OpenCV build-in tracker has been already performing very well. However, since video of this project is grayscale and our target object is very similar with the context, human involvement to label target object is inevitable. Here is our procedures for training auto stop model:
- Generate images that contain desired object by the tracker without auto stop model
- Randomly generate a bunch of image without object.
- Train the network by labeling image without object as 1 and image contains object as 0
After adding model in the tracker, if model detects there is no object in the any bounding boxes then the tracker will random a number of some candidates. If model predicts that there is beetle inside the candidate bounding box, tracking process continue with the candidate bounding box. Otherwise, tracking will stop and let's user to decide the next move.
In our case, we use and transfer ResNet50 as our predictive model.
The precision and recall of our autoupdate tracker is about 98% but the speed is around 1ps, I am trying to implement another state-of-art object detector YOLO and modify it to suit our case for faster performance.