PaddleHub:自定义Module

本文主要参考如何创建自己的Module一文,并结合自己实践和踩坑记录而成。

github:detect_test_for_PaddleHub

PaddleHub:自定义Module的Serveing

1. 前提

现在基于你已经训练好了一个模型,现在将它转为hub,方便管理和调用

2. 创建项目文件夹

首先,创建一个项目detect_hub文件夹,其必要结构为:
在这里插入图片描述
即项目文件夹detect_hub下存在两个最基本的程序文件(其他你需要的自行放置在根目录下即可)。

3. 什么是__init__.py文件

该文件是一个包的标记文件,我们只需要新建一个内容为空名字为“init.py”的py文件,放置在项目跟目录下即可。

4.什么是module.py文件

该文件是完成我们预测功能的程序文件,现在来讲如何按规则创建

4.1 引入必要的模块(即使有的库没用到,也不要删)

import argparse
import os

import paddlehub as hub
from paddlehub.module.module import runnable, moduleinfo

# 如果还使用到其他自定义的模块时,需要输入全路径(从根目录开始),比如
# detect_test.inference import *

4.2 定义类

module.py中需要有一个继承了hub.Module的类存在,该类负责实现预测逻辑,并使用moduleinfo填写基本信息。当使用hub.Module(name=”senta_test”)加载Module时,PaddleHub会自动创建SentaTest的对象并返回。

:“@moduleinfo”中的“name”必须和跟目录的名字(detect_test)一样,否则会导致导入模块时的路径问题

@moduleinfo(
    name="detect_test",
    version="1.0.0",
    summary="This is a PaddleHub Module. Just for test.",
    author="thgpddl",
    author_email="",
    type="cv/detection",
)
class DetectTest:
    def __init__(self):
        # add arg parser
        self.parser = argparse.ArgumentParser(description="test")
        self.parser.add_argument('--input_iameg_path', type=str, default=None, help="a url of image")		
		# 更多初始化的量....
		
	def predict(self,input_image):
		# 实现预测的代码,可以通过调用第三方的模块实现
		# 比如调用你写好了的模型预测模块,来实现预测
		return your_result

5. 如何使用?

5.1 调用方法一:安装到系统再调用

将Module安装到本机中,再通过Hub.Module(name=…)加载
安装:$ hub install detect_test
detect_test为项目根目录名字
调用:

import paddlehub as hub
test=hub.Module(name="detect_test")
res=test.predict([img])

:这里的"predict()"方式不是固定的,他实际上是调用module.py中类中定义的 p r e d i c t ( ) predict() predict()方法

5.2 调用方法二:直接调用项目文件夹

直接通过Hub.Module(directory=…)加载

import paddlehub as hub
test=hub.Module(directory="detect_test")
res=test.predict([img])

6. PaddleHub Serving模型的部署

PaddleHub:自定义Module的Serveing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是一个对称矩阵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值