论文地址:https://arxiv.org/pdf/1507.05717v1.pdf

代码地址:GitHub - Holmeyoung/crnn-pytorch: Pytorch implementation of CRNN (CNN + RNN + CTCLoss) for all language OCR.https://github.com/Holmeyoung/crnn-pytorch

一:CRNN简介

网络结构:

CNN + RNN + CTC

网络编码:

当输入一张尺寸归一化的图片 [32, 280, 3] ,其中32代表文本图片高度,280代表文本图片宽度,3代表文本图片通道数;经过CNN特征编码之后,高度5次2倍下采样变成1,宽度3次2倍下采样变成35,通道经过卷积变成512,最终CNN输出特征 [1, 35, 512];以此特征输入RNN网络,以35作为序列步长,通道数最终输出字符分类总数,假设字典字符总数为80,最终编码输出特征尺寸为 [1, 35, 80]。

网络解码:

训练过程使用CTCloss对[1, 35, 80]特征自动对齐真实标签。推理过程可以使用贪婪解码和束解码,贪婪解码是将每一步特征进行softmax输出概率最大字符作为识别结果;束解码是将每一步输出概率排名前k的字符都作为输出备选,最终以整个步长路径概率最大对应的字符串作为输出结果。

二:基于特征网络提高识别效果

第一部分简单介绍网络范式CNN+RNN+CTC,工程代码链接提供了VGG+BiLSTM+CTC的具体实践方式,在工程应用中,更多会使用残差结构网络ResNet或者DenseNet作为CNN部分的特征提取,虽然使用这些结构会提升网络效果,但同时带来了网络结构更复杂。RepVGG提供了一种更适合工程化的方法,在训练的时候使用类似ResNet的残差结构增加网络特征提取能力,推理的时候通过卷积核等效变化,“融合”了残差结构,简化了推理网络结构,因此CNN部分可以更换成RepVGG。

RepVGG:https://github.com/DingXiaoH/RepVGGhttps://github.com/DingXiaoH/RepVGG

注意:使用RepVGG做为识别backbone,官方代码在推理融合的时候只提供了CNN网络的处理,识别网络我们还要处理BiLSTM部分权重,可以按照下面方式处理即可:

三:基于SWA提高识别效果

之前偶然看到一篇比较有意思的文章 SWA Object Detection。这篇文章全文无公式、无算法流程图,不改模型结构,不增加模型复杂度、推断时间,也不对数据进行增广。将其简单应用于主流的目标检测算法,可普遍在COCO数据集上获得 ~1 个AP的精度提升。好奇之下,将其迁移到了文本识别工程之中,目前实验来看,在部分识别任务确实有效果。

论文地址:https://arxiv.org/pdf/2012.12645.pdf

在文本识别中,可以如下使用生成reco_swa.pth:

四:基于onnxruntime提高识别速度

在实际工程中,我们会将模型转换成onnx格式,使用onnxruntime来提高推理速度,一般在识别任务中,cpu环境下,比较pytorch会提高5-10倍速度。其中pytorch提供转化onnx格式模型接口,具体示例可以参考如下:

使用onnxruntime框架推理demo如下:

五:结构化以及位置感知识别提升

在实际工程中,我们经常会遇到识别文本出现弯曲畸变或者结构识别(比如数学公式识别),此时CRNN+CTC范式并不能再满足我们的任务需求,比较传统的方式是借鉴语言翻译任务范式Seq2Seq+Attention,通过结构微调成CRNN+LSTM+Attention模式实现结构化以及位置感知识别,但是这个方式局限于LSTM无法并行计算,大大降低了计算效率。比较成熟的方案是基于CNN+Transformer范式解决此类问题,通常使用CNN学习图像低级特征,使用self-attention学习全局特征解码,既解决了数据饥渴的问题,又解决了解码无法并行的计算效率问题。

CNN+Transformer(encoder):

GitHub - opconty/Transformer_STR: PyTorch implementation of my new method for Scene Text Recognition (STR) based on Transformer,Equipped with Transformer, this method outperforms the best model of the aforementioned deep-text-recognition-benchmark by 7.6% on CUTE80.https://github.com/opconty/Transformer_STR

六:识别新范式

以上介绍的都是传统文本识别的一些典型方法,工程领域已经非常成熟。目前近一年Vision Transformer的大火,同时带来了许多文本识别新范式。由于文本识别本就属于图像与语言交叉形式的任务,基于多模态、自监督预训练等多种范式在多个识别领域SOTA,例如微软新提出的Trocr等方法。

入门深度学习文本识别相关推荐

  1. 深度学习文本识别之表格识别

    一.简介 实现简单的横竖表格图片的识别,提取表格并生成对应的Word文档 二.架构与部署 1.本项目为B/S架构 2.显示页面采用Python的web框架Django搭建页面,负责传入单张的表格图片 ...

  2. 「每周CV论文推荐」 初学深度学习人脸识别和验证必读文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 人脸识别和验证是当前人脸图像在身份认证领域中 ...

  3. 【每周CV论文推荐】 初学深度学习人脸识别和验证必读文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 人脸识别和验证是当前人脸图像在身份认证领域中 ...

  4. 【每周CV论文】深度学习文本检测与识别入门必读文章

    欢迎来到<每周CV论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 文本检测和识别是计算机视觉的一个非常重要的应 ...

  5. AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理

    AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理) 概述 前提条件 读入数据并划分数据集 扩展阅读:为什么学术界的模型总在不断精进呢? 训练样本乱序.生成批次数据 校验数 ...

  6. 心得丨老生常谈:普通程序员到底如何入门深度学习?

    作为一名软件工程师,我们应该活到老学到老,时刻与不断发展的框架.标准和范式保持同步.同时,还要能活学活用,在工作中使用最合适的工具,以提高工作效率.随着机器学习在越来越多的应用程序中寻得了一席之地,越 ...

  7. 深度学习实战_五天入门深度学习,这里有一份PyTorch实战课程

    这是一门五天入门深度学习的实战课程. 想入门深度学习的小伙伴有福了!dataflowr 最近推出了一门五天初步掌握深度学习的实战教程(实战使用 PyTorch 框架),有知识点有实例有代码,值得一看. ...

  8. 零基础入门深度学习(5) - 循环神经网络

    往期回顾 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的.但是,某些任务需要能够更好的 ...

  9. 零基础入门深度学习 | 第二章:线性单元和梯度下降

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作 ...

最新文章

  1. oracle数据库从入门到精通之三
  2. java中想要保留2位小数_java使double保留两位小数的多方法 java保留两位小数
  3. Nginx的Gzip介绍之压缩和解压缩
  4. Linux 用户线程数与文件句柄树调整(nproc与nofile的问题)
  5. Layui或Layuimini整合Echarts 5
  6. 数据预处理之独热编码
  7. javascript 字符串和json的互转
  8. 适配器模式之组合模式
  9. 【行业专题报告】 汽车、二手车-专题资料
  10. 开心消消乐游戏网页设计作品 学生dreamweaver作业静态HTML网页设计模板 游戏主题网页作业制作
  11. Java网络编程(9)NIO - 群聊系统
  12. 让国外买家秒回复的询盘模板合集
  13. 农耕ndows7 64位ado,Windows7 SP1下载-Windows 7 Professional VL SP1下载v7601.24496 64位中文精简版-西西软件下载...
  14. 这次我真心想告诉你:分手吧!
  15. 跳跃游戏 (贪心/动态规划/dfs)
  16. SpringBean篇 (2) 注解配置形式
  17. 【web前端】H5图片制作
  18. 苹果Ipad锁屏密码忘记之后,如何不会变成砖
  19. tomcat(一个牛人写的文章,自己看)
  20. H5mui微信浏览器登录页

热门文章

  1. OGG(ORACLE GOLDENGATE 12.3)安装与学习文档教程
  2. 什么是Base-64编码
  3. 配置mpls vpn MCE组网
  4. Ryzen 5 5600G windows 10 企业版 - 高温 BUG
  5. cookie是什么?有什么用?
  6. 鬼影没干掉。 病毒已经清除。
  7. Topk实现(C++)
  8. oracle练习习题与答案
  9. base64转16进制
  10. SSH Tunnel 使用