我正在尝试创建自己的数据集以供YOLO(你只看一次)。最初,我开始使用一个包含风景和动物图片的大型地理文件。我能够编写一个脚本来将动物的图像提取到单独的文件中。
我现在正处于将动物图像作为YOLO数据集的一部分使用的地步。但是,我在网上看到的所有例子都使用了注释文件,它们表示在较大图像中要检测的对象的位置。
就我而言,每个动物图片的全部内容都包含在边界框内。在这种情况下我该怎么办?
编辑:我的意思是:我是否仍然可以使用这些已经裁剪过的图像,然后在注释文件上注明边界框应该覆盖整个图像?
简单回答:不。如果像Yolo这样的物体检测,我们希望Yolo识别哪个是对象,哪个是非对象。当您创建边界框时,Yolo会将边界框标识为属于1类的正对象,并且边界框外部的部分将标识为非对象。
该模型将尝试学习如何区分对象与否,以及如何根据您的训练数据注释在精确坐标(x,y,w,h)上绘制边界框。在这种情况下,Yolo使用锚箱概念,Yolo会将最近的锚箱的大小调整为预测对象的大小。
当您创建自定义训练数据集时,yolo需要:带有边界框的注释图像+保存在文本文件中的边界框坐标,例如:
<object-class> <x_center> <y_center> <width> <height>
因此,您需要这些信息才能训练Yolo模型。
通常当你已经裁剪了数据集时,我认为它更适合于图像分类任务。或者,如果您能够创建脚本以区分动物和大图像,为什么不自动创建边界框注释和yolo协调相关图像的训练文本文件?
由于YOLO是一个对象检测工具而不是对象分类工具,它需要未剪切的图像来理解对象和背景。
为了理解YOLO如何看待数据集,请看看这个image
在这张图片中,假设我们需要注释汽车(类id-1),然后注释将作为 -
<class id> <Xo/X> <Yo/Y> <W/X> <H/Y>
where,class id,要注释的类的标签索引 Xo,边界框中心的X坐标 边界框中心的Yo,Y坐标 W,边界框的宽度 H,边界框的高度 X,图像的宽度 Y,图像的高度
有关YOLO注释的更多详细信息,请查看此medium post