首页 飞桨领航团 帖子详情
百度飞桨第6课|教你5种简单高效的部署与推理(3)
收藏
快速回复
飞桨领航团 文章AI达人创造营 1432 0
百度飞桨第6课|教你5种简单高效的部署与推理(3)
收藏
快速回复
飞桨领航团 文章AI达人创造营 1432 0

PaddleHub简介 

飞桨生态下的预训练模型管理工具
PaddleHub便捷地获取飞桨生态下的预训练模型,结合Fine-tune API 快速完成迁移学习到应用部署的全流程工作

Hub 模型转换

hub 模型转换前期→paddlepaddle 2.模型训练 + 训练结果保存为.pdparams的参数字典

1.导入库

import paddlehub as hub 
from paddlehub.module.module import moduleinfo#装饰器,模型基本信息
from paddlehub.module.module import runnable #命令行推理 cmd
from paddlehub.module.module import serving #模型部署
from io import BytesIO #图片转换base64编码发送给服务器
import argparse#解析命令行参数
import json #传送数据格式
@moduleinfo(  
        name="mnist_predict",
        version="1.0.0", 
        summary="This is a PaddleHub Module. Just for test.",
        author="7hinc", 
        author_email="", 
        type="cv/my_mnist", 
)

2.定义类

class MnistPredict: 
    def __init__(self): 
    #命令行调用
    self.parser = argparse.ArgumentParser( 
        description="Run the mnist_predict module.", 
        prog='hub run mnist_predict', usage='%(prog)s’,  
        add_help=True) 
    self.parser.add_argument( 
        '--input_img’, 
        type=str, 
        default=None, 
        help="img to predict") 
    def mnist_predict(self, img_path): 
        print('forward’) 
        model.eval() 
        tensor_img = load_image(img_path) 
        paddle.disable_static() 
        result = model(paddle.to_tensor(tensor_img)) 
        return result.numpy().astype('int32')

3.装饰器

@runnable 
def runnable(self, argvs): #命令行推理
    print('runnable’) 
    args = self.parser.parse_args(argvs)  
    return self.mnist_predict(args.input_img) 
@serving 
def serving(self, img_b64):  #服务部署
    print('serving') model.eval() 
    img_b = base64.b64decode(img_b64) 
    tensor_img = load_image(BytesIO(img_b))
    paddle.disable_static() 
    result = model(paddle.to_tensor(tensor_img)) 
    # 应该返回JSON格式数据 
    # 从numpy读出的数据格式是 numpy.int32 
    res = { 
        'res': int(result.numpy().astype('int32')[0][0]) }
    return json.dumps(res)

Hub模型安装

使用paddlehub现成模型进行测试

pip install paddlehub paddlepaddle #paddlehub依赖paddlepaddle
hub install senta_bilstm #安装senta_bilstm(情感分析)

服务部署

开启模型服务
配置好服务端,在客户端通过POST请求获取预测结果

import requests
import json
text = [“Paddle开发者各个都是人才,说话又好听,我超喜欢这里的"]
data = {"texts": text, "batch_size": 1}
url = “127.0.0.1/predict/senta_bilstm"
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))

内网穿透-端口映射

小程序开发

1.样式:ajax、表单
2.逻辑
在表单提交中绑定方法,在JS中实现逻辑功能。

 

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户