README.md 2.9 KB
Newer Older
L
lzzyzlbb 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
# 服务端预测部署

`PaddleGAN`训练出来的模型可以使用[Serving](https://github.com/PaddlePaddle/Serving) 部署在服务端。  
本教程以在REDS数据集上用`configs/msvsr_reds.yaml`算法训练的模型进行部署。  
预训练模型权重文件为[PP-MSVSR_reds_x4.pdparams](https://paddlegan.bj.bcebos.com/models/PP-MSVSR_reds_x4.pdparams)

## 1. 安装 paddle serving 
请参考[PaddleServing](https://github.com/PaddlePaddle/Serving/tree/v0.6.0) 中安装教程安装(版本>=0.6.0)。

## 2. 导出模型
PaddleGAN在训练过程包括网络的前向和优化器相关参数,而在部署过程中,我们只需要前向参数,具体参考:[导出模型](https://github.com/PaddlePaddle/PaddleGAN/blob/develop/deploy/EXPORT_MODEL.md)

```
python tools/export_model.py -c configs/msvsr_reds.yaml   --inputs_size="1,2,3,180,320" --load /path/to/model --export_serving_model True
----output_dir /path/to/output
```

以上命令会在`/path/to/output`文件夹下生成一个`msvsr`文件夹:
```
output
│   ├── multistagevsrmodel_generator
│   │   ├── multistagevsrmodel_generator.pdiparams
│   │   ├── multistagevsrmodel_generator.pdiparams.info
│   │   ├── multistagevsrmodel_generator.pdmodel
│   │   ├── serving_client
│   │   │   ├── serving_client_conf.prototxt
│   │   │   ├── serving_client_conf.stream.prototxt
│   │   ├── serving_server
│   │   │   ├── __model__
│   │   │   ├── __params__
│   │   │   ├── serving_server_conf.prototxt
│   │   │   ├── serving_server_conf.stream.prototxt
│   │   │   ├── ...
```

`serving_client`文件夹下`serving_client_conf.prototxt`详细说明了模型输入输出信息
`serving_client_conf.prototxt`文件内容为:
```
feed_var {
  name: "lqs"
  alias_name: "lqs"
  is_lod_tensor: false
  feed_type: 1
  shape: 1
  shape: 2
  shape: 3
  shape: 180
  shape: 320
}
fetch_var {
  name: "stack_18.tmp_0"
  alias_name: "stack_18.tmp_0"
  is_lod_tensor: false
  fetch_type: 1
  shape: 1
  shape: 2
  shape: 3
  shape: 720
  shape: 1280
}
fetch_var {
  name: "stack_19.tmp_0"
  alias_name: "stack_19.tmp_0"
  is_lod_tensor: false
  fetch_type: 1
  shape: 1
  shape: 3
  shape: 720
  shape: 1280
}
```

## 4. 启动PaddleServing服务

```
cd output_dir/multistagevsrmodel_generator/

# GPU
python -m paddle_serving_server.serve --model serving_server --port 9393 --gpu_ids 0

# CPU
python -m paddle_serving_server.serve --model serving_server --port 9393
```

## 5. 测试部署的服务
```
# 进入到导出模型文件夹
cd output/msvsr/
```

设置`prototxt`文件路径为`serving_client/serving_client_conf.prototxt`
设置`fetch``fetch=["stack_19.tmp_0"])`

测试
```
# 进入目录
cd output/msvsr/

# 测试代码 test_client.py 会自动创建output文件夹,并在output下生成`res.mp4`文件
python ../../deploy/serving/test_client.py input_video frame_num
```