深度学习—caffe—验证码

来源:互联网 发布:网络通则 编辑:程序博客网 时间:2024/06/06 09:29
本文是参考博客:http://blog.csdn.net/sinat_14916279/article/details/56489601?locationNum=10&fps=1进行四个字符验证码的实验,为提供参考并记录实验过程特撰此博客,一切资料来源于上述博客。

我已经将所有的资源上传http://pan.baidu.com/s/1eSmxEKU,按照下述的步骤进行可以进行验证码识别的实验,步骤如下:

1、安装caffe。
2、参考网址http://blog.csdn.net/sinat_14916279/article/details/56489601?locationNum=10&fps=1对caffe的函数进行修改。
3、将"trainmodel.txt"放到caffe目录下,并将后缀名跟改为".bat"。
4、将"captcha_prototxt"放在caffe目录中"models"下。
5、将"captcha_images_lmdb"放在caffe目录中"data"下。
6、双击caffe目录下的"trainmodel.bat",即可开始训练。
7、将"test_captcha.m"放在caffe目录下"matlab\demo"下运行进行测试。
说明:caffe及prototxt修改过程请参见原博。
遇见的问题:
1、训练模型时报错:cudaSuccess<2 vs. 0> out of memory 或 CURAND_STATUS_SUCCESS<102 vs. 0>
原因:GPU内存不足(我的是2G的GPU)。
修改方式:①换用CPU,在solver.prototxt及trainmodel.txt中将GPU改为CPU,缺点是运行变慢。②修改batch_size,我的GPU即使将batch_size改为1仍然跑不起来原博修改的模型。③修改"create_lmdb.bat",修改resize参数,将227改为更小,会影响效果,我试过我的GPU大约要改成50以下才能跑起来,不要忘记对deploy.prototxt的dim进行相应的修改。④修改网络,使用比Alexnet更小的网络或者对Alexnet网络进行修改,我选择对Alexnet进行修改,fc6的num_output改为2048(原为4096),fc7_x的num_output改为1024(原为4096)。6个全连接层每个有4096个卷积核,这得多少参数啊!
2、训练网络时loss不收敛
①输出层输出类别的问题,这个网上都有就不说了②在能跑来的前提下将batch_size改大③把solver.prototxt的stepsize及max_iter改大(我原来是100,3000后来改成了3000,15000),这个其实是说每种stepsize多训练几次,多换几种stepsize。④网上也有说是因为网络不够复杂而训练样本数量过多形式过于复杂,导致网络不能全面覆盖各种情况。我把训练样本个数和复杂度减少了,同时进行③了的修改,loss终于收敛了,但是不知道究竟哪个是关键。
3、loss过拟合
感觉是因为训练样本过少而迭代次数过多。
4、在matlab下进行测试时,报错找不到"caffe_"函数,在m文件中加上addpath('../../Build/x64/Release/matcaffe') %addpath('..');
0 0