FCRN全卷积残差网络
FCRN全卷积残差网络是单目深度估计的一种方法。在FCN全卷积网络的基础上尝试了更深层次的网络带来的好处。
FCRN网络结构
上图中前两行是一个pretrained的ResNet50结构,最后一行为一系列反卷积的结构,使输出图片与输入图片大小近似相等。
FCRN延续了FCN(全卷积网络)的特点,直接去掉了全连接层,取而代之的是一个新的上采样结构.整个网络可以看做是一个encoder-decoder的过程。
插一句去掉全连接层的优点:
第一,是全连接层几乎拥有整个网络的90%以上的参数,去掉全连接层可以更好的利用GPU;
第二,全连接层固定了网络输入输出的大小,只有固定大小的图片才能够被处理。利用encoder-decoder就可以直接处理几乎所有的图片大小。
FCRN的设计与贡献
1.设计Res-Block
反池化是提升图片的分辨率。作者首先使用了图a结构,过2 * 2的un-pooling层,没有值的地方填补0,之后过5 * 5的卷积,使让所有有0的地方都能被卷积到,过relu。采用4个这种结构是综合内存与分辨率的考量,如果使用5块,内存增加且分辨率不会有改善。作者又在该基础上,设计了图c所示的res-block的结构。
2.利用小卷积核使up-convolution更加的有效,降低参数,减少训练时间。
在原有的结构中存在un-pooling(上池化)操作,在实验中发现会导致结果中出现过多 0 值,导致卷积操作无意义。于是采用4种不同的小卷积来代替5*5卷积核,分别进行计算,之后叠加feature map,获得更好的训练效果。
3.使用了huber做loss
Huber loss具备了MAE和MSE各自的优点,当值在C范围内为|X|就退化成了MAE(L1范式),而当超过C时就则退化为了MSE(L2范式)。Huber 对两种损失都有了一种平衡。大残差的时候使用L2项,同时,对于小残差梯度,L1效果比L2要好。这也使 Huber 对异常点更加鲁棒。
一种改进的方法
利用HKU-IS显著性数据集进行测试,结果如下:
可以看出结果是存在过拟合的。为了进一步增强网络的泛化能力,对原模型做以下改进:
1)在含有 Skip 跳层连接和projection连接的运算中,在第三层卷积中加入了与前两层一样的 Relu 激活函数,同时在最后输出时加入了卷积运算(核 1*1,步长为 1),如下图紫圈标记。
2) 在上采样(up-projection)中,在最后输出时加入了正则化,如下图 3 紫圈标记。
3)在网络结构上有所修改,主要增加了 skip 的操作次数,如下图。
最终测试结果如下:
可以看到,改进后的模型在一些细节上的表现更加出色。