>>>深度学习Tricks,第一时间送达<<<

论文题目:Focal and Efficient IOU Loss for Accurate Bounding Box Regression
论文地址:  https://arxiv.org/abs/2101.08158

CIOU Loss虽然考虑了边界框回归的重叠面积、中心点距离、纵横比。但是通过其公式中的v反映的纵横比的差异,而不是宽高分别与其置信度的真实差异,所以有时会阻碍模型有效的优化相似性。针对这一问题,有学者在CIOU的基础上将纵横比拆开,提出了EIOU Loss,并且加入Focal聚焦优质的锚框。

EIOU的惩罚项是在CIOU的惩罚项基础上将纵横比的影响因子拆开分别计算目标框和锚框的长和宽,该损失函数包含三个部分:重叠损失,中心距离损失,宽高损失,前两部分延续CIOU中的方法,但是宽高损失直接使目标盒与锚盒的宽度和高度之差最小,使得收敛速度更快。

EIOU Loss优点:

1)将纵横比的损失项拆分成预测的宽高分别与最小外接框宽高的差值,加速了收敛提高了回归精度。

2)引入了Focal Loss优化了边界框回归任务中的样本不平衡问题,即减少与目标框重叠较少的大量锚框对BBox 回归的优化贡献,使回归过程专注于高质量锚框。

实验中,将YOLOv5中的锚框损失函数替换为EIOU Loss,性能远优于原IOU、DIOU以及CIOU等,测试自身数据集发现涨点明显!近期较忙,代码咨询的小伙伴请私聊~

EIOU Loss代码如下:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionimport numpy as npimport paddlefrom ppdet.core.workspace import register, serializable
from ..bbox_utils import bbox_iou__all__ = ['IouLoss', 'GIoULoss', 'EIouLoss']@register
@serializable
class Focal_EIoU_Loss(GIoULoss):"""Distance-IoU Loss, see https://arxiv.org/abs/1911.08287Args:loss_weight (float): giou loss weight, default as 1eps (float): epsilon to avoid divide by zero, default as 1e-10use_complete_iou_loss (bool): whether to use complete iou loss"""def __init__(self, loss_weight=1., eps=1e-10, use_complete_iou_loss=True):super(DIouLoss, self).__init__(loss_weight=loss_weight, eps=eps)self.use_complete_iou_loss = use_complete_iou_lossdef __call__(self, pbox, gbox, iou_weight=1.):x1, y1, x2, y2 = paddle.split(pbox, num_or_sections=4, axis=-1)x1g, y1g, x2g, y2g = paddle.split(gbox, num_or_sections=4, axis=-1)cx = (x1 + x2) / 2cy = (y1 + y2) / 2w = x2 - x1h = y2 - y1cxg = (x1g + x2g) / 2cyg = (y1g + y2g) / 2wg = x2g - x1ghg = y2g - y1gx2 = paddle.maximum(x1, x2)y2 = paddle.maximum(y1, y2)# A and Bxkis1 = paddle.maximum(x1, x1g)ykis1 = paddle.maximum(y1, y1g)xkis2 = paddle.minimum(x2, x2g)ykis2 = paddle.minimum(y2, y2g)# A or Bxc1 = paddle.minimum(x1, x1g)yc1 = paddle.minimum(y1, y1g)xc2 = paddle.maximum(x2, x2g)yc2 = paddle.maximum(y2, y2g)intsctk = (xkis2 - xkis1) * (ykis2 - ykis1)intsctk = intsctk * paddle.greater_than(xkis2, xkis1) * paddle.greater_than(ykis2, ykis1)unionk = (x2 - x1) * (y2 - y1) + (x2g - x1g) * (y2g - y1g) - intsctk + self.epsiouk = intsctk / unionk# DIOU termdist_intersection = (cx - cxg) * (cx - cxg) + (cy - cyg) * (cy - cyg)dist_union = (xc2 - xc1) * (xc2 - xc1) + (yc2 - yc1) * (yc2 - yc1)diou_term = (dist_intersection + self.eps) / (dist_union + self.eps)# EIOU termc2_w = (xc2 - xc1) * (xc2 - xc1) + self.epsc2_h = (yc2 - yc1) * (yc2 - yc1) + self.epsrho2_w = (w - wg) * (w - wg)rho2_h = (h - hg) * (h - hg)eiou_term = (rho2_w / c2_w) + (rho2_h / c2_h)        #Focal-EIOUeiou = paddle.mean((1 - iouk + diou_term + eiou_term) * iou_weight)focal_eiou = iouk**0.5 * eioureturn focal_eiou * self.loss_weight

相比于其他目标框回归损失函数,EIOU Loss考虑了重叠面积,中心点距离、长宽边长真实差,基于CIOU解决了纵横比的模糊定义,并添加Focal Loss解决BBox回归中的样本不平衡问题。


目标检测算法——YOLOv5/YOLOv7改进|将IOU Loss替换为EIOU Loss相关推荐

  1. 目标检测算法——YOLOv5/YOLOv7改进之结合GAMAttention

    >>>深度学习Tricks,第一时间送达<<< 目录 超越CBAM,全新注意力GAM:不计成本提高精度! (一)前沿介绍 1.GAM结构图 2.相关实验结果 (二) ...

  2. 目标检测算法——YOLOv5/YOLOv7改进之结合​PP-LCNet(轻量级CPU网络)

    >>>深度学习Tricks,第一时间送达<<< 目录 ​PP-LCNet--轻量级且超强悍的CPU级骨干网络!! (一)前沿介绍 1.PP-LCNet主要模块 2. ...

  3. ​目标检测算法——YOLOv5/YOLOv7改进之结合​SOCA(单幅图像超分辨率)

    >>>深度学习Tricks,第一时间送达<<< 目录 CVPR19 单幅图像超分辨率来了!!! (一)前沿介绍 论文题目:Second-order Attentio ...

  4. 目标检测算法——YOLOv5/YOLOv7改进之结合​RepVGG(速度飙升)

    >>>深度学习Tricks,第一时间送达<<< 目录 RepVGG--极简架构,SOTA性能!!! (一)前沿介绍 1.RepVGGBlock模块 2.相关实验结果 ...

  5. 目标检测算法——YOLOv5/YOLOv7改进之结合BiFPN

    >>>深度学习Tricks,第一时间送达<<< 论文题目:<EfficientDet: Scalable and Efficient Object Detec ...

  6. 目标检测算法——YOLOv5/YOLOv7改进结合轻量型Ghost模块

    >>>深度学习Tricks,第一时间送达<<< 论文题目:<GhostNet:More Features from Cheap Operations> ...

  7. 目标检测算法——YOLOv5/YOLOv7改进之结合无参注意力SimAM(涨点神器)

    >>>深度学习Tricks,第一时间送达<<< 目录 (一)前言介绍 1.摘要 2.不同注意力步骤比较 (二)相关实验 (三)YOLOv5结合无参注意力SimAM ...

  8. 目标检测算法——YOLOv5/YOLOv7改进之结合CBAM注意力机制

    深度学习Tricks,第一时间送达 论文题目:<CBAM: Convolutional Block Attention Module> 论文地址:  https://arxiv.org/p ...

  9. 目标检测算法——YOLOv5/YOLOv7改进之结合轻量化网络MobileNetV3(降参提速)

    >>>深度学习Tricks,第一时间送达<<< 论文题目:Searching for MobileNetV3 论文地址:https://arxiv.org/abs/ ...

最新文章

  1. qinyu.blog.51cto.com里的好文章,比尔盖茨
  2. Ubuntu 迁移 /tmp 到别的硬盘
  3. springboot springcloud区别_SpringBoot回顾、Spring Cloud初学
  4. QT使用SQLite数据库实现登录功能
  5. linux 进程监控和自动重启的简单实现
  6. r4烧录卡内核安装_R4 Wood内核怎么用?R4烧录卡Wood R4内核详细使用教程
  7. Hive grouping sets 多维度交叉清洗数据
  8. stm32f407zg跟ze的区别_STM32F103ZE和STM32F207ZG的芯片区别
  9. cdr添加节点快捷键_CorelDRAW快捷键大全(学习CDR必备)
  10. 南京理工大学计算机学院张勇,南京理工大学教师信息
  11. NVIDIA Jetson之GPIO引脚设置
  12. Apache JMeter安装
  13. x*=3+5**2的计算结果python_下面代码的执行结果是________ x = 2 x *= 3 + 5**2
  14. 计算机专业就业方向小结
  15. 你有试过AutoCAD的超级填充功能吗?
  16. PHP的Apache自带的ab压力测试
  17. 100uF,10uF,100nF,10nF不同的容值,这些参数是如何确定的?
  18. 小程序 固定位置元素 遮挡其他元素_西门子S7-200 SMART切换编程编辑器、输入LAD程序、编辑程序...
  19. 最新阿里腾讯头条美团等iOS面试总结
  20. 起点——2015年终总结

热门文章

  1. html 图片点击查看,Html点击实现图片预览和查看原图
  2. Win11系统蓝牙图标消失怎么办?我来告诉你
  3. 计时器模仿地球绕太阳圆周运动
  4. swig c java gemt,利用 SWIG 转换 C/C++ 接口到 Java 接口
  5. 解决PackageNotFoundError:XXXX异常
  6. 计算机维护方面的知识和技巧,电脑系统维护小常识有哪些 四大维护电脑的技巧推荐...
  7. PyScript-在HTML裡添加標籤div
  8. oracle 主键 删除表_ORACLE中添加删除主键
  9. 【转】0-1分数规划等问题
  10. 猪年月度总结-「1」