Skip to content

Latest commit

 

History

History
138 lines (95 loc) · 3.92 KB

README_en.md

File metadata and controls

138 lines (95 loc) · 3.92 KB

stgan_bald

Module Name stgan_bald
Category image generation
Network STGAN
Dataset CelebA
Fine-tuning supported or not No
Module Size 287MB
Latest update date 2021-02-26
Data indicators -

I.Basic Information

  • Application Effect Display

    • Please refer to this link
  • Module Introduction

    • This module is based on STGAN model, trained on CelebA dataset, and can be used to predict bald appearance after 1, 3 and 5 years.

II.Installation

III.Module API Prediction

  • 1、Prediction Code Example

    • import paddlehub as hub
      import cv2
      
      stgan_bald = hub.Module(name="stgan_bald")
      result = stgan_bald.bald(images=[cv2.imread('/PATH/TO/IMAGE')])
      # or
      # result = stgan_bald.bald(paths=['/PATH/TO/IMAGE'])
  • 2、API

    • def bald(images=None,
               paths=None,
               use_gpu=False,
               visualization=False,
               output_dir="bald_output")
      • Bald appearance generation API.

      • Parameters

        • images (list[numpy.ndarray]): image data, ndarray.shape is in the format [H, W, C], BGR;
        • paths (list[str]): image path;
        • use_gpu (bool): use GPU or not; set the CUDA_VISIBLE_DEVICES environment variable first if you are using GPU
        • visualization (bool): Whether to save the results as picture files;
        • output_dir (str): save path of images;

        NOTE: choose one parameter to provide data from paths and images

      • Return

        • res (list[numpy.ndarray]): result list,ndarray.shape is [H, W, C]

IV.Server Deployment

  • PaddleHub Serving can deploy an online service of bald appearance generation.

  • Step 1: Start PaddleHub Serving

    • Run the startup command:

    • $ hub serving start -m stgan_bald
    • The servitization API is now deployed and the default port number is 8866.

    • NOTE: If GPU is used for prediction, set CUDA_VISIBLE_DEVICES environment variable before the service, otherwise it need not be set.

  • Step 2: Send a predictive request

    • With a configured server, use the following lines of code to send the prediction request and obtain the result

    • import requests
      import json
      import cv2
      import base64
      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
      
      # Send an HTTP request
      data = {'images':[cv2_to_base64(cv2.imread("/PATH/TO/IMAGE"))]}
      headers = {"Content-type": "application/json"}
      url = "http://127.0.0.1:8866/predict/stgan_bald"
      r = requests.post(url=url, headers=headers, data=json.dumps(data))
      
      # save results
      one_year =cv2.cvtColor(base64_to_cv2(r.json()["results"]['data_0']), cv2.COLOR_RGB2BGR)
      three_year =cv2.cvtColor(base64_to_cv2(r.json()["results"]['data_1']), cv2.COLOR_RGB2BGR)
      five_year =cv2.cvtColor(base64_to_cv2(r.json()["results"]['data_2']), cv2.COLOR_RGB2BGR)
      cv2.imwrite("stgan_bald_server.png", one_year)

V.Release Note

  • 1.0.0

    First release

  • 1.1.0

    Remove Fluid API

    • $ hub install stgan_bald==1.1.0