艾巴生活网

您现在的位置是:主页>科技 >内容

科技

paddle如何记忆,三步骤快速实现PaddleOCR实时推理

2024-02-16 20:32:01科技帅气的蚂蚁
作者英特尔人工智能软件传教士吴卓博士主持国家和省部级科研项目十余项,国际国内专利授权十余项。该技术使PaddleOCR的开发者在笔记本电脑

paddle如何记忆,三步骤快速实现PaddleOCR实时推理

作者

英特尔人工智能软件传教士

吴卓博士

主持国家和省部级科研项目十余项,国际国内专利授权十余项。

该技术使PaddleOCR的开发者在笔记本电脑上获得超过40FPS的速度,大大降低了PaddleOCR的部署成本。

简介

在上一篇文章中,我们介绍了光学字符识别(OCR)技术可以从文档、图片或自然场景中识别和提取文本信息,当与一系列自然语言处理技术相结合时,可以完成诸如文档和票据文本信息的自动处理、实时图片文本翻译等任务。通过机器的自动处理,可以帮助财务人员在处理账单时省去大量手工输入的工作量,还可以方便我们在国外旅行时随时翻译国外的文字和信息,减少语言障碍带来的不便。

既然OCR技术这么实用,那我们有没有办法通过自己的设备随时使用这项技术呢?当然,答案是肯定的。接下来我们就拿百度的开源PaddleOCR1-2技术为例,具体介绍如何使用Intel s开源的OpenVINO工具套件,只需要利用我们手头的CPU就可以轻松实现PaddleOCR的实时推理。

本文是使用OpenVINO工具套件轻松实现基于OCR和NLP的自动信息抽取的系列博客中的第二篇。我们将简单介绍一下PaddleOCR的原理以及用OpenVINO工具套件实现PaddleOCR推理加速的工作流程。同样,只需要一页Jupyter笔记本和简单的三个步骤,就可以实现CPU基于PaddleOCR的实时文本信息提取。

PaddleOCR原理简介

PaddleOCR是基于深度学习框架PaddlePaddle的OCR技术。它具有超轻、体积小、易于在手机和服务器上部署的特点。PaddleOCR技术的工作流程如下图所示,主要包括文本检测、方向分类和文本识别三个部分。

文本检测的任务是找到文本在图像或文章中的位置。与目标检测的任务不同,目标检测不仅要解决定位问题,还要解决目标分类问题。然而,文本检测也面临一些困难,如自然场景中文本的多样性,以及文本大小、方向、长度、形状和语言的差异。有时,单词的重叠或高密度会影响最终的文本检测效果。目前,常用的文本检测方法有基于回归和基于分割的方法。在PaddleOCR中,我们选择了基于分段的DBNet3方法。

DBNet的工作方式如下图所示。针对基于分割的方法需要使用阈值进行二值化,导致后期处理耗时的问题,DBNet提出了一种学习阈值的方法,巧妙地设计了一种类似于阶跃函数的二值化函数,使分割网络在训练时能够端到端地学习文本分割的阈值。自动阈值调整不仅提高了准确率,而且简化了后期处理,提高了文本检测的性能。

方向分类是指当通过文本检测得到的包围盒中的文本方向是非水平时,对图片中某些包围盒的方向进行检测。如果发现包围盒中的文字方向为非水平排列,则纠正包围盒的方向,使其向文字的水平方向旋转,便于下一步的文字识别。

文本识别的任务是识别文本检测到的包围盒中的特定文本内容。文本识别算法包括规则文本识别算法和不规则文本识别算法。对于规则文本,主流的算法CTC(connectionist Temporary class ification)和基于Sequence2Sequence的方法。

在这个演示中,我们采用了基于CTC的方法。由于文本识别任务的特殊性,输入数据中存在大量的上下文信息。卷积神经网络的卷积核特性使其更注重局部信息,缺乏长期依赖的建模能力。因此,仅仅使用CNN很难挖掘文本之间的上下文链接。

针对这一问题,我们首先使用CRNN(对流递归神经网络)4通过卷积网络提取图像特征,同时引入双向LSTM(长短期记忆)增强上下文建模。最终输出的特征序列输入ctc模块,由CTC汇总字符之间的连接特征,直接解码序列结果。这种结构被验证是有效的,并广泛应用于文本识别任务,如下图所示。

5分钟3步

实现快速的PaddleOCR实时推理

在最新版本的OpenVINO 2022.1中,已经支持基于PaddlePaddle深度学习框架的深度学习模型。PaddleOCR作为一项开源技术,非常受开发者欢迎,开源的预训练模型在OpenVINO 2022.1中可以直接读取和加速。

接下来,我们将通过代码实例介绍如何用OpenVINO工具套件通过三个简单的步骤实现PaddleOCR的加速推理。整个工作流程如下图所示:

其中,OpenVINO工具套件将读取PaddleOCR中的文本检测和文本识别模型,并加速推理。在这个演示中,我们展示了我们使用自己的网络摄像头从PaddleOCR的实时文章流中提取文本信息。当然,开发者也可以上传图片,用OpenVINO工具套件推理PaddleOCR,从图片中提取文字信息。

第一步:下载所需的PaddleOCR预训练模型,完成模型的读取和加载

导入要使用的对应Python包后,首先需要下载要使用的PaddleOCR开源预训练模型。轻量级中英文超轻量PP-OCR模型(9.4m)本演示中使用了模型。PaddleOCR包含两个深度学习模型:文本检测和文本识别,所以我们先定义一个模型下载函数,如下图所示。

接下来,下载文本检测模型,

以及推理机的初始化、文本检测模型的读取和在CPU上的加载。

然后,完成文本识别模型的下载,

以及读取文本识别模型并将其加载到CPU上。其中,需要特别说明的一步是动态输入的处理。

由于文本识别模型的输入是通过文本检测获得的一系列包围盒图像,并且图像中的字体大小和长度不同,因此文本识别模型的输入是动态的。与之前版本需要调整图像大小和固定模型的输入大小可能导致性能损失不同,OpenVino版本。1已经可以支持模型的动态输入。

在CPU上加载文本识别模型之前,只需要给有动态输入的维度赋值-1或者声明动态输入大小的上限,比如dimension (1,512),就可以完成模型动态输入的处理。接下来,您可以按照常规步骤完成在CPU上加载文本识别模型。

步骤2:为文本检测和文本识别定义必要的预处理和后处理函数。

如下图所示,为文本检测模型定义必要的预处理函数。

如下图所示,为文本识别模型定义必要的预处理函数。

为文本检测模型定义后处理函数,将文本检测模型的推理结果转换成包围盒的形式,作为文本识别模型的输入,如下图所示。

第三步:利用OpenVINO工具套件的推理引擎(运行时)对摄像头采集的文章进行实时推理。

定义PaddleOCR模型推理的主要功能,主要包括以下四个部分:

01运行网络摄像头,并将捕获的文章流作为paddleOCR的输入。

02准备用于文本检测和文本识别的文章帧。

03文本检测的推理

根据文本检测得到的包围盒,进行文本识别推理。

将文本提取的结果可视化

结果讨论

让让我们来看看运行结果:

我们可以看到,从网络摄像头采集的文章流中提取文字效果还是很不错的。只有用CPU来推理,才能得到30FPS以上的性能。可以说达到了实时推理的效果!当然,除了文章流作为输入,开发者还可以上传图片和提取文本信息。以下是对上传图片中印刷字符和手写字符的信息提取的一些测试结果。

你还在等什么?来根据我们提供的源代码在你自己的个人电脑上试试吧!

总结

OCR具有将图片、扫描文档或自然场景中的文本信息的识别转换为数字和机器编码存储的优势。将OCR字符识别的结果与自然语言处理中的自然语言处理技术相结合,可以实现信息的自动抽取,省去手工输入和填写信息的麻烦,有助于信息的结构化存储和检索。在本系列的第二篇博客中,我们简单介绍了PaddleOCR的工作原理,并提供了一个基于OpenVINO工具套件实现PaddleOCR的Jupyter笔记本演示。方便读者下载源代码,在自己的电脑上使用CPU,在阅读的同时轻松实现PaddleOCR的加速推理。

原标题:用open vino | developers轻松实现PaddleOCR实时推理实战

来源:【微信微信官方账号:英特尔物联网】欢迎关注!请注明文章出处。

审计唐子红