Ce tutoriel explique comment créer un modèle avec votre propre ensemble d'images d'entraînement, évaluer les résultats et prédire la classification des images de test à l'aide d'AutoML Vision.
Pour les besoins de ce tutoriel, nous utiliserons un ensemble de données contenant des images de cinq espèces de fleurs : tournesols, tulipes, marguerites, roses et pissenlits. Nous traiterons de l'entraînement d'un modèle personnalisé, de l'évaluation des performances du modèle et de la classification de nouvelles images à l'aide du modèle personnalisé.
Prérequis
Configurer l'environnement de projet
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API AutoML Vision.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API AutoML Vision.
- Installez Google Cloud CLI.
- Suivez les instructions pour créer un compte de service et télécharger un fichier de clé.
-
Indiquez le chemin d'accès au fichier de clé du compte de service, que vous avez téléchargé lors de la création de ce dernier, comme variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
. Exemple :export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE
-
Ajoutez votre nouveau compte de service au rôle IAM de l'éditeur AutoML à l'aide des commandes ci-dessous. Remplacez PROJECT_ID par le nom de votre projet Google Cloud et SERVICE_ACCOUNT_NAME par le nom de votre nouveau compte de service, par exemple
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"
- Autorisez les comptes du service AutoML Vision à accéder aux ressources de votre projet Google Cloud :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/storage.admin"
- Installez la bibliothèque cliente.
-
Définissez les variables d'environnement
PROJECT_ID
etREGION_NAME
.
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. AutoML Vision nécessite actuellement l'emplacementus-central1
.export PROJECT_ID="PROJECT_ID" export REGION_NAME="us-central1"
-
Créez un bucket Cloud Storage pour stocker les documents qui serviront à entraîner votre modèle personnalisé.
Le nom du bucket doit respecter le format suivant :$PROJECT_ID-vcm
. La commande ci-dessous permet de créer un bucket de stockage dans la régionus-central1
, nommé$PROJECT_ID-vcm
.gsutil mb -p PROJECT_ID -c regional -l us-central1 gs://PROJECT_ID-vcm/
- Définissez la variable BUCKET.
export BUCKET=PROJECT_ID-vcm
-
Copiez l'ensemble de données d'images de fleurs accessible au public à partir de
gs://cloud-samples-data/img/flower_photos/
dans votre bucket Google Cloud Storage.
Dans votre session Cloud Shell, entrez la commande :gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://BUCKET/img/
La copie des fichiers prend environ 20 minutes.
Cette commande copie également le fichier
all_data.csv
, qui répertorie les noms de fichier d'origine et leurs étiquettes. -
L'exemple d'ensemble de données contient un fichier CSV avec tous les emplacements d'images et les libellés pour chaque image (consultez la section Préparer les données d'entraînement pour en savoir plus sur le format requis). Mettez à jour le fichier CSV de sorte qu'il pointe vers les fichiers de votre bucket :
gsutil cat gs://BUCKET/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:BUCKET/img/flowers/:" > all_data.csv
Copiez ensuite le fichier CSV mis à jour dans le bucket :gsutil cp all_data.csv gs://BUCKET/csv/
Emplacements des fichiers de code source
Vous pouvez télécharger le code source depuis l'emplacement indiqué ci-dessous. Une fois le téléchargement terminé, vous pouvez copier le code source dans le dossier de votre projet AutoML Vision.
Python
Le tutoriel contient ces fichiers Python :
vision_classification_create_dataset.py
: inclut une fonctionnalité permettant de créer un ensemble de donnéesimport_dataset.py
: inclut une fonctionnalité permettant d'importer un ensemble de donnéesvision_classification_create_model.py
: inclut une fonctionnalité permettant de créer un modèlelist_model_evaluations.py
: inclut une fonctionnalité permettant de répertorier les évaluations de modèlesvision_classification_predict.py
: inclut une fonctionnalité liée à la prédictiondelete_model.py
: inclut une fonctionnalité permettant de supprimer un modèle
Java
Le tutoriel contient ces fichiers Java :
VisionClassificationCreateDataset.java
: inclut une fonctionnalité permettant de créer un ensemble de donnéesImportDataset.java
: inclut une fonctionnalité permettant d'importer un ensemble de donnéesVisionClassificationCreateModel.java
: inclut une fonctionnalité permettant de créer un modèleListModelEvaluations.java
: inclut une fonctionnalité permettant de répertorier les évaluations de modèlesVisionClassificationPredict.java
: inclut une fonctionnalité liée à la prédictionDeleteModel.java
: inclut une fonctionnalité permettant de supprimer un modèle
Node.js
Le tutoriel comprend les programmes Node.js suivants :
vision_classification_create_dataset.js
: inclut une fonctionnalité permettant de créer un ensemble de donnéesimport_dataset.js
: inclut une fonctionnalité permettant d'importer un ensemble de donnéesvision_classification_create_model.js
: inclut une fonctionnalité permettant de créer un modèlelist_model_evaluations.js
: inclut une fonctionnalité permettant de répertorier les évaluations de modèlesvision_classification_predict.js
: inclut une fonctionnalité liée à la prédictiondelete_model.js
: inclut une fonctionnalité permettant de supprimer un modèle
Exécuter l'application
Étape 1 : Créer l'ensemble de données Flowers
La première étape de l'élaboration d'un modèle personnalisé consiste à créer un ensemble de données vide, qui contiendra à terme les données d'entraînement du modèle. Lorsque vous créez un ensemble de données, vous spécifiez le type de classification que le modèle personnalisé doit effectuer. Deux options sont possibles :
- MULTICLASS attribue une seule étiquette à chaque image classifiée.
- MULTILABEL permet d'attribuer plusieurs étiquettes à une image.
Ce tutoriel crée un ensemble de données nommé flowers
et utilise la classification MULTICLASS.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Exécutez la fonction create_dataset
pour créer un ensemble de données vide. Vous devez modifier les lignes de code suivantes :
- Définissez le champ
project_id
sur votre valeur PROJECT_ID. - Définissez le champ
display_name
pour l'ensemble de données (flowers
). Remplacez
MULTILABEL
par 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
Réponse
La réponse inclut les détails de l'ensemble de données créé, y compris son ID qui permet de le référencer dans des requêtes ultérieures. Nous vous recommandons d'indiquer la valeur de l'ID d'ensemble de donnée renvoyé sur la ligne d'une variable d'environnement DATASET_ID
.
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
Étape 2 : Importer des images dans l'ensemble de données
L'étape suivante consiste à insérer dans l'ensemble de données des images d'entraînement libellées à l'aide de libellés cibles.
L'interface de la fonction import_data
utilise en entrée un fichier CSV qui répertorie les emplacements de toutes les images d'entraînement ainsi que le libellé approprié pour chacune de ces images. (Consultez la page Préparer les données d'entraînement pour en savoir plus sur le format.) Pour les besoins de ce tutoriel, nous utiliserons les images libellées que vous avez copiées dans votre bucket Cloud Storage et répertoriées dans le fichier gs://$PROJECT_ID-vcm/csv/all_data.csv
.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Exécutez la fonction import_data
pour importer les contenus d'entraînement. Le premier élément de code à modifier est l'ID de l'ensemble de données de l'étape précédente, le second est l'URI du fichier all_data.csv
. Vous devez modifier les lignes de code suivantes :
- Définissez
project_id
sur votre PROJECT_ID. - Définissez le champ
dataset_id
pour l'ensemble de données (à partir de la sortie de l'étape précédente). Définissez le champ
path
qui correspond à l'URI du fichier (gs://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}
Réponse
Processing import... Dataset imported.
Étape 3 : Créer (entraîner) le modèle
Maintenant que vous disposez d'un ensemble de données d'images d'entraînement libellées, vous pouvez entraîner un nouveau modèle.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Appelez la fonction create_model
pour créer un modèle. L'ID de l'ensemble de données provient des étapes précédentes. Vous devez modifier les lignes de code suivantes :
- Définissez
project_id
sur votre PROJECT_ID. - Définissez le champ
dataset_id
pour l'ensemble de données (à partir de la sortie de l'étape précédente). Définissez la valeur
display_name
pour votre modèle (flowers_model
).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}
Réponse
La fonction create_model
lance une opération d'entraînement et imprime le nom de l'opération. L'entraînement se déroule de manière asynchrone et peut prendre un certain temps. Vous pouvez donc consulter l'état de l'entraînement à l'aide de l'ID d'opération. Une fois l'entraînement terminé, create_model
renvoie l'ID du modèle. Comme pour l'ID de l'ensemble de données, vous pouvez définir une variable d'environnement MODEL_ID
sur la valeur renvoyée pour l'ID de modèle.
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
Étape 4 : Évaluer le modèle
Après avoir entraîné le modèle, vous pouvez évaluer son état de préparation en examinant sa précision, son rappel et son score F1.
La fonction display_evaluation
utilise l'ID du modèle comme paramètre.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Pour afficher les performances d'évaluation globales du modèle, exécutez la requête suivante. Vous devez modifier les lignes de code suivantes :
- Définissez
project_id
sur votre PROJECT_ID. Définissez le champ
model_id
sur l'ID de votre modèle.python3 list_model_evaluations.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations" {Java}
node list_model_evaluations.js {Node.js}
Réponse
Si les scores de précision et de rappel sont trop faibles, vous pouvez renforcer l'ensemble de données d'entraînement et ré-entraîner le modèle. Pour plus d'informations, consultez la page Évaluer les modèles.
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%
Étape 5 : Réaliser une prédiction à l'aide d'un modèle
Lorsque votre modèle personnalisé répond à vos normes de qualité, vous pouvez l'utiliser pour classer les nouvelles images de fleurs.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Pour la fonction predict
, vous devez modifier les lignes de code suivantes :
- Définissez
project_id
sur votre PROJECT_ID. - Définissez le champ
model_id
sur l'ID de votre modèle. Définissez le champ
file_path
sur le fichier téléchargé ("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}
Réponse
La fonction renvoie le score de classification qui indique le degré de correspondance de l'image à chaque catégorie, à condition que ce score dépasse le seuil de confiance déclaré de 0,7.
Prediction results: Predicted class name: dandelion Predicted class score: 0.9702693223953247
Étape 6 : Supprimer le modèle
Lorsque vous avez fini d'utiliser cet exemple de modèle, vous pouvez le supprimer définitivement. Vous ne pourrez plus vous servir du modèle pour la prédiction.
Copier le code
Python
Java
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API AutoML Vision en langage Node.js.
Pour vous authentifier auprès d'AutoML Vision, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Requête
Effectuez une requête avec le type d'opération delete_model
pour supprimer un modèle que vous avez créé. Vous devez modifier les lignes de code suivantes :
- Définissez
project_id
sur votre PROJECT_ID. Définissez le champ
model_id
sur l'ID de votre modèle.python3 delete_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel" {Java}
node delete_model.js {Node.js}
Réponse
Model deleted.