论文阅读-目标检测损失函数GIoU,DIoU,CIoU

该博客详细介绍了目标检测中的三种损失函数:GIoU、DIoU和CIoU。GIoU通过最小凸包解决了IoU在无交集时梯度为0的问题,而DIoU进一步引入中心点距离来加速收敛。CIoU在DIoU基础上考虑了形状比例,以促进模型更快更好地收敛。博客包括每个损失函数的问题提出、解决方案、代码实现以及作者的思考和疑问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标检测损失函数GIoU,DIoU,CIoU

GIoU论文链接
DIoU和CIoU论文链接

1. GIoU

1.1. 问题提出

1.1.1. 范数损失的缺陷

GIoU之前,主要是以IoU或者 l n n o r m l_n norm lnnorm作为损失函数的,而这些损失函数实际上是不够精细的。也就是说,即使观感上的差距很大,损失的值也会相同。以giou论文里举出的(a)图为例:
范数损失函数的缺陷
此时以 l 2 n o r m l_2norm l2norm作为损失函数(也就是两对点之间的欧氏距离),为了简便起见,固定一个点不动(假设是左下角的点不动),以另一个点为圆心,做一个半径为r的圆,那么此时落在圆上的任意一点与固定点组成的bbox(黑色)和ground truth(绿色)之间的 l 2 n o r m l_2 norm l2norm损失值都是相同的(如a所示),在观感上,我们可能会趋向于最右侧的预测结果,但是在计算机使用 l 2 l_2 l2损失的时候是无法区分的。

1.1.2. IoU损失的缺陷

Iou只在bbox和gt之间有交集的时候才会生效,在他们没有交集的时候IoU始终为0,这样不能为反向传播时提供响应的梯度。例如下面的情况,IoU都为0,此时很难让网络进行调整。
IoU的缺陷

1.2. 解决方案

针对IoU不能适应无交集的问题,提出了最小凸包的方案。
所谓的最小凸集就是恰好包含了gt和bbox的一个矩形,如下图所示,红色就是最小凸集。
最小凸集
G I o U = I o U − C − ( A ∪ B ) C GIoU= IoU - \frac {C-(A \cup B)} {C} GIoU=IoUCC(AB)
在最小凸集的基础上,就解决了在gt与bbox无交集时梯度为0的问题。GIoU实际上就是在最小化这个最小凸集。

1.3 算法与代码

简单实现了以下原论文里的算法,原算法如下:
GIoU算法
代码如下:

def getConvexShape(bbox_gt,bbox_pd):
    return [min(bbox_gt[0],bbox_pd[0]),min(bbox_gt[1],bbox_pd[1]),max(bbox_gt[2],bbox_pd[2]),max(bbox_gt[3],bbox_pd[3])]

def getBboxArea(bbox):
    if bbox[2] - bbox[0
### CIoU, DIoU, EIoU 和 GIoU 损失函数 #### 定义与概念 交并比 (Intersection over Union, IoU) 是一种广泛应用于目标检测中的度量方法,用于评估预测边界框和真实边界框之间的重叠程度。然而,基本的 IoU 只考虑了两个矩形区域的重合面积比例,并未考虑到其他因素的影响。 为了改进这一点,研究者们提出了多种变体形式: - **GIoU Loss**: Generalized Intersection Over Union 损失不仅关注两者的重叠部分,还加入了包围这两个边界的最小闭包区域作为惩罚项[^1]。 - **DIoU Loss**: Distance-IoU Loss 在 GIoU 的基础上进一步引入了中心点距离因子来加速收敛速度以及提高定位精度[^2]。 - **CIoU Loss**: Complete IoU Loss 继承自 DIoU 并增加了宽高比率这一额外维度的信息,旨在解决长宽比不一致带来的问题. - **EIoU Loss**: Enhanced IoU Loss 则在此基础上更深入地探讨了三个独立方面——中心位置偏差、尺度差异及形状相似性,以此构建更为全面有效的损失计算框架. #### 计算方式 这些扩展版本的 IoU 损失函数通过增加新的成分或修改原有公式结构来进行优化: ##### GIoU Loss \[ \text{GIoU} = \text{IoU} - \frac{\left| C\setminus(A ∪ B)\right|}{\left|C\right|}\] 其中 \(A\) 表示预测框;\(B\) 代表实际标签框;而 \(C\) 即是最小封闭外接矩形区域. ##### DIoU Loss \[ \text{DIoU}=\text { IoU }-\frac{(c_{b}-d)^{2}}{c^{2}}\] 这里 \(d\) 是指代预测框与真值框中心间的欧几里得距离;\(c_b\) 表达的是覆盖二者最小区间内的对角线长度. ##### CIoU Loss \[ \mathrm{CIoU}=I o U-D_{iou}+\alpha v\] 这里的附加项 \(\alpha v\) 主要是为了调节纵横比所带来的影响,具体定义如下: \[ v=\frac{4}{\pi^{2}} * arctan\left(\frac{w t r u e}{h t r u e}\right)-arctan\left(\frac{w p r e d i c t e d}{h p r e d i c t e d}\right)^{2}\] ##### EIoU Loss 增强型 IoU 将上述各项分离处理,形成各自独立却又相互关联的整体表达式,其核心在于分别考量中心偏移 (\(ρ_1\))、尺寸变化 (\(ρ_2\)) 和形态匹配 (\(ρ_3\)): \[ ρ_i=α_i⋅exp⁡(-β_i⋅IoU),i∈\{1,2,3\}\] #### 应用场景 这类基于 IoU 改良后的损失函数特别适合于计算机视觉领域内涉及到物体识别的任务中,尤其是在那些需要精确界定对象轮廓的应用场合下表现尤为突出。比如自动驾驶汽车感知系统里的行人车辆监测、医学影像分析当中的细胞核分割等都可受益于此类技术进步.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值