2020-05-26

训练集数据包括3W张照片,验证集数据包括1W张照片,每张照片包括颜色图像和对应的编码类别和具体位置。

在这里插入图片描述

数据标签

对于训练数据每张图片将给出对于的编码标签,和具体的字符框的位置(训练集、测试集和验证集都给出字符位
置)。可用于模型训练:
在这里插入图片描述
字符的坐标具体如下所示:
在这里插入图片描述
在比赛数据(训练集、测试集和验证集)中,同一张图片中可能包括-一个或者多个字符,因此在比赛数据的JSON
标注中,会有两个字符的边框信息:
在这里插入图片描述

读取数据

JSON中标签的读取方式:
在这里插入图片描述
在这里插入图片描述

解题思路

赛题思路分析:赛题本质是分类问题,需要对图片的字符进行识别。但赛题给定的数据图片中不同图片中包含的字
符数量不等,如下图所示。有的图片的字符个数为2,有的图片字符个数为3,有的图片字符个数为4。在这里插入图片描述

简单入门思路:定长字符识别

可以将赛题抽象为一个定长字符识别问题,在赛题数据集中大部分图像中字符个数为2-4个,最多的字符个数为6
个。因此可以对于所有的图像都抽象为6个字符的识别问题,字符23填充为23XXXX,字符231填充为231XXX。在这里插入图片描述
经过填充之后,原始的赛题可以简化了6个字符的分类问题。在每个字符的分类中会进行11个类别的分类,假如分
类为填充字符,则表明该字符为空。

专业字符识别思路:不定长字符识别

在这里插入图片描述
在字符识别研究中,有特定的方法来解决此种不定长的字符识别问题,比较典型的有CRNN字符识别模型。
在本次赛题中给定的图像数据都比较规整,可以视为一个单词或者一个句子。

专业分类思路:检测再识别

在赛题数据中已经给出了训练集、验证集中所有图片中字符的位置,因此可以首先将字符的位置进行识别,利用物
体检测的思路完成。
在这里插入图片描述
此种思路需要构建字符检测模型,对测试集中的字符进行识别。可以参考物体检测模型SSD或者YOLO来完成。

2 数据读取与数据扩增

opencv

OpenCV是个跨平台的计算机视觉库, 最早由Inte1开源得来。OpenCV发展的非常早,拥有众多的计算机视觉、数
字图像处理和机器视觉等功能。OpenCV在功能上比Pillow更加强大很多。学习成本也高很多。在这里插入图片描述
cv2.imread(),返回的是个数组ndarray(dtype=uint8),其中数值我们也可以更改。
imread第二个参数有多种方式让我们读取:
cv2.IMREAD_COLOR (默认读取方式,也可以用1来代替): 读取彩色图片,不包括alpha值(透明度)
cv2.IMREAD_GRAYSCALE (也可以用0来代替): 图像灰度处理,这样压缩了了图片尺寸,但也会丢失特征。
cv2.IMREAD_UNCHANGED (也可以用-1来代替): 读取彩色图片,且包括alpha值(透明度)

图片存储:

img = cv2.imread(’./dataset/cats_and_dogs_filtered/train/cats/cat.0.jpg’, 1)
cv2.imwrite(‘cat0.png’, img)

OpenCV官网: htpt:/opencv.r/
OpenCV Github: htp/github.com/opencv/opencv
OpenCV扩展算法库: htps:/github.com/opencv/opencv contrib

数据扩增

在深度学习中数据扩增方法非常重要,数据扩增可以增加训练集的样本,同时也可以有效缓解模型过拟合的情况,
也可以给模型带来的更强的泛化能力。
在这里插入图片描述

数据扩增为什么有用?

在深度学习模型的训练过程中,数据扩增是必不可少的环节。现有深度学习的参数非常多,一般的模型可训练的参
数量基本上都是万到百万级别,而训练集样本的数量很难有这么多。
其次数据扩增可以扩展样本空间,假设现在的分类模型需要对汽车进行分类,左边的是汽车A,右边为汽车B.如.
果不使用任何数据扩增方法,深度学习模型会从汽车车头的角度来进行判别,而不是汽车具体的区别。
在这里插入图片描述

有哪些数据扩增方法?

数据扩增方法有很多:从颜色空间、尺度空间到样本空间,同时根据不同任务数据扩增都有相应的区别。
对于图像分类,数据扩增一般不会改变标签; 对于物体检测,数据扩增会改变物体坐标位置;对于图像分割,数据
扩增会改变像素标签。
在常见的数据扩增方法中,一般会从图像颜色、尺寸、形态、空间和像素等角度进行变换。当然不同的数据扩增方
法可以自由进行组合,得到更加丰富的数据扩增方法。以torchvision为例, 常见的数据扩增方法包括:

  1. transforms.CenterCrop 对图片中心进行裁剪
  2. transforms.Colorlitter 对图像颜色的对比度、饱和度和零度进行变换
  3. transforms.FiveCrop 对图像四个角和中心进行裁剪得到五分图像
  4. transforms.Grayscale 对图像进行灰度变换
  5. transforms.Pad 使用固定值进行像素填充
  6. transforms.RandomAffine 随机仿射变换
  7. transforms.RandomCrop 随机区域裁剪
  8. transforms.RandomHorizontalFlip 随机水平翻转
  9. transforms.RandomRotation 随机旋转
  10. transforms.RandomVertcalFlip 随机垂直翻转
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    常用的数据扩增库

torchvision
https://github.com/pytorch/vision
pytorch官方提供的数据扩增库,提供了基本的数据数据扩增方法,可以无缝与torch进行集成;但数据扩增方法种
类较少,且速度中等;
imgaug
https://github.com/aleju/imgaug
imgaug是常用的第三方数据扩增库,提供了多样的数据扩增方法,且组合起来非常方便,速度较快;
albumentations
https:/albumentations.readthedocs.io
是常用的第三方数据扩增库,提供了多样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值