FCN与图像语义分割小结(学习初步指引)

作者:yiyisunshine
出处:http://blog.csdn.net/yiyisunshine/article/details/62895740

学习了几天FCN后,有必要进行一下整理了,也希望能帮助到看到此篇文章的人~

学习步骤:

此前你一定理解了CNN吧,如果没有的话,先去看Lenet和Alexnet好啦…

1.细读CNN–FCN的开山之作

Fully Convolutional Networks for Semantic Segmentation
此篇文章是CVPR 2015年的best paper。所以至少精读两遍,这样对文章主要的思想与作用会有一个宏观的把握。(两个第一:针对语义分割训练端到端点对点的网络;有监督预训练的方法)
个人理解如下:
- FCN用来做像素级的分类,即所谓的语义分割。
- 文章需要重点理解:卷积化(convolutionalization)(全链接转化为全卷积输出heatmap,对每个像素而言,逐像素求其在所有heatmap上该像素位置的最大数值分类)、反卷积(Deconvolution)和跳跃结构(Skip Architecture)。
(这里多看几个博客就懂了,我把自己看的不错的附在文后,我就不详细写啦。)

2.自己画一下FCN8s网络结构图

 这里感谢 [xiaohouzuoxin博主的深度卷积网络CNN与图像语义分割 ](http://blog.csdn.net/xiahouzuoxin/article/details/47789361)的学习指引篇,我才自己画图分析网络,兮兮~
  • 论文中描述了三个结构FCN32s,FCN16S,FCN8s,第一个是没有结合跳跃结构的,当然FCN8s网络最复杂,但效果相较最好。
  • 画的过程相当于分析网络结构。那我们先去论文作者开源的FCN源码处找到结构代码的train.prototxt 即可。
    我自己画了FCN32s然后画了voc-fcn8s网络图,真的很乱,但是还是附上图吧。你们作为参考,字写得差劲加上本身很绕的跳跃结构,懒得重画了~

    FCN与图像语义分割小结(学习初步指引)_第1张图片

    FCN与图像语义分割小结(学习初步指引)_第2张图片

3.对照网络结构推导各层

  • 不懂的参数和层就去百度,主要是看下我上图红线标出来的层和参数:
    首层pad100(解决任意图像输入问题),“fuse”、”Crop”、“Deconvolution”等。
    别怕,后边参考链接里也有啦。哪里看不懂可以留言讨论下。
  • 卷积:
    这里写图片描述
    这里写图片描述
    反卷积就是卷积计算的逆过程,反卷积公式:
    这里写图片描述
    这里写图片描述

4.接下来就学着训练测试FCN吧,期待下一篇~

5.参考列表

  • 对照学习第一步 http://blog.csdn.net/xg123321123/article/details/53092154
  • 主要对照学习第三步 https://zhuanlan.zhihu.com/p/22976342

你可能感兴趣的:(深度学习,caffe)