1. 理解赛题背景
-
零基础入门系列赛事第二场 :零基础入门CV赛事之街景字符识别
-
典型计算机视觉识别:预测真实场景下的字符识别
-
引导入门方式-数据科学库、通用流程和baseline方案
-
有助于掌握数据竞赛基本技能,及数据建模
2. 赛题数据
-
基于SVHN原始数据,降低难度追加位置框的比赛用数据
-
下载json数据标签和zip图像的关系:
json数据标签
字段 | 含义 |
---|---|
top | 左上角坐标X |
height | 字符高度 |
left | 左上角坐标Y |
width | 字符宽度 |
label | 字符编码 |
zip图像
json数据对应图像位置下载地址
[训练集]-3W
图像-mchar_train.zip(345.91MB)
数据标签-mchar_train.json(3.16MB)
[验证集]-1W
图像-mchar_val.zip(200.16MB)
数据标签-mchar_val.json(1.03MB)
[测试集A]-4W
[提交测试结果]-参考CSV
预测结果-mchar_sample_submit_A.csv(507.83KB)
特例:识别一张图片的多个字符的JSON标注:
原始图片 | 图片JSON标注数据格式 |
---|---|
000000.png | json |
3. 评测指标
Score=编码识别正确的数量/测试集图片数量
4. 读取数据
代码示例:
import json
train_json = json.load(open('../input/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
img = cv2.imread('../input/train/000000.png')
arr = parse_json(train_json['000000.png'])
plt.figure(figsize=(10, 10))
plt.subplot(1, arr.shape[1]+1, 1)
plt.imshow(img)
plt.xticks([]); plt.yticks([])
for idx in range(arr.shape[1]):
plt.subplot(1, arr.shape[1]+1, idx+2)
plt.imshow(img[arr[0, idx]:arr[0, idx]+arr[1, idx],arr[2, idx]:arr[2, idx]+arr[3, idx]])
plt.title(arr[4, idx])
plt.xticks([]); plt.yticks([])
5. 解题思路
赛题图像集特点如下:
字符属性 | 图片 |
---|---|
字符:42 字符个数:2 | 42.png |
字符:241 字符个数:3 | 241.png |
字符:7358 字符个数:4 | 7358.png |
难点
对不定长的字符进行识别(与传统的图像分类任务有所不同)
概括(三个方向)
- 简单入门思路:定长字符识别
关键点:固定长度,不足补X
- 专业字符识别思路:不定长字符识别
关键点:特定方法如-CRNN字符识别模型
- 专业分类思路:检测再识别
关键点:
--利用字符在图像中位置(训练集、验证集中)
--物体监测
--参考模型:SSD或者YOLO
6. 小结
本次赛题特点:
- 简单字符识别
- 多种解法(由浅入深)
网友评论