在旋转目标检测网络中,换了个顺序,先把训练流程捋一遍,然后再取捋一下测试的流程。由下图的YOLOv8l_obb网络结构图可以看到相对于目标检测网络,旋转目标检测网络只是在Head层不相同,在每个尺度特征层中增加了Angle分支(浅蓝色),通过两个卷积组和一个Conv卷积得到得到通道数为1的特征图,1表示的就是每个Grid cell预测的角度。
1.YOLOv8_obb标签转换
首先来认识一下v8中的标签格式,如下图所示,标注完经过转换后得到的标签一共有9列,其中第一列是类别,后面八列表示四个角点的X、Y坐标,这四个点不用按照顺序排列。然后对这四个点使用插值来补点,和实例分割标签处理的方法一样,只不过实例分割标签会把点补到1000个,旋转目标检测只需要补充到100个点;最后使用cv2.minAreaRect()对这100个轮廓点进行处理,得到旋转的中心点、宽高以及旋转角度。
这里要注意一下使用cv2.minAreaRect()生成的中心点、宽高、角度的规律:(1)首先生成的角度范围是[0,90];(2)由下图可知,角度由两种表示方式:其一是在图像坐标系中(原点在左上角),角度是指平行于x轴的直线顺时针旋转直到碰到第一条边得到的度数,W即为碰到的第一条边的长度,H为另一条