caffe(CPU版本)配置 及MNIST调用

看了很多大牛的文章,淌过了好多好多坑。

终于完整走过了一个流程。


这里就不写我参考的文章了,零零碎碎很多,我也记不清了。


我这里分两部分,第一部分配置caffe,第二部分使用mnist

尽量用了最简单的方式直接出结果

涉及到配置使用的部分我就直接来干货,不写一堆中间过程和解释了


我这里安装在用户主目录下(/home/用户名/caffe)



第一部分  配置caffe

Ubuntu18.04(话说这个新发的版本不错)

opencv3(所以编译的前的配置需要修改)

python2.7(想弄3来着,倒腾好久,失败了,放弃了)

简单点,就四个步骤,顺序搞下来就成


1)安装

用户主目录下运行:

sh caffeCfg.sh


这个sh文件手动写的,内容:

sudo   apt-get install libprotobuf-dev   
sudo   apt-get install libleveldb-dev   
sudo   apt-get install libsnappy-dev   
sudo   apt-get install libopencv-dev   
sudo   apt-get install libhdf5-serial-dev   
sudo   apt-get install protobuf-compiler  
sudo   apt-get install --no-install-recommends libboost-all-dev  
sudo apt-get install libatlas-base-dev
sudo apt-get install python-dev  
sudo apt-get install libgflags-dev  
sudo apt-get install libgoogle-glog-dev   
sudo apt-get install liblmdb-dev
cd ~
sudo apt-get install git 
git clone https://github.com/BVLC/caffe.git
cd caffe/python
sudo apt-get install python-pip
for req in $(cat requirements.txt); do pip install $req; done  
sudo apt-get install python-numpy
sudo pip install opencv-python



2)配置Caffe编译参数

caffe目录下:

cp Makefile.config.example Makefile.config


Makefile.config文件进行以下修改:

去掉CPU_ONLY := 1前面的注释
去掉OPENCV_VERSION := 3前面的注释

 修改:
 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial  
 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
 

3)编译Caffe

make pycaffe
make all  
make test 
make runtest  
(需要重新编译就 make clean)


4)配置Python接口

sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc  
source ~/.bashrc  

进入python环境,输入:
import caffe  
如果没有报错,安装成功。






第二部分  使用mnist

6个步骤,前面五个是数据准备与训练,最后一个是调用


这里插一句:

这部分用的不是原始图像数据,是mnist例子里的东西。

我另外收集了些资料,打包整理了一套完整流程,使用图像数据,进行转换格式、训练以及调用。

caffe mnist数据源+完整训练+调用代码:

https://download.csdn.net/download/jiyanglin/10403784



1)下载数据

caffe/data/mnist目录下执行  

sh get_mnist.sh 


2)数据转换

caffe目录下执行

sudo sh ./examples/mnist/create_mnist.sh

    

3)配置训练数据

caffe/examples/mnist/下新建文件夹model


修改caffe/examples/mnist/下lenet_solver.prototxt 文件:

snapshot_prefix字段修改:snapshot_prefix: "examples/mnist/model/lenet"

solver_mode:GPU  默认GPU,修改为CPU


4)开始训练

caffe目录下:

sudo sh ./examples/mnist/train_lenet.sh 



5)测试

caffe目录下:

sudo ./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/model/lenet_iter_10000.caffemodel 



6)代码调用

在caffe目录下运行这个python代码文件


caffe/examples/mnist/  两个文件夹:mnist_train_lmdb, and mnist_test_lmdb

如果有访问权限,搞掉。不然运行会报错。


记得图像必须是28*28单通道,白底黑字。(因为训练时候用的就是这种图像)



调用函数的代码这样(目录得写全路径)

img = "/home/jyl/0.png"
proto = "/home/jyl/caffe/examples/mnist/lenet.prototxt"
model = "/home/jyl/caffe/examples/mnist/model/lenet_iter_10000.caffemodel"

test(img,proto,model)






代码如下:

import caffe
import numpy as np
import cv2

def test(img,proto,model):
    net = caffe.Net(proto, model, caffe.TEST)
    print net.blobs['data'].data.shape
    transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
    transformer.set_transpose('data', (2, 0, 1))
    transformer.set_raw_scale('data', 255)

    im = caffe.io.load_image(img, False)

    cv2.imshow("imgshow", im)
    cv2.waitKey(0)

    net.blobs['data'].data[...] = transformer.preprocess('data', im)
    print net.blobs['data'].data

    out = net.forward()
    print out

    prob = net.blobs['prob'].data[0].flatten()
    print prob


    order = prob.argsort()[-1]
    print 'pic num:', order



img = "/home/jyl/0.png"
proto = "/home/jyl/caffe/examples/mnist/lenet.prototxt"
model = "/home/jyl/caffe/examples/mnist/model/lenet_iter_10000.caffemodel"
test(img,proto,model

caffe mnist数据源+完整训练+调用代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值