写在前面的话
在写这篇文章的时候,我其实已经把整个项目的流程都过完了,包括Pytorch对于模型的训练等等,所以这篇题目为赛题理解但实际也会说到后面的内容,不光是题目所说的赛题理解这么简单
总之,请你按整个项目的流程去走,去了解整个项目的背景、数据和目的,以及要求的环境等等,然后再针对目标去一步步的完善代码
按照建模流程,整个过程可以分为:赛题理解,数据预处理,建立模型,模型优化,模型集成 五个部分
ok,准备开始
赛题理解
此次的赛题是针对计算机视觉的一个入门练习,对于不懂计算机视觉的小白(比如我)难度不小,但是因为建模的流程差别不大,所以整个过程是既熟悉又陌生
另外,本次比赛是通过Pytorch下实现的,所以可能也需要去稍微补一补Pytorch的内容,比如Pytorch下建模的流程,相应的神经网络相关的方法概念等等
赛题目标:
通过对训练集中图片的训练,使得模型能够尽可能多的识别测试集中的图片
所以天池的评测指标是: S c o r e = 编 码 识 别 正 确 的 数 量 测 试 集 图 片 数 量 Score=\frac {编码识别正确的数量}{测试集图片数量} Score=测试集图片数量编码识别正确的数量
赛题数据:
本次赛题提供了训练集、验证集和测试集,其中训练集数据包括3W张图片,验证集数据包括1W张图片,测试集包括4W张图片片。
所有的图片都是来自于Google街景图像中的门牌号,所以图像比较小,也没有什么规律可言,就和下图中所展示的一样:
另外,题目官方为了降低题目难度,直接给出了训练集和验证集中所有图片的字符位置框,其中包括图片中字符的如下位置信息:
Field | Description |
---|---|
top | 左上角坐标X |
height | 字符高度 |
left | 左上角最表Y |
width | 字符宽度 |
label | 字符编码 |
针对一个具体的图像,通过它的位置信息确定字符所在的区域并截取出来一个更小的图像。具体的位置参数在图像中是这样的:
工具与平台
针对图像的加载、处理等需要安装图像处理框架,例如Pillow、Opencv等实现图像的裁剪、旋转、变换等预处理
通过Pytorch框架构建CNN模型,所以需要预先安装Pytorch
另外涉及Pytorch的相关使用,还需要了解Pytorch的相关操作,例如张量的相关操作,选择GPU或者CPU训练模型等等
# 安装opencv
pip install opencv-python
# 安装pytorch
pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
具体的Pytorch 的安装可以直接去官网:Pytorch安装