基于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 相关的工具和应用,例如模型转换、模型压缩等。
2 转化检测模型为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/。
3 转化识别模型为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图表大家应该用的都比较多,基础的用法就不细说了ÿ…...
三星固件下载神器Bifrost:三分钟学会跨平台官方固件下载与解密
三星固件下载神器Bifrost:三分钟学会跨平台官方固件下载与解密 【免费下载链接】Bifrost Cross-platform tool for downloading Samsung mobile device firmware. 项目地址: https://gitcode.com/gh_mirrors/sa/Bifrost 还在为找不到三星官方固件而烦恼吗&am…...
避坑指南:Teamcenter 13四层架构安装中,Weblogic域创建与部署的那些“坑”
Teamcenter 13四层架构部署实战:Weblogic域创建与部署全流程避坑指南 在工业PLM领域,Teamcenter的四层架构部署一直是系统管理员的技术试金石。特别是Weblogic中间件层的配置,往往成为项目推进道路上的"拦路虎"。我曾参与过多个汽…...
点云配准避坑指南:从理论到代码,详解点到面ICP中法线计算的‘坑’与线性近似的前提
点云配准实战:深入解析点到面ICP算法中的法线计算与线性近似陷阱 在三维重建和机器人定位领域,点云配准技术扮演着关键角色。当我们面对两个部分重叠的点云数据集时,如何精确地将它们对齐成为一个统一坐标系下的完整模型?迭代最近…...
拷贝漫画第三方客户端完全解析:解锁高效漫画阅读新体验
拷贝漫画第三方客户端完全解析:解锁高效漫画阅读新体验 【免费下载链接】copymanga 拷贝漫画的第三方APP,仅提供基础功能,更多丰富功能请移步官方版本 项目地址: https://gitcode.com/gh_mirrors/co/copymanga 在数字阅读日益普及的今…...
阿里Sophix热更新实战:从加固App打包到补丁发布的完整避坑指南
阿里Sophix热更新深度实践:加固场景下的全链路解决方案 在移动应用快速迭代的今天,热修复技术已经成为保障应用稳定性的关键手段。阿里Sophix作为业界领先的热修复方案,以其高兼容性和稳定性赢得了众多开发团队的青睐。然而,当应用…...
如何永久保存微信聊天记录:WeChatMsg完全免费备份指南
如何永久保存微信聊天记录:WeChatMsg完全免费备份指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...
别再硬刚滑块了!一个Python脚本自动搞定淘宝X5SEC验证码
Python自动化破解淘宝X5SEC滑块验证码实战指南 淘宝作为国内最大的电商平台之一,其反爬机制一直处于行业领先水平。其中X5SEC滑块验证码是淘宝用来识别自动化程序的主要手段之一。对于需要批量采集商品数据或进行价格监控的开发者来说,频繁的手动滑块验证…...
基于Google App Engine构建物联网能耗监测系统:从传感器到可视化全栈实践
1. 项目概述与核心价值如果你和我一样,对家里或办公室里那些“电老虎”设备到底消耗了多少能源感到好奇,甚至想为节能减排做点贡献,那么自己动手搭建一个能耗监测系统会是一个极具成就感的项目。这不仅仅是技术上的挑战,更是一种将…...
第十三章:R 读取 txt、csv 表格数据
数据分析的第一步永远是读取数据。真实数据通常存储在 CSV、TXT 等文件中,本章将学习如何用 R 读取外部数据文件,以及如何把分析结果导出保存。 一、数据文件常见格式 格式扩展名特点CSV.csv逗号分隔,最通用的表格格式TXT.txt制表符或自定义…...
明日方舟自动化:用MAA重构你的游戏体验,告别重复劳动
明日方舟自动化:用MAA重构你的游戏体验,告别重复劳动 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: h…...
