我正在尝试为YOLO(You Only Look Once)创建自己的数据集。最初,我从一个包含风景和动物图片的大型geotiff文件开始。我成功编写了一个脚本,将动物的图像提取到单独的文件中。
现在,我希望将这些动物图像用作YOLO数据集的一部分。然而,我在网上看到的所有示例都使用了标注文件,这些文件指出了待检测对象在较大图像中的位置。
在我的情况下,每张动物图片的整体就是应该包含在边界框内的内容。在这种情况下,我该怎么办?
编辑:我想问的是:我是否仍然可以使用这些已经裁剪的图像,然后在标注文件中注明边界框应覆盖整个图像?
回答:
简单回答:不可以。在像YOLO这样的对象检测任务中,我们希望YOLO能够识别哪些是对象,哪些不是对象。当你创建边界框时,YOLO会将边界框内的部分识别为属于某一类的正样本,而边界框外的部分则被识别为非对象部分。
模型会尝试学习如何区分对象和非对象,以及如何根据你的训练数据标注在精确的坐标(x,y,w,h)上绘制边界框。在这种情况下,YOLO使用了锚框的概念,YOLO会调整最近的锚框大小以适应预测对象的大小。
当你创建自定义训练数据集时,YOLO需要:带有边界框的标注图像 + 边界框坐标,这些信息保存在文本文件中,例如:
<object-class> <x_center> <y_center> <width> <height>
所以你需要这些信息来训练YOLO模型。
通常,当你已经拥有裁剪好的数据集时,我认为它更适合图像分类任务。或者,如果你能够编写脚本从大图像中区分出动物,为什么不自动创建边界框标注和YOLO坐标训练文本文件呢?