前提假设你的caffe已经配置好了,并且编译了pycaffe接口。
一、mnist训练
sudo sh data/mnist/get_mnist.sh
2、制作符合caffe要求的数据
sudo sh examples/mnist/create_mnist.sh
二、参数打印
mnist的参数打印在此只做两个方面,画出网络图和打印网络 .caffemodel中的部分数据
1、画出训练网络的结构图
cd ~/caffe/python%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
这是因为在编译pycaffe 之前安装的一些依赖库不全造成的,缺啥就安装啥吧,这里缺少dot,因此执行:
sudo pip install pydot画图lenet_train_test.prototxt网络结构如下:
python draw_net.py ../examples/mnist/lenet_train_test.prototxt lenet_train_test.png
这里还是贴出一张图吧
画图lenet.prototxt网络结构如下:
python draw_net.py ../examples/mnist/lenet.prototxt lenet.png
有时安装pydot后,还可能需要安装graphviz:
sudo apt install graphviz2、打印训练好的caffemodel中一些参数
这个可以参考这个:
https://blog.csdn.net/huobanjishijian/article/details/78478957
点击打开链接
需要注意的是:
root = '/caffe/examples/mnist/' 此处caffe是在根目录下,不是home
这个路径一定要是绝对路径,一般我们会把caffe放在home,因此上述路径一定要改成对应的就可以了,不然会报错,我刚开始就是把程序拿来一看觉得好像对着,直接跑后就报错了,找了好一会儿才发现路径不对。
三、识别示例
1、准备28x28黑底白字的图片
因为训练使用的是28x28黑底白字的图片,因此识别也要是这样(具体原有除了尺寸统一方面的原因外其他不清楚为啥这样做),你说突然来个28x28的黑底白字且含有数字的图片,一时还真不好弄,最好的还是采用原作者的那一对图片吧,终于在网上找到了这些图片,我把它放在百度网盘上去,需要的可以去这里免费下载:
链接: https://pan.baidu.com/s/14hNlWjbZUkYoqrVh4PLIhw 密码: hbk6
2、编写识别过程代码
在sublime下编写识别代码,如下:
import caffe
import os
import sys
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
CaffePath='/home/dq/caffe/'
sys.path.insert(0,CaffePath+'python')
ModelFile=CaffePath+'examples/mnist/lenet.prototxt'
CaffeModel=CaffePath+'examples/mnist/lenet_iter_10000.caffemodel'
ImPath=CaffePath+'examples/images/MNIST/testimage/pic2/0/1.bmp'
InputIm=caffe.io.load_image(ImPath,color=False)
net=caffe.Classifier(ModelFile,CaffeModel)
Prediction=net.predict([InputIm],oversample=False)
caffe.set_mode_cpu()
print 'predict class is',Prediction[0].argmax()
###########下面这段代码在我电脑上运行不了,一时没找到原因先记录###############
“”“”“
img = Image.open(ImPath)
plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.title('image') # 图像题目
plt.show()
”“”“”
这里以识别0为例子。
ctrl+b 运行程序
输出:
predict class is 0
ubuntu不方便截图,就不上图了。
至此mnist训练识别以及.caffemodel数据打印都大体走了一遍