PaddleHub:自定义Module的Serveing

0. 提要

serving涉及到的主要是以base64请求服务器和服务器解码base64所产生的问题

github:detect_test_for_PaddleHub

PaddleHub自定义Module

1. 客服端请求

客户端请求主要完成图片转base64,以及请求任务的构建

1.1 图片转base64

关于图片转base64在python:base64与图片的互转的文章中有所描述,但是该文章中是将图片转为base64,默认是”bytes“类型,但是对于服务器请求,”bytes“是无法json化的,所以需要将”bytes“转为字符串”str“类型;同理,在解码(base64转图片)时,我们必须将”str“的base64数据转为”bytes“才能顺利解码。

with open(img_path,'rb') as f:
    base64=base64.b64encode(f.read())   # 得到”bytes“类型的base64数据
    image_base64 = base64.decode('utf-8') # 为了能够json请求,再次转为”str“

1.2 求任务的构建

完整的客户端请求代码:

import requests
import json
import base64

if __name__ == "__main__":
    img_path=r"temp.jpeg"
    with open(img_path,'rb') as f:
        base64=base64.b64encode(f.read())   # 得到”bytes“类型的base64数据
        image_base64 = base64.decode('utf-8') # 为了能够json请求,再次转为”str“

    # ”image64“一定是自定义Module中@serving函数的参数同名
    # 当有多个参数需要传递时,在@serving函数中定义名字对应的入参即可
    data = {"image64": image_base64}
    # 指定预测方法为detect_test并发送post请求,content-type类型应指定json方式
    url = "http://127.0.0.1:5959/predict/detect_test"
    # 指定post请求的headers为application/json方式
    headers = {"Content-Type": "application/json"}

    r = requests.post(url=url, headers=headers, data=json.dumps(data))

    # 打印预测结果
    print(r.json())

2. 服务端的解析

代码如下:

@serving
def predict_serving(self, image64):  # 接收客户端json中"image64"中的数据
	# 将”str“类型的转为”bytes“类型的base64数据
    image64_bytes=image64.encode('utf-8')
	# 将base64解码为图片数据
    debase64_data = base64.b64decode(image64_bytes)
    # ........
    # 在这里你可以根据需要将图片数据保存为文件、numpy矩阵数据,opencv图像数据等

3. 启动服务

现在你写好了包含serving的项目,如何使用?

  1. 安装
    hub insall your_project
  2. 启动服务
$ hub serving start --modules your_project \
                    --port XXXX \
                    --use_gpu \
                    --use_multiprocess \
                    --workers \
                    --gpu \

比如:
hub serving start --modules detect_test --port 5959
启动detect_test项目,使用5959端口
然后运行客户端代码(主要代码中的端口号和这里一致)即可请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是一个对称矩阵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值