创新点有三个
- SF-net:用于特征提取
- MDA-Net:抑制背景,突出前景目标
- 损失函数:改进L1损失,添加IOU常数因子
SF-net
动机:
- 检测小目标存在问题:
1)使用pooling层,小目标在更深的层中丢失了特征信息
2)顶层特征图大的采样步长漏掉了小目标,导致欠采样。
底层特征图能够保留小目标的位置信息,顶层特征图能够包含更多的语义信息。 - 解决思路:
1)常用的多尺度特征融合
2)finer sampling:更合适的采样方式。 -
具体解决方案
使用resnet,仅使用c3和c4进行特征融合。其中c4被上采样到固定尺寸s=6(经验参数,本文的6是根据特定数据集选定的参数),c3同时被上采样到该尺寸,然后接了一个inception模块,来扩大感受野和增强语义信息,最后将两个通道的结果拼接到一起,得到特征图F3。
MDA-Net
- 传统RPN存在问题
带来很多噪声信息,也就是可能引入虚假目标,此外,目标边界模糊。所以需要更加突出背景,抑制噪声。 - 解决思路
使用有监督的注意力机制网络来突出目标,抑制背景。 -
具体解决方案
1) 首先,上一步提取到的特征图F3,经过inception模块后得到新的特征图,利用该特征图进行1x1x2卷积,得到显著图每个像素点的前景分数和背景分数(训练时采用二值图和该输出进行交叉熵损失计算和参数回归)。然后使用softmax将同一个像素点的目标和背景分数归一化到0-1(两数之和是1)。接着使用单通道显著图和F3相乘,这样就得到了经过背景抑制和边界增强的特征图。
2)此外,除了像素注意力机制(不同像素对应不同权重),还用了通道注意力机制(不同特征图对应不同权重)。通道注意力机制首先对每张特征图求平均值,得到c个值后,利用两个全连接,第二个全连接输出还是c个值,然后使用sigmoid调整到0-1之间,就得到了通道注意力的权重。(这个权重是通过反向传播学习参数得来的),最终F3和这两个权重相乘后得到A3,在A3基础上,使用rpn来提取候选区域。注意,这里的候选区域还是水平矩形框。
损失函数
使用opencv定义的旋转框方式存在边界问题(即边界情况损失函数突增)
所以,这里使用IOU来解决loss突增问题。(后续再详细思考)IOU越大,loss越小,避免了loss突增。也就是说,当出现上图这种情况时,loss会很小,经过梯度下降后,loss会更小。
在非边界时(角度不超过-90度),模型正常回归,学到的参数已经很棒了。遇到边界时,很棒的参数计算出来的角度超过了边界,(尽管预测出来的是对的)但是计算的loss却很大,所以模型就要去修改已经学的很好的参数,导致学习效果不理想。