README.md 4.5 KB
Newer Older
H
haoyuying 已提交
1
# realsr
W
wuzewu 已提交
2

H
haoyuying 已提交
3 4 5 6 7 8 9 10 11
|模型名称|reasr|
| :--- | :---: | 
|类别|图像-图像编辑|
|网络|LP-KPN|
|数据集|RealSR dataset|
|是否支持Fine-tuning|否|
|模型大小|64MB|
|PSNR|29.05|
|最新更新日期|2021-02-26|
W
wuzewu 已提交
12 13 14



H
haoyuying 已提交
15
## 一、模型基本信息
W
wuzewu 已提交
16

H
haoyuying 已提交
17
- ### 应用效果展示
W
wuzewu 已提交
18

H
haoyuying 已提交
19 20 21 22
  - 样例结果示例(左为原图,右为效果图):
    <p align="center">
    <img src="https://user-images.githubusercontent.com/35907364/133558583-0b7049db-ed1f-4a16-8676-f2141fcb3dee.png" width = "450" height = "300" hspace='10'/> <img src="https://user-images.githubusercontent.com/35907364/130789888-a0d4f78e-acd6-44c1-9570-7390e90ae8dc.png" width = "450" height = "300" hspace='10'/>
    </p>
W
wuzewu 已提交
23

H
haoyuying 已提交
24
- ### 模型介绍
W
wuzewu 已提交
25

H
haoyuying 已提交
26 27 28 29
  - realsr是用于图像和视频超分模型,该模型基于Toward Real-World Single Image Super-Resolution: A New Benchmark and A New Mode,它能够将输入的图片和视频超分四倍。
  
  - 更多详情请参考:[realsr](https://github.com/csjcai/RealSR)
  
W
wuzewu 已提交
30

H
haoyuying 已提交
31
## 二、安装
W
wuzewu 已提交
32

H
haoyuying 已提交
33
- ### 1、环境依赖
W
wuzewu 已提交
34

H
haoyuying 已提交
35
    - paddlepaddle >= 2.0.0
W
wuzewu 已提交
36

H
haoyuying 已提交
37
    - paddlehub >= 2.0.0
W
wuzewu 已提交
38

H
haoyuying 已提交
39
    - NOTE: 使用该模型需要自行安装ffmpeg,若您使用conda环境,推荐使用如下语句进行安装。
W
wuzewu 已提交
40

H
haoyuying 已提交
41 42 43
      ```shell
      $ conda install x264=='1!152.20180717' ffmpeg=4.0.2 -c conda-forge
      ```
W
wuzewu 已提交
44 45


H
haoyuying 已提交
46
- ### 2、安装
W
wuzewu 已提交
47

H
haoyuying 已提交
48 49 50 51 52 53
    - ```shell
      $ hub install realsr
      ```
      
    - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md)
      | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md)
W
wuzewu 已提交
54

H
haoyuying 已提交
55
    
W
wuzewu 已提交
56 57


H
haoyuying 已提交
58
## 三、模型API预测
W
wuzewu 已提交
59

H
haoyuying 已提交
60
  - ### 1、预测代码示例
W
wuzewu 已提交
61

H
haoyuying 已提交
62 63
    ```python
    import paddlehub as hub
W
wuzewu 已提交
64

H
haoyuying 已提交
65 66 67 68
    model = hub.Module(name='realsr')
    model.predict('/PATH/TO/IMAGE/OR/VIDEO')
    ```
  - ### 2、API
W
wuzewu 已提交
69

H
haoyuying 已提交
70 71 72
    - ```python
      def predict(self, input):
      ```
W
wuzewu 已提交
73

H
haoyuying 已提交
74
      - 超分API,得到超分后的图片或者视频。
W
wuzewu 已提交
75 76


H
haoyuying 已提交
77
      - **参数**
W
wuzewu 已提交
78

H
haoyuying 已提交
79
        - input (str): 图片或者视频的路径;
W
wuzewu 已提交
80

H
haoyuying 已提交
81
      - **返回**
W
wuzewu 已提交
82

H
haoyuying 已提交
83 84 85
        - 若输入是图片,返回值为:
          - pred_img(np.ndarray): BGR图片数据;
          - out_path(str): 保存图片路径。
W
wuzewu 已提交
86

H
haoyuying 已提交
87 88 89
        - 若输入是视频,返回值为:
          - frame_pattern_combined(str): 视频超分后单帧数据保存路径;
          - vid_out_path(str): 视频保存路径。
W
wuzewu 已提交
90

H
haoyuying 已提交
91 92 93 94
    - ```python
      def run_image(self, img):
      ```
      - 图像超分API, 得到超分后的图片。
W
wuzewu 已提交
95

H
haoyuying 已提交
96
      - **参数**
W
wuzewu 已提交
97

H
haoyuying 已提交
98
        - img (str|np.ndarray): 图片路径或则BGR格式图片。
W
wuzewu 已提交
99

H
haoyuying 已提交
100
      - **返回**
W
wuzewu 已提交
101

H
haoyuying 已提交
102
        - pred_img(np.ndarray): BGR图片数据;
W
wuzewu 已提交
103

H
haoyuying 已提交
104 105 106 107
    - ```python
      def run_video(self, video):
      ```
       - 视频超分API, 得到超分后的视频。
W
wuzewu 已提交
108

H
haoyuying 已提交
109
       - **参数**
W
wuzewu 已提交
110

H
haoyuying 已提交
111
         - video(str): 待处理视频路径。
W
wuzewu 已提交
112

H
haoyuying 已提交
113
       - **返回**
W
wuzewu 已提交
114

H
haoyuying 已提交
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
         - frame_pattern_combined(str): 视频超分后单帧数据保存路径;
         - vid_out_path(str): 视频保存路径。

## 四、服务部署

- PaddleHub Serving可以部署一个在线照片超分服务。

- ### 第一步:启动PaddleHub Serving

  - 运行启动命令:

    - ```shell
      $ hub serving start -m realsr
      ```

    - 这样就完成了一个图像超分的在线服务API的部署,默认端口号为8866。

    - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。

- ### 第二步:发送预测请求

  - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果

    ```python
      import requests
      import json
      import base64

      import cv2
      import numpy as np

      def cv2_to_base64(image):
          data = cv2.imencode('.jpg', image)[1]
          return base64.b64encode(data.tostring()).decode('utf8')
      def base64_to_cv2(b64str):
          data = base64.b64decode(b64str.encode('utf8'))
          data = np.fromstring(data, np.uint8)
          data = cv2.imdecode(data, cv2.IMREAD_COLOR)
          return data

      # 发送HTTP请求
      org_im = cv2.imread('/PATH/TO/IMAGE')
      data = {'images':cv2_to_base64(org_im)}
      headers = {"Content-type": "application/json"}
      url = "http://127.0.0.1:8866/predict/realsr"
      r = requests.post(url=url, headers=headers, data=json.dumps(data))
      img = base64_to_cv2(r.json()["results"])
      cv2.imwrite('/PATH/TO/SAVE/IMAGE', img)

      ```


## 五、更新历史

* 1.0.0

  初始发布

* 1.0.1

  适配paddlehub2.0版本
W
wuzewu 已提交
176