In dieser Anleitung wird gezeigt, wie Sie ein neues Modell mit eigenen Trainingsbildern erstellen, die Ergebnisse bewerten und die Klassifizierung der Testbilder mithilfe von AutoML Vision vorhersagen.
Es wird ein Dataset mit Bildern von fünf unterschiedlichen Blumenarten verwendet: Sonnenblumen, Tulpen, Gänseblümchen, Rosen und Löwenzahn. Sie erfahren, wie Sie ein benutzerdefiniertes Modell trainieren, die Modellleistung bewerten und neue Bilder mithilfe des benutzerdefinierten Modells klassifizieren.
Voraussetzungen
Projektumgebung konfigurieren
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
AutoML Vision APIs aktivieren.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
AutoML Vision APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
- Folgen Sie der Anleitung zum Erstellen eines Dienstkontos und Herunterladen einer Schlüsseldatei.
-
Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf die Schlüsseldatei des Dienstkontos verweist. Die Schlüsseldatei haben Sie beim Erstellen des Dienstkontos heruntergeladen. Beispiel:export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE
-
Fügen Sie das neue Dienstkonto mit folgenden Befehlen zur IAM-Rolle AutoML Editor hinzu. Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts und SERVICE_ACCOUNT_NAME durch den Namen Ihres neuen Dienstkontos, z. B.
service-account1@myproject.iam.gserviceaccount.com
:gcloud auth login gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:YOUR_USERID@YOUR_DOMAIN" \ --role="roles/automl.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME \ --role="roles/automl.editor"
- Gewähren Sie dem AutoML Vision-Dienstkonto Zugriff auf Ihre Google Cloud-Projektressourcen.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/storage.admin"
- Installieren Sie die Clientbibliothek.
-
Legen Sie die Umgebungsvariablen
PROJECT_ID
undREGION_NAME
fest.
Ersetzen Sie PROJECT_ID durch die Projekt-ID Ihres Google Cloud-Projekts. AutoML Vision erfordert derzeit den Standortus-central1
.export PROJECT_ID="PROJECT_ID" export REGION_NAME="us-central1"
-
Erstellen Sie einen Cloud Storage-Bucket zum Speichern der Dokumente, die Sie zum Trainieren Ihres AutoML-Modells verwenden.
Der Bucket-Name muss das Format$PROJECT_ID-vcm
haben. Mit dem folgenden Befehl wird ein Speicher-Bucket in der Regionus-central1
mit der Bezeichnung$PROJECT_ID-vcm
erstellt.gsutil mb -p PROJECT_ID -c regional -l us-central1 gs://PROJECT_ID-vcm/
- Legen Sie die Variable BUCKET fest.
export BUCKET=PROJECT_ID-vcm
-
Kopieren Sie das öffentlich verfügbare Dataset von Blumenbildern aus
gs://cloud-samples-data/img/flower_photos/
in Ihren Google Cloud Storage-Bucket.
Geben Sie in der Cloud Shell-Sitzung Folgendes ein:gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://BUCKET/img/
Das Kopieren der Datei dauert ungefähr 20 Minuten.
Mit diesem Befehl wird auch die Datei
all_data.csv
kopiert, in der die ursprünglichen Dateinamen und deren Labels aufgelistet werden. -
Das Beispiel-Dataset enthält eine CSV-Datei mit den Speicherorten und Labels für jedes Bild. Weitere Informationen zum erforderlichen Format finden Sie unter Trainingsdaten vorbereiten. Aktualisieren Sie die CSV-Datei so, dass sie auf die Dateien in Ihrem Bucket verweist:
gsutil cat gs://BUCKET/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:BUCKET/img/flowers/:" > all_data.csv
Kopieren Sie dann die aktualisierte CSV-Datei in Ihren Bucket:gsutil cp all_data.csv gs://BUCKET/csv/
Speicherorte der Quellcodedateien
Sie können den Quellcode aus dem unten angegebenen Speicherort herunterladen. Nach dem Download können Sie den Quellcode in den AutoML Vision-Projektordner kopieren.
Python
Die Anleitung besteht aus diesen Python-Dateien:
vision_classification_create_dataset.py
– Enthält Features zum Erstellen eines Datasetsimport_dataset.py
– Enthält Features zum Importieren eines Datasetsvision_classification_create_model.py
– Enthält Features zum Erstellen eines Modellslist_model_evaluations.py
– Enthält Features zum Auflisten von Modellbewertungenvision_classification_predict.py
– Enthält Features im Zusammenhang mit Vorhersagendelete_model.py
– Enthält Features zum Löschen eines Modells
Java
Die Anleitung besteht aus diesen Java-Dateien:
VisionClassificationCreateDataset.java
– Enthält Features zum Erstellen eines DatasetsImportDataset.java
– Enthält Features zum Importieren eines DatasetsVisionClassificationCreateModel.java
– Enthält Features zum Erstellen eines ModellsListModelEvaluations.java
– Enthält Features zum Auflisten von ModellbewertungenVisionClassificationPredict.java
– Enthält Features im Zusammenhang mit VorhersagenDeleteModel.java
– Enthält Features zum Löschen eines Modells
Node.js
Die Anleitung besteht aus diesen Node.js-Dateien:
vision_classification_create_dataset.js
– Enthält Features zum Erstellen eines Datasetsimport_dataset.js
– Enthält Features zum Importieren eines Datasetsvision_classification_create_model.js
– Enthält Features zum Erstellen eines Modellslist_model_evaluations.js
– Enthält Features zum Auflisten von Modellbewertungenvision_classification_predict.js
– Enthält Features im Zusammenhang mit Vorhersagendelete_model.js
– Enthält Features zum Löschen eines Modells
Anwendung ausführen
Schritt 1: Blumen-Dataset erstellen
Der erste Schritt zum Erstellen eines benutzerdefinierten Modells besteht darin, ein leeres Dataset zu erstellen, das mit den Trainingsdaten für das Modell gefüllt wird. Wenn Sie ein Dataset erstellen, geben Sie den Klassifizierungstyp an, den das benutzerdefinierte Modell ausführen soll:
- MULTICLASS weist jedem klassifizierten Bild ein einzelnes Label zu
- MULTILABEL kann einem Bild mehrere Labels zuweisen.
In dieser Anleitung wird ein Dataset mit dem Namen flowers
erstellt und MULTICLASS verwendet.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Führen Sie das Feature create_dataset
aus, um ein leeres Dataset zu erstellen. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. - Legen Sie
display_name
für das Datasetflowers
fest. Ändern Sie
MULTILABEL
zu MULTICLASS.
Python
python3 vision_classification_create_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationCreateDataset"
Node.js
node vision_classification_create_dataset.js
Antwort
Die Antwort enthält die Details des neu erstellten Datasets, darunter die Dataset-ID, mit der Sie bei zukünftigen Anfragen auf das Dataset verweisen. Es wird empfohlen, die Umgebungsvariable DATASET_ID
auf den zurückgegebenen Wert der Dataset-ID festzulegen.
Dataset name: projects/216065747626/locations/us-central1/datasets/ICN7372141011130533778 Dataset id: ICN7372141011130533778 Dataset display name: flowers Image classification dataset specification: classification_type: MULTICLASS Dataset example count: 0 Dataset create time: seconds: 1530251987 nanos: 216586000
Schritt 2: Bilder in das Dataset importieren
Der nächste Schritt besteht darin, das Dataset mit Trainingsbildern zu füllen, die mit den Ziellabels versehen sind.
Die Feature-Schnittstelle import_data
übernimmt als Eingabe eine CSV-Datei, in der die Speicherorte aller Trainingsbilder und das richtige Label für jedes Trainingsbild aufgeführt sind. Weitere Informationen zum erforderlichen Format finden Sie unter Daten vorbereiten. In dieser Anleitung werden die mit Labels versehenen Bilder verwendet, die Sie in Ihren Cloud Storage-Bucket kopiert haben. In gs://$PROJECT_ID-vcm/csv/all_data.csv
finden Sie eine Liste dieser Bilder.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Führen Sie das Feature import_data
aus, um den Trainingsinhalt zu importieren. Der erste zu ändernde Code ist die Dataset-ID aus dem vorherigen Schritt, der zweite ist der URI von all_data.csv
. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie
project_id
auf PROJECT_ID. - Legen Sie
dataset_id
für das Dataset fest (aus der Ausgabe des vorherigen Schritts). Legen Sie den Pfadparameter
path
fest. Das ist der URI vongs://YOUR_PROJECT_ID-vcm/csv/all_data.csv
.python3 import_dataset.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ImportDataset" {Java}
node import_dataset.js {Node.js}
Antwort
Processing import... Dataset imported.
Schritt 3: Modell erstellen (trainieren)
Da Sie nun ein Dataset aus Trainingsbildern mit Labels haben, können Sie ein neues Modell trainieren.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Rufen Sie die Funktion create_model
auf, um ein Modell zu erstellen. Die Dataset-ID stammt aus den vorherigen Schritten. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie
project_id
auf PROJECT_ID. - Legen Sie
dataset_id
für das Dataset fest (aus der Ausgabe des vorherigen Schritts). Legen Sie
display_name
für Ihr Modellflowers_model
fest.python3 vision_classification_create_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationCreateModel" {Java}
node vision_classification_create_model.js {Node.js}
Antwort
Das Feature create_model
startet einen Trainingsvorgang und gibt den Namen des Vorgangs aus. Das Training erfolgt asynchron und kann einige Zeit in Anspruch nehmen. Anhand der Vorgangs-ID können Sie den Trainingsstatus abrufen. Nach Abschluss des Trainings gibt create_model
die Modell-ID zurück. Wie bei der Dataset-ID kann es auch hier sinnvoll sein, eine Umgebungsvariable MODEL_ID
für den zurückgegebenen Wert der Modell-ID festzulegen.
Training operation name: projects/216065747626/locations/us-central1/operations/ICN3007727620979824033 Training started... Model name: projects/216065747626/locations/us-central1/models/ICN7683346839371803263 Model id: ICN7683346839371803263 Model display name: flowers_model Image classification model metadata: Training budget: 1 Training cost: 1 Stop reason: Base model id: Model create time: seconds: 1529649600 nanos: 966000000 Model deployment state: deployed
Schritt 4: Modell bewerten
Nach dem Training können Sie die Bereitschaft des Modells bewerten. Dazu prüfen Sie die Genauigkeit, die Trefferquote und den F1-Wert.
Das Feature display_evaluation
verwendet die Modell-ID als Parameter.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Stellen Sie eine Anfrage, um die Gesamtbewertung des Modells aufzurufen. Führen Sie zu diesem Zweck die folgende Anfrage aus. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie
project_id
auf PROJECT_ID. Setzen Sie die
model_id
auf die ID Ihres Modells.python3 list_model_evaluations.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations" {Java}
node list_model_evaluations.js {Node.js}
Antwort
Wenn die Werte für Genauigkeit und Trefferquote zu niedrig sind, können Sie das Trainings-Dataset verbessern und Ihr Modell neu trainieren. Weitere Informationen finden Sie unter Modelle bewerten.
Precision and recall are based on a score threshold of 0.5 Model Precision: 96.3% Model Recall: 95.7% Model F1 score: 96.0% Model Precision@1: 96.33% Model Recall@1: 95.74% Model F1 score@1: 96.04%
Schritt 5: Modell verwenden, um eine Vorhersage zu treffen
Wenn Ihr benutzerdefiniertes Modell Ihren Qualitätsstandards entspricht, können Sie damit neue Blumenbilder klassifizieren.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Für das Feature predict
müssen Sie die folgenden Codezeilen ändern:
- Setzen Sie
project_id
auf PROJECT_ID. - Setzen Sie die
model_id
auf die ID Ihres Modells. Setzen Sie
file_path
auf die heruntergeladene Datei: resources/test.png.python3 vision_classification_predict.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationPredict" {Java}
node vision_classification_predict.js {Node.js}
Antwort
Die Funktion gibt den Klassifizierungswert zurück. Der Klassifizierungswert gibt an, wie gut ein Bild mit einer Kategorie übereinstimmt und dabei den angegebenen Konfidenzschwellenwert von 0,7 überschreitet.
Prediction results: Predicted class name: dandelion Predicted class score: 0.9702693223953247
Schritt 6: Modell löschen
Wenn Sie dieses Beispielmodell nicht mehr verwenden, können Sie es dauerhaft löschen. Anschließend können Sie das Modell nicht mehr für Vorhersagen verwenden.
Code kopieren
Python
Java
Node.js
Weitere Informationen finden Sie in der AutoML Vision Node.js API-Referenzdokumentation.
Richten Sie zur Authentifizierung bei AutoML Vision Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Anfrage
Stellen Sie eine Anfrage mit dem Vorgangstyp delete_model
, um ein Modell zu löschen. Übergeben Sie die Modell-ID als Argument.
- Setzen Sie
project_id
auf PROJECT_ID. Setzen Sie die
model_id
auf die ID Ihres Modells.python3 delete_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel" {Java}
node delete_model.js {Node.js}
Antwort
Model deleted.