Fully Convolutional Networks for Semantic Segmentation
2016-03-11 19:48
465 查看
UC伯克利的一篇文章
介绍:
1.Semantic Segmentation有两个固有性质:
1)semantic: global information解决目标是什么的问题
2)location:local information解决目标在哪的问题
2.关于本文提出的FCN:
1)利用现有的Classification model进行finetuning
2)通过 skip connections来combine deep,coarse,semantic和shallow,fine,appearance layer
3)没有pre-或者post- process
4)任意的input size,输出相应size的output
Idea:
1. Fully Convolutional Networks
1)Adapting classifiers for dense prediction:通过增大input size,使得原来Classification model的vectors变成map(全连接层也要相应的变成1x1的卷积层)
2)Shiftandstitch is filter rarefaction:这个其实是overfeat的手段,由于第一步后最终输出的map太小(10x10),所以需要进行upsampling操作。这里的做法就是:如果input被网络subsample的factor为f,则在Segmentation的时候,在input上进行shift(left-top padding)操作。
3)Upsampling is backwards strided convolution:本文的实验的upsampling最终是使用这个trick的:Deconvolution(即将原来的Convolution过程反向),可以理解为双线性差值,但是其参数是可以随着back-propagation进行学习的,如果加上activation,甚至可以实现non-linearty的upsampling。要实现最简单的FCN,只需在卷积化的Classification model后加一个1x1的Deconvolution(参数不可更行,双线性插值)层就行了,如果input 被subsample了f倍,则将Deconvolution的stride设置为f即可
4)Patchwise training is loss sampling:除了whole image training,作者也试了patch-wise的training。相较于whole image,patch-wise有利于class-balance(whole image 也可以通过weighting loss达到)
2.Segmentation Architecture:
除了最简单的FCN(本文称为FCN-32s,即最后的Deconvolution stride设置为32),也探讨了几种skip-connections
FCN-16s是在FCN-32s基础上继续训练的,Learning rate缩小了100倍
由FCN-32s构造FCN-16s:在pool4 append一个stride为16的1x1的Deconvolution,再将原先conv7(图中的pool5)的stride32 1x1Deconvolution之后的map进行2x的upsampling(双线性差值,但是参数可学习),最后将2x upsampling之后的输出与pool4 stride16 1x1Deconvolution的输出进行fusion(简单的平均?)
由FCN-16s构造FCN-8s类似
相关文章推荐
- CUDA搭建
- 稀疏自动编码器 (Sparse Autoencoder)
- 白化(Whitening):PCA vs. ZCA
- softmax回归
- 卷积神经网络初探
- 如何用70行代码实现深度神经网络算法
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 图像识别和图像搜索
- 卷积神经网络
- 深度学习札记
- 阈值分割
- 图像智能打标签‘神器’-AlchemyVision API
- 10 个值得一试的开源深度学习框架
- ubuntu theano 安装成功,windows theano安装失败
- 【Deep learning vs BPL】思考:complex => simple => rich
- 卷积神经网络知识要点
- 1.linear Regression
- 1.linear Regression
- SURF项目总结 - deepdream