在 YOLOv3 中训练自定义对象,它是如何工作的?

training custom object in YOLOv3, how does it work?

我有一个项目需要检测动漫风格视频中的人物

我刚刚在 GTX 1050TI 中使用 COCO 测试了 YOLOv3 608x608

然而速度只有大约 ~1.5FPS,但我的项目在 1050TI 上至少需要 10 FPS

1.I想知道类的数量会影响检测速度吗? (我假设COCO是要在图片中找到80种物体?如果我只需要找到一种物体,它会快80倍吗?)

2.when我输入图片训练,原图是1920*1080,在标注训练前需要调整到608x608吗?

3.is 我应该使用什么标记工具? in README.md at https://github.com/AlexeyAB/darknet <x> <y> <width> <height> 似乎需要手动计算和输入这似乎太难了,也许有一个工具我只需要裁剪图像中对象的位置?

4.if图像中物体不是正方形,YOLO怎么知道哪一部分是物体?如何避免将背景训练为对象?

我是否必须删除所有背景并将其填充为黑色,只保留图像中的对象?

5.is 输出总是一个盒子?我可以训练并获得输出作为掩码吗?如果我检测为 mask,它会比 box 慢,因为它似乎有更多信息吗?

6.to得到一个好的结果,我应该制作多少训练图像和测试图像?

我知道这只是 CV 中的一些菜鸟问题,但我真的很想知道这一点,而无需花费数周的培训时间并自己找出答案,将不胜感激!

3.

https://en.wikipedia.org/wiki/List_of_manual_image_annotation_tools

您应该可以使用一些图像标注工具来输出角坐标。

4.

有了足够多的不同背景图像进行训练,模型应该能够忽略背景。黑色背景仍然是背景。我想这是一种数据扩充,因此它可能有助于减少过度拟合。

5.

如果它不支持掩码 out-of-the-box,也许您想执行 background-subtraction 作为处理输出的额外步骤。

1) 在我看来,GTX 1050Ti 不足以测试 YOLO v3。因为,与之前的版本相比,YOLO v3 的模型尺寸(即层数)变得非常大。 类 的数量在这种情况下无关紧要。如果你想要更快的测试计算速度,你应该升级你的GPU,比如1070Ti。

2) 无论输入图像的大小如何,它都会被强制调整为pre-defined大小,如cfg文件所示,因此您不需要调整输入图像的大小。

1) 我认为这可能会稍微影响速度,因为当你使用较少 classes 时,你在每个 YOLO 层之前获得的卷积滤波器较少(你在 .cfg 文件中设置),但是不太可能加速 80 倍 2)也许?我的意思是,YOLO 会在训练和测试时调整它们的大小,所以如果你真的想要,也许你可以,但根据我的经验,高分辨率图像通常效果更好。 3) 我喜欢 OpenLabelling(你可以 Google 它并且它在 GitHub 上) 4) 你可能想给 YOLO 负片图像,里面什么都没有,以防止它们在背景上拾取,那里什么都没有 5)YOLO 不做掩码 6)大约每 class 1k 是可行的,你可以用 500,但经验法则是越多越好)

如果你有兴趣,我已经在 YouTube 上发布了 YOLO 的整个系列,所以你可能想看看:https://youtu.be/TP67icLSt1Y