YOLOV5改进-loss-Optimal Transport Assignment(OTA)

OTA是一种基于优化策略的标签分配方法,首次出现在2021年的CVPR论文中,它免去了手工选定参数,通过最小化loss让网络自我学习最优标签分配。在Yolov5中引入OTA,涉及修改源码、损失函数计算和验证过程,以提升网络对模棱两可锚框的处理能力。
摘要由CSDN通过智能技术生成

一、OTA介绍

        OTA源于2021年cvpr的论文,我认为就是使训练和验证的标签有着更好的对应关系,

        01提出了一种基于优化策略的标签分配方式,通过最小化loss,让网络自己学习最优的标签分配方式。将真实标签(GT)看做标签(label)供应商,锚框(anchor ) 看做标签(label)的需求方。对于不同样本有不同的loss。对于正样本,将分类和回归的 loss 加权和作为传输loss 。对于负样本,传输loss就为分类 loss。
        02免去了手工选定参数的方式来实现标签分配,让网络自己选择每个真实标签(GT)对应的 锚框(anchor ) 数量,而非提前设定,也能够较好的解决模棱两可的 锚框(anchor ) 分配问题,提高网络对这部分 锚框(anchor ) 的处理效果

        标签分配(Label Assignment)标签分配策略是对训练过程中各个Anchor划分正负属性,并分配各自学习目标的策略方法,在整体上通过标签是否是非负即正可以分为硬标签分配和软标签分配。其中,硬标签分配可以分成静态分配策略和动态分配策略两类。
 

二、在yolov5中加入OTA

01-网页复制OTA源码
        https://github.com/z1069614715/objectdetection_script/blob/master/yolo-improve/yolov5-OTA/loss.py
02-将OTA源码加入到utils/loss.py最后面
03-在train.py下导入ComputeLossOTA替换ComputeLoss
        from utils.loss import ComputeLossOTA
在下方模型计算损失更改使用的损失compute_loss = ComputeLossOTA(model)
04-在forward过程中加入imgs
        loss, loss_items = compute_loss(pred, targets.to(device),imgs) 
05-在val.py文件夹下loss下面加入参数im
        loss += compute_loss(train_out, targets,im)[1]
06根据报错修改loss.py下的维度
        将iou.detach()替换为torch.squeeze(iou.detach())

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值