前言
之前写过两个版本的FCN网络训练,一个是基于caffe-future(原博地址),一个是基于官方Caffe的FCN(原博地址)。结果有很多人都咨询一些问题,由于一直有项目和论文的任务,因此一直没有注意到大家的问题,知道今天才看到。自己也是写博不久,对于很多问题没有解释清楚,因此,再次将这两个版本合并一下,并教程从零开始,写完具体的每一步。
最后,将大家的评论和私信里的典型问题做了仔细解答。希望给大家带来帮助。
友情提醒
教程分为两大部分,第一部分为新版FCN的教程,第二部分为CVPR2015论文提供的初版教程。前者已经整合到新版caffe中去,后者现已经被废弃,不建议使用,教程也比较简略一些。
新版FCN训练
准备工作
1. 代码准备
$ git clone https://github.com/shelhamer/fcn.berkeleyvision.org.git
$ git clone https://github.com/BVLC/caffe.git
2. 编译caffe
请参见官方文档,不在此赘述。但需要注意的是,在MakeFile.config文件的修改过程中,打开WITH_PYTHON_LAYER,即按照如下修改:
# Uncomment to support layers written in Python (will link against Python libs)
WITH_PYTHON_LAYER := 1
3. 数据准备(以SIFT-Flow 数据集为例)
下载数据集:下载地址。
并解压至/fcn.berkeleyvision.org/data/
下,并将文件夹名重命名为sift-flow
。
之后,将数据全部resize到500*500。这部分就不用细说了吧。
4. 下载预训练模型
下载VGG-16的预训练模型(地址)放至/fcn.berkeleyvision.org/ilsvrc-nets/
目录下,并重命名为vgg16-fcn.caffemodel
。
源码修改
1. prototxt文件修改
进入siftflow-fcn32s
文件夹下,将test.prototxt
和trainval.prototxt
中的fc6
和fc7
分别替换为其他名称,例如:fc6_new
和