python - 如何为自定义类训练 DeepSORT 跟踪器?
问题描述
我想使用深度学习和计算机视觉技术检测和计算葡萄园中葡萄藤的数量。我正在使用 YOLOv4 对象检测器并在暗网框架上进行训练。我已经能够将 SORT 跟踪器集成到我的应用程序中并且运行良好,但我仍然遇到以下问题:
- 跟踪器有时会为对象重新分配一个新 ID
- 检测器有时会错误识别物体(导致错误跟踪)
- 跟踪器有时不会跟踪检测到的对象。
您可以在下图中看到重新分配问题的示例。如您所见,在第 40 帧中,id 9 是一个金属柱,从第 42 帧开始,它被分配给一棵树
在寻找这些问题的原因时,我了解到DeepSORT是 SORT 的改进版本,旨在通过使用神经网络将轨迹与检测相关联来处理这个问题。
问题:
我面临的问题是为 Deepsort 训练这个特定模型。我已经看到作者使用余弦度量学习来训练他们的模型,但我无法为我的自定义类定制学习。我的问题如下:
我有一个带注释的(YOLO TXT 格式)图像数据集,我用它来训练 YOLOv4 模型。我可以为 Deepsort 跟踪器重复使用相同的数据集吗?如果是这样,那怎么办?
如果我不能重用数据集,那么如何创建自己的数据集来训练模型?
在此先感谢您的帮助!
解决方案
是的,您可以对 DeepSORT 使用相同的类。SORT 分 2 个阶段工作,而 DeepSORT 增加了第 3 个阶段。第一阶段是检测,由 YOLOv3 处理,接下来是轨迹关联,由卡尔曼滤波器和 IOU 处理。DeepSORT 实现了第 3 阶段,即 Siamese 网络,用于比较当前检测之间的外观特征和每个轨道的特征。我见过使用 ResNet 作为特征嵌入网络的实现
基本上,一旦 YOLO 检测到你的类,你将裁剪后的检测图像传递给你的孪生网络,它将其转换为特征嵌入,并使用余弦距离将这些特征与过去的特征进行比较。
总之,您可以对 DeepSORT 和 SORT 使用相同的 YOLO 类,因为它们都需要一个由 YOLO 处理的检测阶段。
推荐阅读
- reactjs - 使用模拟 React Jest 测试组件
- php - 如何从api获取shopee商品售价
- javascript - 当树的宽度和高度增长或缩小时,如何使 D3.js 可折叠树重新调整 SVG 的大小
- mobile - 如何在 DialogFlow 更改我的手机号码?
- css - align-self:flex-end 和 margin-bottom: xpx 在 Safari 和 iOS 设备中无法正常工作
- python - 如何计算 CNN 第一线性层的输入?
- express - 批量更新 mongoose 和 express 文档中的对象数组
- haskell - 当输入无限列表作为参数时,用于检查列表长度是否大于给定数字的函数进入无限循环
- karate - 运行我正在使用 1.1.0 版本的测试用例后,Runner 被击中
- vue.js - Vue-chartjs 在页面调整大小之前不渲染图表