vlambda博客
学习文章列表

验证码识别大赛(一)英文验证码识别

《AI研习社 英文验证码识别》简要说明

1. 团队信息:

吐泡泡


2. 比赛介绍:

https://god.yanxishe.com/66


OCR(光学字符识别)是工业界常用的技术,将深度学习技术应用于OCR是一种非常具有价值的应用场景。为此,AI研习社将开启OCR有关的系列挑战赛。本比赛为系列挑战赛的第一场,数据集内验证码内容为常见的英文字母,长度为4-8,背景颜色不统一。

 


3. 文件结构如下:


4. 实验方法

实验迭代过程中权重保存,并用于修改学习率等后下次继续训练,训练:验证=85:15。


实验模型为CRNN+CTC,切换了CNN部分。优化或关键词包括:

ØDropout

ØImageNet预训练模型迁移学习

Ø数据增强

Ø学习率正则

Ø标签空白随机插入

Ø优化器

    Radam+Lookahead+CosineAnnealingWarmRestarts

Ø重复难例(如oO0等),无提升

Ø伪标签,无提升

Ø结果集成

ØTTA(为7)

Ø梯度累加(至256)

ØFP16半精度

Ø验证集精度TOP10权重预测



5. 结果

  • BaseModel.py

  • DenseNetModel.py

  • ResNetModel.py


n_input_length = 24

W,H = 192,64 # 自定义模型参数


验证码识别大赛(一)英文验证码识别


  • TransformGeneral.py


使用ImageNet模型迁移学习

n_input_length = 20

W,H = n_input_length*32, 32


下图没有使用TTA。


  • Submit_ass3_tta为TransformGeneral.py模型权重开启了TTA。

  • Submit_ass4为部分模型权重top10。


集成优势明显。代码见下方原文。