计算机视觉——图像检索
题目理解
题目名称
零基础入门CV之街道字符识别
题目目标
通过这道题走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。
题目任务
以计算机视觉中字符识别为背景,预测街道字符编码,题目数据采用公开数据集SVHN。
训练数据
数据标签
对于训练数据每张图片将给出对应的编码标签,和具体的字符框的位置,可用于模型训练:
字符坐标具体如下:
评测指标
具体计算公式如下: Score=编码识别正确的数量/测试集图片数量
读取数据
JSON中标签的读取方式:
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([])
解题思路
思路分析:题目本质是分类问题,需要对图片的字符进行识别。但题目给定的数据图片中,不同图片中包含的字符数量不等。因为题目数据集中大部分图像中字符个数<=6,所以将题目抽象成一个定长六个字符的识别问题。字符23填充为23XXXX,字符241填充为241XXX。
经过填充之后,原始的题目可以简化为六个字符的分类问题, 在每个字符的分类中会进行11个类别的分类,假如分类为填充字符,则表明该字符为空。
总结
综上所示,本次题目是一个简单的字符识别问题,入门可以先学习定长字符识别的思路,逐渐入门计算机视觉。PS:还是第一次写博客,其实内容很多都是参考了学习手册,和朋友打赌尝试了一下,希望能坚持下来。