Label Smoothing
神经网络最大的缺点:自觉不错(过拟合),让它别太自信。
例如原来标签为 ( 0 , 1 ) : [ 0 , 1 ] × ( 1 − 0.1 ) + 0.1 / 2 = [ 0.05 , 0.95 ] (0,1):[0,1] \times(1-0.1)+0.1 / 2=[0.05,0.95] (0,1):[0,1]×(1−0.1)+0.1/2=[0.05,0.95]
使用之后效果分析(右图):簇内更紧密,簇间更分离
IOU损失
IOU损失:1-IOU
有哪些问题呢?
没有相交则IOU=0无法梯度计算,相同的IOU却反映不出实际情况到底是什么样子。
GIOU损失
公式: L G I o U = 1 − I o U + ∣ C − B ∪ B g t ∣ ∣ C ∣ \mathcal{L}_{G I o U}=1-I o U+\frac{\left|C-B \cup B^{g t}\right|}{|C|} LGIoU=1−IoU+∣C∣∣C−B∪Bgt∣
引入了最小封闭形状C(C可以把A,B包含在内)
在不重叠情况下能让预测框尽可能朝着真实框前进,但是如果两个框重叠,则失效。
DIOU损失
公式: L D I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 \mathcal{L}_{D I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}} LDIoU=1−IoU+c2ρ2(b,bgt)
其中分子计算预测框与真实框的中心点欧式距离d
分母是能覆盖预测框与真实框的最小BOX的对角线长度c
直接优化距离,速度更快,并解决GIOU问题
CIOU损失
公式: L C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v \mathcal{L}_{C I o U}=1-I o U+\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}+\alpha v LCIoU=1−IoU+c2ρ2(b,bgt)+αv v = 4 π 2 ( arctan w g t h g t − arctan w h ) 2 v=\frac{4}{\pi^{2}}\left(\arctan \frac{w^{g t}}{h^{g t}}-\arctan \frac{w}{h}\right)^{2} v=π24(arctanhgtwgt−arctanhw)2
α = v ( 1 − I o U ) + v \alpha=\frac{v}{(1-I o U)+v} α=(1−IoU)+vv
损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比
其中 α \alpha α 可以当做权重参数
DIOU-NMS
之前使用NMS来决定是否删除一个框,现在改用DIOU-NMS
公式: s i = { s i , IoU − R D I o U ( M , B i ) < ε , 0 , IoU − R D I o U ( M , B i ) ≥ ε , R D I o U = ρ 2 ( b , b g t ) c 2 s_{i}=\left\{\begin{array}{l}s_{i}, \operatorname{IoU}-\mathcal{R}_{D I o U}\left(\mathcal{M}, B_{i}\right)<\varepsilon, \\ 0, \operatorname{IoU}-\mathcal{R}_{D I o U}\left(\mathcal{M}, B_{i}\right) \geq \varepsilon,\end{array} \quad \mathcal{R}_{D I o U}=\frac{\rho^{2}\left(\mathbf{b}, \mathbf{b}^{g t}\right)}{c^{2}}\right. si={si,IoU−RDIoU(M,Bi)<ε,0,IoU−RDIoU(M,Bi)≥ε,RDIoU=c2ρ2(b,bgt)
不仅考虑了loU的值,还考虑了两个Box中心点之间的距离
其中M表示高置信度候选框,Bi就是遍历各个框跟置信度高的重合情况。
SOFT-NMS
更改分数而且直接剔除
增加稍许推断代价,但可以提高模型精度的方法
网络细节部分加入了很多改进,引入了各种能让特征提取更好的方法
注意力机制,网络细节设计,特征金字塔等
V3中为了更好满足不同输入大小,训练的时候要改变输入数据的大小
SPP其实就是用最大池化来满足最终输入特征一致即可
每一个block按照特征图的channel维度拆分成两部分
一份正常走网络,另一份直接concat到这个block的输
注意力机制:包括通道注意力机制(Channel Attention Module)和空间的注意力机制(Spatial Attention Module)。
优点是更简单了,速度相对能更快一点。
得先从FPN说起,FPN自顶向下的模式,将高层特征传下来(不是双向的,我们希望增加一个自下向上的传递路径)
PAN 引入了自底向上的路径,使得底层信息更容易传到顶部,并且还是一个捷径
不同之处在于,YOLOV4中并不是加法,而是拼接
Mish 函数
Relu有点太绝对了,Mish更符合实际
公式: f ( x ) = x ⋅ tanh ( ln ( 1 + e x ) ) f(x)=x \cdot \tanh \left(\ln \left(1+e^{x}\right)\right) f(x)=x⋅tanh(ln(1+ex))
但是计算量确实增加了,效果会提升一点
比较好理解,坐标回归预测值都在0-1之间,如果在grid边界怎么表示?
此时就需要非常大的数值才可以达到边界,为了缓解这种情况可以在激活函数前加上一个系数(大于1的): b y = σ ( t y ) + c y b_{y}=\sigma\left(t_{y}\right)+c_{y} by=σ(ty)+cy