2005.09007:U2-Net: Going Deeper with Nested U-Structure for Salient Object Detection
- 该网络用于轻量级的 SOD(显著目标检测,Salient Object Detection),能够取得出色的效果,同时模型文件较小,更适合于移动设备。
创新点
- U-shape套娃:
- 原有的U-shape架构套娃U-shape子架构,最终能取得十分出色的效果:
- 原文表示甚至还能继续往下套娃(不过会too complicated to be implemented)。
- 网络结构能做的更深,能够更好的利用更高分辨率下(更准确的说,多尺度下)的特征。
- RSU(残差U形块,如图e):
- 由于U型结构导致的计算开销很小,这是因为大多数操作是对下采样的特征进行。
- 多尺度特征从逐渐下采样的特征图中提取,并通过逐渐上采样、拼接和卷积编码成高分辨率特征图。
- 该过程减轻了由大规模直接上采样引起的精细细节的损失。
- 参数L:
- 更大的L会有更深的RSU块,更多的池化操作,更大范围的感受野和更丰富的局部和全局特征。
- 使用不同L的RSU可以从具有任意空间分辨率的输入特征图中提取多尺度特征。
- 第三步残差连接,也就是计算局部特征和多尺度特征的和。
- 原有的U-shape架构套娃U-shape子架构,最终能取得十分出色的效果:
- 详细结构:
- Backbone:
- 结构中的一个个小U Net在文中称为U block,一共有11个(En_1~De_1):
- En_1~En_4:U block的高度在逐渐降低(7,6,5,4),因为特征图的尺寸也在逐渐降低,如果此时高度仍不变的话则容易在深层造成特征丢失。实际上在代码中高度参数也是可以调整的,从而适应不同尺寸的原始输入,比如输入特征图尺寸更大的话则可以适当调高U block高度。
- En_5~De_5: 此时由于特征图的尺寸已经很低了,因此U block中就没有再进行下采样上采样,防止特征损失,只使用空洞卷积来提取特征。
- De_4~De_1: 与Encode部分基本对称,并且同样引入了skip connection。
- Side Output:
- 也就是中间Decoder的输出,在图中为S1~S6。由于低层的中间结果尺寸较低,因此也会采用双线性插值回原尺寸。最后对这六张结果(按通道)连接后进行1×1卷积压缩为单通道,获得最终的输出。
- 这种利用中间结果的思想可能来源于HED(Holistically-Nested Edge Detection)。
- Loss:
- 直接使用的是BCE Loss,将六个side output与最终结果各自的bce loss进行平均。需要注意还是由于side output的尺寸较低,因此同样也会上采样再计算loss。
- Backbone: