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()

e43eb6e001850b8eec609ff95c11569a.png

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

ce40bf10311d78cb0af8e785f60bf41a.png

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

f41d0b299e3ce70fd8812ba7c8e8a869.png

a3ceac9d6a2880b8263053ff256c8f22.png

可能会遇到的问题:

(1)no display name and no $DISPLAY environment variable

其实,在Ubuntu虚拟终端里执行python infer.py是没有任何错误的,但是我是通过远程访问连接服务器的方式运行程序的。所以在执行到最后的时候会报这个错。不过不要害怕,

在stackoverflow中找到了终极解决办法:

f156ee3566de89e07fdc1a66bfcad9e7.png

如图中所示的步骤,找到matplotlibrc,将backend从tkAGG修改为AGG。

sudo gedit /home/xuanxufeng/.local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc

7fd15e31f132bf05cd5abc05fd98973d.png

再次在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

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

灵悟礼品网上专卖店——新建数据库

一、小组成员: 洪雪意(产品负责人) 陈淑筠(Master) 二、组内人员任务情况 计划完成的任务的第三个模块:分析并建立数据库 已完成的任务: 任务的第三个模块: 陈淑筠(负责…

c语言大乐透编译,Excel大乐透摇号vba代码分享,说不定就中百万了呢

大家好我是Excel从零到一,今天闲来无聊做了一套大乐透摇号程序的vba代码分享给大家来看下效果Excel大乐透摇号vba代码分享,说不定就中百万了呢Sub 摇号()Dim i, a, test, s(1 To 35) As IntegerFor i 1 To 5line1: test Application.WorksheetFunction…

纸上谈兵: 堆 (heap)

纸上谈兵: 堆 (heap) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 堆(heap)又被为优先队列(priority queue)。尽管名为优先队列,但堆并不是队列。回忆一下,在队列中&a…

最近用到这个强大的工具 PhysicsEditor (转)

今天收到PhysicsEditor作者发过来的license key,所以顺便把PhysicsEditor也尝试了一下。主要是尝试将PhysicsEditor与cocos2dx,box2d结合开发的一些步骤。之前大概网络检索了一下,知道PhysicsEditor的功能其实很简单。一句话就是给图片的边缘…

如何更新Chrome

在浏览器的地址栏中输入chrome://help即可进行自动更新,如下图:

我也要谈谈大型网站架构之系列(4)——分布式中的异步通信

我们知道在面向对象编程中,总会想着各种办法来实现代码的解耦,从而让项目中的各种人员面对自己熟悉的业务进行开发, 做到术业有专攻,比如大家非常熟悉的三层架构,MVC,MVP以及MVVM模式,让前端设计…

node模块函数图解

已截图方式记录模块信息: HTTP模块: 对于网络返回处理状态封装了很多种,我已截图展现 以上状态也是在http协议中包含的状态。 http函数: path模块: 转载于:https://www.cnblogs.com/kuailingmin/p/4547538.html

android 心跳效果动画,Android实现心跳的效果

最近再做一个教育类的项目。在做一些学习工具的时候,美工提出了一些要求,大致如下:其实实现过程也不难,大致就是对一个视图控件添加一个圆形的背景,然后该视图进行动画处理,膨胀的同时,透明度增…

操作系统上机作业--使用系统调用实现mycat

mycat.c的功能与系统cat程序相同mycat将指定的文件内容输出到屏幕,例子如下:要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/u…

微信android版字体,微信炫彩字下载-微信七彩字体 安卓版v1.6.2-PC6安卓网

微信七彩字体一款方便的手机字体更换软件,微信炫彩字软件集合了上百款优质中文美化字体,微信七彩发光字里有可爱的喵呜体、卡通体,清秀的静蕾体等多种字体。软件介绍微信、qq上最好用、最个性的聊天字体应用,让你的聊天与众不同&a…

Android SQLite 数据库 增删改查操作

Android SQLite 数据库 增删改查操作 转载▼一、使用嵌入式关系型SQLite数据库存储数据在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象…

操作系统上机作业--使用系统调用实现mycp

mycp.c的功能与系统cp程序相同将源文件复制到目标文件,例子如下:要求使用系统调用open/read/write/close实现 $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nolo…

操作系统上机作业--实现mysys(多进程)

mysys.c: 实现函数mysys&#xff0c;用于执行一个系统命令&#xff0c;要求如下mysys的功能与系统函数system相同&#xff0c;要求用进程管理相关系统调用自己实现一遍使用fork/exec/wait系统调用实现mysys不能通过调用系统函数system实现mysys 测试程序 #include <stdio.…

android 透明变成白色,android – 状态栏不透明但是白色

为了用anko DSL测试kotlin我决定在最后一个android studio ide(2.1.3)中使用kotlin插件(1.0.3)和最新的anko库(0.9)开始一个新的proyect我使用默认的proyect Navigation Drawer Activity,所以我只需要将主xml转换为anko.这是xml&#xff1a;xmlns:android"http://schemas.…

操作系统上机作业--实现shell(1)(多进程)

sh1.c: 实现shell程序&#xff0c;要求具备如下功能支持命令参数 $ echo arg1 arg2 arg3 $ ls /bin /usr/bin /home 实现内置命令cd、pwd、exit $ cd /bin $ pwd /bin 实现思路&#xff1a;在获取命令字符串后&#xff0c;用strtok函数对字符串进行处理&#xff0c;获取参数…

当执行游戏0xc000007b错误的解决方法

如图&#xff0c;这个错误使无数玩家烦恼。 出现这个错误&#xff0c;可能是硬件的问题&#xff0c;也可能是软件的问题。可是&#xff0c;因为硬件引起该问题的概率非常小&#xff0c;而且除了更换硬件之外没有更好的解决方法&#xff0c;因此本文将具体介绍怎样通过软件解决此…

android触屏音文件地址,Android音视频-音频采集

Android的音视频开发是我暂定的一个职业发展的一个方向&#xff0c;通过自学记录一些记了又忘记的知识。音频基础知识采样率(samplerate)蓝色代表模拟音频信号&#xff0c;红色的点代表采样得到的量化数值。采用就是把模拟信号数字化的过程&#xff0c;不仅仅是音频需要采样&am…

平衡二叉树,AVL树之图解篇

学习过了二叉查找树&#xff0c;想必大家有遇到一个问题。例如&#xff0c;将一个数组{1,2,3,4}依次插入树的时候&#xff0c;形成了图1的情况。有建立树与没建立树对于数据的增删查改已经没有了任何帮助&#xff0c;反而增添了维护的成本。而只有建立的树如图2&#xff0c;才能…

盒子模型的总结

转载于:https://www.cnblogs.com/zy2012/p/3725677.html

maven generating project in batch mode hang

现象&#xff1a; 执行 archetype:generate 的时候&#xff0c;会产生[INFO] Generating project in Batch mode原因是&#xff1a;网速问题&#xff0c; 解决方法&#xff1a; 设置maven不要从远程服务器上获取catalog&#xff0c;增加参数-DarchetypeCataloginternal 如何在i…