将yolov8的检测框从正框修改为旋转框需要做那些修改?

2024-01-08 00:27:23

将yolov8项目修改为yolov8_obb项目需要修改模型结构(增加角度预测)、dataloader(使其支持dota格式数据)、修改TaskAlignedAssigner(使其支持带角度的bbox)、修改loss(新增对角度的训练)、修改metric(将hbb指标titile修改为obb)、修改绘图代码(使其能绘制旋转框)。

目前yolov8官方团队已经发布了支持obb的检测,博主于8个月前所实现的obb没有任何战略价值。为此分享博主过往将将yolov8项目修改为正框模型的操作过程。从正框模型到旋转框模型,首先要调整的是网络结构,然后是dataloader,再是锚框分配机制,最后是nms机制。此外,还有项目附属的train、val、绘图展示等代码需要修改。针对于最新版本yolov8项目,本博文没有任何实际价值(本博文使用的是cls方式的旋转角度预测【对flop基本没有影响】,不清楚官网是如何实现的将flop翻了三倍)。仅是分享yolov8_obb的实现方法。
在这里插入图片描述

1、主体修改

主要是将模型结构修改为支持角度输出,dataloader支持加载旋转框数据,然后在loss上支持角度的反向传播。

1.1 模型结构修改

yolov8的输出,也就是head层,在具体实现上叫Detect类,代码在modules.py中,将其修改为以下形式.
原始代码如下,由cv2和cv2分别输出

文章来源:https://blog.csdn.net/a486259/article/details/135425444
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。