1.简介
·学习主题:零基础入门CV之街道字符识别。
·学习目标:通过赛题引导竞赛选手入门计算机视觉,提高对数据建模。
2.赛事介绍
2.1 赛题目标
本次赛题的目标是识别出类似下图中的字符,例如下图中的数字“68”。
2.2 赛题数据
数据集来源于Google街景图像中的门牌号数据集(SVHN),经过一定方式的采样处得到。
*本次赛题数据下载。
训练集数据包括3W张照片,验证集数据包括1W张照片,每张照片包括颜色图像和对应的编码类别和具体位置。
这些图像中字符的个数不是固定的,原始数据中并不知道字符在图像中的具体位置,为了降低难度,本次赛事已经对数据集进行了处理,给出了字符编码标签及其在图像中所处的位置,这些信息以json格式记录。
json中字段包括:
Field | Description |
---|---|
top | 左上角坐标X |
height | 字符高度 |
left | 左上角坐标Y |
width | 字符宽度 |
label | 字符编码 |
各字符的坐标标识如下图所示:
例如,图1中,字符“68”的信息为:
train_json = json.load(open('mchar_train.json'))
train_json['000134.png']
{'height': [28, 28],
'label': [6, 8],
'left': [26, 41],
'top': [2, 3],
'width': [13, 12]}
2.3 评测指标
提交结果与实际图片的编码进行对比,以编码整体识别准确率为评价指标。
任何一个字符错误都为错误,最终评测指标结果越大越好,具体计算公式如下:
3.解题思路
本题的本质是图像分类,难点在于需要确定字符的位置,且图像中字符的个数不固定。
参考DataWhale提供的解题思路,主要有以下三种:
3.1 定长字符识别
可以将赛题抽象为一个定长字符识别问题,在赛题数据集中大部分图像中字符个数为2-4个,最多的字符个数为6个。
因此可以对于所有的图像都抽象为6个字符的识别问题,字符23填充为23XXXX,字符241填充为241XXX。
3.2 不定长字符识别
在字符识别研究中,有特定的方法来解决此种不定长的字符识别问题,比较典型的有CRNN字符识别模型。在本次赛题中给定的图像数据都比较规整,可以视为一个单词或者一个句子。
3.3 检测再识别
在赛题数据中已经给出了训练集、验证集中所有图片中字符的位置,因此可以首先将字符的位置进行识别,利用物体检测的思路完成。
这种方法需要先建立物体检测模型识别字符,可参考的物体检测模型有SSD,YOLO,Faster-RCNN等。