《U^2-Net:Going Deeper with Nested U-Structure for Salient Object Detection》论文笔记

参考代码:U-2-Net

1. 概述

导读:这篇文章针对图片显著性目标检测(分割或许更为妥当)提出一种新的网络结构U^2-Net,该网络结构从整体上看由两层的U型结构组成,即是由U型的子模块(ReSidual U-blocks,RSU-L)构建一个更大的U型网络。文章指出这样做可以带来两点好处:1)可以极大提升网络在不同scale上获取上下文信息的能力,这是靠网络混合不同特征图尺寸下感受野得到的;2)由于在RSU中引入了池化操作因而可以加深网络,而不会带来巨大的计算开销。此外,文章还从具体任务出发提出不需要ImageNet预训练模型,直接从头开始训练,从而节省了预训练的开销,而且效果从文章效果来说也是不错的。文章提出的U^2大模型(176.3Mb)在1080Ti上为30FPS(320*320大小输入),小模型(4.7MB)为40FPS。

对于在ImageNet上训练得到的预训练模型其往往 更加注意的是提取输入图片的语义信息,从而更好完成分类任务,但是对于显著性目标检测来说局部细节和全局对比度信息更为重要。 这篇文章直接提出定义好适应显著性目标检测的网络之后直接从头开始训练,其最后的结果也显示该方式能获取性能近似的结果,省去了预训练过程。

为了能够获得更好的性能,对于显著性目标检测其需要更多尺度的特征图,以及在不同尺度下更好地特征图抽取方式(网络结构),对此文章提出了由RSU模块构建的U型结构,使得其在花费相对来说较小计算量的情况下获得更佳的性能表现,文章的大小模型相对于其它方法,其性能比较见下图所示:
在这里插入图片描述

2. 方法设计

2.1 RSU-L模块

现在的网络结构都是采用模块堆叠的形式构建的,根据其结构设计文章将其与RSU模块进行对比,见下图所示:
在这里插入图片描述
文章的RSU-L ( C i n , M , C o u t ) (C_{in},M,C_{out}) (Cin,M,Cout),其中的三个参数分别代表输入的channel/中间层的channel/输出的channel。其运算流程大体可以分为3个过程:

  • 1)通过一个 3 ∗ 3 3*3 33的卷积生成一个与输出channel( C o u t C_{out} Cout)一致的特征图,其过程描述为 F 1 ( x ) F_1(x) F1(x)
  • 2)使用其定义的参数 L L L表示进行层级采样的次数,从而实现在block内部多层次的特征图提取,也使得网络变深,获取跟大的感受野和更丰富的局部及全局特征。这部分计算过程描述为 U ( F 1 ( x ) ) \mathcal{U}(F_1(x)) U(F1(x))
  • 3)使用残差网络将其与之前的特征图相加,从而融合局部与多尺度信息, F 1 ( x ) + U ( F 1 ( x ) ) F_1(x)+\mathcal{U}(F_1(x)) F1(x)+U(F1(x))

将文章的结构与ResNet中的残差结构进行比较,它们的区别见下图所示:
在这里插入图片描述
此外,将图2中不同模块的结构与文章设计的RSU模块进行计算量的比较,其对比见下图所示:
在这里插入图片描述
文章设计的模块结构与其它类型的模块结构性能进行比较:
在这里插入图片描述

2.2 U^2-Net网络结构

文章提出的网络结构是多层U型结构嵌套得到的,从消耗的计算量与显存权衡,文章将其限制为2,从而得到下图中的网络结构:
在这里插入图片描述
上述的网络结构按照其组成结构划分可以划分为3个组成部分:

  • 1)编码模块 E n _ 1 , E n _ 2 , E n _ 3 , E n _ 4 En\_1,En\_2,En\_3,En\_4 En_1,En_2,En_3,En_4其使用的RSU模块分别为RSU-7/RSU-6/RSU-5/RSU-4,其中的参数(7/6/5/4)代表的是RSU模块的高度,这是由输入特征图的分辨率决定的(因为可以进行更多次下采样操作)。对于编码模块 E n _ 5 , E n _ 6 En\_5,En\_6 En_5,En_6由于其特征图分辨率已经比较小了,这里就使用RSU-4F模块,代表的是使用膨胀卷积去替换其中的上下采样操作,因而该类型模块的输入输出特征图大小是一致的;
  • 2)对于解码器模块,从图5可以看到其结构与编码器部分相似,只是多了与对应层级的藤正进行融合以及尺寸匹配的上采样操作;
  • 3)在上面的编解码模块中已经将输入图像划分成为了不同尺度的特征图: E n _ 6 , D e _ 5 , D e _ 4 , D e _ 3 , D e _ 2 , D e _ 1 En\_6,De\_5,De\_4,De\_3,De\_2,De\_1 En_6,De_5,De_4,De_3,De_2,De_1,文章在这些特征图上使用 3 ∗ 3 3*3 33的卷积和sigmoid函数去估计在这些尺度上的显著性目标输出: S s i d e ( 6 ) , S s i d e ( 5 ) , S s i d e ( 4 ) , S s i d e ( 3 ) , S s i d e ( 2 ) , S s i d e ( 1 ) S_{side}^{(6)},S_{side}^{(5)},S_{side}^{(4)},S_{side}^{(3)},S_{side}^{(2)},S_{side}^{(1)} Sside(6),Sside(5),Sside(4),Sside(3),Sside(2),Sside(1)。之后这些输出经过上采样到原始图像尺寸大小concat起来,经过一个 1 ∗ 1 1*1 11卷积和sigmoid函数得到融合之后的输出 S f u s e S_{fuse} Sfuse

文章根据任务的需要设计了两个类型的U^2-Net,一大一小,见表1所示:
在这里插入图片描述

2.3 网络损失函数

由于网络在多个尺度上均有输出,自然网络的损失函数是由多个部分组成的:
L = ∑ m = 1 M w s i d e ( m ) l s i d e ( m ) + w f u s e l f u s e L=\sum_{m=1}^Mw_{side}^{(m)}l_{side}^{(m)}+w_{fuse}l_{fuse} L=m=1Mwside(m)lside(m)+wfuselfuse
而对于在每个分量上损失函数的具体计算,其描述为交叉熵的形式:
l = − ∑ ( r , c ) ( H , W ) [ P G ( r , c ) l o g P S ( r , c ) + ( 1 − P G ( r , c ) ) l o g ( 1 − P S ( r , c ) ) ] l=-\sum_{(r,c)}^{(H,W)}[P_{G(r,c)}logP_{S(r,c)}+(1-P_{G(r,c)})log(1-P_{S(r,c)})] l=(r,c)(H,W)[PG(r,c)logPS(r,c)+(1PG(r,c))log(1PS(r,c))]

3. 实验结果

结果1:
在这里插入图片描述
结果2:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m_buddy/article/details/111189625