CRNN骨干网络替换指南
CRNN自2015年发表至今,仍然是OCR领域霸榜的存在。但当时所用的骨干网络直接早已落后于现在的AUTOML搜索,比如:mobilenetv3,efficientnet。如何将这些新型网络应用于CRNN呢,掌握本博客介绍的原则,轻松替换你的CRNN骨干网络。
前言
修改CRNN骨干网络前,需要具备一个常识,自Vgg网络开始,所有的特性提取网络都有以下两个步骤:
1、5次下采样。
2、flatten、pooling、linear等操作输出最终类别
拿经典的Resnet为例,输入尺寸224×224,经过5次下采样缩减为7×7(224/32)特征图 ,最后经过AdaptiveAvgPool2d、linear操作输出最终类别
一、CRNN的骨干网络设计
首先看CRNN的骨干网络设计:
如图所示,模型输入为32×320的图像,输出为1×81的特征图,其中高度部分一共下采样5次(5个红色框),宽度部分只在前两次进行下采样(2个绿色框)。
基于此设计准则,我们就可以愉快地修改我们自己的CRNN特征提取网络了,我们要做的就是将所选的骨干网络,
1、倒数后3次的stride由2改为(2,1)
2、删除采样后面的pooling、linear等操作
二、实战部分
1. 基于mobilenetv3的CRNN
mobilenetv3没有官网实现,高星实现: mobilenetv3为基础模型。
如下图红框部分所示,将倒数3个s 由2改为(2,1)
2. 基于efficientnet的CRNN
efficientnet没有官网实现,高星实现: efficientnet为基础模型
如下图红框部分所示,将倒数3个s 由s22改为s21
总结
到此就可以回答很多初入ocrer的高频问题:模型训练时,训练样本最大字符个数是多少?欢迎交流讨论~