Jeden Tag werden 2,5 Quintillionen Bytes von Daten erstellt, basierend auf einer IBM -Studie. Viele dieser Daten sind unstrukturierte Daten wie große Texte, Audioaufnahmen und Bilder. Um mit den Daten etwas Nützliches zu tun, müssen wir es zuerst in strukturierte Daten umwandeln.
In diesem Codemuster verwenden wir eines der Modelle aus dem Modell Asset Exchange (MAX), einem Austausch, in dem Entwickler Open -Source -Deep -Learning -Modelle finden und experimentieren können. Insbesondere verwenden wir den Bildunterschriftengenerator, um eine Webanwendung zu erstellen, mit der Bilder beschrieben werden und dem Benutzer über Bilderbasierte Bildinhalt filtern können. Die Webanwendung bietet eine interaktive Benutzeroberfläche, die von einem leichten Python -Server mit Tornado unterstützt wird. Der Server nimmt Bilder über die Benutzeroberfläche auf und sendet sie an einen REST -Endpunkt für das Modell und zeigt die generierten Bildunterschriften auf der Benutzeroberfläche an. Der REST -Endpunkt des Modells wird mit dem auf max angegebenen Docker -Bild eingerichtet. Die Web -Benutzeroberfläche zeigt die generierten Bildunterschriften für jedes Bild sowie eine interaktive Wortwolke an, um Bilder basierend auf ihrer Bildunterschrift zu filtern.
Wenn der Leser dieses Codemuster abgeschlossen hat, wird er verstehen, wie man:

Das Folgende ist ein Vortrag auf dem Spark+AI Summit 2018 über Max, das eine kurze Demo der Web -App enthält.
Möglichkeiten zum Ausführen des Codemusters:
Befolgen Sie das Modelldoc, um das Bildunterschriftengeneratormodell für IBM Cloud bereitzustellen. Wenn Sie bereits einen Modell -API -Endpunkt zur Verfügung haben, können Sie diesen Vorgang überspringen.
Hinweis: Die Bereitstellung des Modells kann sich Zeit dauern, um schneller zu in Gang gesetzt. Sie können versuchen, lokal auszuführen.
Drücken Sie die Deploy to IBM Cloud -Taste. Wenn Sie noch kein IBM Cloud -Konto haben, müssen Sie eines erstellen.
Klicken Sie auf Delivery Pipeline und klicken Sie im Formular auf die Schaltfläche Create + um einen IBM Cloud API Key für die Web -App zu generieren.

Sobald der API -Schlüssel generiert ist, werden die Abschnitte der Region , Organization und Space ausgefüllt. Füllen Sie den Abschnitt Image Caption Generator Model API Endpoint mit dem oben bereitgestellten Endpunkt ein und klicken Sie dann auf Create .
Das Format für diesen Eintrag sollte
http://170.0.0.1:5000sein

Klicken Sie in Toolchains auf Delivery Pipeline , um sie zu beobachten, während die App bereitgestellt wird. Nach der Bereitstellung kann die App durch Klicken View app angezeigt werden.

Sie können das Modell und die Web -App auch auf Kubernetes über die neuesten Docker -Bilder auf Quay bereitstellen.
Führen Sie auf Ihrem Kubernetes -Cluster die folgenden Befehle aus:
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator/master/max-image-caption-generator.yaml
kubectl apply -f https://raw.githubusercontent.com/IBM/MAX-Image-Caption-Generator-Web-App/master/max-image-caption-generator-web-app.yaml Die Web -App wird unter Port 8088 Ihres Clusters verfügbar sein. Das Modell wird nur intern verfügbar sein, kann aber extern über den NodePort zugreifen.
Hinweis: Für die Bereitstellung der Web -App in IBM Cloud wird empfohlen, die Bereitstellung in den obigen IBM Cloud -Anweisungen zu befolgen, anstatt mit IBM Cloud Kubernetes -Dienst bereitzustellen.
Hinweis: Diese Schritte sind nur erforderlich, wenn Sie lokal ausgeführt werden, anstatt die
Deploy to IBM Cloud-Taste zu verwenden.
Hinweis: Der Anweisungssatz in diesem Abschnitt ist eine modifizierte Version der auf der Seite "Bildunterschrift Generator Project" gefunden
Um das Docker -Image auszuführen, das automatisch die API des Modells startet, rennen Sie:
docker run -it -p 5000:5000 quay.io/codait/max-image-caption-generator
Dadurch wird ein vorgefertigtes Bild aus dem Quay (oder verwendet ein vorhandenes Bild, wenn es bereits lokal zwischengespeichert wird) und fährt es aus. Wenn Sie das Modell lieber lokal erstellen möchten, können Sie die Schritte im Modell Readme ausführen.
Beachten Sie , dass dieses Docker -Bild derzeit nur CPU ist (wir werden später Unterstützung für GPU -Bilder hinzufügen).
Der API -Server generiert automatisch eine interaktive Swagger -Dokumentationsseite. Gehen Sie zu http://localhost:5000 um es zu laden. Von dort aus können Sie die API untersuchen und auch Testanforderungen erstellen.
Verwenden Sie das model/predict um eine Testdatei zu laden und Bildunterschriften für das Bild von der API abzurufen.
Der Ordner für Modellmuster enthält einige Bilder, mit denen Sie die API testen können, oder Sie können Ihre eigenen verwenden.
Sie können es auch in der Befehlszeile testen, zum Beispiel:
curl -F " image=@path/to/image.jpg " -X POST http://localhost:5000/model/predict{
"status" : " ok " ,
"predictions" : [
{
"index" : " 0 " ,
"caption" : " a man riding a wave on top of a surfboard . " ,
"probability" : 0.038827644239537
},
{
"index" : " 1 " ,
"caption" : " a person riding a surf board on a wave " ,
"probability" : 0.017933410519265
},
{
"index" : " 2 " ,
"caption" : " a man riding a wave on a surfboard in the ocean . " ,
"probability" : 0.0056628732021868
}
]
}Klonen Sie das Image Caption Generator Web App Repository lokal, indem Sie den folgenden Befehl ausführen:
git clone https://github.com/IBM/MAX-Image-Caption-Generator-Web-App
HINWEIS: Möglicherweise müssen Sie zuerst aus dem Max-Image-Kapion-Generatorverzeichnis
cd ..
Wechseln Sie dann das Verzeichnis in das lokale Repository
cd MAX-Image-Caption-Generator-Web-App
Vor dem Ausführen dieser Web -App müssen Sie ihre Abhängigkeiten installieren:
pip install -r requirements.txt
Anschließend starten Sie die Web -App, indem Sie ausführen:
python app.py
Sobald die Verarbeitung der Standardbilder (<1 Minute) beendet ist, können Sie auf die Web -App zugreifen unter: http://localhost:8088
Der Endpunkt für Bildunterschriftengenerator muss unter http://localhost:5000 verfügbar sein, damit die Web -App erfolgreich startet.
Wenn Sie einen anderen Port verwenden möchten oder den ML-Endpunkt an einem anderen Ort ausführen, können Sie diese mit Befehlszeilenoptionen ändern:
python app.py --port=[new port] --ml-endpoint=[endpoint url including protocol and port]
Um die Web -App mit Docker auszuführen, müssen die Container, die den Webserver und den Rest -Endpunkt ausführen, denselben Netzwerkstapel weitergeben. Dies geschieht in den folgenden Schritten:
Ändern Sie den Befehl, der den Bildunterschrift Generator REST -Endpunkt ausführt, um einen zusätzlichen Port im Container auf einem Port auf dem Host -Computer zuzuordnen. Im folgenden Beispiel wird es auf Port 8088 auf dem Host zugeordnet, aber auch andere Ports können verwendet werden.
docker run -it -p 5000:5000 -p 8088:8088 --name max-image-caption-generator quay.io/codait/max-image-caption-generator
Erstellen Sie das Web -App -Bild, indem Sie ausführen:
docker build -t max-image-caption-generator-web-app .
Führen Sie den Web -App -Container mit:
docker run --net='container:max-image-caption-generator' -it max-image-caption-generator-web-app
Sie können die Web -App auch mit dem neuesten Docker -Bild bereitstellen, das auf Quay.io verfügbar ist, indem Sie ausführen:
docker run --net='container:max-image-caption-generator' -it quay.io/codait/max-image-caption-generator-web-app
Dadurch wird der oben ausgeführte Model Docker -Container verwendet und kann ohne Klone der Web -App -Repo lokal ausgeführt werden.

Es gibt eine große Menge von Benutzern, die Bilder in einer lang laufenden Web -App hochgeladen haben
Wenn Sie die Web -App unter
http://localhost:8088ausführen, ist eine Administratorseite unterhttp://localhost:8088/cleanupverfügbar, mit der der Benutzer alle Benutzer -hochgeladenen Dateien vom Server löschen kann.[Hinweis: Dadurch werden alle Benutzer hochgeladen.]

Dieses Codemuster ist unter der Apache -Software -Lizenz, Version 2, lizenziert. Separate Code -Objekte von Drittanbietern, die in dieses Codemuster aufgerufen wurden, werden von ihren jeweiligen Anbietern gemäß ihren eigenen separaten Lizenzen lizenziert. Beiträge unterliegen dem Entwicklerzertifikat, Version 1.1 (DCO) und der Apache -Softwarelizenz, Version 2.
FAQ der Apache -Softwarelizenz (ASL)