【问题标题】:Generating data for image processing为图像处理生成数据
【发布时间】:2020-03-23 16:39:22
【问题描述】:

我是深度学习的新手,我正在从事一个与足球运动分析相关的爱好项目。我想使用足球视频并将它们转换为 2D 地图。我把这个过程分解成更小的步骤。第一步是能够检测球员和足球。

我正在考虑从预先训练的对象检测模型开始。我已经拍摄了一段视频并从中生成了图像。我在其中一张图像上使用了它,并附上了输出。它显然没有处理很多事情。解决这个问题的一种方法是进行一些迁移学习。为此,我将不得不生成自己的数据集。我能想到的唯一方法是将此图像切成窗口并手动将它们标记为球员和足球。

这似乎是一项乏味的任务。还有其他有效的数据生成方式吗?有哪些最佳做法?

【问题讨论】:

  • 数据标记很乏味,期间。您可以在 Amazon Turk 上上传您的图片供人们标记价格,或者您可以使用您现有的模型(如果足够好)生成您只需要更正的框。
  • 我只是使用没有修改的对象检测模型。显然,很多玩家都没有接受。不幸的是,它也没有生成错误分类的框来纠正。是的!数据标注很繁琐!将检查亚马逊土耳其人。谢谢。
  • 一种常见的技术是运行模型,保持良好的检测,用这些检测重新运行模型,冲洗并重复。你应该得到越来越多的标签。它不会取代您的工作,因为您仍然需要管理输出,但它可以避免您需要手工制作每个标签。哦,显然数据扩充是小型数据集的关键。

标签: tensorflow deep-learning object-detection


【解决方案1】:

这更有可能用于长期开发,但由于我已经写了类似的答案,所以在这里发布。

  1. 首先创建一个带有边界框的玩家数据集(大约 500-1k,然后使用增强来增加数千个)。您可以使用以下工具进行注释:

https://github.com/developer0hye/Yolo_Label(效果很好,但仅适用于 Windows)

https://github.com/AlexeyAB/Yolo_mark

https://github.com/heartexlabs/label-studio(这是一个用于许多其他任务的更复杂的注释工具)

使用这些工具,注释数据的时间不会超过几个小时。

有很多增强工具,例如 - https://github.com/mdbloice/Augmentor

https://github.com/wagonhelm/rotation_augment(如果你想在图像上使用旋转)

  1. 随着玩家移动,您需要具有良好 FPS 和合理 mAP 的东西。从我对许多对象检测模型的实验中,我发现 yolov3(暗网)是最稳定的。

我建议使用darknet YOLO,它是用C++编写的,你不需要编写任何主要代码,它会快速准确。

https://pjreddie.com/darknet/yolo/

如果你在 Linux 上使用这个 repo https://github.com/pjreddie/darknet

如果你在 Windows 上使用这个https://github.com/AlexeyAB/darknet

  1. 在训练之前,您需要为您的数据集找到最佳锚点大小。我编写了一个简单的 k-means 来查找任何与 yolo 兼容的数据集中的锚点大小。

https://github.com/zabir-nabil/yolov3-anchor-clustering

  1. 我做了一些小的定制(比如将 OpenCV/numpy 数组直接发送到模型)以在服务器(具有 REST 和 gRPC 的 tensorflow 模型服务器)上更快地运行暗网 python API。我还为它写了一个烧瓶服务器。你可以在这里找到它-

https://github.com/zabir-nabil/tf-model-server4-yolov3

有一些针对行人的预训练模型(您可以在 github 上轻松找到它们),但由于背景非常不同以及运动伪影,它们不会为您提供非常好的性能。

【讨论】:

  • 谢谢!我能够使用第 1 点中提到的工具对数据进行注释。我一定会检查暗网。你能解释一下第3点吗?最佳锚点尺寸是什么意思?每个类的数据点数是多少?
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 2019-01-12
  • 2013-09-21
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多