ML appel modèle de service générateur de titre d'image dans le Notebook Jupyter

Description: Le but de cette écriture est de vérifier comment les modèles d'apprentissage automatique appel de service via l'API dans le Notebook Jupyter.

1, Environnement Description

CentOS7 (déployé dans VMware Workstation machine virtuelle Pro)
besoin d'avoir docker


2. Pré-requis: Préparation miroir

Services de test déployé miroir de modèle: codait / max-Image Générateur Caption-
Github Adresse: https://github.com/IBM/MAX-Image-Caption-Generator

Ce modèle identifie les données d'image cibles fixées 80 COCO différentes classes d'objets de haut niveau existent.

    
Déployer la mise en miroir des services Jupyter: onnx / onnx-écosystème
Github Adresse: https://github.com/onnx/onnx-docker/tree/master/onnx-ecosystem

Etant donné que dans CentOS jupyter installés, donc l'utilisation directe d'un miroir comprenant jupyter en utilisant une autre image avant d'utiliser le miroir, mais il peut y avoir des problèmes d'installation de package échoue.

3, l'image de démarrage

docker run -it -p 5000:5000 codait/max-image-caption-generator

Détecter l'adresse du conteneur d'image et les services fournis à l'adresse http: // IP hôte: 5000 / modèle / prédire

docker run -p 8888:8888 onnx/onnx-ecosystem

4, appeler le service de détection d'image dans l'ordinateur portable

! pip install -q matplotlib Pillow requests

import io
from PIL import Image
import matplotlib
from matplotlib import pyplot as plt
import matplotlib.patches as patches
import requests

def call_model(input_img, local_port=None):
    """
    Takes in input image file path, posts the image to the model and returns face bboxes and emotion predictions
    If local port is not specified, uses the long running instance.
    If local port is specificed, uses the local instance.
    """
    if local_port:
        url = 'http://192.168.64.242:'+ str(local_port)+'/model/predict'
    else:
        url = 'nothing'

    files = {'image': ('image.jpg', open(input_img, 'rb'), 'images/jpeg') }
    r = requests.post(url, files=files).json()
    
    return r


img_path = './dog'
image = Image.open(img_path)
image


model_response = call_model(img_path, 5000)

import json
print(json.dumps(model_response, indent=2))

Titre généré après l'exécution est la suivante:

La signification de base du titre des trois plus grandes probabilité est « un carlin sourire sur planche à roulettes », vous pouvez vérifier que le succès du chien et le visage du chien, mais le sol sera reconnu comme une planche à roulettes.

{
  "status": "ok",
  "predictions": [
    {
      "caption": "a small pug dog standing on a skateboard .",
      "index": "0",
      "probability": 0.0010022024578866463
    },
    {
      "caption": "a small pug dog standing on top of a skateboard .",
      "index": "1",
      "probability": 0.0006507893851378613
    },
    {
      "caption": "a small pug dog sitting on a skateboard .",
      "index": "2",
      "probability": 0.0005334585197032779
    }
  ]
}

 

Code capture d'écran d'exécution suit comme:

 

 

Publié 227 articles originaux · louange gagné 94 · vues 540 000 +

Je suppose que tu aimes

Origine blog.csdn.net/wiborgite/article/details/95656084
conseillé
Classement