目标检测回归损失函数:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
文章目录
- 1. Smooth L1 Loss
- 1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为:
- 1.2 上述的3个损失函数对x的导数分别为:
- 1.3 实际目标检测框回归任务中的损失loss为:
- 2. IoU Loss
- 2.1 通过4个坐标点独立回归Building boxes的缺点:
- 2.2 基于此提出IoU Loss,其将4个点构成的box看成一个整体进行回归:
- 3 GIoU Loss
- 3.1 IoU Loss 有2个缺点:
- 4. DIoU Loss
- 5. CIoU Loss
目标检测任务的损失函数由Classificition Loss和Bounding Box Regeression Loss两部分构成。本文介绍目标检测任务中近几年来Bounding Box Regression Loss Function的演进过程,其演进路线是Smooth ->>L1 Loss ->> IoU Loss ->> GIoU Loss DIoU Loss ->> CIoU Loss,本文按照此路线进行讲解。
1. Smooth L1 Loss
本方法由微软rgb大神提出,Fast RCNN论文提出该方法
1.1 假设x为预测框和真实框之间的数值差异,常用的L1和L2 Loss定义为:
1.2 上述的3个损失函数对x的导数分别为:
从损失函数对x的导数可知: L1损失函数对x的导数为常数,在训练后期,x很小时,如果learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。L2损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。smoothL1(x)\operatorname{smooth}_{L_{1}}(x)smoothL1(x)完美的避开了 L1和 L2损失的缺点。
1.3 实际目标检测框回归任务中的损失loss为:
Lloc(tu,v)=∑i∈{x,y,w,h}smoothL1(tiu−vi)L_{l o c}\left(t^{u}, v\right)=\sum_{i \in\{x, y, w, h\}} s m o o t h_{L_{1}}\left(t_{i}^{u}-v_{i}\right)Lloc(tu,v)=∑i∈{x,y,w,h}smoothL1(tiu−vi)
其中 v=(vx,vy,vw,vh)v=\left(v_{x}, v_{y}, v_{w}, v_{h}\right)v=(vx,vy,vw,vh) 表示GT 的框坐标,tu=(txu,tyu,twu,thu)t^{u}=\left(t_{x}^{u}, t_{y}^{u}, t_{w}^{u}, t_{h}^{u}\right)tu=(txu,tyu,twu,thu) 表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。
三种loss的曲线图如上图所示,可以看到Smooth L1相比L1的曲线更加的Smooth
缺点:
- 上面的三种Loss用于计算目标检测的Bounding Box
Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box
Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的 - 实际评价框检测的指标是使用IOU,这两者是不等价的,多个检测框可能有相同大小的
Loss,但IOU可能差异很大,为了解决这个问题就引入了IOU LOSS。
2. IoU Loss
本文由旷视提出,发表于2016 ACM
2.1 通过4个坐标点独立回归Building boxes的缺点:
- 检测评价的方式是使用IoU,而实际回归坐标框的时候是使用4个坐标点,如下图所示,是不等价的;L1或者L2 Loss相同的框,其IoU
- 不是唯一的 通过4个点回归坐标框的方式是假设4个坐标点是相互独立的,没有考虑其相关性,实际4个坐标点具有一定的相关性
- 基于L1和L2的距离的loss对于尺度不具有不变性
图(a)中的三组框具有相同的L2 Loss,但其IoU差异很大;图(b)中的三组框具有相同的L1 Loss,但IoU 同样差异很大,说明L1,L2这些Loss用于回归任务时,不能等价于最后用于评测检测的IoU.
2.2 基于此提出IoU Loss,其将4个点构成的box看成一个整体进行回归:
上图中的红色点表示目标检测网络结构中Head部分上的点(i,j),绿色的框表示Ground truth框, 蓝色的框表示Prediction的框,IoU loss的定义如上,先求出2个框的IoU,然后再求个-ln(IoU),实际很多是直接定义为IoU Loss = 1-IoU
IoU Loss 前项推理时的算法实现方式
附录:
论文链接:https://arxiv.org/pdf/1608.01471.pdf
3 GIoU Loss
- 本文由斯坦福学者提出,发表于CVPR2019
3.1 IoU Loss 有2个缺点:
- 当预测框和目标框不相交时,IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU Loss 无法优化两个框不相交的情况。
- 假设预测框和目标框的大小都确定,只要两个框的相交值是确定的,其IoU值是相同时,IoU值不能反映两个框是如何相交的。
如上图所示,三种不同相对位置的框拥有相同的IoU=0.33值,但是拥有不同的GIoU=0.33,0.24,-0.1。当框的对齐方向更好一些时GIoU的值会更高一些。
GIoU的实现方式如上,其中C为A和B的外接矩形。用C减去A和B的并集除以C得到一个数值,然后再用框A和B的IoU减去这个数值即可得到GIoU的值。
GIoU的性质
- GIoU和IoU一样,可以作为一种距离的衡量方式,LGIoU=1−GLoUL_{G I o U}=1-G L o ULGIoU=1−GLoU
- GIoU具有尺度不变性
- 对于 ∀A,B\forall A, B∀A,B,有 GIoU(A,B)≤IoU(A,B)\operatorname{GIoU}(A, B) \leq \operatorname{IoU}(A, B)GIoU(A,B)≤IoU(A,B) 且 0≤IoU(A,B)≤10 \leq \operatorname{IoU}(A, B) \leq 10≤IoU(A,B)≤1,因
此 −1≤GIoU(A,B)≤1-1 \leq G \operatorname{IoU}(A, B) \leq 1−1≤GIoU(A,B)≤1 当 A→BA \rightarrow BA→B 时, 两者相同都等于1,此时 GIoUG I o UGIoU 等于1 - 当A和B不相交时,GIoU(A,B)=−1\operatorname{GIoU}(A, B)=-1GIoU(A,B)=−1
附录
论文链接:https://arxiv.org/abs/1902.09630
github链接:https://github.com/generalized-iou/g-darknet
参考链接:目标检测算法之CVPR2019 GIoU Loss(https://mp.weixin.qq.com/s/CNVgrIkv8hVyLRhMuQ40EA)
实现结论和启发:
本文提出了GIoU Loss,最终单阶段检测器YOLO v1涨了2个点,两阶段检测器涨点相对较少(RPN的box比较多,两个框未相交的数量相对较少)
4. DIoU Loss
- 本文发表在AAAI 2020
GIoU Loss不足
当目标框完全包裹预测框的时候,IoU和GIoU的值都一样,此时GIoU退化为IoU, 无法区分其相对位置关系;此时作者提出的DIoU因为加入了中心点归一化距离,所以可以更好地优化此类问题。
启发点:
基于IoU和GIoU存在的问题,作者提出了两个问题:
- 第一:直接最小化预测框与目标框之间的归一化距离是否可行,以达到更快的收敛速度。
- 第二:如何使回归在与目标框有重叠甚至包含时更准确、更快。
好的目标框回归损失应该考虑三个重要的几何因素:重叠面积,中心点距离,长宽比。基于问题一,作者提出了DIoU Loss,相对于GIoU Loss收敛速度更快,该Loss考虑了重叠面积和中心点距离,但没有考虑到长宽比;针对问题二,作者提出了CIoU Loss,**其收敛的精度更高,**以上三个因素都考虑到了。
Distance-IoU Loss
- 通常基于loU-based的loss可以定义为 L=1−IoU+R(B,Bgt)L=1-I o U+R\left(B, B^{g t}\right)L=1−IoU+R(B,Bgt), 其中 R(B,Bgt)R\left(B, B^{g t}\right)R(B,Bgt) 定义为预测框 BBB 和目标框 BgtB^{g t}Bgt 的惩罚项。
- DloU中的惩罚项表示为 RDIoU=ρ2(b,b0t)c2R_{D I o U}=\frac{\rho^{2}\left(b, b^{0 t}\right)}{c^{2}}RDIoU=c2ρ2(b,b0t), 其中 bbb 和 bgtb^{g t}bgt 分别表示 BBB 和 BgtB^{g t}Bgt 的中心点, ρ(⋅)\rho(\cdot)ρ(⋅) 表示欧式距离, ccc 表示 BBB 和 BgtB^{g t}Bgt 的最小外界矩 形的对角线距离,如下图所示。可以将DloU替换IoU用于NMS算法当中,也即论 文提出的DIoU-NMS,实验结果表明有一定的提开。
- DloU Loss function定义为: LDIoU=1−IoU+ρ2(b,bot)c2L_{D I o U}=1-I o U+\frac{\rho^{2}\left(b, b^{o t}\right)}{c^{2}}LDIoU=1−IoU+c2ρ2(b,bot)
上图中绿色框为目标框,黑色框为预测框,灰色框为两者的最小外界矩形框,d表示目标框和真实框的中心点距离,c表示最小外界矩形框的距离。
DIoU的性质:
尺度不变性
当两个框完全重合时,LIoU=LGIoU=LDIoU=0L_{I o U}=L_{G I o U}=L_{D I o U}=0LIoU=LGIoU=LDIoU=0 ,当2个框不相交时 LGIOU=LDIoU→2L_{G I O U}=L_{D I o U} \rightarrow 2LGIOU=LDIoU→2
DIoU Loss可以直接优化2个框直接的距离,比GIoU Loss收敛速度更快
对于目标框包裹预测框的这种情况,DIoU Loss可以收敛的很快,而GIoU Loss此时退化为IoU Loss收敛速度较慢
5. CIoU Loss
Complete-loU Loss
- CloU的惩罚项是在DloU的惩罚项基础上加了一个影响因子 αv\alpha vαv, 这个因子把预 测框长宽比拟合目标框的长宽比考虑进去。 RCIoU=ρ2(b,bgt)c2+αvR_{C I o U}=\frac{\rho^{2}\left(b, b^{g t}\right)}{c^{2}}+\alpha vRCIoU=c2ρ2(b,bgt)+αv, 其中 α\alphaα
是用于做trade-off的参数, α=v(1−IoU)+v,v\quad \alpha=\frac{v}{(1-I o U)+v}, \quad vα=(1−IoU)+vv,v 是用来衡量长宽比一致性的 参数, 定义为 v=4π2(arctanwgthgt−arctanwh)2v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2}v=π24(arctanhgtwgt−arctanhw)2 - CloU Loss function的定义为 LCIoU=1−IoU+ρ2(b,bot)c2+αvL_{C I o U}=1-I o U+\frac{\rho^{2}\left(b, b^{o t}\right)}{c^{2}}+\alpha vLCIoU=1−IoU+c2ρ2(b,bot)+αv
DIoU和CIoU的提升效果
上表中左边是用5种不同Boudning Box Regression Loss Function的对比,右边是以IoU和GIoU来计算的2种Evaluation的结果;GIoU相对IoU会有2.49点提升,DIoU相对IoU会有3.29点提升,CIoU会有大概5.67点提升,CIoU结合DIoU-NMS使用效果最好,大概会有5.91点提升。
结论:
DIoU Loss和CIoU Loss优化了GIoU Loss的不足,实验证明效果有进一步提升,代码已开源,非常推荐工程上去尝试。
附录:
论文地址:https://arxiv.org/pdf/1911.08287.pdf
github地址:https://github.com/Zzh-tju/DIoU-darknet
参考文献:
[1]FastR-CNN (Smooth L1 Loss; 201509)
[2]UnitBox: An Advanced Object Detection Network (IoU Loss;201608)
[3]Generalized Intersection over Union: A Metric and ALoss for Bounding Box Regression (GIOU Loss;CVPR2019)
[4]Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression(DIOU Loss & CIoU Loss ; CVPR2019)
目标检测回归损失函数:SmoothL1/IoU/GIoU/DIoU/CIoU Loss相关推荐
- 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:极市平台 目标检测任务的损失函数由Classificitio ...
- IoU GIoU DIoU CIoU分析比较
IoU GIoU DIoU CIoU分析比较 IoU 1. IoU的简介及原理解析 2.IOU的应用有哪些? GIoU 1.Iou的缺陷 2.GIoU的简介及原理解析 3.GIoU的性质 DIoU & ...
- IOU .GIOU.DIOU.CIOU
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 IOU .GIOU.DIOU.CIOU 一.IOU(Intersection over Union) 二.GIOU(Generaliz ...
- 目标检测回归损失函数——IOU、GIOU、DIOU、CIOU、EIOU
一.IOU Loss 上一篇文章提到L1,L2及其变种只将Bounding box的四个角点分别求loss然后相加,没有引入box四个顶点之间的相关性并且模型在训练过程中更偏向于尺寸更大的物体.在此基 ...
- 基于IOU的损失函数合集, IoU, GIoU, DIoU,CIoU, EIoU
目标检测任务的损失函数一般由 Classificition Loss(分类损失函数)和Bounding Box Regeression Loss(回归损失函数)两部分构成. Bounding ...
- 目标检测回归损失函数——L1、L2、smooth L1
一. L1 Loss 1. 函数特性 L1 Loss也称为平均绝对值误差(MAE),是指模型预测值f(x)和真实值y之间绝对差值的平均值,公式如下: 其中 和 分别表示第 个样本的预测值及相应真实值, ...
- IoU系列(IoU, GIoU, DIoU, CIoU)
写在前面 一.IoU (Intersection over Union) 1.1 IoU的优点 1.2 作为损失函数会出现的问题(缺点) 二.GIoU (Generalized) 三. D ...
- IOU GIOU DIOU CIOU 及代码实现
总体发展过程: IOU IOU(交并比)顾名思义就是两个框的交集除以他们的并集. IOU Loss:IOU Loss = 1 -IOU(比较常用) IOU 的优点:1.能够很好的反应重合的程度 ...
- IOU, GIOU, DIOU, CIOU
IOU IOU是用来衡量两个边界框的重叠程度的.普通的IOU也分为两种,一种是交并比,一种是最小面积与并集的比 计算公式如下: 并集面积 = 面积A + 面积B - 交集面积 交集面积 = 框A与框B ...
最新文章
- 中国3G标准开始欧洲征程 中兴通讯先拔头筹
- 直击“上云”痛点的 MSP 新生意,万博智云发布云原生迁移工具 HyperMotion 3.0
- activiti5第六弹 手动任务、接收任务、邮件任务
- 2017年UI、Web、微服务顶级框架都有啥?不看就落伍了1
- 数组中其余的排除_6.8 C++字符数组 | 输出a、b、c
- MySQL · 引擎介绍 · Sphinx源码剖析(二)
- guava 的重试机制 guava-retrying 使用
- 长江流域图——只希望“霉”雨快走开
- 微信公众号服务器管理员权限,公众号管理员和运营者的区别是什么?公众号管理员需要承担责任吗?...
- 推荐几个好用的后台管理框架
- 解决 Could not find common.jar (android.arch.core:common:1.0.0). 错误
- PDF文件提取单独页面
- SEON - 1 怒怼Dp(1)
- proe5.0启动失败,光标转了几圈后没有任何反应
- r语言liftchart_最棒的7种R语言数据可视化
- android fm信号强度,FM 收音机灵敏度测试方法
- mysql默认民族_56个民族及民族代码的sql语句
- ACM各OJ网站简介
- discuz mysql 类_Discuz论坛中的的MySQL类解析
- 2020年2月编程语言排行榜:Java第一,Python出现下滑!
热门文章
- 密码学归约证明——选择明文攻击下的不可区分性
- 大数据告诉你:2018年该学习什么技术
- python 搜索引擎 词位置加权_网站搜索引擎推广公司,360关键词推广
- 蜂鸣器播放《两只老虎》
- 重磅更新丨zCloud 数据库云管平台 v2.5
- C++设计模式——策略模式(高屋建瓴)
- 计算机单片机原理考试题库,单片机原理及应用试题库-淮阴工学院
- android广播 有序 无序,Android中的有序和无序广播浅析
- ImportError: cannot import name 'Process' 解决办法
- 计算机专业可取证书名称,职业中专计算机维修专业发的职业资格证书名称叫什..._出版资格_帮考网...