RTDETR_OBB利用transform直接预测旋转框(Ultralytics_yolov11版本)

Ultralytics中RTDETR及RTDETR_OBB细节解析

一、RTDETR(u版)流程回顾

一文带你搞定Ultralytics(yolov11版本)中的RTDETR训练以及预测的代码解析和流程分析

二、RTDETR_OBB(u版)细节

1、RTDETRDecoder初始化

#encoder和decoder head部分预测bbox的部分需要修改成直接预测rbbox
self.dec_bbox_head = nn.ModuleList([MLP(hd, hd, 4, num_layers=3) for _ in range(ndl)])
self.dec_bbox_head_obb = nn.ModuleList([MLP(hd, hd, 5, num_layers=3) for _ in range(ndl)])

self.enc_bbox_head = MLP(hd, hd, 4, num_layers=3)
self.enc_bbox_head_obb = MLP(hd, hd, 5, num_layers=3)

2、构建obb去噪组get_cdn_group_obb

下图是rtdetr预测矩形框的去噪组,去噪组分为正样本和负样本。
正样本在gt的基础上加上了原gt的0-h/2和0-w/2的扰动。负样本加上了原gt的h/2-h和w/2-h的扰动。具体值也可调参。
在这里插入图片描述
旋转框只需要在gt的wh基础上额外加上一个角度theta的扰动即可。

3、替换loss

所有计算bbox的loss替换成计算rbbox的probiou。(ps:匈牙利匹配里的计算bbox_iou也要替换成probiou来计算rbbox_iou)

if self.use_obb:
    loss[name_giou] = 1.0 - probiou(pred_bboxes, gt_bboxes)
else:
    loss[name_giou] = 1.0 - bbox_iou(pred_bboxes, gt_bboxes, xywh=True, GIoU=True)
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值