总目录
图像处理总目录←点击这里
二十四、目标追踪
24.1、多目标(手动检测)追踪
24.1.1、原理
目标检测:运行之后按下s,通过鼠标对某个目标进行检测,然后点击空格或者回车
目标追踪:opencv的八种追踪算法
-
BOOSTING Tracker:助推跟踪器
给定一个新的帧,分类器在前一个位置附近的每个像素上运行,并记录分类器的得分。对象的新位置是得分最大的位置 -
MIL Tracker:密尔跟踪器
它不会像助推跟踪器那样漂移,并且在部分遮挡下也能正常工作
比助推跟踪器更精确,但是失败率比较高。(最低支持OpenCV 3.0.0) -
KCF Tracker:kernelized correlation filters
比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。(最低支持OpenCV 3.1.0) -
CSRT Tracker:比KCF稍精确,但速度不如后者。(最低支持OpenCV 3.4.2)
-
MedianFlow Tracker:在报错方面表现得很好,但是对于快速跳动或快速移动的物体,模型会失效。(最低支持OpenCV 3.0.0)
-
TLD Tracker:TLD的误报非常多,所以不推荐。(最低支持OpenCV 3.0.0)
-
MOSSE Tracker:速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。(最低支持OpenCV 3.4.1)
-
GOTURN Tracker:一种基于深度学习的对象跟踪算法。最初的实现是在Caffe,目前已经移植到OpenCV跟踪API
24.1.2、代码
配置
–tracker 上面的追踪算法
--video ./videos/soccer_01.mp4
--tracker kcf
源码:github或者gitee
24.1.3、效果
24.2、多目标(自动检测)追踪
24.2.1、原理
目标检测
- Faster-RCNN
- SSD:本代码中使用的(速度快)
- YOLO v5
- Mask-RCNN
目标追踪
- dlib:说明文档
24.2.2、源码
配置
--prototxt mobilenet_ssd/MobileNetSSD_deploy.prototxt
--model mobilenet_ssd/MobileNetSSD_deploy.caffemodel
--video race.mp4
对应源码中的multi_object_tracking_slow.py
文件
源码:github或者gitee
24.2.3、效果
24.2.4、改进
对应源码中的multi_object_tracking_fast.py
文件
多线程实现
def start_tracker(box, label, rgb, inputQueue, outputQueue):
t = dlib.correlation_tracker()
rect = dlib.rectangle(int(box[0]), int(box[1]), int(box[2]), int(box[3]))
t.start_track(rgb, rect)
while True:
# 获取下一帧
rgb = inputQueue.get()
# 非空就开始处理
if rgb is not None:
# 更新追踪器
t.update(rgb)
pos = t.get_position()
startX = int(pos.left())
startY = int(pos.top())
endX = int(pos.right())
endY = int(pos.bottom())
# 把结果放到输出q
outputQueue.put((label, (startX, startY, endX, endY)))