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

fix image display size in serving demo

上级 1af31430
......@@ -10,9 +10,9 @@ PaddleHub-Serving是基于PaddleHub的一键模型服务部署工具,能够通
PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及利用预测模型实现预训练模型预测服务化,未来还将支持开发者利用PaddleHub自己finetune后的模型服务化。
## 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结果。
......@@ -50,3 +50,5 @@ PaddleHub-Serving主要包括利用Bert Service实现embedding服务化,以及
* [中文情感分析-基于simnet_bow](serving/semantic_model_simnet_bow)
该示例展示了利用senta_lstm完成中文文本情感分析服务化部署和在线预测,获取文本的情感分析结果。
关于Paddle-Serving一键模型部署功能的具体信息请参与[serving](./serving)
......@@ -233,7 +233,7 @@ Paddle Inference Server exit successfully!
browser.",这个页面有什么作用。
> A : 这是`BRPC`的内置服务,主要用于查看请求数、资源占用等信息,可对server端性能有大致了解,具体信息可查看[BRPC内置服务](https://github.com/apache/incubator-brpc/blob/master/docs/cn/builtin_service.md)。
> Q : 为什么输入文本的格式为[["文本1"], ["文本2"], ],而不是["文本1", "文本2", ]?
> Q : 为什么输入文本的格式为[["文本1"], ["文本2"], ],而不是["文本1", "文本2", ]?
> A : 因为Bert模型可以对一轮对话生成向量表示,例如[["问题1","回答1"],["问题2","回答2"]],为了防止使用时混乱,每个样本使用一个list表示,一个样本list内部可以是1条string或2条string,如下面的文本:
> ```python
> input_text = [
......
......@@ -21,7 +21,7 @@ Loading stgan_celeba successful.
我们用来测试的样例图片为
<p align="center">
<img src="../img/man.jpg" width="30%" />
<img src="../img/man.png" width="30%" />
</p>
根据stgan_celeba所需信息,准备的数据包括图像文件和生成图像风格,格式为
......
......@@ -48,14 +48,14 @@ $ hub serving start --config config.json
{
"modules_info": [
{
"module": module_name1,
"version": module_version1,
"batch_size": batch_size1
"module": "MODULE_NAME_1",
"version": "MODULE_VERSION_1",
"batch_size": "BATCH_SIZE_1"
},
{
"module": module_name2,
"version": module_version2,
"batch_size": batch_size2
"module": "MODULE_NAME_2",
"version": "MODULE_VERSION_2",
"batch_size": "BATCH_SIZE_2"
}
],
"use_gpu": false,
......@@ -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|
|--port/-p|服务端口,默认为8866|
|--use_multiprocess|是否启用并发方式,默认为单进程方式,推荐多核CPU机器使用此方式|
......@@ -77,9 +77,9 @@ $ hub serving start --config config.json
在使用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部署和使用流程。
......@@ -88,7 +88,7 @@ http://0.0.0.0:8866/predict/<CATEGORY>/<MODULE>
<p align="center">
<img src="../img/web_demo.png" width="60%" />
<img src="./img/web_demo.png" width="60%" />
</p>
......@@ -124,7 +124,7 @@ $ hub serving start -c serving_config.json
<p align="center">
<img src="../img/start_serving_lac.png" width="100%" />
<img src="./img/start_serving_lac.png" width="100%" />
</p>
......@@ -153,43 +153,49 @@ if __name__ == "__main__":
print(json.dumps(r.json(), indent=4, ensure_ascii=False))
```
运行后得到结果
```python
{
"results": [
{
"tag": [
"TIME",
"v",
"q",
"n"
],
"word": [
"今天",
"是",
"个",
"好日子"
]
},
{
"tag": [
"n",
"v",
"TIME",
"v",
"v"
],
"word": [
"天气预报",
"说",
"今天",
"要",
"下雨"
]
}
]
}
```
关于PaddleHub-Serving的一键服务部署功能示例,可参阅下列demo
<details>
<summary>lac分词结果</summary>
```python
{
"results": [
{
"tag": [
"TIME",
"v",
"q",
"n"
],
"word": [
"今天",
"是",
"个",
"好日子"
]
},
{
"tag": [
"n",
"v",
"TIME",
"v",
"v"
],
"word": [
"天气预报",
"说",
"今天",
"要",
"下雨"
]
}
]
}
```
</detail>
获取其他PaddleHub-Serving的一键服务部署场景示例,可参阅下列demo
* [图像分类-基于vgg11_imagent](serving/classification_vgg11_imagenet)
......
......@@ -21,21 +21,11 @@ Loading vgg11_imagenet successful.
我们用来测试的样例图片为
<p align="center">
<img src="../img/cat.jpg" width="80%" />
<img src="../img/cat.jpg" width="45%" />
</p>
<p align="center">
<img src="../img/flower.jpg" width="80%"/>
</p>
## python脚本
<p align="center">
<img src="../img/cat.jpg" width="80%" />
</p>
<p align="center">
<img src="../img/flower.jpg" width="80%"/>
<img src="../img/flower.jpg" width="45%"/>
</p>
准备的数据格式为
......
# 部署图像分类服务-以yolov3_coco2017为例
# 部署图像分类服务-以yolov3_darknet53_coco2017为例
## 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网站进行在线目标检测,也可接入移动端应用程序,实现识图、圈人等功能。
......@@ -9,11 +9,11 @@
## 2 启动PaddleHub-Serving
启动命令如下
```shell
$ hub serving start -m yolov3_coco2017
$ hub serving start -m yolov3_darknet53_coco2017
```
启动时会显示加载模型过程,启动成功后显示
```shell
Loading yolov3_coco2017 successful.
Loading yolov3_darknet53_coco2017 successful.
```
这样就完成了一个图像生成服务化API的部署,默认端口号为8866。
......@@ -22,13 +22,13 @@ Loading yolov3_coco2017 successful.
<p align="center">
<img src="../img/cat.jpg" width="100%" />
<img src="../img/cat.jpg" width="65%" />
</p>
<p align="center">
<img src="../img/dog.jpg" width="100%" />
<img src="../img/dog.jpg" width="65%" />
</p>
......@@ -46,8 +46,8 @@ files = [("image", file_1), ("image", file_2)]
```
然后就可以发送请求到目标检测服务API,并得到结果,代码如下
```python
>>> # 指定检测方法为yolov3_coco2017并发送post请求
>>> url = "http://127.0.0.1:8866/predict/image/yolov3_coco2017"
>>> # 指定检测方法为yolov3_darknet53_coco2017并发送post请求
>>> url = "http://127.0.0.1:8866/predict/image/yolov3_darknet53_coco2017"
>>> r = requests.post(url=url, files=files)
```
我们可以打印接口返回结果
......@@ -93,7 +93,7 @@ files = [("image", file_1), ("image", file_2)]
```
根据结果可以看出准确识别了请求的图片。
yolov3_coco2017返回的结果还包括标注检测框的图像的base64编码格式,经过转换可以得到生成图像,代码如下
yolov3_darknet53_coco2017返回的结果还包括标注检测框的图像的base64编码格式,经过转换可以得到生成图像,代码如下
```python
>>> for item in results:
... with open(output_path, "wb") as fp:
......@@ -103,13 +103,13 @@ yolov3_coco2017返回的结果还包括标注检测框的图像的base64编码
<p align="center">
<img src="./output/cat.jpg" width="80%" />
<img src="./output/cat.jpg" width="65%" />
</p>
<p align="center">
<img src="./output/dog.jpg" width="80%" />
<img src="./output/dog.jpg" width="65%" />
</p>
......
......@@ -22,7 +22,7 @@ Loading deeplabv3p_xception65_humanseg successful.
<p align="center">
<img src="../img/girl.jpg" width="100%" />
<img src="../img/girl.jpg" width="65%" />
</p>
......@@ -66,7 +66,7 @@ deeplabv3p_xception65_humanseg返回的结果还包括人像分割后的图像
<p align="center">
<img src="./output/girl.png" width="100%" />
<img src="./output/girl.png" width="65%" />
</p>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册