下面这张图片就展示了错误的目标检测框输出的可视化结果: 可以看出训练后的目标检测框主要集中在页面的左上角,并且目标框的尺寸也不对应。
出现以上问题:数据集在转为txt格式时归一化错误
目标检测框格式分为两种:
- xyxy(左上和右下坐标)
- xywh(中心坐标+目标检测框的宽高)
需要确定已有的json格式中对应的bbox中的目标检测框是哪种格式,yolov5识别的是xywh类型
1.当已有的目标检测框是xyxy格式转换成yolov5识别的xywh格式
注意:
- box[0],box[1]对应检测框左上角的坐标,相应的box[2],box[3]对应检测框右下角的坐标
- w,h的值是灵活的,要对应自己训练的数据集的图片的长和宽
- 这里操作的意义是:先根据左上角和右下角的坐标找到中心点坐标和目标检测框的长和宽,然后进行归一化操作
w=980
h=1080
dw=1.0/w
dh=1.0/h
x=(box[0]+box[1])/2.0
y=(box[2]+box[3])/2.0
w=box[1]-box[0]
h=box[3]-box[2]
x=x*dw
y=y*dh
w=w*dw
h=h*dh
2.当已有的目标检测框已经是xywh格式只需要进行归一化处理
w=980
h=1080
dw=1.0/w
dh=1.0/h
x=x*dw
y=y*dh
w=w*dw
h=h*dh
最后需要注意的是:
一定要去了解自己的训练集目标检测框的格式是哪种,如果都不是以上的两种,如给出左上角坐标和长宽,同样也可以转换成中心坐标和长宽的归一化。