FCN网络的训练——以SIFT-Flow 数据集为例

(一)数据准备(以SIFT-Flow 数据集为例)

下载数据集:下载地址
并解压至/fcn.berkeleyvision.org/data/下,并将文件夹名重命名为sift-flow。之后,将数据全部resize到500*500

1:(直接用原数据256×256训练的时候出现error == cudaSuccess (2 vs. 0) out of memory 解决方法见:https://stackoverflow.com/questions/33790366/caffe-check-failed-error-cudasuccess-2-vs-0-out-of-memory 显卡内存(3G)太小哦,或者减少batchsize大小。)

附带:python image resize:
    from PIL import Image
    import os.path
    import glob
    def convertjpg(jpgfile,outdir,width=500,height=500):
    img=Image.open(jpgfile)   
    new_img=img.resize((width,height),Image.BILINEAR)   
    new_img.save(os.path.join(outdir,os.path.basename(jpgfile)))
    for jpgfile in glob.glob("/home/lly/fcn.berkeleyvision.org/data/sift-flow/Images/spatial_envelope_256x256_static_8outdoorcategories/*.jpg"):
    convertjpg(jpgfile,"/home/lly/fcn.berkeleyvision.org/data/sift-flow/Images/1")

2:这里一定要注意,/fcn.berkeleyvision.org/data/下本来就有一个文件夹叫sift-flow,千万不要覆盖。同时,这些原本就存在的文件夹里的东西还要全部复制到新解压的sift-flow文件夹下边。你可以先把原本的sift-slow重新命名为sitf-flow_1,然后再解压复制。

(二) 下载预训练模型

下载VGG-16的预训练模型放至/fcn.berkeleyvision.org/ilsvrc-nets/目录下,并重命名为vgg16-fcn.caffemodel

1:特百度网盘搜索下载

2:百度网盘下载:

链接: http://pan.baidu.com/s/1c2d0mBY 密码: pjg

(三)源码修改

1. prototxt文件修改

进入siftflow-fcn32s文件夹下,将test.prototxttrainval.prototxt中的fc6fc7分别替换为其他名称,例如:fc6_newfc7_new

原因是我们下载的预训练模型VGG-16原模型中包含有fc6和fc7这两个全连接层,而在prototxt中,使我们新添加的卷积层,在模型加载时,如果名称一样,而结构数据不同,便会报错。如果改名之后,原来的fc6/7则会被忽略,而使用我们新的层。

2. caffe path的加入

由于FCN代码和caffe代码是独立的文件夹,因此,须将caffe的Python接口加入到path中去。这里有两种方案,一种是在所有代码中出现import caffe 之前,加入:

1 import sys
2 sys.path.append('caffe根目录/python')

另一种一劳永逸的方法是:在终端或者bashrc中将接口加入到PYTHONPATH中:

export PYTHONPATH=caffe根目录/python:$PYTHONPATH

(四)训练

1 $ cd cd siftflow-fcn32s/ 2 $ python solve.py

训练过程遇到的问题见:

 

http://www.linuxidc.com/Linux/2017-01/139242.htm

(五).训练完后用得到的model来测试

测试训练的网络:单张图像测试 在fcn源码文件夹,找到infer.py 在第一行加上 import sys sys.path.append(‘/home/my/caffe-master/caffe-master/python’)

net = caffe.Net(‘deploy.prototxt’, ‘siftflow-fcn32s/train_iter_100000.caffemodel’, caffe.TEST) 中,train_iter_100000.caffemodel为训练得到的模型

im = Image.open(‘test.jpg’)为 测试的图片名, plt.savefig(‘test_out.png’)为将测试结果保存为test_output.png

此外 out = net.blobs[‘score’].data[0].argmax(axis=0) 改成 out = net.blobs[‘score_sem’].data[0].argmax(axis=solve.py0)

测试结果,用自己的图测试。http://blog.csdn.net/u010069760/article/details/74923344附问题答惑链接 http://blog.csdn.net/u013059662/article/details/52770198

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值