深度学习比赛入门——街景字符识别(一)
这是入门深度学习——具体来说是CV比赛的入门级比赛,有点类似手写数字识别,具体的赛题链接如下:https://tianchi.aliyun.com/competition/entrance/531795/information
入门深度学习比赛,我想把参加比赛的全过程包括:赛题理解,数据处理(或者可能需要加上EDA),模型的选择,模型的训练与验证,模型的集成(深度学习也可集成?)以及在过程中的思考与学习记录下来
赛题理解与分析
开始一个比赛,首先做的事就是审题,包括任务背景,任务目标,所给数据,以及评判标准。任务目标和任务背景的理解有助于我们对业务有一定的认识,帮助我们对任务进行抽象建模,同时,较好的理解任务,还能帮助我们寻找类似的任务与赛题,从而可以借鉴之前所作的比赛或者相关的论文研究,使得我们可以站在巨人的肩膀上进行学习。
在本次比赛中,任务目标是对任意街景的图片进行数字字符的识别。因为是关于图像的比赛,所以第一反映是进行图像的分类任务,也就是类似于手写数字识别。而且,题目降低了难度,给出了每一个数字字符的位置,这样,我们可以很方便的将目标进行定位,直接将目标数字裁剪出来,减少了周围背景的干扰。
进一步的分析,本赛题相对于手写数字,难度在于不同的图片,其上的数字字符个数不相同,所以直接进行数字的分类任务似乎不太可能;同时,不定长度的问题也给任务带来了一定的难度。对本赛题的初步分析,主要解决的问题有以下几点:
- 不同于单个数字的识别,直接进行分类即可,多数字字符的识别该如何进行解决;
- 每张图片数字字符个数不等,不定长度问题如何解决;
- 背景干扰,图片大小不等,分辨率影响,数字字符可能出现旋转,缩放等,对识别可能有一定的影响;
初步的思考方案如下:
- 图像放入模型之前,需要进行的预处理,包括裁剪多余背景,去噪,二值化,图像尺寸标准化等,对数据还可以进行数据的增强,以增强网络模型的鲁棒性;
- 尝试一些解决该类问题的论文模型,比如说经典的OCR以及结合深度学习的OCR模型,或者一些其他深度学习模型CRNN,再高级一点的还可以使用目标检测
模型的选择多种多样,可以进行大量的尝试,选择其中的最好几个,比赛的后期进行模型的融合,将成绩进一步的提高。当然了,一个好的评判函数也是很重要的,本题比较简单,只是正确率的构建,稍难一点的可能需要自己进行构建评判函数,以保证线下与线上的统一。