计算机视觉——图像检索

计算机视觉——图像检索

  • 题目理解
    • 题目名称
    • 题目目标
    • 题目任务
  • 训练数据
    • 数据标签
    • 评测指标
    • 读取数据
  • 解题思路
  • 总结

题目理解

题目名称

零基础入门CV之街道字符识别

题目目标

通过这道题走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。

题目任务

以计算机视觉中字符识别为背景,预测街道字符编码,题目数据采用公开数据集SVHN。

训练数据

数据标签

对于训练数据每张图片将给出对应的编码标签,和具体的字符框的位置,可用于模型训练:

Field Description
top 左上角坐标X
height 字符高度
left 左上角坐标Y
width 字符宽度
label 字符编码

字符坐标具体如下:
计算机视觉——图像检索_第1张图片

评测指标

具体计算公式如下:
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。

计算机视觉——图像检索_第2张图片
经过填充之后,原始的题目可以简化为六个字符的分类问题,
在每个字符的分类中会进行11个类别的分类,假如分类为填充字符,则表明该字符为空。

总结

综上所示,本次题目是一个简单的字符识别问题,入门可以先学习定长字符识别的思路,逐渐入门计算机视觉。PS:还是第一次写博客,其实内容很多都是参考了学习手册,和朋友打赌尝试了一下,希望能坚持下来。

你可能感兴趣的:(CV)