Caffe的图像语义分割

(一)下载模型

作者在github上开源了代码:https://github.com/shelhamer/fcn.berkeleyvision.org,我们首先将代码下载并且解压到家目录下。

项目文件结构很清晰,如果想train自己的model,只需要修改一些文件路径设置即可,这里我们应用已经train好的model来测试一下自己的图片:

我们下载voc-fcn32s,voc-fcn16s以及voc-fcn8s的caffemodel(根据提供好的caffemodel-url),fcn-16s和fcn32s都是缺少deploy.prototxt的,我们根据train.prototxt稍加修改即可。注意,这里的caffemode-url其实在各个模型的文件夹下面都已经提供给我们了,请读者细心找一找,看看是不是每一个文件夹下面都有一个caffemode-url的文件?打开里面会有模型的下载地址!

(二)修改infer.py文件

  • 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

本次我们采用后者。

在解压代码的根目录下找到一个文件:infer.py。略微修改infer.py,就可以测试我们自己的图片了,请大家根据自己实际情况来进行修改。

 im = Image.open('voc-fcn8s/test.jpeg') 这里指的是测试图片路径!

 net = caffe.Net('voc-fcn8s/deploy.prototxt''voc-fcn8s/fcn8s-heavy-pascal.caffemodel', caffe.TEST) ,这里指的是voc-fcn8s文件下的部署文件和模型。注意,fcn下每一个模型其实都对应于一个文件夹,而每个文件夹下应当放着这个模型的caffemodel文件和prototxt文件! 

  plt.savefig('test.png') ,这里指的是最终分割的结果应当放置在哪个路径下,大家都知道,语义分割的结果应当是一张图片!

修改完后的infer.py如下所示:

复制代码
 1 import numpy as np
 2 from PIL import Image
 3 import matplotlib.pyplot as plt
 4 import caffe
 5 
 6 # load image, switch to BGR, subtract mean, and make dims C x H x W for Caffe
 7 im = Image.open('voc-fcn8s/test.jpeg')
 8 in_ = np.array(im, dtype=np.float32)
 9 in_ = in_[:,:,::-1]
10 in_ -= np.array((104.00698793,116.66876762,122.67891434))
11 in_ = in_.transpose((2,0,1))
12 
13 # load net
14 net = caffe.Net('voc-fcn8s/deploy.prototxt', 'voc-fcn8s/fcn8s-heavy-pascal.caffemodel', caffe.TEST)
15 # shape for input (data blob is N x C x H x W), set data
16 net.blobs['data'].reshape(1, *in_.shape)
17 net.blobs['data'].data[...] = in_
18 # run net and take argmax for prediction
19 net.forward()
20 out = net.blobs['score'].data[0].argmax(axis=0) 
21 
22 plt.imshow(out,cmap='gray');
23 plt.axis('off')
24 plt.savefig('test.png')
25 #plt.show()
复制代码

(三)遇到的问题:内存不足


由于我的是使用Ubuntu14.04虚拟机下跑的  一开始只分配了2G的内存  就会报这种错  不能允许

这是因为内存不够

调高了Vmware中本机给予虚拟机的内存  就可以成功了

(四)运行结束后会在软件的根目录下生成一个分割好的图片test.png!

 

我们可以看一下原始图片和最后生成的图片的区别:

参考自:

http://www.cnblogs.com/xuanxufeng/p/6240659.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值