论文:Fully Convolutional Networks for Semantic Segmentation(CVPR 2015)
代码:bat67/pytorch-FCN-easiest-demo
Fully convolutional networks
FCN 把后面几个全连接都换成卷积,这样就可以获得一张2维的特征图,逐像素进行softmax得到分类信息,最终处理得到分割图
将全连接层替换为卷积层,FCN就可以输入任意大小的图片,在整张图片上进行计算。计算共享相当于间接提速
FCN
如下图所示,每进行一次pool,特征图尺寸缩小一半,pool5之后,特征图特征图尺寸为 h 32 × w 32 \frac {h} {32}\times \frac{w}{32} 32h×32w:
- FCN-32s:直接对pool5 feature进行32倍上采样得到 32x upsampled feature,逐像素点做softmax prediction获得32x upsampled feature prediction,即最终分割图
- FCN-16s:对pool5 feature进行2倍上采样获得2x upsampled feature,将pool4 feature与之逐点相加,再进行16倍上采样和softmax prediction操作,获得16x upsampled feature prediction
- FCN-8s:上面FCN-16s中与pool4 feature逐点相加后,继续与pool3 feature逐点相加,接着进行8倍上采样和softmax prediction操作,获得 8x upsampled feature prediction
由下图可知:多层的特征融合明显提高了分割的精确度
用 Netscope 查看 FCN caffe prototext 结构
参考文献
【1】图像语义分割入门+FCN/U-Net网络解析
【2】最全动画诠释各种卷积网络及实现机制
【3】Convolution animations
【4】torch.nn.ConvTranspose2d