提交 e3a4afcf 编写于 作者: 走神的阿圆's avatar 走神的阿圆

fix image display size in serving demo

上级 1af31430
...@@ -10,9 +10,9 @@ PaddleHub-Serving是基于PaddleHub的一键模型服务部署工具,能够通 ...@@ -10,9 +10,9 @@ PaddleHub-Serving是基于PaddleHub的一键模型服务部署工具,能够通
PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化,未来还将支持开发者利用PaddleHub自己finetune后的模型服务化。 PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化,未来还将支持开发者利用PaddleHub自己finetune后的模型服务化。
## 2. Bert Service ## 2. Bert Service
`Bert Service`是基于Paddle Serving框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。 Bert Service是基于Paddle Serving框架的快速部署模型远程计算服务方案,可将embedding过程通过调用API接口的方式实现,减少了对机器资源的依赖。使用PaddleHub可在服务器上一键部署`Bert Service`服务,在另外的普通机器上通过客户端接口即可轻松的获取文本对应的embedding数据。
关于`Bert Service`的具体信息请参与[Bert Service](./bert_service) 关于Bert Service的具体信息和示例请参阅[Bert Service](./bert_service)
该示例展示了利用Bert Service进行远程embedding服务化部署和在线预测,并获取文本embedding结果。 该示例展示了利用Bert Service进行远程embedding服务化部署和在线预测,并获取文本embedding结果。
...@@ -50,3 +50,5 @@ PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及 ...@@ -50,3 +50,5 @@ PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及
* [中文情感分析-基于simnet_bow](serving/semantic_model_simnet_bow) * [中文情感分析-基于simnet_bow](serving/semantic_model_simnet_bow)
该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。 该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。
关于Paddle-Serving一键模型部署功能的具体信息请参与[serving](./serving)
...@@ -21,7 +21,7 @@ Loading stgan_celeba successful. ...@@ -21,7 +21,7 @@ Loading stgan_celeba successful.
我们用来测试的样例图片为 我们用来测试的样例图片为
<p align="center"> <p align="center">
<img src="../img/man.jpg" width="30%" /> <img src="../img/man.png" width="30%" />
</p> </p>
根据stgan_celeba所需信息,准备的数据包括图像文件和生成图像风格,格式为 根据stgan_celeba所需信息,准备的数据包括图像文件和生成图像风格,格式为
......
...@@ -48,14 +48,14 @@ $ hub serving start --config config.json ...@@ -48,14 +48,14 @@ $ hub serving start --config config.json
{ {
"modules_info": [ "modules_info": [
{ {
"module": module_name1, "module": "MODULE_NAME_1",
"version": module_version1, "version": "MODULE_VERSION_1",
"batch_size": batch_size1 "batch_size": "BATCH_SIZE_1"
}, },
{ {
"module": module_name2, "module": "MODULE_NAME_2",
"version": module_version2, "version": "MODULE_VERSION_2",
"batch_size": batch_size2 "batch_size": "BATCH_SIZE_2"
} }
], ],
"use_gpu": false, "use_gpu": false,
...@@ -68,7 +68,7 @@ $ hub serving start --config config.json ...@@ -68,7 +68,7 @@ $ hub serving start --config config.json
|参数|用途| |参数|用途|
|-|-| |-|-|
|--modules_info|Hub-Serving预安装模型,以字典列表形式列出,其中`module`为预测服务使用的模型名,`version`为其版本,`batch_size`为预测批次大小。 |--modules_info|Hub-Serving预安装模型,以字典列表形式列出,其中:<br>`module`为预测服务使用的模型名<br>`version`为预测模型的版本<br>`batch_size`为预测批次大小
|--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu| |--use_gpu|使用GPU进行预测,必须安装paddlepaddle-gpu|
|--port/-p|服务端口,默认为8866| |--port/-p|服务端口,默认为8866|
|--use_multiprocess|是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式| |--use_multiprocess|是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式|
...@@ -77,9 +77,9 @@ $ hub serving start --config config.json ...@@ -77,9 +77,9 @@ $ hub serving start --config config.json
在使用PaddleHub-Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为: 在使用PaddleHub-Serving部署服务端的模型预测服务后,就可以在客户端访问预测接口以获取结果了,接口url格式为:
http://0.0.0.0:8866/predict/<CATEGORY>/<MODULE> http://0.0.0.0:8866/predict/\<CATEGORY\>/\<MODULE>
其中,<CATEGORY>为text或image,与模型种类对应,<MODULE>为模型名。 其中,\<CATEGORY>为text或image,与模型种类对应,\<MODULE>为模型名。
通过发送一个POST请求,即可获取预测结果,下面我们将展示一个具体的demo,以说明使用PaddleHub-Serving部署和使用流程。 通过发送一个POST请求,即可获取预测结果,下面我们将展示一个具体的demo,以说明使用PaddleHub-Serving部署和使用流程。
...@@ -88,7 +88,7 @@ http://0.0.0.0:8866/predict/<CATEGORY>/<MODULE> ...@@ -88,7 +88,7 @@ http://0.0.0.0:8866/predict/<CATEGORY>/<MODULE>
<p align="center"> <p align="center">
<img src="../img/web_demo.png" width="60%" /> <img src="./img/web_demo.png" width="60%" />
</p> </p>
...@@ -124,7 +124,7 @@ $ hub serving start -c serving_config.json ...@@ -124,7 +124,7 @@ $ hub serving start -c serving_config.json
<p align="center"> <p align="center">
<img src="../img/start_serving_lac.png" width="100%" /> <img src="./img/start_serving_lac.png" width="100%" />
</p> </p>
...@@ -153,8 +153,11 @@ if __name__ == "__main__": ...@@ -153,8 +153,11 @@ if __name__ == "__main__":
print(json.dumps(r.json(), indent=4, ensure_ascii=False)) print(json.dumps(r.json(), indent=4, ensure_ascii=False))
``` ```
运行后得到结果 运行后得到结果
```python <details>
{ <summary>lac分词结果</summary>
```python
{
"results": [ "results": [
{ {
"tag": [ "tag": [
...@@ -187,9 +190,12 @@ if __name__ == "__main__": ...@@ -187,9 +190,12 @@ if __name__ == "__main__":
] ]
} }
] ]
} }
``` ```
关于PaddleHub-Serving的一键服务部署功能示例,可参阅下列demo
</detail>
获取其他PaddleHub-Serving的一键服务部署场景示例,可参阅下列demo
* [图像分类-基于vgg11_imagent](serving/classification_vgg11_imagenet) * [图像分类-基于vgg11_imagent](serving/classification_vgg11_imagenet)
......
...@@ -21,21 +21,11 @@ Loading vgg11_imagenet successful. ...@@ -21,21 +21,11 @@ Loading vgg11_imagenet successful.
我们用来测试的样例图片为 我们用来测试的样例图片为
<p align="center"> <p align="center">
<img src="../img/cat.jpg" width="80%" /> <img src="../img/cat.jpg" width="45%" />
</p> </p>
<p align="center"> <p align="center">
<img src="../img/flower.jpg" width="80%"/> <img src="../img/flower.jpg" width="45%"/>
</p>
## python脚本
<p align="center">
<img src="../img/cat.jpg" width="80%" />
</p>
<p align="center">
<img src="../img/flower.jpg" width="80%"/>
</p> </p>
准备的数据格式为 准备的数据格式为
......
# 部署图像分类服务-以yolov3_coco2017为例 # 部署图像分类服务-以yolov3_darknet53_coco2017为例
## 1 简介 ## 1 简介
目标检测作为深度学习常见任务,在各种场景下都有所使用。使用`yolov3_coco2017`模型可以进行目标检测任务,关于`yolov3_coco2017`的具体信息请参阅[yolov3_coco2017](https://paddlepaddle.org.cn/hubdetail?name=yolov3_coco2017&en_category=ObjectDetection) 目标检测作为深度学习常见任务,在各种场景下都有所使用。使用`yolov3_darknet53_coco2017`模型可以进行目标检测任务,关于`yolov3_darknet53_coco2017`的具体信息请参阅[yolov3_darknet53_coco2017](https://paddlepaddle.org.cn/hubdetail?name=yolov3_darknet53_coco2017&en_category=ObjectDetection)
使用PaddleHub-Serving可以轻松部署一个在线目标检测服务API,可将此API接入自己的web网站进行在线目标检测,也可接入移动端应用程序,实现识图、圈人等功能。 使用PaddleHub-Serving可以轻松部署一个在线目标检测服务API,可将此API接入自己的web网站进行在线目标检测,也可接入移动端应用程序,实现识图、圈人等功能。
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
## 2 启动PaddleHub-Serving ## 2 启动PaddleHub-Serving
启动命令如下 启动命令如下
```shell ```shell
$ hub serving start -m yolov3_coco2017 $ hub serving start -m yolov3_darknet53_coco2017
``` ```
启动时会显示加载模型过程,启动成功后显示 启动时会显示加载模型过程,启动成功后显示
```shell ```shell
Loading yolov3_coco2017 successful. Loading yolov3_darknet53_coco2017 successful.
``` ```
这样就完成了一个图像生成服务化API的部署,默认端口号为8866。 这样就完成了一个图像生成服务化API的部署,默认端口号为8866。
...@@ -22,13 +22,13 @@ Loading yolov3_coco2017 successful. ...@@ -22,13 +22,13 @@ Loading yolov3_coco2017 successful.
<p align="center"> <p align="center">
<img src="../img/cat.jpg" width="100%" /> <img src="../img/cat.jpg" width="65%" />
</p> </p>
<p align="center"> <p align="center">
<img src="../img/dog.jpg" width="100%" /> <img src="../img/dog.jpg" width="65%" />
</p> </p>
...@@ -46,8 +46,8 @@ files = [("image", file_1), ("image", file_2)] ...@@ -46,8 +46,8 @@ files = [("image", file_1), ("image", file_2)]
``` ```
然后就可以发送请求到目标检测服务API,并得到结果,代码如下 然后就可以发送请求到目标检测服务API,并得到结果,代码如下
```python ```python
>>> # 指定检测方法为yolov3_coco2017并发送post请求 >>> # 指定检测方法为yolov3_darknet53_coco2017并发送post请求
>>> url = "http://127.0.0.1:8866/predict/image/yolov3_coco2017" >>> url = "http://127.0.0.1:8866/predict/image/yolov3_darknet53_coco2017"
>>> r = requests.post(url=url, files=files) >>> r = requests.post(url=url, files=files)
``` ```
我们可以打印接口返回结果 我们可以打印接口返回结果
...@@ -93,7 +93,7 @@ files = [("image", file_1), ("image", file_2)] ...@@ -93,7 +93,7 @@ files = [("image", file_1), ("image", file_2)]
``` ```
根据结果可以看出准确识别了请求的图片。 根据结果可以看出准确识别了请求的图片。
yolov3_coco2017返回的结果还包括标注检测框的图像的base64编码格式,经过转换可以得到生成图像,代码如下 yolov3_darknet53_coco2017返回的结果还包括标注检测框的图像的base64编码格式,经过转换可以得到生成图像,代码如下
```python ```python
>>> for item in results: >>> for item in results:
... with open(output_path, "wb") as fp: ... with open(output_path, "wb") as fp:
...@@ -103,13 +103,13 @@ yolov3_coco2017返回的结果还包括标注检测框的图像的base64编码 ...@@ -103,13 +103,13 @@ yolov3_coco2017返回的结果还包括标注检测框的图像的base64编码
<p align="center"> <p align="center">
<img src="./output/cat.jpg" width="80%" /> <img src="./output/cat.jpg" width="65%" />
</p> </p>
<p align="center"> <p align="center">
<img src="./output/dog.jpg" width="80%" /> <img src="./output/dog.jpg" width="65%" />
</p> </p>
......
...@@ -22,7 +22,7 @@ Loading deeplabv3p_xception65_humanseg successful. ...@@ -22,7 +22,7 @@ Loading deeplabv3p_xception65_humanseg successful.
<p align="center"> <p align="center">
<img src="../img/girl.jpg" width="100%" /> <img src="../img/girl.jpg" width="65%" />
</p> </p>
...@@ -66,7 +66,7 @@ deeplabv3p_xception65_humanseg返回的结果还包括人像分割后的图像 ...@@ -66,7 +66,7 @@ deeplabv3p_xception65_humanseg返回的结果还包括人像分割后的图像
<p align="center"> <p align="center">
<img src="./output/girl.png" width="100%" /> <img src="./output/girl.png" width="65%" />
</p> </p>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册