分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
利用训练好的模型开发图片分类程序
一、实验介绍
1.1 实验内容
在snapshot
目录下已经有我们训练好的模型的参数,为了利用我们的卷积神经网络模型和这些参数去对图像进行分类,我们这次实验就来编写代码实现一个图片分类程序。
1.2 实验知识点
- caffe python api
1.3 实验环境
- python 2.7
- opencv 2.4.11
- caffe 1.0.0
二、实验步骤
2.1 准备deploy.prototxt
在第二次实验中,我们编写了network.prototxt
用于进行模型的训练,当模型训练完成需要使用模型进行实际的分类时,就不能再继续用network.prototxt
来定义我们的网络结构了。因为此时我们不需要区分TRAIN
和TEST
这两种phase
, 同时我们模型的需要输出对每种类别的概率预测,而不是损失函数值,并且我们也不需要准确率层了。
但是我们的网络结构是不会变的,所以我们可以直接在network.prototxt
的基础上进行修改。首先我们需要去掉一个数据层,并且将include{phase:TRAIN/TEST}
参数删掉,然后我们需要删掉Accuracy
层和SoftmaxWithLoss
层,最后需要添加一个概率预测层prob
,其定义如下:
layer{ name: "prob" type: "Softmax" bottom: "ip2" bottom: "label" top: "prob"}
我们之前说过,通常都会将Softmax
层作为模型对概率的预测输出,所以这里的type
参数为Softmax
。
完整的deploy.prototxt
文件可以通过以下命令获取:
wget http://labfile.oss.aliyuncs.com/courses/820/deploy.tar.gztar zxvf deploy.tar.gz
注意里面还包含了我们接下来会介绍的classifier.py
文件
2.2 转换平均值文件
在前面获取训练数据时,我们使用compute_image_mean
命令计算出了平均值文件train.binaryproto
, 在我们将要实现的python程序中,也必须对图片减去均值,为了让python
能够读取平均值文件ÿ