零基础入门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会涉及到多种解法,可以使用到计算机视觉领域中的各个模型;
以上三种解决思路的难度从低到高,后续会逐步复现

天池赛事零基础入门语义分割-地表建筑物识别任务是一个面向初学者的语义分割竞。任务的目标是利用机器学习和计算机视觉技术,对卫星图像中的地表建筑物进行标记和识别。 在这个任务中,参者需要使用给定的训练数据集进行模型的训练和优化。训练数据集包含了一系列卫星图像和相应的像素级标注,标注了地表建筑物的位置。参者需要通过分析训练数据集中的图像和标注信息,来构建一个能够准确地识别出地表建筑物的模型。 参者需要注意的是,语义分割是指将图像中的每个像素进行分类,使得同一类别的像素具有相同的标签。因此,在地表建筑物识别任务中,参者需要将地表建筑物区域与其他区域进行区分,并正确地进行标记。这对于初学者来说可能是一个挑战,因此需要掌握基本的图像处理和机器学习知识。 参者可以根据自己的理解,选择合适的算法和模型来完成这个任务。常见的方法包括卷积神经网络(CNN),通过设计适当的网络结构和训练方式,提高模型的准确性和泛化能力。同时,数据预处理和数据增强技术也是提高模型性能的关键。参者可以通过对数据进行增强和扩充,提高模型的鲁棒性和识别能力。 最后,参者需要使用训练好的模型对测试数据集进行预测,并生成预测结果。这些预测结果将用于评估参者模型的性能和准确度。评估指标通常包括像素级准确度(Pixel Accuracy)和平均交并比(Mean Intersection over Union),参者需要根据这些指标来评估和改进自己的模型。 总之,通过参加这个任务,初学者可以通过实践和挑战来提高自己的图像处理和机器学习技能,并掌握语义分割的基本概念和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值