一、赛题背景
赛题以计算机视觉中字符识别为背景,要求选手预测真实场景下的字符识别,这是一个典型的字符识别问题。
二、赛题数据
赛题来源自Google街景图像中的门牌号数据集(The Street View House Numbers Dataset, SVHN),并根据一定方式采样得到比赛数据集。
数据集报名后可见并可下载,该数据来自真实场景的门牌号。训练集数据包括3W张照片,验证集数据包括1W张照片,每张照片包括颜色图像和对应的编码类别和具体位置;为了保证比赛的公平性,测试集A包括4W张照片,测试集B包括4W张照片。
需要注意的是本赛题需要选手识别图片中所有的字符,为了降低比赛难度,我们提供了训练集、验证集和测试集中字符的位置框。
下载数据集后,例如测试集的字符图片在文件夹的命名和显示如下:
字段表
所有的数据(训练集、验证集和测试集)的标注使用JSON格式,并使用文件名进行索引。如果一个文件中包括多个字符,则使用列表将字段进行组合。
Field | Description |
---|---|
top | 左上角坐标X |
height | 字符高度 |
left | 左上角最表Y |
width | 字符宽度 |
label | 字符编码 |
{"000000.png": {"height": [219, 219], "label": [1, 9], "left": [246, 323], "top": [77, 81], "width":[81, 96]}, "000001.png": ....}
000000.png图片里只有两个字符,因此它的json信息对应的坐标都有两组。
三、评测标准
评价标准为准确率,选手提交结果与实际图片的编码进行对比,以编码整体识别准确率为评价指标,结果越大越好,具体计算公式如下:
score=编码识别正确的数量/测试集图片数量
四、结果提交
提交前请确保预测结果的格式与sample_submit.csv中的格式一致,以及提交文件后缀名为csv。
file_name, file_code
0010000.jpg,451
0010001.jpg,232
0010002.jpg,45
0010003.jpg,67
0010004.jpg,191
0010005.jpg,892
五、Baseline思路
1.将赛题抽象为定长字符识别问题,数据集中大部分图片最多字符个数为6个,对于所有图片均假设为6个字符的识别问题,字符小于6个的,将其填充为6个,例如:12填充为12XXXX,345填充为345XXX等。每张图片的每个字符的可能识别为0,1,2...9和X,有11种可能,字符识别为X的说明该字符在图片中为空。以下将不定长字符转换为定长字符的识别问题,并使用CNN(resnet18)完成训练和验证
六、训练环境配置
ubuntu18.04环境,显卡GTX1050,python3.6,pytorch1.3.1
1- 首先在Anaconda中创建一个专门用于本次天池练习赛的虚拟环境。
>$conda create -n py36_torch131 python=3.6
2- 激活环境,并安装pytorch1.3.1
>$source activate py36_torch131
$conda install pytorch=1.3.1 torchvision cudatoolkit=10.0
3- 通过下面的命令一键安装所需其它依赖库
>$pip install jupyter tqdm opencv-python matplotlib pandas
安装完成后,可通过conda list 查看安装成功的包列表,或者某个具体的包的位置
>$conda lis