关注公众号,发现CV技术之美
YOLOv8已经加入了两个跟踪算法,方便对目标检测和分割的结果进行跟踪,可以直接在命令行使用,当然也可以用Python代码调用,非常方便。
以下是相关特性:
这两个跟踪算法是 BoT-SORT(https://github.com/NirAharon/BoT-SORT,目前在MOT17数据集上排名第二)和 ByteTrack(https://github.com/ifzhang/ByteTrack,ECCV 2022),不指明参数情况下使用BoT-SORT。
这两个算法都是多目标跟踪算法,比较实用。
支持对跟踪算法的参数进行修改,修改配置文件即可:ultralytics/tracker/cfg。
与YOLOv8目标检测和分割算法结合,一如既往的简单好用,广泛支持视频流、摄像头、本地视频文件等。
跟踪速度也很快,但目标大小和多少也会影响到速度。
跟踪算法目前仅有CPU实现,如果有GPU实现就更完美了。
如果要使用跟踪算法,最好把YOLOv8更新到最新版本:
pip install --upgrade ultralytics
命令行使用的话,就一句话:
yolo track model=yolov8n.pt source="https://youtu.be/Zgi9g1ksQHc"
以上命令是对Youtube上的视频流进行跟踪,如果你对摄像头获取的数据进行跟踪,可以用这个:
yolo track model=yolov8n.pt source=0
source=0 代表使用摄像头的设备号是0,有多个摄像头的话,可以根据具体情况填写1,2...
对本地mp4视频文件进行目标跟踪:
yolo track model=yolov8n.pt source="example.mp4"
CV君发现使用官方给的视频流url测试,跟踪显示不太对,不知是bug还是我本地网络原因。
于是我把那个视频下载下来测试并保存:
yolo track model=yolov8n.pt source='ultralytics.mp4' save=True
视频会被resize到长边640进行处理,我机器的CPU是E3-1230 v2,比较老,15%左右的CPU占用,跟踪一帧的时间也只有大约12-25ms,平均17ms,此时使用的算法是BoT-SORT。
但比较恐怖的是,内存占用非常高:
这跟我Chrome浏览器有得一拼了。
为验证是不是算法的问题,我用bytetrack也进行了测试,发现内存占用也一样高。后来发现这应该是YOLOv8检测模型占用内存比较大(开始忘了这茬了~)。
检测结果视频效果如下:
好像跟踪效果还是很好的!
不过这是官方给的视频,CV君又下载了一个车辆道路视频测试,视频源地址:https://www.youtube.com/watch?v=dfVvEkKWvY4&ab_channel=OlivertheTat
这种道路上的视频特点是,目标尺度和光照变化比较大,长期出现和短暂出现的目标并存,效果如下:
可以看到并不是很理想,前方车辆多次跟丢,id变了又变,最后几帧马路上的红绿灯甚至都没检测出来,也有跟丢的情况。
运行时间也变长了,平均一帧23ms了:
因为YOLOv8默认的检测器是在COCO数据集上训练的,所以并不一定都是大家感兴趣的类别,真正使用的时候,大家需要替换成自己训练的目标检测器初始化目标。
总之,YOLOv8中的目标跟踪并非完美,但作为一个集成在一起的工具,已经可以很方便地帮助我们快速进行项目测试和开发了。
END,入群👇备注:YOLO文章来源:https://www.toymoban.com/news/detail-702482.html
文章来源地址https://www.toymoban.com/news/detail-702482.html
到了这里,关于我试用一下YOLOv8中的跟踪算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!