linux跑caffe模型的步骤,Caffe初步实践——使用训练好的模型完成语义分割任务
Caffe刚刚安装配置结束,乘热打铁!
(一)环境准备
前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂。其实,第二篇也仅仅是caffe的初步搭建完成,还没有编译python接口,那么下面我们一起搞定吧!
在这篇博文的结尾,我们再增加编译Python接口,而这部分内容请参考我的博文《 Ubuntu14.04搭建Caffe(仅cpu) 》http://www.linuxidc.com/Linux/2016-09/135034.htm ,这篇文章从编译Python接口部分看就好了。
(二)下载模型
作者在github上开源了代码:Fully Convolutional Networks,我们首先将代码下载并且解压到家目录下。
项目文件结构很清晰,如果想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 importsys2 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 importnumpy as np2 from PIL importImage3 importmatplotlib.pyplot as plt4 importcaffe5
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()
运行结束后会在软件的根目录下生成一个分割好的图片test.png!
我们可以看一下原始图片和最后生成的图片的区别:
可能会遇到的问题:
(1)no display name and no $DISPLAY environment variable
其实,在Ubuntu虚拟终端里执行python infer.py是没有任何错误的,但是我是通过远程访问连接服务器的方式运行程序的。所以在执行到最后的时候会报这个错。不过不要害怕,
在stackoverflow中找到了终极解决办法:
如图中所示的步骤,找到matplotlibrc,将backend从tkAGG修改为AGG。
sudo gedit /home/xuanxufeng/.local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc
再次在putty中执行就没有任何问题了!
(2)在执行python infer.py时可能会提示缺少某一两个模块。
这个不用担心,都是小问题,百度很容易搜到,一两个命令安装就好了~
(四) 结束语
从开始读论文到现在,也算是前进了一小步,可以看见的一小步。在往后,随着实验的一步步进行,我还会再更新模型的训练以及训练数据集的制作!请各位看官耐心等待!
Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安装 http://www.linuxidc.com/Linux/2016-07/132860.htm
Caffe配置简明教程 ( Ubuntu 14.04 / CUDA 7.5 / cuDNN 5.1 / OpenCV 3.1 ) http://www.linuxidc.com/Linux/2016-09/135016.htm
linux跑caffe模型的步骤,Caffe初步实践——使用训练好的模型完成语义分割任务相关推荐
- 学习Caffe(二)使用Caffe:Caffe加载模型+Caffe添加新层+Caffe finetune
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014230646/article/details/51934150 如何使用Caffe Caffe ...
- 边缘设备上的实时AI人员检测:使用预先训练的SSD模型检测人员
下载数据-19.3 MB 下载模型-43.5 MB 下载结果-36.66 MB 在本系列的上一篇文章中,我们选择了两种SSD模型进行进一步工作,一种基于MobileNet,另一种基于SqueezeNe ...
- UNet语义分割模型的使用-Pytorch
1.概述 最近有时间,跑了一下UNet模型,因为自己的深度学习基础不扎实,导致用了一些时间.目前只停留在使用和理解别人模型的基础上,对于优化模型的相关方法还有待学习. 众所周知,UNent是进行语义分 ...
- 超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集
在带你轻松掌握 MMSegmentation 整体构建流程一文中,我们带大家认识了 MMSegmentation 的整体框架,分享了 MMSegmentation 中已经复现的主流语义分割模型. Op ...
- 语音自训练平台技术详解,快速训练专属语音识别模型
语音自训练平台4月份公测以来,有1000多名用户创建了1600+模型,涉及医疗.金融.农业.教育.餐饮.物流.建筑.地产等多个行业,模型上线后应用到业务数据采集录入.音频关键词质检.智能语音助手.呼叫 ...
- 当前主流的深度学习图像语义分割模型解析
转载自[量子位]公众号 QbitAI 原文地址:http://www.sohu.com/a/155907339_610300 图像语义分割就是机器自动从图像中分割出对象区域,并识别其中的内容. 量子位 ...
- 基于Keras预训练词向量模型的文本分类方法
本文语料仍然是上篇所用的搜狗新闻语料,采用中文预训练词向量模型对词进行向量表示.上篇文章将文本分词之后,采用了TF-IDF的特征提取方式对文本进行向量化表示,所产生的文本表示矩阵是一个稀疏矩阵,本篇采 ...
- 常用语义分割小样本模型
常用语义分割小样本模型 1.介绍 深度卷积神经网络在图像分类.目标检测.语义分割等许多视觉理解任务上都取得了重大突破.一个关键的原因是大规模数据集的可用性,比如ImageNet,这些数据集支持对深度模 ...
- 综述 | 语义分割经典网络及轻量化模型盘点
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于图像的语义分割又被理解为密集的像素预测,即将每个像素进行分类, ...
最新文章
- java 为什么重写equals一定要重写hashcode?
- CentOS 初体验二十:压缩包形式安装redis
- oo第三次博客-JML规格
- 简单获取任意app的URL Schemes
- 移动硬盘备份linux系统盘,将Ubuntu Linux系统放到你的移动硬盘
- python编程设计登录和注册程序_小白成长记-----python实现注册的小程序
- Python3.2.3官方文档(中文版)
- 感受来自AI的幸福:可可豆、巧克力与人工智能
- linux man 手册翻译,close (linux man) 翻译
- Win-MASM64汇编语言-CMP/CMPSB/CMPSW/CMPSD/JNE/JCXZ
- 最近一段时间的流水帐。
- MySQL 5.7.18忘记密码和密码过期解决
- Web.xml配置详解之context-param (加载spring的xml,然后初始化bean看的)
- 原生js--类、原型、构造函数
- 如何修改论文,能够避开查重?
- java基础笔试题(50题)
- 全国各地电信DNS服务器地址:
- codeforces E. Placing Rooks
- [转载]17岁高考落榜生成为世界顶尖IT高手
- 项目1:德州扑克游戏