前言
之前做一些Traditional Image process的任务,这次借助Datawhale重新学习下Deep learning Image process的知识,由于没有下载破解版的pycharm,正好可以熟悉下Jupyer-Notebook搭建网络的方式。希望通过后面几次Tasks的学习,完成几个小目标:
- 熟悉Pytorch,并搭建简单的网络模型
- 熟悉Jupyer-Notebook的Coding环境
- 学习numpy、pandas、sklearn、matplotlib等常用Python工具包
- 了解DL常用学习技巧
- 完成一些数据可视化指标
赛题理解
1 学习路径
2 运行环境及常用Package安装
运行环境要求:Python3.X,Pytorch1.X,4G内存,有无GPU加速都行。下面给出python3.7+torch1.3.1+gpu版本的环境:
1、首先在Anaconda上创建一个专门用于本次训练赛的Virtual envirment:
conda create -n py37_torch131 python=3.7
2、激活环境,并安装pytorch1.3.1
activate py37_torch131
conda install pytorch=1.3.1 torchvision cudatoolkit=10.0
注:这里注意cuda版本需要和电脑GPU匹配,可参考链接:如何检查显卡支持哪个版本的CUDA ?
3、在激活的虚拟环境中安装Python依赖数据库
pip install jupyter
pip install tqdm
pip install opencv-python
pip install matplotlib
pip install pandas
4、启动notebook,即可开始Coding代码学习
jupyter-notebook
3 赛题展示
1、数据集样本展示
2、评测标准
4 思路分析
4.1传统cv思路:先将图像二值化处理,然后做倾斜校正,根据投影做字符切割,根据0-9的字符的特征点与标准字符匹配来进行识别
4.2深度学习思路:本题本质上是分类问题,需要对图片的字符进行识别。但是图像给定的数据及中不同图像中包含的字符数量不等。因此赛题难点在于对不定长字符进行识别,这区别于传统CV方法。
- 简单入门思路:定长字符识别
可将赛题抽象为一个定长字符识别问题,在赛题dataset中大部分图像字符个数为2-4个,最多字符数为6.因此可以抽象为6个字符的识别问题,字符23填充为23XXXX,字符231填充为231XXX。
这样原题就变成为6个字符的分类问题。在每个字符的分来中会进行11个类别的分类,若分类为填充字符,则表示为空。 - 专业字符识别思路:不定长字符识别
对于字符识别,有特定的Method来解决不定长字符识问题,比如CRNN模型。
在赛题dataset中给出了Trainset/Validaset中所有图片字符位置,因此可以 首先将字符的位置进行识别,利用物体检测思路完成。
可参考模型SSD或YOLO完成。
5 Datawhale与Tianci官方资料(方便后续查询)
- Github地址:team-learning/03 计算机视觉/计算机视觉实践(街景字符编码)
- Tianci官网:天池大赛->零基础入门CV赛事->街景字符编码识别