提交 365f32aa 编写于 作者: A adaxiadaxi

update_docs

上级 95395059
# 安装 # 安装
## 环境依赖 ## 环境依赖
* Python==2.7 or Python>=3.5 for Linux or Mac
**Python>=3.6 for Windows** * Python >= 3.6
* PaddlePaddle>=1.7.0
* 操作系统:Windows/Mac/Linux
* PaddlePaddle>=1.5 ## 安装命令
在安装PaddleHub之前,请先安装PaddlePaddle深度学习框架,更多安装说明请查阅[飞桨快速安装](https://github.com/PaddlePaddle/PaddleHub)
```shell
pip install paddlehub
```
除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。 除上述依赖外,PaddleHub的预训练模型和预置数据集需要连接服务端进行下载,请确保机器可以正常访问网络。若本地已存在相关的数据集和预训练模型,则可以离线运行PaddleHub。
......
欢迎使用**PaddleHub** 欢迎使用**PaddleHub**
PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub开发者可以使用高质量的预训练模型结合Fine-tune API快速完成迁移学习到应用部署的全流程工作。其提供了飞桨生态下的高质量预训练模型,涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。更多模型详情请查看官网:https://www.paddlepaddle.org.cn/hub # PaddleHub 是什么
基于预训练模型,PaddleHub支持以下功能: PaddleHub是飞桨生态的预训练模型应用工具,开发者可以便捷地使用高质量的预训练模型结合Fine-tune API快速完成模型迁移到部署的全流程工作。PaddleHub提供的预训练模型涵盖了图像分类、目标检测、词法分析、语义模型、情感分析、视频分类、图像生成、图像分割、文本审核、关键点检测等主流模型。更多详情可查看[PaddleHub官网](https://www.paddlepaddle.org.cn/hub)
* **[命令行工具](#命令行工具)**,通过Python API或命令行方便快捷地完成模型的搜索、下载、安装、升级、预测等功能 PaddleHub以预训练模型应用为核心具备以下特点:
* **[迁移学习](#迁移学习)**,用户通过Fine-tune API,只需要少量代码即可完成自然语言处理和计算机视觉场景的深度迁移学习 * **[模型即软件](#模型即软件)**,通过Python API或命令行实现模型调用,可快速体验或集成飞桨特色预训练模型
* **[服务化部署](#服务化部署paddlehub-serving)**,简单一行命令即可搭建属于自己的模型的API服务 * **[易用的迁移学习](#易用的迁移学习)**,通过Fine-tune API,内置多种优化策略,只需少量代码即可完成预训练模型的Fine-tuning
* **[超参优化](#超参优化autodl-finetuner)**,自动搜索最优超参,得到更好的模型效果。 * **[一键模型转服务](#一键模型转服务)**,简单一行命令即可搭建属于自己的深度学习模型API服务完成部署。
* **[自动超参优化](#自动超参优化)**,内置AutoDL Finetuner能力,一键启动自动化超参搜索。
![PaddleHub](./docs/imgs/paddlehub_figure.jpg)
# PaddleHub 特性 # PaddleHub 特性
## 命令行工具 ## 一、模型即软件
借鉴了Anaconda和PIP等软件包管理的理念,开发了PaddleHub命令行工具。可以方便快捷的完成模型的搜索、下载、安装、升级、预测等功能。 PaddleHub采用模型即软件的设计理念,所有的预训练模型与Python软件包类似,具备版本的概念,通过`hub install/uninstall` 可以便捷完成模型的升级和卸载。此外,还可以通过Python的API或命令行实现快速预测的软件集成,更方便地应用和管理深度学习模型,完成模型的搜索、下载、安装、升级、预测等功能。更加详细的使用说明可以参考[PaddleHub命令行工具](tutorial/cmdintro.md)
更加详细的使用说明可以参考
[PaddleHub命令行工具](tutorial/cmdintro.md)
目前的预训练模型覆盖了图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等业界主流模型,更多PaddleHub已经发布的模型,请前往 https://www.paddlepaddle.org.cn/hub 查看。[快速体验](quickstart.md)通过命令行即可调用预训练模型进行预测。 目前的预训练模型覆盖了图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等业界主流模型,更多PaddleHub已经发布的模型,请前往 [PaddleHub官网](https://www.paddlepaddle.org.cn/hub) 查看。也可以使用[快速体验](quickstart.md)通过命令行即可调用预训练模型进行预测。
## 迁移学习 ## 二、易用的迁移学习
迁移学习(Transfer Learning)通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性。PaddleHub提供了Fine-tune API,只需要少量代码即可完成深度学习模型在自然语言处理和计算机视觉场景下的迁移学习,可以在更短的时间完成模型的训练,同时模型具备更好的泛化能力。 迁移学习(Transfer Learning)通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性。PaddleHub提供了Fine-tune API,只需要少量代码即可完成深度学习模型在自然语言处理和计算机视觉场景下的迁移学习,可以在更短的时间完成模型的训练,同时模型具备更好的泛化能力。
![PaddleHub-Finetune](./docs/imgs/paddlehub_finetune.jpg)
<p align="center"> <p align="center">
<img src="./imgs/paddlehub_finetune.gif" align="middle" <img src="./imgs/paddlehub_finetune.gif" align="middle"
...@@ -38,7 +36,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub ...@@ -38,7 +36,7 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub
十行代码完成ERNIE工业级文本分类 十行代码完成ERNIE工业级文本分类
</p> </p>
PaddleHub提供了使用Finetune-API和预训练模型完成[文本分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/text_classification)[序列标注](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/sequence_labeling)[多标签分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/multi_label_classification)[图像分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/image_classification)[检索式问答任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/qa_classification)[回归任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/regression)[句子语义相似度计算](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/sentence_similarity)[阅读理解任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo/reading_comprehension)等迁移任务的使用示例,详细参见[demo](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.4/demo) PaddleHub提供了使用Finetune-API和预训练模型完成[文本分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/text_classification)[序列标注](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/sequence_labeling)[多标签分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/multi_label_classification)[图像分类](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/image_classification)[检索式问答任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/qa_classification)[回归任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/regression)[句子语义相似度计算](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/sentence_similarity)[阅读理解任务](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/reading_comprehension)等迁移任务的使用示例,详细参见[demo](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo)
* 场景化使用 * 场景化使用
...@@ -69,14 +67,14 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub ...@@ -69,14 +67,14 @@ PaddleHub是飞桨预训练模型管理和迁移学习工具,通过PaddleHub
[ULMFiT优化策略](tutorial/strategy_exp.md) [ULMFiT优化策略](tutorial/strategy_exp.md)
## 服务化部署PaddleHub Serving ## 一键模型转服务
PaddleHub Serving是基于PaddleHub的一键模型服务部署工具,能够通过简单的Hub命令行工具轻松启动一个模型预测在线服务。 PaddleHub Serving是基于PaddleHub的一键模型服务部署工具,能够通过简单的Hub命令行工具轻松启动一个模型预测在线服务。
其主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化两大功能。未来还将支持开发者使用PaddleHub Fine-tune API的模型服务化。 其主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化两大功能。未来还将支持开发者使用PaddleHub Fine-tune API的模型服务化。
关于服务化部署详细信息参见[PaddleHub Serving一键服务部署](tutorial/serving.md) 关于服务化部署详细信息参见[PaddleHub Serving一键服务部署](tutorial/serving.md)
## 超参优化AutoDL Finetuner ## 自动超参优化
深度学习模型往往包含许多的超参数,而这些超参数的取值对模型性能起着至关重要的作用。因为模型参数空间大,目前超参调整都是通过手动,依赖人工经验或者不断尝试,且不同模型、样本数据和场景下不尽相同,所以需要大量尝试,时间成本和资源成本非常浪费。PaddleHub AutoDL Finetuner可以实现自动调整超参数,使得模型性能达到最优水平。它通过多种调优的算法来搜索最优超参。 深度学习模型往往包含许多的超参数,而这些超参数的取值对模型性能起着至关重要的作用。因为模型参数空间大,目前超参调整都是通过手动,依赖人工经验或者不断尝试,且不同模型、样本数据和场景下不尽相同,所以需要大量尝试,时间成本和资源成本非常浪费。PaddleHub AutoDL Finetuner可以实现自动调整超参数,使得模型性能达到最优水平。它通过多种调优的算法来搜索最优超参。
......
# 快速体验 # 快速体验
安装PaddleHub成功后,执行命令[hub run](tutorial/cmdintro.md),可以快速体验PaddleHub无需代码、一键预测的命令行功能,如下个示例: 安装PaddleHub成功后,执行命令[hub run](tutorial/cmdintro.md),可以快速体验PaddleHub无需代码、一键预测的命令行功能,如下个示例:
使用[词法分析](http://www.paddlepaddle.org.cn/hub?filter=category&value=LexicalAnalysis)模型LAC进行分词 * 使用[文字识别](https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=TextRecognition)轻量级中文OCR模型chinese_ocr_db_crnn_mobile即可一键快速识别图片中的文字。
```shell ```shell
$ hub run lac --input_text "今天是个好日子" $ wget https://paddlehub.bj.bcebos.com/model/image/ocr/test_ocr.jpg
[{'word': ['今天', '是', '个', '好日子'], 'tag': ['TIME', 'v', 'q', 'n']}] $ hub run chinese_ocr_db_crnn_mobile --input_path test_ocr.jpg --visualization=True
``` ```
使用[情感分析](http://www.paddlepaddle.org.cn/hub?filter=category&value=SentimentAnalysis)模型Senta对句子进行情感预测 预测结果图片保存在当前运行路径下ocr_result文件夹中,如下图所示。
<p align="center">
<img src="./docs/imgs/ocr_res.jpg" width='70%' align="middle"
</p>
* 使用[词法分析](https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=LexicalAnalysis)模型LAC进行分词
```shell
$ hub run lac --input_text "现在,慕尼黑再保险公司不仅是此类行动的倡议者,更是将其大量气候数据整合进保险产品中,并与公众共享大量天气信息,参与到新能源领域的保障中。"
[{
'word': ['现在', ',', '慕尼黑再保险公司', '不仅', '是', '此类', '行动', '的', '倡议者', ',', '更是', '将', '其', '大量', '气候', '数据', '整合', '进', '保险', '产品', '中', ',', '并', '与', '公众', '共享', '大量', '天气', '信息', ',', '参与', '到', '新能源', '领域', '的', '保障', '中', '。'],
'tag': ['TIME', 'w', 'ORG', 'c', 'v', 'r', 'n', 'u', 'n', 'w', 'd', 'p', 'r', 'a', 'n', 'n', 'v', 'v', 'n', 'n', 'f', 'w', 'c', 'p', 'n', 'v', 'a', 'n', 'n', 'w', 'v', 'v', 'n', 'n', 'u', 'vn', 'f', 'w']
}]
```
* 使用[情感分析](https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=SentimentAnalysis)模型Senta对句子进行情感预测
```shell ```shell
$ hub run senta_bilstm --input_text "今天天气真好" $ hub run senta_bilstm --input_text "今天天气真好"
{'text': '今天天气真好', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9798, 'negative_probs': 0.0202}] {'text': '今天天气真好', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9798, 'negative_probs': 0.0202}]
``` ```
使用[目标检测](http://www.paddlepaddle.org.cn/hub?filter=category&value=ObjectDetection)模型Ultra-Light-Fast-Generic-Face-Detector-1MB对图片进行人脸识别 * 使用[目标检测](http://www.paddlepaddle.org.cn/hub?filter=category&value=ObjectDetection)模型Ultra-Light-Fast-Generic-Face-Detector-1MB对图片进行人脸识别
```shell ```shell
$ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg $ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
$ hub run ultra_light_fast_generic_face_detector_1mb_640 --input_path test_image.jpg $ hub run ultra_light_fast_generic_face_detector_1mb_640 --input_path test_image.jpg
``` ```
![人脸识别结果](./imgs/face_detection_result.jpeg) <p align="center">
<img src="./docs/imgs/face_detection_result.jpeg" align="middle"
</p>
* 使用[图像分割](https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=ImageSegmentation)模型进行人像扣图和人体部件识别
使用[图像分割](https://www.paddlepaddle.org.cn/hub?filter=en_category&value=ImageSegmentation)模型ace2p对图片进行tu
```shell ```shell
$ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg $ wget https://paddlehub.bj.bcebos.com/resources/test_image.jpg
$ hub run ace2p --input_path test_image.jpg $ hub run ace2p --input_path test_image.jpg
$ hub run deeplabv3p_xception65_humanseg --input_path test_image.jpg
``` ```
![图像分割结果](./imgs/img_seg_result.jpeg)
除了上述三类模型外,PaddleHub还发布了图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等业界主流模型,更多PaddleHub已经发布的模型,请前往 https://www.paddlepaddle.org.cn/hub 查看 <p align="center">
<img src="./docs/imgs/img_seg_result.jpeg" width="35%" />
<img src="./docs/imgs/humanseg_test_res.png" width="35%" />
</p>
<p align='center'>
&#8194;&#8194;&#8194&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;ACE2P人体部件分割&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;&#8194;
HumanSeg人像分割&#8194;&#8194;&#8194;
</p>
除了上述几类模型外,PaddleHub还发布了图像分类、语义模型、视频分类、图像生成、图像分割、文本审核、关键点检测等业界主流模型,更多PaddleHub已经发布的模型,请前往 [PaddleHub官网](https://www.paddlepaddle.org.cn/hub) 查看
...@@ -8,19 +8,19 @@ PaddleHub支持修改预训练模型存放路径: ...@@ -8,19 +8,19 @@ PaddleHub支持修改预训练模型存放路径:
目前命令行支持以下12个命令: 目前命令行支持以下12个命令:
## `install` ## `hub install`
用于将Module安装到本地,默认安装在`${HUB_HOME}/.paddlehub/modules`目录下,当一个Module安装到本地后,用户可以通过其他命令操作该Module(例如,使用该Module进行预测),也可以使用PaddleHub提供的python API,将Module应用到自己的任务中,实现迁移学习 用于将Module安装到本地,默认安装在`${HUB_HOME}/.paddlehub/modules`目录下,当一个Module安装到本地后,用户可以通过其他命令操作该Module(例如,使用该Module进行预测),也可以使用PaddleHub提供的python API,将Module应用到自己的任务中,实现迁移学习
## `uninstall` ## `hub uninstall`
用于卸载本地Module 用于卸载本地Module
## `show` ## `hub show`
用于查看本地已安装Module的属性或者指定目录下确定的Module的属性,包括其名字、版本、描述、作者等信息 用于查看本地已安装Module的属性或者指定目录下确定的Module的属性,包括其名字、版本、描述、作者等信息
## `download` ## `hub download`
用于下载百度提供的Module 用于下载百度提供的Module
...@@ -31,34 +31,34 @@ PaddleHub支持修改预训练模型存放路径: ...@@ -31,34 +31,34 @@ PaddleHub支持修改预训练模型存放路径:
* `--type`:指定下载的资源类型,当指定Model时,download只会下载Model的资源。默认为All,此时会优先搜索Module资源,如果没有相关的Module资源,则搜索Model * `--type`:指定下载的资源类型,当指定Model时,download只会下载Model的资源。默认为All,此时会优先搜索Module资源,如果没有相关的Module资源,则搜索Model
## `search` ## `hub search`
通过关键字在服务端检索匹配的Module,当想要查找某个特定模型的Module时,使用search命令可以快速得到结果,例如`hub search ssd`命令,会查找所有包含了ssd字样的Module,命令支持正则表达式,例如`hub search ^s.*`搜索所有以s开头的资源。 通过关键字在服务端检索匹配的Module,当想要查找某个特定模型的Module时,使用search命令可以快速得到结果,例如`hub search ssd`命令,会查找所有包含了ssd字样的Module,命令支持正则表达式,例如`hub search ^s.*`搜索所有以s开头的资源。
`注意` `注意`
如果想要搜索全部的Module,使用`hub search *`并不生效,这是因为shell会自行进行通配符展开,将*替换为当前目录下的文件名。为了进行全局搜索,用户可以直接键入`hub search` 如果想要搜索全部的Module,使用`hub search *`并不生效,这是因为shell会自行进行通配符展开,将*替换为当前目录下的文件名。为了进行全局搜索,用户可以直接键入`hub search`
## `list` ## `hub list`
列出本地已经安装的Module 列出本地已经安装的Module
## `run` ## `hub run`
用于执行Module的预测,需要注意的是,并不是所有的模型都支持预测(同样,也不是所有的模型都支持迁移学习),更多关于run命令的细节,请查看下方的`关于预测` 用于执行Module的预测,需要注意的是,并不是所有的模型都支持预测(同样,也不是所有的模型都支持迁移学习),更多关于run命令的细节,请查看下方的`关于预测`
## `help` ## `hub help`
显示帮助信息 显示帮助信息
## `version` ## `hub version`
显示PaddleHub版本信息 显示PaddleHub版本信息
## `clear` ## `hub clear`
PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认存放在${HUB_HOME}/.paddlehub/cache目录下,用户可以通过clear命令来清空缓存 PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认存放在${HUB_HOME}/.paddlehub/cache目录下,用户可以通过clear命令来清空缓存
## `autofinetune` ## `hub autofinetune`
用于自动调整Fine-tune任务的超参数,具体使用详情参考[PaddleHub AutoDL Finetuner使用教程](https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.4/tutorial/autofinetune.md) 用于自动调整Fine-tune任务的超参数,具体使用详情参考[PaddleHub AutoDL Finetuner使用教程](https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.4/tutorial/autofinetune.md)
...@@ -78,7 +78,7 @@ PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认 ...@@ -78,7 +78,7 @@ PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认
* `--strategy`: 设置自动搜索超参算法,可选hazero和pshe2,默认为hazero * `--strategy`: 设置自动搜索超参算法,可选hazero和pshe2,默认为hazero
## `config` ## `hub config`
用于查看和设置paddlehub相关设置,包括对server地址、日志级别的设置: 用于查看和设置paddlehub相关设置,包括对server地址、日志级别的设置:
`示例` `示例`
...@@ -90,7 +90,7 @@ PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认 ...@@ -90,7 +90,7 @@ PaddleHub在使用过程中会产生一些缓存数据,这部分数据默认
* `hub config log==[level]`: 设置当前日志级别为[level], 可选值为critical, error, warning, info, debug, nolog, 从左到右优先级从高到低,nolog表示不显示日志信息 * `hub config log==[level]`: 设置当前日志级别为[level], 可选值为critical, error, warning, info, debug, nolog, 从左到右优先级从高到低,nolog表示不显示日志信息
## `serving` ## `hub serving`
用于一键部署Module预测服务,详细用法见[PaddleHub Serving一键服务部署](serving.md) 用于一键部署Module预测服务,详细用法见[PaddleHub Serving一键服务部署](serving.md)
...@@ -126,11 +126,11 @@ $ hub run lac --input_file test.txt ...@@ -126,11 +126,11 @@ $ hub run lac --input_file test.txt
```shell ```shell
# 单张照片预测 # 单张照片预测
$ hub run ssd_mobilenet_v1_pascal --input_path test.jpg $ hub run resnet_v2_50_imagenet --input_path test.jpg
``` ```
```shell ```shell
# 多张照片预测 # 多张照片预测
$ hub run ssd_mobilenet_v1_pascal --input_file test.txt $ hub run resnet_v2_50_imagenet --input_file test.txt
``` ```
其中test.txt的格式为 其中test.txt的格式为
``` ```
......
...@@ -12,7 +12,7 @@ author_email: ...@@ -12,7 +12,7 @@ author_email:
type: nlp/semantic_model type: nlp/semantic_model
``` ```
**本示例代码可以参考[finetuned_model_to_module](../../demo/text_classification/finetuned_model_to_module/)** **本示例代码可以参考[finetuned_model_to_module](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/text_classification/finetuned_model_to_module)**
Module存在一个接口predict,用于接收带预测,并给出文本的情感倾向(正面/负面),支持python接口调用和命令行调用。 Module存在一个接口predict,用于接收带预测,并给出文本的情感倾向(正面/负面),支持python接口调用和命令行调用。
```python ```python
...@@ -200,9 +200,9 @@ def predict(self, data, return_result=False, accelerate_mode=True): ...@@ -200,9 +200,9 @@ def predict(self, data, return_result=False, accelerate_mode=True):
### 完整代码 ### 完整代码
* [module.py](../../demo/text_classification/finetuned_model_to_module/module.py) * [module.py](https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.7/demo/text_classification/finetuned_model_to_module/module.py)
* [__init__.py](../../demo/text_classification/finetuned_model_to_module/__init__.py) * [__init__.py](https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.7/demo/text_classification/finetuned_model_to_module/__init__.py)
**NOTE:** `__init__.py`是空文件 **NOTE:** `__init__.py`是空文件
...@@ -305,4 +305,4 @@ r = requests.post(url=url, headers=headers, data=json.dumps(data)) ...@@ -305,4 +305,4 @@ r = requests.post(url=url, headers=headers, data=json.dumps(data))
print(json.dumps(r.json(), indent=4, ensure_ascii=False)) print(json.dumps(r.json(), indent=4, ensure_ascii=False))
``` ```
关与PaddleHub Serving更多信息参见[Hub Serving教程](../../docs/tutorial/serving.md)以及[Demo](../../demo/serving) 关与PaddleHub Serving更多信息参见[Hub Serving教程](./serving.md)以及[Demo](https://github.com/PaddlePaddle/PaddleHub/tree/release/v1.7/demo/serving)
# 自定义Task # 自定义Task
本节内容讲述如何实现自定义Task。在了解本节内容之前,您需要先了解以下内容: 本节内容讲述如何实现自定义Task。在了解本节内容之前,您需要先了解以下内容:
* 任务基类[BasicTask]() * 任务基类[BasicTask](../reference/task/base_task.md)
* 运行状态[RunState]() * 运行状态[RunState](../reference/task/runstate.md)
* 运行环境[RunEnv]() * 运行环境[RunEnv](../reference/task/runenv.md)
当自定义一个Task时,我们并不需要重新实现eval、finetune等通用接口。一般来讲,新的Task与其他Task的区别在于 当自定义一个Task时,我们并不需要重新实现eval、finetune等通用接口。一般来讲,新的Task与其他Task的区别在于
* 网络结构 * 网络结构
......
...@@ -82,9 +82,9 @@ $ hub serving start --config config.json ...@@ -82,9 +82,9 @@ $ hub serving start --config config.json
在使用PaddleHub Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为: 在使用PaddleHub Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为:
`http://127.0.0.1:8866/predict/<MODULE>` http://127.0.0.1:8866/predict/<CATEGORY\>/\<MODULE>
其中,`<MODULE>`为模型名。 其中,\<CATEGORY>为text或image,与模型种类对应,\<MODULE>为模型名。
通过发送一个POST请求,即可获取预测结果,下面我们将展示一个具体的demo,以说明使用PaddleHub Serving部署和使用流程。 通过发送一个POST请求,即可获取预测结果,下面我们将展示一个具体的demo,以说明使用PaddleHub Serving部署和使用流程。
...@@ -163,17 +163,12 @@ import requests ...@@ -163,17 +163,12 @@ import requests
import json import json
if __name__ == "__main__": if __name__ == "__main__":
# 指定用于预测的文本并生成字典{"text": [text_1, text_2, ... ]} # 指定用于用于预测的文本并生成字典{"text": [text_1, text_2, ... ]}
text = ["今天是个好日子", "天气预报说今天要下雨"] text_list = ["今天是个好日子", "天气预报说今天要下雨"]
# 以key的方式指定text传入预测方法的时的参数,此例中为"data" text = {"text": text_list}
# 对应本地部署,则为lac.analysis_lexical(data=text, batch_size=1) # 指定预测方法为lac并发送post请求
data = {"texts": text, "batch_size": 1} url = "http://127.0.0.1:8866/predict/text/lac"
# 指定预测方法为lac并发送post请求,content-type类型应指定json方式 r = requests.post(url=url, data=text)
url = "http://127.0.0.1:8866/predict/lac"
# 指定post请求的headers为application/json方式
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 打印预测结果 # 打印预测结果
print(json.dumps(r.json(), indent=4, ensure_ascii=False)) print(json.dumps(r.json(), indent=4, ensure_ascii=False))
...@@ -183,7 +178,6 @@ if __name__ == "__main__": ...@@ -183,7 +178,6 @@ if __name__ == "__main__":
```python ```python
{ {
"msg": "",
"results": [ "results": [
{ {
"tag": [ "tag": [
...@@ -201,10 +195,8 @@ if __name__ == "__main__": ...@@ -201,10 +195,8 @@ if __name__ == "__main__":
"天气预报", "说", "今天", "要", "下雨" "天气预报", "说", "今天", "要", "下雨"
] ]
} }
], ]
"status": "0"
} }
``` ```
### Step3:停止serving服务 ### Step3:停止serving服务
...@@ -227,13 +219,72 @@ $ PaddleHub Serving will stop. ...@@ -227,13 +219,72 @@ $ PaddleHub Serving will stop.
## Demo——其他模型的一键部署服务 ## Demo——其他模型的一键部署服务
获取其他PaddleHub Serving的一键服务部署场景示例,可参见下列demo
* [图像分类-基于vgg11_imagent](../../demo/serving/module_serving/classification_vgg11_imagenet)
&emsp;&emsp;该示例展示了利用vgg11_imagent完成图像分类服务化部署和在线预测,获取图像分类结果。
* [图像生成-基于stgan_celeba](../../demo/serving/module_serving/GAN_stgan_celeba)
&emsp;&emsp;该示例展示了利用stgan_celeba生成图像服务化部署和在线预测,获取指定风格的生成图像。
* [文本审核-基于porn_detection_lstm](../../demo/serving/module_serving/text_censorship_porn_detection_lstm)
&emsp;&emsp;该示例展示了利用porn_detection_lstm完成中文文本黄色敏感信息鉴定的服务化部署和在线预测,获取文本是否敏感及其置信度。
* [中文词法分析-基于lac](../../demo/serving/module_serving/lexical_analysis_lac) * [中文词法分析-基于lac](../../demo/serving/module_serving/lexical_analysis_lac)
&emsp;&emsp;该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。 &emsp;&emsp;该示例展示了利用lac完成中文文本分词服务化部署和在线预测,获取文本的分词结果,并可通过用户自定义词典干预分词结果。
* [人脸检测-基于pyramidbox_lite_server_mask](../../demo/serving/module_serving/object_detection_pyramidbox_lite_server_mask) * [目标检测-基于yolov3_darknet53_coco2017](../../demo/serving/module_serving/object_detection_yolov3_darknet53_coco2017)
&emsp;&emsp;该示例展示了利用yolov3_darknet53_coco2017完成目标检测服务化部署和在线预测,获取检测结果和覆盖识别框的图片。
* [中文语义分析-基于simnet_bow](../../demo/serving/module_serving/semantic_model_simnet_bow)
&emsp;&emsp;该示例展示了利用simnet_bow完成中文文本相似度检测服务化部署和在线预测,获取文本的相似程度。
* [图像分割-基于deeplabv3p_xception65_humanseg](../../demo/serving/module_serving/semantic_segmentation_deeplabv3p_xception65_humanseg)
&emsp;&emsp;该示例展示了利用deeplabv3p_xception65_humanseg完成图像分割服务化部署和在线预测,获取识别结果和分割后的图像。
* [中文情感分析-基于senta_lstm](../../demo/serving/module_serving/sentiment_analysis_senta_lstm)
&emsp;&emsp;该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。
## 客户端请求新版模型的方式
对某些新版模型,客户端请求方式有所变化,更接近本地预测的请求方式,以降低学习成本。
以lac(2.1.0)为例,使用上述方法进行请求将提示:
```python
{
"Warnning": "This usage is out of date, please use 'application/json' as content-type to post to /predict/lac. See 'https://github.com/PaddlePaddle/PaddleHub/blob/release/v1.6/docs/tutorial/serving.md' for more details."
}
```
对于lac(2.1.0),请求的方式如下:
```python
# coding: utf8
import requests
import json
if __name__ == "__main__":
# 指定用于预测的文本并生成字典{"text": [text_1, text_2, ... ]}
text = ["今天是个好日子", "天气预报说今天要下雨"]
# 以key的方式指定text传入预测方法的时的参数,此例中为"data"
# 对应本地部署,则为lac.analysis_lexical(texts=[text1, text2])
data = {"texts": text, "batch_size": 2}
# 指定预测方法为lac并发送post请求
url = "http://127.0.0.1:8866/predict/lac"
# 指定post请求的headers为application/json方式
headers = {"Content-Type": "application/json"}
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 打印预测结果
print(json.dumps(r.json(), indent=4, ensure_ascii=False))
```
&emsp;&emsp;该示例展示了利用pyramidbox_lite_server_mask完成人脸口罩检测,检测人脸位置以及戴口枣的置信度 此Demo的具体信息和代码请参见[LAC Serving_2.1.0](../../demo/serving/module_serving/lexical_analysis_lac/lac_2.1.0_serving_demo.py)
## Bert Service ## Bert Service
除了预训练模型一键服务部署功能之外,PaddleHub Serving还具有`Bert Service`功能,支持ernie_tiny、bert等模型快速部署,对外提供可靠的在线embedding服务,具体信息请参见[Bert Service](./bert_service.md) 除了预训练模型一键服务部署功能之外,PaddleHub Serving还具有`Bert Service`功能,支持ernie_tiny、bert等模型快速部署,对外提供可靠的在线embedding服务,具体信息请参见[Bert Service](./bert_service.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册