| |
|
开发:
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? 一: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): 六:识别新范式以上介绍的都是传统文本识别的一些典型方法,工程领域已经非常成熟。目前近一年Vision Transformer的大火,同时带来了许多文本识别新范式。由于文本识别本就属于图像与语言交叉形式的任务,基于多模态、自监督预训练等多种范式在多个识别领域SOTA,例如微软新提出的Trocr等方法。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |