yolov8支持OBB目标检测,且能提供较好的性能。
但是最近在使用yolov8-obb的过程中,发现yolov8-obb存在一个bug。即训练数据如果包含不带旋转角度的水平目标时,训练出的模型,经常会输出垂直的检测框,需要旋转90度以后才能得到最终结果。把yolov8-obb相关的源码阅读一遍才发现问题所在。
首先我们来看 yolov8-obb 如何将 [label, x1, y1, x2, y2, x3, y3, x4, y4] 格式的标注通过如下代码转换为 [cx, cy, w, h, rotation] 格式。
ultralytics-8.1.0\ultralytics\data\augment.py 的 Format 中,通过代码
if self.return_obb:labels["bboxes"