全称Fully Convolutional Networks for Semantic Segmentation.是一篇2015年在CVPR上发表的语义分割的文章。论文开源代码
1 创新
- 第一次提出全卷积神经网络的结构。
- 第一个提出端到端训练的语义分割模型并取得当前最佳。
- 网络可以接受任意大小的图片。
- 提出跳跃连接结构:融合不同分辨率的特征图以获得更加精细的特征。
1.1 缺点
- 对小物体的分割效果不好。
2 网络结构
文中使用修改后的vgg16模:修改最后一个maxpool之后的全连接层,用两个卷积层代替(fc6 fc7)+1x1卷积层(channels=classes,用于减少卷积层的参数)再加上一个上采样层(恢复到原图像的大小以进行像素级别的分类)。论文中的结构图如图1所示。
2.1 获得细粒度图像的方法
- 减少pool的使用,但是为了保持感受野不变需要扩大卷积层的卷积核大小。
- 使用shift-and-stitch,这种计算量太大。
2.2 upsampleing的方法
文中讨论了三种,采用的是第三种。因为第一二种结构不够常用,在此不做介绍。
- shift-and-stitch:计算量太大。
- 扩展卷积核。
- 使用转置卷积实现插值上采样。
3 试验结果
可以看到,FCN对小物体的分割效果并不好。
4 代码分析
4.1 转置卷积
一种逆卷积的运算,与卷积运算相反。
如果用矩阵运算的角度来看卷积运算:前向传播是
y
=
W
x
y=Wx
y=Wx,反向传播需要依据链式法则,由于
∂
y
x
=
W
T
\partial \frac{y}{x}=W^T
∂xy=WT,所以反向传播可以看作将函数的输入乘以转置后的权重
y
=
W
T
x
y=W^Tx
y=WTx。而转置卷积正好交换了前向传播和反向传播这两个函数。
- 常用作放大图片操作。