Datawhale 零基础入门CV赛事-Task1 赛题理解

1.赛题理解

最近datawhale组织了一次学习活动是关于与计算机视觉的竞赛,本次比赛采用了经典的数据集 SVHN 来给我们进行实践操作。
比赛的目的是让大家对计算机视觉有初步的认识,感觉这很适合刚入门的小白。

学习的目标

理解图片数据的含义,懂得关键的参数的意思。
将数据集下载到电脑端,明白和了解竞赛的流程

1.对下载的数据集进行查看

Datawhale 零基础入门CV赛事-Task1 赛题理解_第1张图片
符合赛题的要求和自己参数的设置

2.理解数据标签的含义和坐标示意图

Datawhale 零基础入门CV赛事-Task1 赛题理解_第2张图片
Datawhale 零基础入门CV赛事-Task1 赛题理解_第3张图片

这对代码层理解图片标注的信息有很好的帮助
datawhlae举了一个例子
Datawhale 零基础入门CV赛事-Task1 赛题理解_第4张图片
在这里插入图片描述

在多个字符的时候数组的大小会随之改变。

评价指标

													Score = 编码识别正确的数量/测试集图片的数量

对下载好的数据进行读取

下面是代码层

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([])

Datawhale 零基础入门CV赛事-Task1 赛题理解_第5张图片

对赛题的解题思路和分析

主要问题是在于图片中 的数字是不定长的,所以要进行判断Datawhale 零基础入门CV赛事-Task1 赛题理解_第6张图片

分为以下三种解题思路

1.入门:定长字符识别

可以将赛题抽象为一个定长字符识别问题,在赛题数据集中大部分图像中字符个数为2-4个,最多的字符 个数为6个。

因此可以对于所有的图像都抽象为6个字符的识别问题,字符23填充为23XXXX,字符231填充为231XXX。
Datawhale 零基础入门CV赛事-Task1 赛题理解_第7张图片

2.专业:不定长字符识别

在字符识别研究中,有特定的方法来解决此种不定长的字符识别问题,比较典型的有CRNN字符识别模型。

在本次赛题中给定的图像数据都比较规整,可以视为一个单词或者一个句子。

3专业:检测再识别

参赛选手构建字符检测模型,对测试集中的字符进行识别。选手可以参考物体检测模型SSD或者YOLO来完成。

总结

这次的学习是关于cv最基础的入门部分,通过这次学习,对数据的理解和处理有了更深层的理解和想法。也了解了三种从简到难的解题思路。在后面的学习中会一样学习

感谢datawhale和阿里云天池提供平台学习

你可能感兴趣的:(Datawhale 零基础入门CV赛事-Task1 赛题理解)