(1)简介
论文下载地址:License Plate Detection and Recognition in Unconstrained Scenarios [pdf]
github 的项目地址:alpr-unconstrained
工程主页:alpr-datasets
视频效果: Demi Lovato Rock in Riio Lisboa 2018
本文选自ECCV2018的论文《License Plate Detection and Recognition in Unconstrained Scenarios ( 复杂| 无约束 场景下的车牌检测和识别)》。该论文不进给出了一套完整的车配识别系统( Automatic License Plate Recognition system,ALPR system)的解决方案,而且提供了在无约束(Unconstrained Scenarios)场景下的识别算法, 很好的解决了实际生活中的车牌识别问题。
(2)motivation:
目前很多ALPR系统对正面拍摄车牌照片识别效果良好,但是在多变的角度和场景(光线)下车牌往往是倾斜的,导致识别的效果并不如意。
数据集中存在的倾斜车牌基于此,这篇文章提出了一种完整的ALPR系统,可以在各种场景下具有良好的表现。在这篇文章的贡献主要有两个:
1. 介绍了一种新颖的神经网络,能够检测出不同场景环境下的车牌;并在OCR之前对变形的进行校正。
2. 利用真实数据合成多样的车牌,用于训练。手动标注的样本了少于200个,并且是从头开始训练网络。
(2)实现方法
ALPR 的主要任务是 在图像中找到并识别车牌(license plates );通常情况下会分为4个子任务序列:
1. 车辆检测(vehicle detection) ;
2. 车牌检测( license plate detection);
3. 字符分割( character segmentation)
4. 字符识别( character recognition)
而子任务3和4可以看做OCR; 所以一共有3个子任务:vehicle detection, license plate detection, OCR. 这篇文章也是按照这三个子任务的顺序进行展开的,如下图所示。文章中的ALPR系统分为: 基于YOLOv3 的车辆识别 --> 车牌的检测和校正--> 车牌的OCR识别。
示例流程车辆的检测
考虑车辆的检测的需要使用的较少的时间,于是借用了YUOLOv3的模型与darknet框架进行检测的; 使用 YOLOv3的主要原因是: 1 . 检测速度很快(大约是70 FPS ); 2. 识别的准确率较高,在PASCAL VOC数据集中的测试结果是76.8% mPA. 在这篇文章中,将YOLOv3直接拿来使用,同时忽略了除了cars以外的其他类别;
PS :
Yolov3 相比于Faster RCNN 确实很快,但是也有致命的缺陷: 不能识别出特别小的物体。如果在实际应用中需要在一张很大的图像上识别很小的车,建议重新训练
另外,YOLOv3 中具有车牌的物体不仅仅是cars, 还有bus和truck;这两个类别在程序中确被忽略的。
原文:
原文解释对于检测出的正样本,将会被resized 之后,送入车牌检测模块。resize的计算方式如下:
计算resize 因子:
(1)中,Wv和Hv是识别车辆后的图像大小, Dmin和Dmax是常量,分别是288和608通过这种缩放计算以后,包含有车辆的图片会被统一成大小为 288*608大小的图片;
车牌的检测和校正
(不知道校正这个词用的对不对,贴出原文:License Plate Detection and Unwarping )
在车牌的检测模块中,作者提出了一种基于CNN 的物体检测网络: Warped Planar Object Detection Network,WPOD网络, 该网络是从YOLO\ SSD\ STN中获得灵感,但是并没有计算spatial transformations,我想可能是减少时间复杂度。
WOPD的检测流程如下:
可以看出来,在检测出车牌以后,还会对倾斜的车牌进行校正;现在需要关注的部分有两点:
1. WPOD是如何设计的?
2. 如何进行车牌校正的?
好,回答第一个问题: WPOD的设计:
网络结构如下,可以看出在最后一层的DETECTION上又两个并行的网络,具体看下图或论文;
另一个两点是loss function的计算方式有所改变。
WPOD的细节整个WPOD net的训练样本有196张,可以算得上是小样本了。这193张图片中,有105张是从Cas数据集中筛选的,有40张来自SSIC数据集,52张来自AOLP数据集。这些选出的车牌图片包含了欧洲、美国、巴西和台湾的车牌;
训练数据样本所识别和校正后的车牌图片(车牌的识别在OCR部分)
车牌的校正过程,文章没有提,我想开源代码里面应该会有的;最近刚看完检测部分的代码
OCR
用于文字的切割和识别的网络是基于YOLO进行修改的;这部分值得一提的是样本生成的方法;
生成车牌数据的流程PS: 这里如果使用CRNN的话,效果可能会更好;尤其是当车牌存在语义关系的时候,例如:中文车牌就具有语义关系,车牌的第一位是汉字,第二位是大写字母, 后几位是数字加字母的情况;
结果
备注:
loss 的计算方式和车牌的校正方法, 这两个应该在在阅读代码的时候找到对应的程序片段;
待理解以后,会写出对loss的理解
敬请期待~
by 2018/11/14
网友评论