IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 入门深度学习文本识别 -> 正文阅读

[人工智能]入门深度学习文本识别

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

代码地址:GitHub - Holmeyoung/crnn-pytorch: Pytorch implementation of CRNN (CNN + RNN + CTCLoss) for all language OCR.icon-default.png?t=LA92https://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/RepVGGicon-default.png?t=LA92https://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.icon-default.png?t=LA92https://github.com/opconty/Transformer_STR

六:识别新范式

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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:42:25  更:2021-12-01 17:43:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 2:17:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码