Skip to content

Latest commit

 

History

History
141 lines (91 loc) · 3.91 KB

File metadata and controls

141 lines (91 loc) · 3.91 KB

efficientnetb7_imagenet

Module Name efficientnetb7_imagenet
Category image classification
Network EfficientNet
Dataset ImageNet-2012
Fine-tuning supported or not No
Module Size 260MB
Latest update date -
Data indicators -

I.Basic Information

  • Module Introduction

    • EfficientNet is a light-weight model proposed by google, which consists of MBConv, and takes advantage of squeeze-and-excitation operation. This module is based on EfficientNetB7, trained on ImageNet-2012 dataset, and can predict an image of size 2242243.

II.Installation

III.Module API Prediction

  • 1、Command line Prediction

    • $ hub run efficientnetb7_imagenet --input_path "/PATH/TO/IMAGE"
    • If you want to call the Hub module through the command line, please refer to: PaddleHub Command Line Instruction
  • 2、Prediction Code Example

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

    • def classification(images=None,
                         paths=None,
                         batch_size=1,
                         use_gpu=False,
                         top_k=1):
      • classification API.

      • Parameters

        • images (list[numpy.ndarray]): image data, ndarray.shape is in the format [H, W, C], BGR;
        • paths (list[str]): image path;
        • batch_size (int): the size of batch;
        • use_gpu (bool): use GPU or not; set the CUDA_VISIBLE_DEVICES environment variable first if you are using GPU
        • top_k (int): return the first k results
      • Return

        • res (list[dict]): classication results, each element in the list is dict, key is the label name, and value is the corresponding probability

IV.Server Deployment

  • PaddleHub Serving can deploy an online service of image classification.

  • Step 1: Start PaddleHub Serving

    • Run the startup command:

    • $ hub serving start -m efficientnetb7_imagenet
    • 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
      
      def cv2_to_base64(image):
          data = cv2.imencode('.jpg', image)[1]
          return base64.b64encode(data.tostring()).decode('utf8')
      
      # 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/efficientnetb7_imagenet"
      r = requests.post(url=url, headers=headers, data=json.dumps(data))
      
      # print prediction results
      print(r.json()["results"])

V.Release Note

  • 1.0.0

    First release

  • 1.1.0

    Improve the prediction performance and users' experience

  • 1.2.0

    Remove Fluid API

    • $ hub install efficientnetb7_imagenet==1.2.0