[PYTHON] Erstellen Sie eine REST-API mit dem in Lobe und TensorFlow Serving erlernten Modell.

Im folgenden Artikel habe ich erklärt, wie man mit Lobe lernt und wie man das gelernte Modell exportiert und aus Python verwendet.

Ich habe "Lobe" ausprobiert, wodurch es einfach ist, von Microsoft veröffentlichte Modelle für maschinelles Lernen zu trainieren. Verwendung des in Lobe in Python erlernten Modells

Dieses Mal möchte ich eine REST-API in Kombination mit TensorFlow Serving erstellen.

Vorbereitung für den Betrieb von TensorFlow Serving

In dem oben genannten Artikel erfahren Sie, wie Sie mit Lobe lernen und Modelle exportieren.

Nachdem Sie verschiedene Dinge ausprobiert haben, muss der Name des Verzeichnisses, das das Modell enthält, eine Zahl sein, damit TensorFlow Serving funktioniert. (Ich habe diesen Bereich noch nicht erfasst, daher würde ich ihn begrüßen, wenn jemand ihn kennt.)

Erstellen Sie daher ein Verzeichnis mit einer Nummer im Modellverzeichnis, das aus Lobe exportiert wurde, und kopieren oder verschieben Sie die erforderlichen Dateien.

Starten Sie Tensor Flow Serving mit Docker

Der einfachste Weg, TensorFlow Serving zu verwenden, ist die Verwendung von Docker. Das offizielle Bild wird auf den Docker-Hub hochgeladen. Verwenden Sie dieses. tensorflow/serving

Das diesmal verwendete Modellverzeichnis lautet wie folgt. TensorFlow Serving verwendet das Modell im Verzeichnis 1.

── sample_model
    ├── 1 #Erstellen Sie ein neues Beispiel_Kopieren oder verschieben Sie die erforderlichen Dateien unter das Modell
    │   ├── saved_model.pb
    │   └── variables
    │       ├── variables.data-00000-of-00001
    │       └── variables.index
    ├── example
    │   ├── README.md
    │   ├── requirements.txt
    │   └── tf_example.py
    ├── saved_model.pb
    ├── signature.json
    └── variables
        ├── variables.data-00000-of-00001
        └── variables.index

Starten Sie Docker wie folgt.

# docker run -t --rm -p 8501:8501 -v "`pwd`/sample_model:/models/sample_model" -e MODEL_NAME=sample_model tensorflow/serving

Wenn das Modell geladen ist und der Vorgang normal startet, wird die folgende Meldung angezeigt.

2020-11-03 01:04:51.142942: I tensorflow_serving/model_servers/server.cc:387] Exporting HTTP/REST API at:localhost:8501 ...
[evhttp_server.cc : 238] NET_LOG: Entering the event loop ...

Wenn diese Nachricht ausgegeben wird, wurde TensorFlow Serving gestartet.

Versuchen Sie die Bildklassifizierung mit REST

Mit den Schritten bis zu diesem Punkt können Sie die Bildklassifizierung mit REST versuchen. Senden wir eine GET-Anfrage, um den Betrieb von TensorFlow Serving zu überprüfen.

import requests
import json

url = 'http://localhost:8501/v1/models/sample_model'
res = requests.get(url)
print(json.loads(res.text))

Wenn die folgende Antwort zurückgegeben wird, funktioniert sie problemlos.

{'model_version_status': [{'version': '1', 'state': 'AVAILABLE', 'status': {'error_code': 'OK', 'error_message': ''}}]}

Vorhersageanforderungen werden per POST gestellt.

import json

import cv2
import numpy as np
import requests

#URL der Vorhersageanforderung
url = 'http://localhost:8501/v1/models/sample_model:predict'

def predict(image_path):
    image = cv2.imread(image_path, cv2.IMREAD_COLOR)
    image = image.astype(np.float32) / 255
    image = image.tolist()

    headers = {"content-type": "application/json"}
    body = {"inputs": [image]}
    r = requests.post(url, data=json.dumps(body), headers=headers)
    r_json = json.loads(r.text)
    return r_json['outputs']['Prediction'][0]

Sie können das Vorhersageergebnis erhalten, indem Sie die Bilddatei als Argument für die Vorhersage angeben.

predict_label = predict('Bilddatei')
print(predict_label)

Bis zu diesem Punkt können Sie eine Umgebung erstellen, die mindestens funktioniert.

Recommended Posts

Erstellen Sie eine REST-API mit dem in Lobe und TensorFlow Serving erlernten Modell.
Erstellen wir eine REST-API mit SpringBoot + MongoDB
So erstellen Sie eine Rest-API in Django
Erstellen Sie mit GitHub Pages einen Pseudo-REST-API-Server
Verwendung des in Lobe in Python erlernten Modells
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
Erstellen Sie mithilfe der Twitter-Streaming-API einen Echtzeit-Bot für die automatische Antwort
Ich habe versucht, ein Deep-Learning-Modell von TensorFlow mit TensorFlow Serving zu hosten
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste
Erstellen Sie die CRUD-API mit der Fast API
Erstellen Sie mit turicreate eine API, die Daten aus einem Modell zurückgibt
Erstellen Sie ganz einfach einen TalkBot mit Discord.py und der Talk-API von A3RT (pya3rt).
[Python] Ich habe eine REST-API mit AWS API Gateway und Lambda geschrieben.
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Erstellen Sie ein Modell zum Speichern von Informationen aus der Google Books-API für eine intuitive Handhabung und Prüfung
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Tweet mit der Twitter-API in Python
Erstellen Sie mit dem Sympy-Modul ein Diagramm
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Erstellen Sie eine Anwendung mit der Spotify-API
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Erstellen Sie eine einfache App, die die Fetch-API für Ajax-Anforderungen in Flask enthält, und erklären Sie sie schnell.
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Erstellen Sie mithilfe der Gesetzes-API ein einfach zu lesendes PDF mit Gesetzen und Regierungsverordnungen
Erstellen Sie ein Django-Projekt und eine Django-Anwendung in einer virtuellen Python-Umgebung und starten Sie den Server
Visualisierung des Zündzustands der verborgenen Schicht des Modells, die im TensorFlow MNIST-Lernprogramm gelernt wurde
Erstellen Sie einen Filter, um ein Zugriffstoken mit der Graph-API (Flask) zu erhalten.
Erstellen Sie eine saubere Datenbank zum Testen mit FastAPI und führen Sie Unittest of API mit pytest aus
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Erstellen Sie eine Webmap mit Python und GDAL
Erstellen Sie in Python ein einfaches Momentum-Investmentmodell
Erstellen Sie eine MIDI-Datei in Python mit pretty_midi
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Erstellen Sie eine GUI auf dem Terminal mit Flüchen
Ich habe eine Demo erstellt, mit der das in Tensorflows Mnist-Tutorial trainierte Modell die handgeschriebenen Zahlen auf der Leinwand unterscheiden kann.
Automatisieren Sie das Entfernen des Hintergrunds für die neuesten Porträts in einem Verzeichnis mit Python und API
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Untersuchen Sie die Beziehung zwischen TensorFlow und Keras in der Übergangszeit
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 1 ~
[LINE Messaging API] Erstellen Sie mit Python ein umfangreiches Menü
Erstellen eines seq2seq-Modells mithilfe der Funktions-API-Übersicht von keras
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Erstellen Sie ein Diagramm mit der Plot-Schaltfläche und dem Schieberegler
Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
Wählen Sie die erforderlichen Variablen in TensorFlow aus und speichern / wiederherstellen
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 2 ~
Erstellen Sie mit PyQt5 und PyQtGraph einen 3D-Modell-Viewer
Erstellen eines seq2seq-Modells unter Verwendung der funktionalen API-Inferenz von keras
Verwenden Sie die Such-API der National Parliament Library in Python
Erstellen Sie mit OpenCV und TensorFlow einen Sato Yohei-Diskriminator
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 3 ~
[CRUD] [Django] Erstellen Sie eine CRUD-Site mit dem Python-Framework Django ~ 4 ~