在视频或摄像头流中跟踪对象是一项重要的技术,它可以帮助统计视频中不同对象的数量。本教程将详细介绍如何结合目标检测模型来实现自定义对象的跟踪。如果对对象跟踪的概念感兴趣,可以查看之前的文章《什么是对象跟踪?》。这里提供一个的链接,建议在阅读本文时同时打开。
在本教程中,将不再需要单独的特征提取模型来提取对象特征进行相似性比较。通过本教程,只需要带上目标检测模型,将使用通用模型来提取特征——更多细节,请查看关于零样本对象跟踪的文章。
要跟踪自定义对象,首先需要训练一个目标检测模型。目前,对象跟踪仓库支持两种选项——训练自定义的YOLOv5目标检测模型或使用Roboflow的一键训练解决方案。一旦用这两种选项中的任何一种训练了模型,就可以进入对象跟踪Colab笔记本了。注意:请保存一份副本到Drive中!
首先,将克隆零样本对象跟踪仓库。在仓库中,可以看到以下可供测试的视频:cars.mp4
和fish.mp4
。可以通过点击文件夹图标然后上传图标将自己的视频导入Colab进行测试。在本教程中,将在cars
上运行通用的COCO模型。
可以使用以下命令在Colab中查看这个视频(需要手动接受Google身份验证):!pip install -U kora
和from kora.drive import upload_public
,然后使用url = upload_public('data/video/cars.mp4')
上传视频,最后使用from IPython.display import HTML
和HTML(f"""""")
来显示视频。
然后将克隆CLIP作为通用零样本对象特征提取器:!git clone https://github.com/openai/CLIP.git CLIP-repo
和!cp -r ./CLIP-repo/clip ./clip
。安装一些依赖项:!pip install --upgrade pip
,!pip install -r requirements.txt
和!pip install ftfy
。有了这些,就准备好处理目标检测模型轨迹了。将clip_object_tracker.py
指向选择的视频,并决定想要使用哪个检测引擎。
使用YOLOV5时,对于自己的模型,请指定--weights
参数:!python clip_object_tracker.py --source ./data/video/cars.mp4 --detection-engine yolov5
。使用Roboflow Inference API时,对于自己的模型,请指定模型URL:!python clip_object_tracker.py --source data/video/cards.mp4 --url https://detect.roboflow.com/playing-cards-ow27d/1 --api_key ROBOFLOW_API_KEY
。脚本将顺序处理帧,进行检测和对象跟踪预测。
脚本运行完成后,它将保存到runs/detect/exp[num]
文件夹中。可以像这样下载这些视频以在主机设备上进行视觉评估:from google.colab import files
和files.download("./runs/detect/exp/cars.mp4")
。这是在处理后的汽车对象跟踪视频的视图。