CRNN 端到端可训练神经网络对于OCR的应用
背景论文
photoOCR: reading text in uncontrolled conditions
作者: A Bissacco
DCNN(检测并识别分割字符)的鼻祖,使用标注好的字符图像去分类字符,需要有很强的字符检测和分割算法,同时需要将检测出的字符从原图中裁剪出来。
reading text in the wild with convolutional neural networks
作者:M Jaderberg
这个算法总体来说就是先画出几个框,不断优化框的范围,然后就对框内的字符进行识别,打分,最后确定框的位置和框里的内容。
他的优点是:端到端的训练,并且使用单词级别的识别粒度,准确率提高,缺点是模型过大,并且对于字符数量多的中文扩展性不好
a novel connectionist system for unconstrained handwriting recongnition
作者:A Graves, M Liwicki, S Fernández
手写体识别的文章,是一篇基于预定义词典的单词识别,是纯识别类文章,使用hook之类的传统机器学习方法进行特征方法,得到序列,并输入BILSTM后输出到CTC并将输出对应到词典里的单词,判断哪个单词的可能性最大。
优点是:摒弃了马尔科夫模型,而是用LSTM模型,可以处理字符不易分割、双向依赖类序列标注任务。
缺点是:不支持端到端训练、也没有使用CNN提取特征。
word spotting and recognition with embedded attributes
作者 Jon Almazan, Albert Gordo, Alicia Forn ´ es, Ernest Valveny
这篇文章是把图片卷积后,投影到子空间中,吧OCR任务建模位一个特征空间单词检索任务。不过他的准确率不及基于CNN的模型。
CRNN 正文
CRNN 的研究成果和意义
作者:B SHI
首先是说自己有更高的准确率和更小的模型。
下面是CRNN文章里写出的测试比较,其中数据集下面的子集数字表示使用的预定义词典数,横线则代表没有这个实验。
端到端训练的模型其实是非常重要的,这代表模型易用性高,只要给定输入和输出就能进行测试或者训练,不需要额外的预处理。
并且网络使用卷积进行特征提取,不需要字符级别的人工标注,且支持无预定词典。
同时模型大小仅仅有8.3M,在OCR模型中是非常重要的,因为实际应用中,不一定有很大的内存空间进行数据存储。即使到现在2021,也很少有比CRNN更小的模型
这篇文章以前的OCR文章将分离的不同模块单独训练,比如特征提取-》特征筛选-》特征识别。
这篇文章开启了OCR的一种基本方法论,以后的OCR技术都朝着端到端训练,集特征提取、识别、解码集成于一体的模型。同时这个模型的小型化也加速了OCR在计算机视觉应用上的落地。
文章认为文字识别是对序列的预测方法,所以采用了对序列预测的RNN网络。通过CNN将图片的特征提取出来后采用RNN对序列进行预测,最后通过一个CTC的翻译层得到最终结果。说白了就是CNN+RNN+CTC的结构。
这里着重介绍一下CTC算法,见这篇文章.
总的来说 CTC (Connectionist Temporal Classification)适合这种不知道输入输出是否对齐的情况使用的算法,他通过引入空位符和Q变换,来让多种识别序列能映射到同一个单词,因此提高正确单词的识别率。
实验设置和结果分析
模型模块对比
模型指标对比
Lexicon-based 参数影响
在有词典辅助时,需要设置搜索邻域大小,因为不可能在全集里面搜索词汇,这样时间复杂度太高,因此设置一定的邻域大小来降低搜索复杂度。邻域大小过大或导致时间复杂度过高,邻域过小会导致模型衰减为无词典辅助模型。
文章以一种算法为主测试了最佳的邻域大小。