The Street View House Numbers (SVHN) Dataset是街景字符的数据集。该数据集用于modern-day map making。街景字符转录是字符序列识别问题。针对图片序列识别问题传统思路是定位、分割、识别,现在可以采用定长字符分类识别、CRNN不定长字符识别等方法。
问题描述:
- 零基础入门CV赛事- 街景字符编码识别要求选手识别图片中所有的字符,为了降低比赛难度,官方提供了训练集、验证集和测试集中所有字符的位置框。
- 训练集数据包括3W张照片,验证集数据包括1W张照片,每张照片包括颜色图像和对应的编码类别和具体位置
- 测试集A包括4W张照片,测试集B包括4W张照片
- JSON标注中给出了训练数据每张图片对应的编码标签,和具体的字符框的位置(训练集、测试集和验证集都给出字符位置)。
- 另,图片中不仅包含字符序列,还有门框等干扰信息,为了提高准确率可根据JSON标注提供的数字框位置裁剪图片,如:
→
- 另,由于街景字符对应门牌编号,字符串序列的任意错误直接导致地图导航错误,因此街景字符识别以整体识别准确率为评价指标,整体准确率越高则模型性能越佳。
解决方案:
定长字符识别之多分类解决方案
Google2014年的论文《Multi-digit Number Recognition from Street View Imagery using Deep Convolutional Neural Networks》提出了基于深度卷积神经网络的定长字符分类识别方法。
图片中的字符串序列长度不定但不超过5个字符,可以将赛题抽象为一个定长字符识别问题,待识别字符序列为LXXXXX,其中
- 每个X的取值范围为[0,1,2,3,4,5,6,7,8,9,空字符]
- L代表字符串非空字符长度,取值范围[0,1,2,3,4,5,’>5’]
定长字符识别的一种解决方案是直接对编码图片进行多分类操作(Multi-CNN):
- 模型的输入是 128 ∗ 128 ∗ 3 128*128*3 128∗128∗3的图片,经过一系列的CNN层进行特征提取,变成了一个含有4096个特征的向量H
- 根据这4096个特征,分别经过6个Softmax层,分别对各个字符串进行分类(分别对5个X字符进行11个类别的分类以及1个L字符进行6个类别的分类。)
- 将6个分类loss求和训练即可。
这种方法思路简单,模型仅包含卷积层和全连接层,模型收敛快;但这种思路是将每个字符单独进行分类的,所以没有考虑到字符与字符之间的关系【这个主要存在于相关联的words字符识别中,数字间不知道有啥关联,难道第一个字符串代表长度,与后面位数的字符串存在关联?】,在精度上有一些欠缺。
不定长字符识别解决方案
CRNN+CTC字符识别模型可以解决不定长的字符识别问题。CRNN模型包括去除全连接层的CNN提取输入图像的Convolutional feature maps,深层双向LSTM网络继续提取序列特征,最后将RNN输出做softmax后,为字符输出。后面CTC的改进看不懂【CRNN+CTC更看不懂…】
检测再识别解决方案
此种思路需要构建字符检测模型,再对字符进行识别。物体检测模型参考SSD或者YOLO、Faster RCNN来完成。