用caffe框架做号牌识别笔记

    最近在看号牌识别相关的内容,所以记录一下相关步骤和注意事项(怕忘记)

之前研究过tesseract-ocr,但是样本标注是个很费力的事情,需要用到jTessBoxEditor工具,一个一个字符的去标注,像下面这样

用caffe框架做号牌识别笔记_第1张图片

 

而且我标注完后,发现识别率并不高,可能是我数据处理有问题或步骤有问题,后来开始考虑用caffe来做,之前都是用来做目标分类的,然后在github上发现有人做了这个项目,大神的github地址https://github.com/senlinuc/caffe_ocr。 记录下环境配置和数据处理的过程。

    代码是在windows下调试的,下载完代码后,编译肯定不通过,需要重新配置环境变量,大神的工程目录都是绝对路径。主要是opencv库和thirdparty,opencv我用的是3.4.0.  还需要下载个thirdparty其它三方库的集合,我下载的是另一个thirdparty,因为原作者的三方库在我电脑上配置的版本不兼容。下载路径百度网盘 https://pan.baidu.com/s/1ZTp8iWszMPrZ718w_UCZ5Q。下载后自己配置下包含路径和库路径。类似这样,库路径也是一样。这个不难,注意cudnn用自己电脑上的就行。

用caffe框架做号牌识别笔记_第2张图片

 

  编译通过后,开始做数据集,原作者分享的数据集网盘地址已经失效,自己生成一些。https://github.com/Sanster/text_renderer这个数据集生成工具很好用,生成图片大小,背景色,文字大小,变形,噪声,模糊等都可以设置,生成类似下面的图片

生成训练集20W张,验证集2W张。

之后开始制作caffe数据集,如果以前用过caffe的都知道怎么制作,caffe自带有convert_imageset.exe 。但是作者改的caffe是识别多标签的,所以convert_imageset.exe也需要用作者自己修改的,只不过作者工程目录中没有,需要自己把convert_imageset添加到解决方案中。工程目录配置和caffe工程一样,用编译出来的convert_imageset.exe转换数据集。

用caffe框架做号牌识别笔记_第3张图片

生成lmdb或leveldb后就可以开始训练了,但是注意几点:

1.作者的数据集是32*280分辨率的图片,而且每个样本固定10个字符,因此如果你的样本中不满10个字符,最好补空格,空格补在前面和后面是一样的,但是我看有的人空格补在最后影响识别率,所以我都是补在最前面。

2.生成的模型,用ocr_test做检测时,一定要把图片resize成同样大小,例如32*280.否则识别率很低。

检测效果如下。

用caffe框架做号牌识别笔记_第4张图片

上面都是生成的类似号牌的图片,我实际的数据集太少了,只有300+张。然后和上面生成的数据集一起训练,得到得效果如下,如果能添加更多的实际的号牌,识别率可以更高。涉及隐私打码了。数字都可以识别出来,清晰的拍照都可以正确,模糊的识别较差,跟我样本集太少有关。

用caffe框架做号牌识别笔记_第5张图片

 

 

你可能感兴趣的:(人工智能)