街景字符编码识别之赛题理解

点赞再看,养成习惯!

目录

    • 前言
    • 正文
      • 赛题背景
      • 赛题数据
      • 评估指标
      • 如何读取标签数据
      • 解决方案有哪些
    • 结语
    • 参考文献

前言

Datawhale开源组织最近新启动了CV实战学习活动,赛题是街道字符编码识别,身为DW鲸粉的小编毫不犹豫地加入了AI学习大军。
第一节的学习内容便是赛题理解,目标如下:

  • 理解赛题背景和赛题数据
  • 完成赛题报名和数据下载,理解赛题的解题思路

正文

赛题背景

赛题来源自Google街景图像中的门牌号数据集(The Street View House Numbers Dataset, SVHN),数据集链接为http://ufldl.stanford.edu/housenumbers/。只不过本次比赛用到的数据集经过匿名处理和噪音处理,还有为了降低比赛难度,Tianchi提供了训练集、验证集和测试集中字符的位置框,这样就只需要我们集中注意力在字符识别上。给张图片,直观感受下数据集:
街景字符编码识别之赛题理解_第1张图片

赛题数据

小编最终下载的数据有:
街景字符编码识别之赛题理解_第2张图片
训练集:mchar_train和mchar_train.json,前者有3W张图片,后者是对应的标签,如下所示:
000000.png
街景字符编码识别之赛题理解_第3张图片
标签数据:

“000000.png”: {“height”: [219, 219], “label”: [1, 9], “left”: [246, 323], “top”: [77, 81], “width”: [81, 96]}

这标签数据是啥意思呢?
其实就是字符的位置框(左上角的坐标(left,top)以及框的高宽度height和width)与字符标签(label)
街景字符编码识别之赛题理解_第4张图片
我们知道000000.png图片有两个字符1和9,所以标签的意思就是在左上角坐标为(246,77)、高度为219、宽度为81的位置框中字符为1。同理,另一个字符9的位置框也可以知道。
验证集:mchar_val和mchar_val.json,共有1W数据。
测试集:mchar_test_a,共有4W数据。
最终要提交的结果要与mchar_sample_submit_A.csv中的格式一致,如下所示

file_name, file_code
0010000.jpg,451
0010001.jpg,232
0010002.jpg,45
0010003.jpg,67
0010004.jpg,191
0010005.jpg,892

评估指标

选手提交结果与实际图片的编码进行对比,以编码整体识别准确率为评价指标。任何一个字符错误都为错误,最终评测指标结果越大越好,具体计算公式如下:
S c o r e =  编码识别正确的数量   测试集图片数量  Score=\frac{\text { 编码识别正确的数量 }}{\text { 测试集图片数量 }} Score= 测试集图片数量  编码识别正确的数量 

如何读取标签数据

# json.load将已编码的JSON字符串解码为Python字典对象{pic_id:{top:xx,...},...}
train_json = json.load(open(r'I:\Datas\StreetCharsRecognition\mchar_train.json'))

# 数据标注处理
def parse_json(d):
    arr = np.array([
        d['top'], d['height'], d['left'], d['width'], d['label']
    ])
    arr = arr.astype(int)
    return arr

arr = parse_json(train_json['000000.png']) #转化成np.array类型

街景字符编码识别之赛题理解_第5张图片

解决方案有哪些

本次赛题的难点是需要对不定长的字符进行识别,与传统的图像分类任务有所不同。
思路有三种:

  • 简单入门思路:定长字符识别【小编将跟随学习的解决方案】
    需要有先验知识(所有图片中最多会有多少字符),本赛题大部分图像中字符个数为2-4个,最多的字符个数为6个。因此可以对于所有的图像都抽象为6个字符的识别问题,字符23填充为23XXXX,字符231填充为231XXX。
    街景字符编码识别之赛题理解_第6张图片

  • 专业字符识别思路:不定长字符识别
    在字符识别研究中,有特定的方法来解决此种不定长的字符识别问题,比较典型的有CRNN字符识别模型。在本次赛题中给定的图像数据都比较规整,可以视为一个单词或者一个句子。

  • 专业分类思路:检测再识别
    在赛题数据中已经给出了训练集、验证集中所有图片中字符的位置,因此可以首先将字符的位置进行识别,利用物体检测的思路完成。此种思路需要参赛选手构建字符检测模型,对测试集中的字符进行识别。选手可以参考物体检测模型SSD或者YOLO来完成。

结语

比赛的所有代码,等学习完成后,小编会上传到Github上,供小伙伴们参考,敬请期待。

参考文献

  1. 赛题:https://tianchi.aliyun.com/competition/entrance/531795/information
  2. DW组织-赛事的学习资料

童鞋们,让小编听见你们的声音,点赞评论,一起加油。

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