Dice Loss
参考:https://blog.csdn.net/l7H9JA4/article/details/108162188
Dice系数: 是一种集合相似度度量函数,通常用于计算两个样本的相似度,取值范围为[0,1]。
s=2∣X∩Y∣∣X∣+∣Y∣s = \frac{2|X ∩ Y|}{|X|+|Y|} s=∣X∣+∣Y∣2∣X∩Y∣
|X⋂Y| 是指 X 和 Y 之间的交集;|X| 和 |Y| 分别表示 X 和 Y 的元素个数. 分子乘为了保证分母重复计算后取值范围在[0,1]之间
因此Dice Loss可写作
Ldisc=2∣X∩Y∣∣X∣+∣Y∣L_{disc} = \frac{2|X∩Y|}{|X|+|Y|} Ldisc=∣X∣+∣Y∣2∣X∩Y∣
对于二分类问题,一般预测值分为以下几种:
- TP: true positive,真阳性,预测是阳性,预测对了,实际也是正例。
- TN: true negative,真阴性,预测是阴性,预测对了,实际也是负例。
- FP: false positive,假阳性,预测是阳性,预测错了,实际是负例。
- FN: false negative,假阴性,预测是阴性,预测错了,实际是正例
公式可改写为
dics=2TP2TP+FP+FNdics = \frac{2TP}{2TP+FP+FN} dics=2TP+FP+FN2TP
公式的论文形式
Ldice=1−I+aU−I+aL_{dice} = 1 - \frac{I+a}{U-I+a} Ldice=1−U−I+aI+a
a为一个极小的数,一般称为平滑系数,有两个作用:
- 防止分母预测为0。值得说明的是,一般分割网络输出经过sigmoid 或 softmax,是不存在输出为绝对0的情况。这里加平滑系数主要防止一些极端情况,输出位数太小而导致编译器丢失数位的情况。
- 平滑系数可以起到平滑loss和梯度的操作。
Dicc loss应用于语义分割,是区域相关的loss,因此更适合针对多点的情况进行分析。
这也意味着某像素点的loss以及梯度值不仅和该点的label以及预测值相关,和其他点的label以及预测值也相关。
IOU、GIOU、DIOU、CIOU损失函数汇总
参考:
https://zhuanlan.zhihu.com/p/159209199
https://zhuanlan.zhihu.com/p/94799295
IOU
IOU俗称交并比,是目标检测中最常用的指标。
IoU=∣A∩B∣∣A∪B∣IoU = \frac{|A ∩ B|}{|A ∪ B|} IoU=∣A∪B∣∣A∩B∣
优点
1、他可以反映预测检测框与真实检测框的检测效果。
2、具有尺度不变性,也就是对尺度不敏感(scale invariant), 在regression任务中,判断predict box和gt的距离最直接的指标就是IoU。(满足非负性;同一性;对称性;三角不等性)
缺点
1、若两框无法相交,由定义得IoU=0,也就不能反映两者的重合度。同时因为loss为零,没有梯度回归,无法进行学习的训练
2、IoU无法精确的反映两者之间的重合度大小。如下图,IoU相同,但可以看出重合度不一样,左边最好,右边最差。
GIOU
GIoU=IoU−Ac−UAcGIoU = IoU - \frac{A_{c}-U}{A_{c}} GIoU=IoU−AcAc−U
公式的解释如下:
先计算两个框的最小闭包区域面Ac(同时包含预测框和真实框的最小框面积),在计算IoU,然后在计算闭包区域中不属于两个框的区域占闭包区域的比重,最后用IoU减去这个比重,得到GIoU。
优点:
- 与IoU相似,GIoU也是一种距离度量,作为损失函数的话
LGIoU=1−GIoUL_{GIoU} = 1 - GIoU LGIoU=1−GIoU
,满足损失函数的基本要求 - GIoU对scale不敏感,可以解决检测框非重叠造成的梯度消失问题
- GIoU是IoU的下界,在两个框无限重合的情况下,IoU=GIoU=1
- IoU取值[0,1],但GIoU有对称区间,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
- 与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。
DIoU
DIoU要比GIou更加符合目标框回归的机制,将目标与anchor之间的距离,重叠率以及尺度都考虑进去,使得目标框回归变得更加稳定,不会像IoU和GIoU一样出现训练过程中发散等问题。
DIoU=IoU−ρ2(b,bgt)c2DIoU = IoU - \frac{ρ^2(b,b^{gt})}{c^2} DIoU=IoU−c2ρ2(b,bgt)
其中b,bgt 分别代表预测框和真实框的中心点,且ρ代表的是计算两个中心点间的欧式距离。c代表的是能够同时包含预测框和真实框的最小闭包区域的对角线距离
优点:
- 与GIoU loss类似,DIoU loss(LDIoU=1−DIoUL_{DIoU} =1 - DIoULDIoU=1−DIoU)在与目标框不重叠时,仍然可以为边界框提供移动方向。
- DIoU loss可以直接最小化两个目标框的距离,因此比GIoU loss收敛快得多。
- 对于包含两个框在水平方向和垂直方向上这种情况,DIoU损失可以使回归非常快,而GIoU损失几乎退化为IoU损失。
- DIoU还可以替换普通的IoU评价策略,应用于NMS中,使得NMS得到的结果更加合理和有效。
下图所示为GIOU和DIOU的对比。
红色框是DIOU损失中的预测框。可以很明显的看出,DIOU的收敛速度较GIOU更快。
CIoU(Complete-IoU)
DIOU考虑到了两个检测框的中心距离。而CIOU考虑到了三个几何因素,分别为
- 重叠面积
- 中心点距离
- 长宽比
考虑到bbox回归三要素中的长宽比还没被考虑到计算中,因此,进一步在DIoU的基础上提出了CIoU。其惩罚项如下面公式:
RCIoU=ρ2(b,bgt)c2+avR_{CIoU}=\frac{ρ^2(b,b^{gt})}{c^2} + av RCIoU=c2ρ2(b,bgt)+av
其中a是权重函数,而v 用来度量长宽比的相似性,定义为
a=v(1−IoU)+va = \frac{v}{(1-IoU)+v} a=(1−IoU)+vv
v=4π2(arctanwgthgt−arctanwh)v = \frac{4}{π^2}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w}{h}) v=π24(arctanhgtwgt−arctanhw)
完整的CIoU损失函数的定义:
LCIoU=1−IoU+ρ2(b,bgt)c2+avL_{CIoU} =1-IoU + \frac{ρ^2(b,b^{gt})}{c^2} + av LCIoU=1−IoU+c2ρ2(b,bgt)+av
- w2 和 h2 为真实框的宽、高
- w 和 h 为预测框的宽、高
若真实框和预测框的宽高相似,那么 v 为0,该惩罚项就不起作用了。所以很直观地,这个惩罚项作用就是控制预测框的宽高能够尽可能快速地与真实框的宽高接近。