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

paddlehub环境搭建和测试

目录

  • 1.环境搭建
    • 1.1 创建conda环境
    • 1.2 安装paddlepaddle和paddlehub
    • 1.3 安装依赖
  • 2. 移动端模型部署
    • 2.1 安装移动端模型
    • 2.2 测试
  • 3. 服务部署
    • 3.1 启动PaddleHub Serving
    • 3.2 发送预测请求

1.环境搭建

1.1 创建conda环境

conda create --name paddlehub python=3.8
conda activate paddlehub

1.2 安装paddlepaddle和paddlehub

pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple

1.3 安装依赖

pip install shapely pyclipper

2. 移动端模型部署

2.1 安装移动端模型

hub install chinese_ocr_db_crnn_mobile

报错1:
在这里插入图片描述
增加download函数

vim /home/yinsuan/miniconda3/envs/paddlehub/lib/python3.8/site-packages/aistudio_sdk/hub.py 
def download(url, target_path):os.makedirs(os.path.dirname(target_path), exist_ok=True)response = requests.get(url, stream=True)with open(target_path, 'wb') as f:for chunk in response.iter_content(chunk_size=1024):if chunk:f.write(chunk)print(f"Downloaded {url} to {target_path}")

报错2:
在这里插入图片描述

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python

安装成功

2.2 测试

在这里插入图片描述
将其中的np.int 修改为int即可

vim /home/yinsuan/.paddlehub/modules/chinese_ocr_db_crnn_mobile/module.py
hub run chinese_ocr_db_crnn_mobile --input_path "/PATH/TO/IMAGE"

测试成功

3. 服务部署

3.1 启动PaddleHub Serving

hub serving start -m chinese_ocr_db_crnn_mobile

3.2 发送预测请求

import requests
import json
import cv2
import base64def cv2_to_base64(image):data = cv2.imencode('.jpg', image)[1]return base64.b64encode(data.tostring()).decode('utf8')# 发送HTTP请求
data = {'images':[cv2_to_base64(cv2.imread("/PATH/TO/IMAGE"))]}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/chinese_ocr_db_crnn_mobile"
r = requests.post(url=url, headers=headers, data=json.dumps(data))# 打印预测结果
print(r.json()["results"])

参考:https://www.paddlepaddle.org.cn/hubdetail?name=chinese_ocr_db_crnn_mobile&en_category=TextRecognition

http://www.dtcms.com/a/269515.html

相关文章:

  • 【PTA数据结构 | C语言版】在顺序表 list 的第 i 个位置上插入元素 x
  • C语言使用Protobuf进行网络通信
  • HTTP/3.0的连接迁移使用连接ID来标识连接为什么可以做到连接不会中断
  • 【论文阅读】基于 GAN 和深度迁移学习的频谱预测:一种跨带数据增强框架
  • 函数-1-字符串函数
  • Python文件操作(五分钟小白从入门到精通)
  • 微算法科技(NASDAQ MLGO)研究非标准量子预言机,拓展量子计算边界
  • 【QT】-隐式转换 explicit用法
  • linux常用管路命令
  • 【1-快速上手】
  • 部署并运行Spike-Driven-Transformer或QKFormer
  • 香港站群服务器与普通香港服务器对比
  • 算法设计与分析:分治、动态规划与贪心算法的异同与选择
  • 【计算机网络】第三章:数据链路层(下)
  • 89104 PCIe Switch芯片国产替代 - PCIE5.0国产AI服务器高性能扩展,支持海光/龙芯/飞腾等
  • 【零基础学AI】第30讲:生成对抗网络(GAN)实战 - 手写数字生成
  • 从SEO到GEO:优化策略如何应对传统搜索与AI搜索的巨变
  • SpringAI编码实战:使用本地免费部署的大语言模型跑起来
  • NuxtJS中网络请求模块的封装与最佳实战
  • leetcode202.快乐数
  • 算法设计与分析 知识总结
  • Puppeteer 库简介:背景、用法与原理
  • LeetCode--42.接雨水
  • 什么是RAG?
  • 深入解析Java中的“128陷阱“:Integer缓存机制源码分析
  • 容器技术入门之Docker环境部署
  • Docker快速部署Hive服务
  • 【技术应用】CUTTag应用实例解析:比ChIP-seq更精准高效的DNA-蛋白互作研究
  • No static resource druid
  • C++(STL源码刨析/vector)