Datawhale 零基础入门CV赛事-Task1 赛题理解

  • 1 赛题理解

    • 赛题名称:零基础入门CV之街道字符识别
    • 赛题目标:通过这道赛题可以引导大家走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。
    • 赛题任务:赛题以计算机视觉中字符识别为背景,要求选手预测街道字符编码,这是一个典型的字符识别问题。
    • 为了简化赛题难度,赛题数据采用公开数据集SVHN,因此在后面为了取得更好的成绩需要阅读有关的论文。
    • 但是本次比赛为了简化难度,所以规定大家都只能使用比赛中被特别选出的3W张训练集,1W张验证集,4W张测试集图片。而且这些图片大小被人为的缩小了分辨率,虽然这样对GPU训练要求会更低,但同时肯定得选用更为轻量的模型避免过拟合,且采用一定的数据扩增手段来增加数据量。使得模型表现更加优异。

  • 2 解题思路

    • 赛题思路分析:赛题本质是分类问题,需要对图片中的字符进行识别。但赛题给定的数据图片中不同图片中包含的字符数量不等。在听完水神讲解以后我了解到本次赛题更为常见的名字是不定长的字符识别,水神提供了三种解题思路供我们参考:
    • 简单入门思路:定长字符识别

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

      • 这种识别的方法是借助RCNN等模型联系上下文来进行识别,但是这种识别的在本问题中,显然效果不太好,因为数字出现是随机的,所以上下文之间并不会有太多的关联。因此这种依赖于上下文的方法效果并不会太好。
    • 专业分类思路:检测再识别

      • 在赛题数据中已经给出了训练集、验证集中所有图片中字符的位置,因此可以首先将字符的位置进行识别,利用物体检测的思路完成。此种思路参赛选手构建字符检测模型,对测试集中的字符进行识别。选手可以参考物体检测模型SSD或者YOLO来完成。但是水神说这种方法如果是直接把这些物品检测模型使用效果会很差,因为图片的分辨率太低了,最终并不能很好的解决问题。
  • 3 分析总结

    • 综上所示,本次赛题虽然是一个简单的字符识别问题,但是涉及到的可行的解法较多,而然又大多不是可以实际上手就使用的方法,所以作为入门来说首页会不小。
  • 4 baseline 实际运行中的问题

    • 第一个问题:WIN下的Python的系统栈空间较小,如果多线程并行极其容易爆栈,所以不能采用多线程读取。
    • 所以需要删除baseline中的全部的nun_work,或者将之赋值为0以免爆栈。
    • 第二个问题:报错信息如下,本以为这个问题是因为第一个问题没改好之类的原因,结果询问群友以后才知道这个问题,是因为没有成功读取到文件,所以实际上是文件路径错误。QQ图片20200523090435.png-4kB
Last modification:May 23rd, 2020 at 09:13 am
If you think my article is useful to you, please feel free to appreciate