学习笔记04·预测测试数据集、LeNet…

这篇学习笔记介绍了如何利用opencv库处理图像数据。包括是否以灰度图方式打开图片、是否随机打乱图片顺序、转换图片尺寸以保持一致性、检查图片尺寸以及选择不同的图片编码格式等关键步骤。
摘要由CSDN通过智能技术生成
(1)用训练好的LeNet-5模型对数据进行预测,在git中敲入命令./Build/x64/Release/caffe.exe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 100 。
(这里是我们第一次使用caffe工具的test命令)表示只做预测(前向传播计算),不进行参数更新(后向传播计算),
-model  指定了模型描述文件即上一篇博文中详细分析过的文件,
-weights 指定模型预先训练好的权值文件,
- iterations 指定测试迭代次数。
        得到的输出日志本文的最后附录一,对比之前训练的输出日志,本次test输出日志有点类似train日志的后半部分,但是把后面的训练变为了测试,没有了lr=******,loss=******,而是全部变为了 accuracy = 0.99, loss = 0.0303407类似的。
(2)梳理一下之前做的一些事情:
1、从网上下载了四个文件train-images、train-lables、t10k-image、t10k-lables分别是
训练数据集、训练数据集标签、测试数据集、测试数据集标签
2、使用脚本   create_mnist.sh  将上述4个文件转化为lmdb格式,供caffe工具识别。
3、运用caffe工具的  train 命令对数据集进行训练
(3)尝试将自己手写的图片转为 lmdb或leveldb(这次尝试是失败的,可以直接跳过,进入第(5)步)
首先当然是利用画图软件画一个手写字符啦,为了保险起见,图片尺寸设置为28*28,另存为jpg格式。(这个图片其实是有问题的,mnist训练的图片应该是黑底白字的)
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别 然后就是查查资料http://www.cnblogs.com/denny402/p/5082341.html,看看如何转换 在caffe中,作者为我们提供了这样一个文件:convert_imageset.cpp,存放在D:\Caffe\caffe-master\tools文件夹下,在 D:\Caffe\caffe-master\Build\x64\Release下有convert_imageset.exe,这个文件的作用就是用于将图片文件转换成caffe框架中能直接使用的db文件。这个文件使用格式如下:
 convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
共计4个参数:

FLAGS: 图片参数组,后面详细介绍
ROOTFOLDER/: 图片存放的绝对路径,从linux系统根目录开始
LISTFILE: 图片文件列表清单,一般为一个txt文件,一行一张图片
DB_NAME: 最终生成的db文件存放目录
详细看看第一个参数 FLAGS的使用说明:

-gray: 是否以灰度图的方式打开图片。程序调用opencv库中的imread()函数来打开图片,默认为false

-shuffle: 是否随机打乱图片顺序。默认为false

-backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb

-resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。程序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变

-check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查

-encoded: 是否将原图片编码放入最终的数据中,默认为false

-encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png','jpg'......

接下来就是准备需要的文件啦:我在D:\Caffe\caffe-master\examples\mnist\my_test目录下建立了两个文件,其中一个是之前画好的图片(这个图片其实是有问题的,后面再解释),另一个是 LISTFILE参数所需要的文件列表清单:
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别 学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别 最后,当然是执行命令,打开git,cd到/d/Caffe/caffe-master目录下,执行./Build/x64/Release/convert_imageset.exe --resize_height=28 --resize_width=28 examples/mnist/my_test/ examples/mnist/my_test/test.txt examples/mnist/my _test_lmdb
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别同样,自动在D:\Caffe\caffe-master\examples\mnist\目录下建立了my_test_lmdb文件夹,其中生成了两个文件:
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别这应该就是我们需要的lmdb文件了吧。
(4)修改 lenet_train_test.prototxt使用该数据集,保险起见,先将给文件备份,修改其路径
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别然后,执行$ ./Build/x64/Release/caffe.exe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -iterations 100当然事情总不会那么顺利出现了错误,
  Cannot copy param 0 weights from layer 'conv1'; shape mismatch.  Source param shape is 20 1 5 5 (500); target param shape is 20 3 5 5 (1500). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.
学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别 学习笔记04·预测测试数据集、LeNet识别自己的手写数字·从-1开始深度学习语音识别又是查资料, http://blog.csdn.net/u010417185/article/details/52649178

“conv1” ; shape mismatch 已经很明确的给出了错误的原因,原始shape不一致,同时又很明确的指出了是cov1层出现的错误。所以直接找shape\cpnv1,之后才发现是训练模型文件与模型定义文件中的shape不相符,我训练时图像库中有的图像是一个通道,有的是使用的3个通道,所以默认使用三个通道,而我的模型定义文件中的shape,其通道数写的是1个通道,故出现错误。

 我理解的意思大概,minst自带的图片集是黑白两色的,每个像素值只有一个通道,而我的图片虽然也是黑白色,但是其实是RGB格式的,且看如何修改。这个方法有很多,matlab可以进行这样的操作,但修改完毕后,按照以上步骤重新来一遍,问题依旧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值