python - 如何为自定义类训练 DeepSORT 跟踪器?

标签 python tensorflow computer-vision object-detection

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

  • 跟踪器有时会为对象重新分配一个新 ID
  • 检测器有时会错误识别对象(这会导致不正确的跟踪)
  • 跟踪器有时不会跟踪检测到的对象。

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

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

问题:

我面临的问题是为 Deepsort 训练这个特定模型。我看到作者使用了 cosine metric learning训练他们的模型,但我无法为我的自定义类(class)自定义学习。我的问题如下:

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

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

在此先感谢您的帮助!

最佳答案

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

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

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

关于python - 如何为自定义类训练 DeepSORT 跟踪器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67484547/

相关文章:

c++ - 如何计算 2D 和 3D 空间中多边形的中心

python - 如何检查当前tensorflow版本是否至少是python脚本中的特定版本?

python - 为什么 Adam 优化器不起作用?

python-3.x - 如何区分 python 中的护照和 PAN 卡扫描图像

Python:正则表达式或字典

python - 在404.html模板中显示Http404参数

tensorflow - 图像增强使性能变差

python - triangulatePoints() 方法的奇怪行为

python - 相同对象的缓慢相等评估 (x == x)

python - 提高 DNN 模型的准确性