零基础入门CV赛事- 街景字符编码识别_TASK1

本次新人赛是Datawhale与天池联合发起的零基础入门系列赛事第二场 —— ***零基础入门CV赛事之街景字符识别***
赛题以计算机视觉中字符识别为背景,要求预测真实场景下的字符识别,这是一个典型的字符识别问题
赛题来源自Google街景图像中的门牌号数据集(The Street View House Numbers Dataset, SVHN),并根据一定方式采样得到比赛数据集

blog仅记录代码部分

导入模块

import json     # 方便对JSON格式数据的处理
import numpy as np
import cv2      # OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库
import matplotlib.pyplot as plt

读取数据

train_json = json.load(open(r'E:\Pycharm\TF_Learning\CV_Learning\data\mchar_train.json'))
'''
top - 左上角坐标Y
height - 字符高度
left - 左上角坐标X
width - 字符宽度
label - 字符编码
'''

数据标注处理

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(r'E:\Pycharm\TF_Learning\CV_Learning\data\mchar_train\000000.png')
'''
cv2.imread(filepath, flags) - 读入一副图片
    filepath - 要读入图片的完整路径
    flags - 读入图片的标志 
        cv2.IMREAD_COLOR - 默认参数:读入一副彩色图片,忽略alpha通道
        cv2.IMREAD_GRAYSCALE - 读入灰度图片
        cv2.IMREAD_UNCHANGED- -顾名思义,读入完整图片,包括alpha通道
'''

Arr = parse_json(train_json['000000.png'])  # 将json文件中的目标文件找出进行数据标注处理

切割可视化

plt.figure(figsize=(10, 10))
plt.subplot(1, Arr.shape[1] + 1, 1)     # Arr.shape[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]])
    '''
    此处是截取图片区域:
        top(0) + height(1) = 图片的高度
        left(2) + width(3) = 图片的宽度
    '''
    plt.title(Arr[4, idx])
    plt.xticks([])
    plt.yticks([])

在这里插入图片描述

赛题难点:需要对不定长的字符进行识别

'''
简单入门思路:定长字符识别 - 将赛题抽象为一个定长字符识别问题
    赛题数据最多的字符为6个
    因此可以对于所有的图像都抽象为6个字符的识别问题:23填充为23XXXX, 231填充为231XXX
    填充之后,每个字符分类中会进行11个类别的分类(0-9/X),假如分类为填充字符,则表明该字符为空

专业字符识别思路:不定长字符识别
    比较典型的有CRNN字符识别模型
    本次赛题中给定的图像数据都比较规整,可以视为一个单词或者一个句子

专业分类思路:检测再识别
    赛题中已经给出了图片中字符的位置
    因此可以首先将字符的位置进行识别,利用物体检测的思路完成
    这种思路需要构建字符检测模型,对测试集中的字符进行识别
    可以参考物体检测模型SSD或者YOLO来完成
'''

小节

接下来的TASK会涉及到多种解法,可以使用到计算机视觉领域中的各个模型;
以上三种解决思路的难度从低到高,后续会逐步复现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值