基于mobilenet-ssd训练车牌识别模型

为了在移动端或者嵌入式平台进行深度学习物体检测,faster-rcnn等框架训练得到的模型在体积、速度上都存在一定的限制。这里我们介绍一下智云视图(www.zeusee.com)开源的车牌检测模型,利用mobilenet训练一个ssd物体检测框架。经测试,该模型在720P图像上,CPU测试时间低于200ms,具有一定的工程化优势。 第一部分介绍SSD的安装,第二部分介绍如何基于SSD训练自己的数据集,这里以车牌数据为例。

第一部分 SSD安装

系统:ubuntu 14.04 
语言:python 
ssd项目主页: https://github.com/weiliu89/caffe/tree/ssd  
首先,我们把项目代码clone下来, 然后 编译:

git clone https://github.com/weiliu89/caffe.git

cd caffe

git checkout ssd

接下来,我们开始编译caffe,编译caffe非常容易,这里我们滤过,如若感兴趣,可参考我之前的博客:http://blog.csdn.net/zhang_shuai12/article/details/52289825,此篇讲的是caffe + cpu + ubuntu14.04的安装, GPU版安装需修改Makefile.config文件, 修改完成后:

make
make py

到这里我们就完成了SSD的安装,接下来我们讲一下如何训练自己的数据集。


第二部分 准备数据集

首先,我们需要准备已经标注好的车牌数据集,这里我们采用了5500张已经标注好的数据。已经标注的数据我们以txt文件的形式
记录。格式为 path/image.jpg x y w h ,分别代表图片的路径,标注车牌的x、y坐标点,w,h代表标注车牌的宽高。

接下来我们需要根据标注的数据,形成训练需要的xml文件,参考VOC数据集xml文件的格式,写一个简单的python脚本。

然后坐直trainval.txt和test.txt文件,其中trainval为训练的数据图片与对应的xml文件,test中包含测试需要的图片及
xml文件,格式为path/1.jpg path/1.xml。

最后将测试需要的图片组织形成一个test_name_size.txt,内容为测试的image h w(图片名称,不带后缀)。修改
caffe-ssd/data/voc 目录下的labelmap_license_prototxt,内容为:


修改create_list.sh和create_data.sh对应的路径

创建lmdb格式的数据:

cd caffe
./data/license/create_list.sh

./data/license/create_data.sh

至此,我们的数据已经准备完毕。

第三部分 训练模型

前面我们说到基于mobilenet,首先我们去 https://github.com/chuanqi305/MobileNet-SSD 下载预训练模型,放在
caffe-ssd的models目录中。
把/data/VOC0712目录下的create_list.sh 、create_data.sh、labelmap_voc.prototxt 这三个文件拷贝到/license下:

cp data/create* ./license

cp data/label* ./license

利用 该链接下template文件夹内的训练prototxt文件,修改其中的分类数目。同时将
MobileNetSSD_train_template.prototxt MobileNetSSD_test_template.prototxt 文件的训练数据路径修改为我们自己的路径。

训练得到的模型连接如下:

https://github.com/zeusees/SSD_License_Plate_Detection


参考:
http://blog.csdn.net/zhang_shuai12/article/details/52346878

你可能感兴趣的:(深度学习)