caffe实战之“车牌识别”
上一篇博客写了如何在cpu的情况下配置环境,配置好环境后编译成功,就可以用caffe框架训练卷积神经网络了。今天介绍如何在caffe环境下,跑车牌识别的数据,利用的网络是LeNet,这里只介绍具体caffe实战步骤,网络结构不做具体介绍。
1、准备数据
在caffe根目录下的data文件夹下新建一个mine文件夹,在mine文件夹新建一个train和val文件夹,在train文件夹下新建0和1文件夹(为了简单,只做了一个二分类,可以改成多类),在0和1文件夹下分别存放分好类的数据:
在val文件夹下放用于验证的数据
在mine文件夹下新建train.txt和val.txt,用于存放索引,把train和val文件夹下的数据索引添加进来,如果数据量比较小可以先手动添加一下,如果数据量比较大就写一段程序实现一下就好。
请注意:左边的txt文件的bird和dog改成0和1,这是train文件夹下的两个子文件夹名字,这个是之前写的文件,懒得改了。
2、转换数据
如果在vs2013环境下编译通过了,那么在caffe根目录下的bin文件夹下会有convert_imageset.exe文件,如果有这个文件,在caffe文件夹下新建一个脚本,脚本内容是:
注意:最后一个双引号表示的是数据转化后存放的位置
可以实现对图片数据的转换。(也可以把脚本放在其它位置,在写脚本的时候注意路径就可以了)
运行完这个脚本后,在mine文件夹下会出现两个文件夹
(如果写的是存放其它路径可以在其它路径下找这两个文件夹)
3、计算mean
在上一步中在VS2013编译通过的情况下,在bin文件夹下会有一个computer_image_mean.exe文件,如果没有可以尝试编译computer_image_mean。然后在caffe文件夹下新建脚本,实现计算mean:
第二个双引号代表存放上一步转化好的数据的位置,第三个引号代表mean的存放位置(如果想要修改注意路径就可以了)
运行完之后,在data/mine/下会有
这就是计算好的均值文件。
4、开始训练
因为用的数据是车牌识别的,所以最好的网络就是LeNet网络了,我直接用的就是caffe提供的车牌识别中的LeNet
把这两个文件复制到mine文件夹下,把platerecognition_LeNet文件重名为为train_val(可以不重命名,名称而已)
在solver文件中把路径改一下:
在train_val文件中把训练验证数据的路径以及最后一层的输出修改一下:(因为我测试是二分类,所以最后的输出改成了2)
修改一下模型的保存路径:
在mine文件夹下新建脚本:(也可以在其它路径下,在写脚本的时候注意路径就好)
双节开始训练:
注意:因为只有20张图像,所以肯定是要过拟合的。这里只介绍一个流程,在实际跑的时候需要提供大量的数据,这也是神经网络所依赖的!
5、测试
在测试的时候,写一个脚本文件:(把deploy的路径加载上去,别忘了,把deploy的最后输出改成2,因为训练的时候就是二分类,另外需要加载一个类别文件,category.txt)
这样,整个流程就跑通了,这是利用caffe命令行的形式来训练网络。
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/production/markdown_views-68a8aad09e.css"></div>