论文阅读:U2 Net: Going Deeper with Nested U-Structure for Salient Object Detection

论文地址:https://arxiv.org/pdf/2005.09007.pdf

内容简介

  • 这个网络是用来做显著目标检测的(SOD),能够取得出色的效果,同时模型文件较小,更适合于移动设备
  • 不同于原有的SOD网络,没有使用用于图像分类的backbone(如resnet),而是重头开始做了一个,避免受ImageNet数据分布的影响
  • 网络结构能做的更深,能够更好的利用更高分辨率下(更准确的说,多尺度下)的特征

网络结构

论文阅读:U2 Net: Going Deeper with Nested U-Structure for Salient Object Detection_第1张图片
其原型也是一个UNet,思想也非常直接:

既然UNet(Encoder-Decoder)架构能在很多任务上取得出色的性能,而原有的Encode直接pool下采样和Decode直接conv上采样又感觉太简单了,要看看能不能加点什么东西。

而这里的思路就十分清奇了,直接加UNet进去提取特征,进行套娃(所以叫U2Net),最后也确实能取得十分出色的效果。原文表示甚至还能继续往下套娃(不过会too complicated to be implemented)。

U block

结构中的一个个小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。

简单总结

输入: 任意尺寸的RGB图像,首先被resize为320×320,然后random crop至288×288。
最终网络的输入为288×288。
Encoder: 共6个Encoder,其中前五个对特征图进行1/2的下采样,因此输入最终被采样至输入特征图的1/32(在这里为9×9)。
Decoder: 共5个Decoder,每次上采样2倍,最后将特征图恢复为原始尺寸(在这里为288×288)。
输出: 原尺寸的特征图。综合六层中间结果进行输出,由于之前resize和random crop过,因此会有个双线性插值过程。
Loss: 使用各层bce loss的平均。
训练: 作者训练该网络时没有使用任何预训练模型,因此训练了120小时(1080Ti)。

你可能感兴趣的:(阅读)