README.md 4.9 KB
Newer Older
H
haoyuying 已提交
1
# falsr_c
W
wuzewu 已提交
2 3


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


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

H
haoyuying 已提交
17 18 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/130899031-a6f8c58a-5cb7-4105-b990-8cca5ae15368.png" width = "450" height = "300" hspace='10'/>
    </p>
W
wuzewu 已提交
23 24


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

H
haoyuying 已提交
27
  - falsr_c是基于Fast, Accurate and Lightweight Super-Resolution with Neural Architecture Search设计的轻量化超分辨模型。该模型使用多目标方法处理超分问题,同时使用基于混合控制器的弹性搜索策略来提升模型性能。该模型提供的超分倍数为2倍。
W
wuzewu 已提交
28

H
haoyuying 已提交
29
  - 更多详情请参考:[falsr_c](https://github.com/xiaomi-automl/FALSR)
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 39


H
haoyuying 已提交
40 41 42 43
- ### 2、安装
    - ```shell
      $ hub install falsr_c
      ```
W
wuzewu 已提交
44

H
haoyuying 已提交
45 46
    - 如您安装时遇到问题,可参考:[零基础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 已提交
47

H
haoyuying 已提交
48 49
## 三、模型API预测
- ### 1、命令行预测
W
wuzewu 已提交
50

H
haoyuying 已提交
51 52 53
  - ```
    $ hub run falsr_c --input_path "/PATH/TO/IMAGE"
    ```
H
haoyuying 已提交
54
- ### 2、预测代码示例
W
wuzewu 已提交
55

H
haoyuying 已提交
56 57 58
  ```python
  import cv2
  import paddlehub as hub
W
wuzewu 已提交
59

H
haoyuying 已提交
60 61 62 63 64 65 66
  sr_model = hub.Module(name='falsr_c')
  im = cv2.imread('/PATH/TO/IMAGE').astype('float32')
  #visualization=True可以用于查看超分图片效果,可设置为False提升运行速度。
  res = sr_model.reconstruct(images=[im], visualization=True)
  print(res[0]['data'])
  sr_model.save_inference_model()
  ```
W
wuzewu 已提交
67

H
haoyuying 已提交
68
- ### 3、API
W
wuzewu 已提交
69

H
haoyuying 已提交
70
  - ```python
jm_12138's avatar
jm_12138 已提交
71 72 73 74 75
    def reconstruct(images=None,
                    paths=None,
                    use_gpu=False,
                    visualization=False,
                    output_dir="falsr_c_output")
H
haoyuying 已提交
76
    ```
W
wuzewu 已提交
77

H
haoyuying 已提交
78
    - 预测API,用于图像超分辨率。
W
wuzewu 已提交
79

H
haoyuying 已提交
80
    - **参数**
W
wuzewu 已提交
81

H
haoyuying 已提交
82 83 84 85 86
      * images (list\[numpy.ndarray\]): 图片数据,ndarray.shape 为 \[H, W, C\],BGR格式;
      * paths (list\[str\]): 图片的路径;
      * use\_gpu (bool): 是否使用 GPU预测,如果使用GPU预测,则在预测之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置;
      * visualization (bool): 是否将识别结果保存为图片文件;
      * output\_dir (str): 图片的保存路径。
W
wuzewu 已提交
87

H
haoyuying 已提交
88
    - **返回**
W
wuzewu 已提交
89

H
haoyuying 已提交
90 91 92
      * res (list\[dict\]): 识别结果的列表,列表中每一个元素为 dict,关键字有 'save\_path', 'data',对应的取值为:
        * save\_path (str, optional): 可视化图片的保存路径(仅当visualization=True时存在);
        * data (numpy.ndarray): 超分辨后图像。
W
wuzewu 已提交
93

H
haoyuying 已提交
94
  - ```python
jm_12138's avatar
jm_12138 已提交
95
    def save_inference_model(dirname)
H
haoyuying 已提交
96
    ```
W
wuzewu 已提交
97

H
haoyuying 已提交
98
    - 将模型保存到指定路径。
W
wuzewu 已提交
99

H
haoyuying 已提交
100
    - **参数**
W
wuzewu 已提交
101

jm_12138's avatar
jm_12138 已提交
102
      * dirname: 模型保存路径
W
wuzewu 已提交
103 104 105



H
haoyuying 已提交
106
## 四、服务部署
W
wuzewu 已提交
107

H
haoyuying 已提交
108
- PaddleHub Serving可以部署一个图像超分的在线服务。
W
wuzewu 已提交
109

H
haoyuying 已提交
110 111 112 113 114 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
- ### 第一步:启动PaddleHub Serving

    - 运行启动命令:

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

      - 这样就完成了一个超分任务的服务化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/falsr_c"
        r = requests.post(url=url, headers=headers, data=json.dumps(data))
        sr = base64_to_cv2(r.json()["results"][0]['data'])
        cv2.imwrite('falsr_c_X2.png', sr)
        print("save image as falsr_c_X2.png")
        ```


## 五、更新历史


* 1.0.0

  初始发布
W
wuzewu 已提交
160

jm_12138's avatar
jm_12138 已提交
161 162 163 164 165 166 167 168

* 1.1.0

  移除 fluid API

  ```shell
  $ hub install falsr_c == 1.1.0
  ```