当前位置:   article > 正文

我试用一下YOLOv8中的跟踪算法

bot-sort

关注公众号,发现CV技术之美

YOLOv8已经加入了两个跟踪算法,方便对目标检测和分割的结果进行跟踪,可以直接在命令行使用,当然也可以用Python代码调用,非常方便。

以下是相关特性:

  1. 这两个跟踪算法是 BoT-SORT(https://github.com/NirAharon/BoT-SORT,目前在MOT17数据集上排名第二)和 ByteTrack(https://github.com/ifzhang/ByteTrack,ECCV 2022),不指明参数情况下使用BoT-SORT。

  2. 这两个算法都是多目标跟踪算法,比较实用。

  3. 支持对跟踪算法的参数进行修改,修改配置文件即可:ultralytics/tracker/cfg。

  4. 与YOLOv8目标检测和分割算法结合,一如既往的简单好用,广泛支持视频流、摄像头、本地视频文件等。

  5. 跟踪速度也很快,但目标大小和多少也会影响到速度。

  6. 跟踪算法目前仅有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
de3166bce4b800abccc394f07d0ebed1.png

视频会被resize到长边640进行处理,我机器的CPU是E3-1230 v2,比较老,15%左右的CPU占用,跟踪一帧的时间也只有大约12-25ms,平均17ms,此时使用的算法是BoT-SORT。

但比较恐怖的是,内存占用非常高:

3c4f340f775a1a3bfc4a06ae8fcfb48c.png

这跟我Chrome浏览器有得一拼了。

为验证是不是算法的问题,我用bytetrack也进行了测试,发现内存占用也一样高。后来发现这应该是YOLOv8检测模型占用内存比较大(开始忘了这茬了~)。

检测结果视频效果如下:

好像跟踪效果还是很好的!

不过这是官方给的视频,CV君又下载了一个车辆道路视频测试,视频源地址:https://www.youtube.com/watch?v=dfVvEkKWvY4&ab_channel=OlivertheTat

这种道路上的视频特点是,目标尺度和光照变化比较大,长期出现和短暂出现的目标并存,效果如下:

可以看到并不是很理想,前方车辆多次跟丢,id变了又变,最后几帧马路上的红绿灯甚至都没检测出来,也有跟丢的情况。

运行时间也变长了,平均一帧23ms了:

d4164d1bf8b9727f794fc9b2fd1a1274.png

因为YOLOv8默认的检测器是在COCO数据集上训练的,所以并不一定都是大家感兴趣的类别,真正使用的时候,大家需要替换成自己训练的目标检测器初始化目标。

总之,YOLOv8中的目标跟踪并非完美,但作为一个集成在一起的工具,已经可以很方便地帮助我们快速进行项目测试和开发了。

END,入群声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】

推荐阅读
相关标签