OpenVINO+DBNet实时OCR文本检测

DBNet在OCR文字检测中的核心价值与实战应用 OCR(光学字符识别)技术中的文字检测环节对整体识别效果至关重要。传统基于锚框的检测方法在处理弯曲文本、密集小字等复杂场景时表现不佳,而DBNet(Differentiable Binarization Network)通过可微分二值化处理实现了像素级文本检测,显著提升了检测精度。DBNet的核心原理包括FPN结构、动态阈值图和可微分二值化公式,使其在边界敏感度、参数友好性和部署灵活性方面具有显著优势。在实际应用中,DBNet支持ONNX导出,可无缝对接TensorRT、OpenVINO等推理框架,适用于自 阅读详情
OpenVINO+DBNet实时OCR文本检测
1. 简介

DBNet算法是今年来非常流行的文本检测算法,该算法在众多的实际场景中具有很好的检测性能,如百度的ppocr也是使用了DBNet作为文本检测阶段的算法。
更详细的介绍:
(1)知乎-DBNet阅读笔记
(2)论文:Real-time Scene Text Detection with Differentiable Binarization
(3)作者实现的代码
(4)WenmuZhou实现的代码-推荐

2.模型结构

在这里插入图片描述

模型结构:经典的FPN网络+后处理

3.模型转换

为了演示,我白piao一个pth模型(未完全训练好的模型,拒接白piao),我使用了BaofengZan,先感谢BaofengZan大佬的模型。本人在BaofengZan/DBNet.pytorch基础上略微修改实现的DBNet-OpenVINO, one more,欢迎star,star,star哈…

(1) 第一步是讲pytorch模型转为onnx模型

# 来源:https://github.com/BaofengZan/DBNet.pytorch
def export_onnx(self):
    img = torch.zeros((1, 3, 480, 720))#.cuda()  # image size(1,3,320,192) iDetection

    y = self.model(img)
    try:
        import onnx

        print('\nStarting ONNX export with onnx %s...' % onnx.__version__)
        f = ("./onnx-xml/dbnet.onnx") # filename
        #self.model.fuse()  # only for ONNX
        torch.onnx.export(self.model, img, f, verbose=False, opset_version=12, input_names=['images'],
                            output_names=['classes', 'boxes'] if y is None else ['output'])
        # Checks
        onnx_model = onnx.load(f)  # load onnx model
        onnx.checker.check_model(onnx_model)  # check onnx model
        print(onnx.helper.printable_graph(onnx_model.graph))  # print a human readable model
        print('ONNX export success, saved as %s' % f)
    except Exception as e:
        print('ONNX export failure: %s' % e)

(2) 验证onnx模型是否转换正确
这一点很重要,如果转换不正确,都是白搭!

     # 此处省略...
    def init_onnx_session(self):
        self.ort_session = ort.InferenceSession("./onnx-xml/dbnet.onnx")
     # 此处省略...
    preds = self.ort_session.run(None, {'images': tensor.cpu().numpy()})

(3) 直接使用onnx模型进行openvino推理

    # 此处省略...
    self.ie = IECore()
    self.dbnet = self.ie.read_network(model="./onnx-xml/dbnet.onnx")

    self.input_blob = next(iter(self.dbnet.input_info))
    self.out_blob = next(iter(self.dbnet.outputs))
    self.exec_net = self.ie.load_network(network=self.dbnet, device_name="CPU")

    # Read and pre-process input images
    self.b, self.c, self.h, self.w = self.dbnet.input_info[self.input_blob].input_data.shape
    # 此处省略...
    preds = self.exec_net.infer(inputs={self.input_blob: tensor})

也可将onnx转为ir模型

python3.6 /opt/intel/openvino/deployment_tools/model_optimizer/mo_onnx.py \
                        -m ./onnx-xml/dbnet.onnx \
                        -o ./onnx-xml/ \
                        --log_level ERROR \
                        --data_type FP32
  • 不包含预处理和后处理时间(不同的CPU推理时间会存在差异)
4.结果

输入:
在这里插入图片描述
输出二值化图:
在这里插入图片描述
后处理:
在这里插入图片描述

参考:
(1)知乎-DBNet阅读笔记
(2)论文:Real-time Scene Text Detection with Differentiable Binarization
(3)作者实现的代码
(4)WenmuZhou实现的代码-推荐
(5)BaofengZan
(6)DBNet-OpenVINO, one more

开源OCR模型实战评测:从精度到速度的全面横评 本文对主流开源OCR模型进行了全面评测,从精度、速度、部署环境等多维度对比分析。重点评测了PP-OCRv3、PP-OCRv4、DBNet等模型在不同硬件平台的表现,揭示了模型体积与精度的非线性关系,并提供了移动端和服务器端的优化部署建议,帮助开发者解决OCR模型选型困境。 阅读详情

相关推荐

OCR技术发展与应用:从传统到深度学习的演进

光学字符识别(OCR)技术是计算机视觉领域的重要应用,通过模式匹配和深度学习等方法实现文本的自动识别。其核心原理包括图像预处理、特征提取和分类识别,技术价值在于提升文档数字化的效率和准确性。OCR广泛应用于企业文档处理、移动端实时识别等场景,特别是在深度学习的推动下,识别精度显著提高。当前,OCR技术结合LSTM和CNN等先进算法,支持多语言和复杂版式分析,成为数字化转型的关键工具。

dichengyan0013的博客 459

【OpenVINO】基于C#和OpenVINO部署PaddleOCR模型

基于OpenVINO模型推理库,在C#语言下,调用封装的OpenVINO动态链接库,部署推理PaddleOCR中的文字识别模型;实现了在C#平台使用PaddleOCR文字识别模型识别文字。OpenVinoSharp源码在GitHub和Gitee上已开源,可以直接通过Git获取所有源码.

grape_yan的博客 2753

纯C++实现OCR:从原理到部署的完整实践指南

OCR(光学字符识别)是计算机视觉领域的关键技术,其核心原理在于将图像中的文本区域检测并转换为可编辑的字符序列。传统方法依赖图像处理和特征提取,而现代技术则基于深度学习模型,通过卷积神经网络(CNN)提取特征,并结合循环神经网络(RNN)或CTC损失进行序列识别,以实现更高的精度和鲁棒性。这项技术的价值在于将非结构化的图像信息转化为结构化文本,极大地提升了数据处理的自动化程度。其应用场景广泛,从文档数字化、车牌识别到工业自动化和移动端应用,无处不在。本文聚焦于利用纯C++实现OCR系统,通过集成ONNX R

weixin_30660027的博客 391

openvino系列 19. OpenVINO 与 PaddleOCR 实现视频实时OCR处理

此案例展示了如何在`OpenVINO`上本地实时视频流运行`PPOCR`模型。 无需将`PaddlePaddle`模型导出到 ONNX,然后通过 OpenVINO 模型优化器转换为中间表示 (IR) 格式,我们现在可以直接从 PaddlePaddle 模型中读取。...

破浪会有时的博客 1810

基于YOLOv8改进的黑板手写文本检测系统实战

目标检测技术在计算机视觉领域扮演着重要角色,其核心原理是通过深度学习模型定位并识别图像中的特定对象。YOLOv8作为当前先进的目标检测框架,通过改进网络结构和损失函数,显著提升了检测精度和速度。在教育信息化场景中,黑板手写文本检测面临粉笔字模糊、反光干扰等独特挑战。通过引入注意力机制和特征金字塔优化,系统实现了92.3%的检测准确率。该方案采用TensorRT加速和WebRTC实时传输,为课堂板书数字化提供了完整的AI视觉解决方案,特别适合需要快速实现教育场景OCR的研究者和开发者。

weixin_30444105的博客 371

大漠OCR原理拆解:从图像预处理到识别引擎的完整工作流

OCR(光学字符识别)技术是将图像中的文字转换为可编辑文本的关键技术,其核心原理在于模拟人类视觉的识别过程。传统OCR引擎通常遵循一套标准工作流:首先对输入图像进行预处理,包括灰度化、二值化、降噪等操作,以消除干扰、突出文字特征;随后通过文本检测与行分割定位文字区域,再经字符分割将文本行拆分为单个字符;接着通过特征提取与分类识别(如模板匹配或基于模型的识别)将字符图像转化为编码信息;最后可能辅以后处理优化结果。这一流程在自动化脚本、游戏辅助及RPA(机器人流程自动化)领域具有极高的技术价值,它能将繁琐的界面

weixin_30457551的博客 353

集显就不配加速?ubuntu下使用openvino调用intel cpu对yolo5进行自定义模型的推理加速

非常简单的yolov5部署openvino加速,小学生也能马上学会

m0_73232812的博客 1606

使用openvino加速部署paddleocr文本检测模型(C++版)

图像经过openvino的推理后,其输出也是一张960*960的单通道掩膜图像,其内部像素值为分值,通过分数阈值来对其分割可得到二值化图像,如下,对二值化图像再进行轮廓查找然后求得外接矩形作为文本检测框,最后再按照比列缩放回去即可。DBNet是基于分割的文本检测算法。缺点在于阈值的选取非常关键。这里的后处理按照自己的简单来进行截取的,并没有真正的使用DB的后处理得到检测框,这里毕竟只是取外接矩形检测框即可,故先用此简单处理了,后续遇到弯曲文本检测等时再进行相关的处理。,其归一化的方式是完全一致的。

吾名招财的博客 1298

用OpenVINO™ 轻松实现PP-OCR实时推理

PaddleOCR是基于飞桨深度学习开源平台的文字识别开发套件,star数量22.2k,目前已支持超过80种语言文字的识别。

PaddlePaddle 1228

中英文OCR实战工程包:DBNet检测+CRNN识别+Dense-CTC端到端,含ONNX预训练模型与开箱即用脚本

一套可直接运行的Python OCR开发工程,覆盖文本检测与识别全流程。内置DBNet实现高精度中英文文本区域定位,CRNN完成字符序列识别,Dense-CTC支持端到端联合建模,同时集成PSENet多尺度检测和UNet辅助分割模块。提供多个已导出的ONNX推理模型,包括text_detect_dbnet.onnx用于检测、chineseocr_densectc.onnx用于中文识别,以及keywords_chinese.dict词典文件。工程结构清晰,含核心模块detector(检测器)和text_rec

keras9composer的博客 238

LabVIEW AI视觉工具包【cpu_openvino】版

基于LabVIEW可使用opencv dnn调用的openvino模型,在labview 2018及以上版本64位中下载安装即可使用,无需重新编译opencv,就可以再CPU上使用openvino进行推理加速,省去苦苦编译却无法通过的痛苦,简单高效且容易上手。

【模型部署】PaddleOCR模型openvino部署(一)

本文将使用openvino部署PaddleOCR官方提供的检测模型,实现文本检测功能。

AI爱好者的博客,分享计算机领域相关知识 6347

Simulink/Requirements Toolbox 学习(一):概述

编写、导入、导出需求并使需求正式化;两种创建需求的模块:需求编辑器、需求透视;描述需求的方式:文本、图像和关键字;通过导入和导出需求文件,与第三方需求管理工具(例如 Microsoft Word、Microsoft Excel®、IBM DOORS和 IBM DOORS Next)集成。涉及模块:Requirements Eidtor、Requirements Table等;

854

DBNet 文本检测实战:基于PaddleOCR 2.7 从训练到部署的5个关键步骤

本文详细介绍了基于PaddleOCR 2.7的DBNet(Differentiable Binarization)文本检测实战指南,涵盖从环境配置、数据准备到模型训练、优化及部署的5个关键步骤。通过DB算法实现端到端的自适应文本检测,特别适用于复杂场景下的弯曲文本和低对比度环境。文章还提供了模型优化、微调及多平台部署的实用技巧,助力开发者高效实现工业级OCR应用落地。

weixin_28677005的博客 238

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1671

【RK3588 NPU性能调优实战】多线程异步推理YOLOv5,榨干6TOPS算力

本文详细解析了如何在RK3588 NPU上通过多线程异步推理优化YOLOv5目标检测性能,实现6TOPS算力的最大化利用。通过线程池设计、流水线化帧处理及避开内存带宽瓶颈等技巧,将NPU利用率从30%提升至82%,帧率显著提高至61.2FPS。文章还提供了环境配置、代码实现及性能对比数据,助力开发者高效部署AI模型。

weixin_29034963的博客 340

几行代码轻松实现对于PaddleOCR的实时推理,快来get!

这种针对基于分割的方法需要利用阈值进行二值化处理会导致后处理耗时较久,所以我们所采用的DBNet针对这种现象提出了一种可学习阈值的方法,并巧妙地设计了一个近似于阶跃函数的二值化函数,使得分割网络在训练的时候能端对端的学习文本分割的阈值。我们在进行文本检测任务的时候所需要的输入和输出的这样的一个变量名。本期课程主要是以百度开源的PaddlePaddle框架的PaddleOCR技术为例,具体介绍如何利用英特尔开源的OpenVINO工具套件,仅使用我们手边的CPU,轻松实现对于PaddleOCR的实时推理。...

英特尔开发人员专区 5661

警惕!数字签名伪造的攻防演练:用SigThief克隆证书的真实测试(Windows环境)

本文深入探讨了Windows环境下数字签名伪造的攻防技术,详细介绍了使用SigThief工具进行签名提取与克隆的实战步骤。通过真实测试案例,揭示了数字签名安全机制的潜在漏洞,并提供了有效的防御策略和检测技术,帮助安全人员提升系统防护能力。

weixin_42530732的博客 408

告别OCR部署焦虑!RapidOCR如何用3行代码实现毫秒级文字识别?

摘要:RapidOCR是一款基于PaddleOCR优化的开源OCR引擎,通过ONNX格式转换实现跨平台高效部署。相比传统OCR方案,它解决了部署复杂、跨平台兼容性差、识别速度慢等痛点,在保持99%以上识别精度的同时,推理速度提升4-5倍。RapidOCR采用三阶段处理流程(文本检测、分类、识别),支持多种推理引擎,适用于从服务器到移动端的各种环境。安装仅需一行命令,5分钟即可快速上手,并提供丰富的配置选项进行性能优化。该引擎显著降低了OCR技术应用门槛,是开源OCR领域的新标杆。

萧鼎的博客 1496

S7-1200PLC期末复习题(第七章)

A.0 B.1 C.4 D.-4 A、CV = 0 B、CV = 1 C、CV < 4 D、CV >= 4A、0,0 B、3,0 C、1,1 D、3,1 A、0 B、1 C、先是1,再变为0 D、先是0,再变为1置位输出:常开触点M0.0闭合,Q0.0变为1状态并保存该状态,即使M0.0断开,Q0.0也保持1状态。 复位输出:常开触点M0.1闭合时,Q0.0变为0状态并保持该状态,即使M0.1断开,Q0.0也保持为0状态。 A、1 B、0 C、5 D、10RESET_BF指令需要两个参数,第一个是复位的位数

qq_52251819的博客 4413

AUTOSAR&UDS 理论要点及isolar实战-DEM模块

从这节开始,将讲解UDS诊断中非常重要的知识点:故障事件触发、故障信息上报、故障信息处理、故障信息存储和故障系统降级,后续会陆续更新。

cqaa11的博客 552

C#使用OpenVinoSharp+魔塔社区的读光中英文OCR ONNX模型进行文字检测(仅检测不做识别)

Console.WriteLine($"输出名称: {_outputName}, 形状: [{string.Join(", ", _outputShape)}]");Console.WriteLine($"输入名称: {_inputName}, 形状: [{string.Join(", ", _inputShape)}]");// 计算目标索引 (CHW格式)// 计算源索引 (HW格式)// 初始化OpenVINO Runtime。// 将HWC格式转换为CHW格式。// 准备输入Tensor。

hixiong123的博客 693

Dify 本地部署教程

到这里,Dify 就安装完成了,更多操作设置可以参考官方文档,Dify 和 FastGPT 基本上差不多,也可以同时安装一下 FastGPT 进行体验~Docker Compose 部署 | Dify。

Muti-Agent 6644

C# OpenCvSharp DNN Onnx Demo 资源汇总

C# OpenCvSharp DNN Onnx Demo 资源汇总

.NET 人工智能实践 4897

飞牛fnNAS免费内网穿透之zerotier篇

本文介绍了如何通过ZeroTier实现飞牛NAS的远程文件共享。首先,用户需要在ZeroTier官网注册账号并创建虚拟局域网。接着,分别在Windows和飞牛NAS上安装ZeroTier客户端,并通过SSH登录飞牛NAS进行配置。安装完成后,用户可以在ZeroTier页面中授权设备加入虚拟局域网。最后,通过Windows的“网上邻居”功能访问飞牛NAS的共享文件夹,实现跨局域网的文件共享。这种方法不仅适用于文件共享,还可以用于打印机共享和远程桌面连接。

dgnankai的专栏 2463

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: ubuntu上docker中使用cuda
下一篇: docker编译TensorRT源码
DYF-AI
博客等级 码龄9年 108粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DYF-AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值