问题描述
我使用 Open Images 数据集为两个类训练 CNN:人、手机。问题是 Yolo 每张图像只检测 1 个类。例如,如果图像包含人和手机,则只会检测到手机。 Example Output。如果只有人类,那么所有人类都会被成功检测到。我认为问题在于数据集只有每个图像标记了 1 个类的图像。我在数据集中有很多图像,其中两个类都存在,但只有其中一个用标签标记。这可能是问题吗?
我该如何解决问题?
Person
Mobile_phone
这里是 .data 文件:
classes = 2
train = data/train.txt
valid = data/test.txt
names = data/obj.names
backup = /mydrive/yolov4/backup
感谢您的帮助!
解决方法
在检查 Open Images Dataset V6(类型:Bounding Boxes)与“Mobile Phone”类时,我发现包含我们在“person”类下考虑的东西的边界框被不一致地标记为“Man,Woman,Girl” 、人脸等”这些应标记为“人”。
我推荐这两个选择:
- 确保所有图像都正确无误,并始终使用相应的类别进行标记。不要让带有人物的图像没有标记(除非它被截断太多)。
- 提示:我建议使用负样本——没有感兴趣对象的图像,以避免出现误报的情况,例如地板上看起来像人的漩涡
- 您也可以尝试使用其他数据集,在那里您可以获得我上面所说的内容。示例:MSCOCO (https://cocodataset.org/)
检查标签或 .txt 文件。如果它有两个类,.txt 文件中的第一列将有 0 和 1,其中 0 表示人员类,1 表示手机类,反之亦然。