发现问题:
YOLOV5跑自己的模型的时候设定了六个标签,但是最终结果所有的图片学习后识别的结果全部都是第一个标签driving
解决:
标签存在问题。在标注好的数据集中,一般由三个部分组成:
class_id x_center y_center width height
class_id
是目标的类别标签,表示目标所属的类别
x_center
和 y_center
是目标边界框中心点的相对坐标,范围在 0 到 1 之间,分别表示边界框中心点在图像宽度和高度上的相对位置。
width
和 h
eight
是边界框的宽度和高度,也是相对于整个图像的比例。
重点在于class_id,class_id表明标签类型。也就是说,在不同的图片或者是同一张图片中,不同数据表示不同类的标签类型
class_id=0为汽车类
class_id=1为箱子类
由于我们标签是分次标注的,所以第一个的序号一直是初始化0。也就是即使标注的是不同,但是最后得到的序号是一致的,也就导致了一直显示只有第一个标签的问题
例如第一个是我们smoking标签,第二个是texting-phone标签,无法被区分。
在YOLOV5中,将整数 class_id
转换为相应的类别名称通常是通过读取 .yaml
文件中的标签名称列表来完成的。在训练或预测过程中,YOLOv5 会根据 .yaml
文件中的标签名称列表,将模型输出的整数 class_id
映射到相应的类别名称。
标签中的第一个数据需要对应data文件夹下.ymal文件中的n个标签序号0-n-1,这样即可匹配,即以下标签对应的标签数据从左往右对应0,1,2,3,4,5