当前位置: 首页 > news >正文

基于PaddleServing的串联部署 ocr 识别模型

要点:

  • 使用paddleserving服务


1 首先需要安装PaddleServing部署相关的环境

PaddleServing是PaddlePaddle推出的一种高性能、易扩展、高可用的机器学习服务框架。PaddleOCR中使用PaddleServing主要是为了将训练好的OCR模型部署到线上环境,提供API服务,从而方便用户使用。PaddleServing还提供了一些高级特性,比如多模型融合、负载均衡等,可以帮助用户构建更加完整的机器学习服务系统。

!python -m pip install paddle-serving-server-gpu
!python -m pip install paddle_serving_client
!python -m pip install paddle-serving-app
  • 第一行代码安装 paddle-serving-server-gpu 包,用于启动 PaddleServing 的服务端,并支持 GPU 加速。
  • 第二行代码安装 paddle_serving_client 包,用于通过 API 调用 PaddleServing 的服务端提供的预测服务
  • 第三行代码安装 paddle-serving-app 包,提供了一些 PaddleServing 相关的工具和应用,例如模型转换、模型压缩等。

转化检测模型为serving格式

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/det_ppocrv3/Student/  \--model_filename inference.pdmodel          \--params_filename inference.pdiparams       \--serving_server ./ppocr_det_v3_serving/ \--serving_client ./ppocr_det_v3_client/

这段代码是将 PaddleOCR 检测模型的参数文件和模型文件转换为 PaddleServing 使用的格式并保存在指定的目录中,然后可以使用指定的配置文件部署以进行推理服务。

  • %cd /home/aistudio/PaddleOCR/deploy/pdserving/: 切换到 PaddleOCR 代码库中的 PaddleServing 部分的目录中。
  • --dirname ../../inference/det_ppocrv3/Student/: 参数文件和模型文件所在的目录。
  • --model_filename inference.pdmodel: 转换后的模型文件名称。
  • --params_filename inference.pdiparams: 转换后的参数文件名称。
  • --serving_server ./ppocr_det_v3_serving/: serving_server参数指定用于运行检测模型服务的 PaddleServing 配置的目录位置。在这种情况下,指定的位置是./ppocr_det_v3_serving/
  • --serving_client ./ppocr_det_v3_client/: serving_client参数指定 PaddleServing 客户端的目录位置,用于在服务期间调用检测模型。在这种情况下,指定的位置是./ppocr_det_v3_client/。

转化识别模型为serving格式

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python -m paddle_serving_client.convert --dirname ../../inference/rec_ppocrv3/Student \--model_filename inference.pdmodel          \--params_filename inference.pdiparams       \--serving_server ./ppocr_rec_v3_serving/ \--serving_client ./ppocr_rec_v3_client/

4 启动服务端 

修改后处理代码,首先可以将后处理代码加入到web_service.py中,具体修改154-155行:

# 代码154-155行修改为下面代码
def _postprocess(rec_res):keys = ["型号", "厂家", "版本号", "检定校准分类", "计量器具编号", "烟尘流量","累积体积", "烟气温度", "动压", "静压", "时间", "试验台编号", "预测流速","全压", "烟温", "流速", "工况流量", "标杆流量", "烟尘直读嘴", "烟尘采样嘴","大气压", "计前温度", "计前压力", "干球温度", "湿球温度", "流量", "含湿量"]key_value = []if len(rec_res) > 1:for i in range(len(rec_res) - 1):rec_str, _ = rec_res[i]for key in keys:if rec_str in key:key_value.append([rec_str, rec_res[i + 1][0]])breakreturn key_value
key_value = _postprocess(rec_list)
res = {"result": str(key_value)}
# res = {"result": str(result_list)}

 

4.1 启动服务

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python web_service.py 2>&1 >log.txt

4.2 客户端发送请求

%cd /home/aistudio/PaddleOCR/deploy/pdserving/
!python pipeline_http_client.py --image_dir ../../train_data/icdar2015/text_localization/test/142.jpg
  • 执行pipeline_http_client.py命令,将图片路径传入进行识别

在这个过程中,使用了PaddleServing的HTTP API进行图片的传输和识别,pipeline_http_client.py文件是一个Python脚本,用于向PaddleServing发送HTTP请求并获取识别结果。该脚本将输入的图片读取并编码成base64格式,然后将编码后的字符串作为HTTP请求的参数发送给PaddleServing。PaddleServing将接收到的图片解码后送入PaddleOCR中的检测和识别模型进行OCR识别,最后返回识别结果

相关文章:

基于PaddleServing的串联部署 ocr 识别模型

要点: 使用paddleserving服务 1 首先需要安装PaddleServing部署相关的环境 PaddleServing是PaddlePaddle推出的一种高性能、易扩展、高可用的机器学习服务框架。PaddleOCR中使用PaddleServing主要是为了将训练好的OCR模型部署到线上环境,提供API服务&a…...

java OutputStream学习

1.概要 OutputStream位于java.io,它在Java 实现的IO类库中是一个很基础的抽象类。在层级上,是所有字节输出流类的父类,在功能上,表示接受字节并把它们输出。 2.实现类及子类简介 OutputStream有诸多子类: ByteAr…...

java 上传文件生成二进制流文件

最近在项目中遇到一个问题:需要将上传的文件生成输出流,然后将输出流转换为输入流上传到oss。 -------------------------------------------导出代码实现---------------------------------------------------------- ByteArrayOutputStream baos nu…...

质量小议22 -- 多少分合适

60分万岁~???!!! 如果用分数评价质量,多少分合适?60,70,80...还是100,或者 120 对于质量的提升,是雪中送炭,还是锦上添…...

变频器参数设定说明

使用默贝克MT110-0R4-S2B实现下面的练习题: 1、先恢复出厂设置,再输入电机参数,选择静态调谐 2、两种运行模式:多段速(8段)和简易PLC(4段) 3、面板启停,运行模式通过外部…...

实用调试技巧

目录: 1.什么是bug? 2.调试是什么?有多重要? 3.debug和release的介绍 4.Windows环境调试介绍 5.一些调试的实例 6.如何写出好(易于调试)的代码 7.编程常见的错误 1.什么是bug? bug--->臭虫、虫子。 为什么含…...

谁是液冷行业真龙头?疯狂的液冷技术!

“人工智能领域AIGC”、“ChatGPT”、“数据特区”、“东数西算”、“数据中心”,可以说是2023年最热的概念,算力提升的背后,处理器的功耗越来越高,想发挥出处理器的最高性能,需要更高的散热效率。 算力井喷之下&…...

自动化运维工具之Ansible

目录 一、自动化运维 1、通过xshell自动化运维 2、Ansible简介 3、Ansible特点及优势 4、Ansible核心程序 5、Ansible工作原理及流程 6、部署Ansible自动化运维工具 7、Ansible常用模块 (1) ansible命令行模块 (2) command模块 (3) shell模块 (4) cron模块 (5) us…...

霍兰德人格分析雷达图

雷达图 Radar Chart 雷达图是多特性直观展示的重要方式 问题分析 霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系 人格分类:研究型、艺术型、社会型、企业型、传统型、现实性 职业:工程师、实验员、艺术家、推销员、记事员、社会工…...

《Odoo开发者模式必知必会》—— 缘起

Odoo作为业界优秀的开源商务软件,在全球范围内拥有广泛的使用者。在领英国际,可以搜索到全球很多国家都有大量odoo人才需求的招聘信息。在国内,虽然已经有为数不少的企业,他们或者已经使用odoo,或者正在了解odoo&#…...

Java8的Options介绍

Java8引入了一个名为 Options 的新类,它是一个容器,可以保存单个值或根本不保存任何值。Optional目的是提供一种更优雅的方式来处理 null 值,这通常会导致NullPointerException。在这篇博客文章中,我们将探索如何在 Java8中使用 O…...

SpringBoot 多数据源及事务解决方案

1. 背景 一个主库和N个应用库的数据源,并且会同时操作主库和应用库的数据,需要解决以下两个问题: 如何动态管理多个数据源以及切换? 如何保证多数据源场景下的数据一致性(事务)? 本文主要探讨这两个问题的解决方案…...

tcpdump使用教程

一、概述 tcpdump是一个功能强大的,用于抓取网络数据包的命令行工具,与带界面的Wireshark一样,基于libpcap库构建。这篇文章主要介绍tcpdump的使用。关于如何使用tcpdump的资料中,最有用的就是tcpdump的两个手册。 tcpdump使用手…...

Zynq-7000、FMQL45T900的GPIO控制(五)---linux应用层配置GPIO输出控制

上文中详细阐述了对应原理图MIO/EMIO的编号,怎么计算获取linux下gpio的编号 本文涉及C代码上传,下载地址 Zynq-7000、FMQL45T900的GPIO控制c语言代码资源-CSDN文库 本文详细记录一下针对获取到gpio的编号,进行配置输出模式,并进…...

带你搞懂人工智能、机器学习和深度学习!

不少高校的小伙伴找我聊入门人工智能该怎么起步,如何快速入门,多长时间能成长为中高级工程师(聊下来感觉大多数学生党就是焦虑,毕业即失业,尤其现在就业环境这么差),但聊到最后,很多…...

Android 11.0 framework中Launcher的启动流程分析

1.前言 在11.0的系统rom定制化开发中,在rom定制过程中,在对于开发默认Launcher功能,解决开机动画后黑屏,了解fallbackhome机制等等 对于launcher的启动流程来说很重要,接下来就来分析下launcher的启动流程 2.framework中Launcher的启动流程分析的核心类 frameworks/ba…...

2023年第十五届华中杯赛题C 题 空气质量预测与预警

2023年五一假期期间,数学建模竞赛就有四场,各种比赛各种需求应接不暇。因此,对于本次浅析有不足的地方欢迎大家指出。为了更好的帮助大家华中杯参赛,下面带来,C题详细版思路。由于C题的难度,注定选题人数将…...

Go官方指南(一)包、变量、函数

import "time" 获取当前系统时间:time.Now() 每个 Go 程序都是由包构成的 按照约定 ,包名与导入路径的最后一个元素一致。例如,"math/rand"包中的源码均以 package rand 语句开始 在 Go 中,如果一个名字以…...

liunx笔记

快捷键 #移动到行首 ctrla #移动到行尾 ctrle #删除光标之前的字符 ctrlu #删除光标之后的字符 ctrlk #清屏 ctrll正则表达式 正则中普通常用的元字符 元字符功能.匹配除了换行符以外的任意单个字符*前导字符出现0次或连续多次.*任意长度字符^行首(以…开头),如…...

vue3 封装ECharts组件

一、前言 前端开发需要经常使用ECharts图表渲染数据信息,在一个项目中我们经常需要使用多个图表,选择封装ECharts组件复用的方式可以减少代码量,增加开发效率。 ECharts图表大家应该用的都比较多,基础的用法就不细说了&#xff…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...