首页 > 解决方案 > 如何为自定义类训练 DeepSORT 跟踪器?

问题描述

我想使用深度学习和计算机视觉技术检测和计算葡萄园中葡萄藤的数量。我正在使用 YOLOv4 对象检测器并在暗网框架上进行训练。我已经能够将 SORT 跟踪器集成到我的应用程序中并且运行良好,但我仍然遇到以下问题:

您可以在下中看到重新分配问题的示例。如您所见,在第 40 帧中,id 9 是一个金属柱,从第 42 帧开始,它被分配给一棵树

在寻找这些问题的原因时,我了解到DeepSORT是 SORT 的改进版本,旨在通过使用神经网络将轨迹与检测相关联来处理这个问题。

问题:

我面临的问题是为 Deepsort 训练这个特定模型。我已经看到作者使用余弦度量学习来训练他们的模型,但我无法为我的自定义类定制学习。我的问题如下:

  1. 我有一个带注释的(YOLO TXT 格式)图像数据集,我用它来训练 YOLOv4 模型。我可以为 Deepsort 跟踪器重复使用相同的数据集吗?如果是这样,那怎么办?

  2. 如果我不能重用数据集,那么如何创建自己的数据集来训练模型?

在此先感谢您的帮助!

标签: pythontensorflowcomputer-visionobject-detection

解决方案


是的,您可以对 DeepSORT 使用相同的类。SORT 分 2 个阶段工作,而 DeepSORT 增加了第 3 个阶段。第一阶段是检测,由 YOLOv3 处理,接下来是轨迹关联,由卡尔曼滤波器和 IOU 处理。DeepSORT 实现了第 3 阶段,即 Siamese 网络,用于比较当前检测之间的外观特征和每个轨道的特征。我见过使用 ResNet 作为特征嵌入网络的实现

基本上,一旦 YOLO 检测到你的类,你将裁剪后的检测图像传递给你的孪生网络,它将其转换为特征嵌入,并使用余弦距离将这些特征与过去的特征进行比较。

总之,您可以对 DeepSORT 和 SORT 使用相同的 YOLO 类,因为它们都需要一个由 YOLO 处理的检测阶段。


推荐阅读