En este instructivo, se muestra cómo crear un modelo nuevo con tu propio conjunto de imágenes de entrenamiento, evaluar los resultados y predecir la clasificación de las imágenes de prueba con AutoML Vision.
También se usa un conjunto de datos con imágenes de cinco tipos diferentes de flores: girasoles, tulipanes, margaritas, rosas y dientes de león. Se explica el entrenamiento de un modelo personalizado, la evaluación del rendimiento del modelo y la clasificación de imágenes nuevas con el modelo personalizado.
Requisitos
Configura el entorno del proyecto
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de AutoML Vision.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de AutoML Vision.
- Instala la CLI de Google Cloud.
- Sigue las instrucciones para crear una cuenta de servicio y descargar un archivo de claves.
-
Establece la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta de acceso al archivo de claves de la cuenta de servicio que descargaste cuando creaste la cuenta de servicio. Por ejemplo:export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE
-
Agrega la cuenta de servicio nueva a la función de IAM de editor de AutoML con los siguientes comandos. Reemplaza PROJECT_ID con el nombre de tu proyecto de Google Cloud y reemplaza SERVICE_ACCOUNT_NAME con el nombre de tu nueva cuenta de servicio, por ejemplo,
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"
- Permite que las cuentas de servicio de AutoML Vision accedan a los recursos del proyecto de Google Cloud:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/storage.admin"
- Instala la biblioteca cliente.
-
Configura las variables de entorno
PROJECT_ID
yREGION_NAME
.
Reemplaza PROJECT_ID con el ID de tu proyecto de Google Cloud. En la actualidad, AutoML Vision requiere la ubicaciónus-central1
.export PROJECT_ID="PROJECT_ID" export REGION_NAME="us-central1"
-
Crea un bucket de Cloud Storage para almacenar los documentos que usarás para entrenar tu modelo personalizado.
El nombre del depósito debe tener el siguiente formato:$PROJECT_ID-vcm
. El siguiente comando crea un depósito de almacenamiento llamado$PROJECT_ID-vcm
en la regiónus-central1
.gsutil mb -p PROJECT_ID -c regional -l us-central1 gs://PROJECT_ID-vcm/
- Configura la variable BUCKET.
export BUCKET=PROJECT_ID-vcm
-
Copia el conjunto de datos de imágenes de flores público de
gs://cloud-samples-data/img/flower_photos/
en el depósito de Google Cloud Storage.
En tu sesión de Cloud Shell, ingresa lo siguiente:gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://BUCKET/img/
La copia del archivo tarda unos 20 minutos en completarse.
Este comando también copia el archivo
all_data.csv
, que enumera los nombres de archivo originales y sus etiquetas. -
El conjunto de datos de muestra contiene un archivo CSV con la ubicación y las etiquetas de cada imagen (consulta Prepara los datos de entrenamiento para obtener más detalles sobre el formato requerido). Actualiza el archivo CSV para que indique los archivos ubicados en tu bucket:
gsutil cat gs://BUCKET/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:BUCKET/img/flowers/:" > all_data.csv
Luego, copia el archivo CSV actualizado en el bucket:gsutil cp all_data.csv gs://BUCKET/csv/
Ubicaciones de los archivos de código fuente
Puedes descargar el código fuente desde la ubicación que se indica a continuación. Después de la descarga, puedes copiar el código fuente en la carpeta del proyecto de AutoML Vision.
Python
El instructivo consta de estos archivos de Python:
vision_classification_create_dataset.py
: Incluye la funcionalidad para crear conjuntos de datos.import_dataset.py
: Incluye la funcionalidad para importar conjuntos de datos.vision_classification_create_model.py
: Incluye la funcionalidad para crear modelos.list_model_evaluations.py
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.vision_classification_predict.py
: Incluye la funcionalidad relacionada con las predicciones.delete_model.py
: Incluye la funcionalidad para borrar modelos.
Java
El instructivo consta de estos archivos de Java:
VisionClassificationCreateDataset.java
: Incluye la funcionalidad para crear conjuntos de datos.ImportDataset.java
: Incluye la funcionalidad para importar conjuntos de datos.VisionClassificationCreateModel.java
: Incluye la funcionalidad para crear modelos.ListModelEvaluations.java
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.VisionClassificationPredict.java
: Incluye la funcionalidad relacionada con las predicciones.DeleteModel.java
: Incluye la funcionalidad para borrar modelos
Node.js
El instructivo consta de estos programas de Node.js:
vision_classification_create_dataset.js
: Incluye la funcionalidad para crear conjuntos de datos.import_dataset.js
: Incluye la funcionalidad para importar conjuntos de datos.vision_classification_create_model.js
: Incluye la funcionalidad para crear modelos.list_model_evaluations.js
: Incluye la funcionalidad para ver listas de las evaluaciones de modelos.vision_classification_predict.js
: Incluye la funcionalidad relacionada con las predicciones.delete_model.js
: Incluye la funcionalidad para borrar modelos.
Ejecuta la aplicación
Paso 1: Crea el conjunto de datos Flowers
El primer paso cuando se crea un modelo personalizado es crear un conjunto de datos vacío que, más adelante, tendrá los datos de entrenamiento para el modelo. Cuando creas un conjunto de datos, debes especificar el tipo de clasificación que deseas que realice el modelo personalizado:
- MULTICLASS asigna una sola etiqueta a cada imagen clasificada.
- MULTILABEL permite asignar varias etiquetas a una imagen.
En este instructivo, se crea un conjunto de datos llamado flowers
y se usa MULTICLASS.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Ejecuta la función create_dataset
para crear un conjunto de datos vacío. Debes modificar las siguientes líneas de código:
- Establece
project_id
para tu PROJECT_ID. - Establece el
display_name
para el conjunto de datos (flowers
). Cambia
MULTILABEL
a 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
Respuesta
La respuesta incluye los detalles del conjunto de datos recién creado, incluido el ID del conjunto de datos que utilizarás para hacer referencia al conjunto de datos en solicitudes futuras. Te recomendamos que configures una variable de entorno DATASET_ID
en el valor del ID del conjunto de datos mostrado.
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
Paso 2: Importa imágenes al conjunto de datos
El siguiente paso es propagar el conjunto de datos con imágenes de entrenamiento etiquetadas con las etiquetas de destino.
La interfaz de la función import_data
toma como entrada un archivo CSV que enumera las ubicaciones de todas las imágenes de entrenamiento y la etiqueta adecuada para cada una. Consulta Prepara los datos para obtener detalles sobre el formato requerido. Para este instructivo, usaremos las imágenes etiquetadas que copiaste en el bucket de Cloud Storage, que se enumeran en gs://$PROJECT_ID-vcm/csv/all_data.csv
.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Ejecuta la función import_data
para importar el contenido de entrenamiento. El primer fragmento de código que se cambiará es el ID del conjunto de datos del paso anterior y el segundo es el URI de all_data.csv
. Debes modificar las siguientes líneas de código:
- Establece el
project_id
en tu PROJECT_ID. - Establece el
dataset_id
para el conjunto de datos (a partir del resultado del paso anterior). Establece la
path
que corresponde al URI del (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}
Respuesta
Processing import... Dataset imported.
Paso 3: Crea (entrena) el modelo
Ahora que tienes un conjunto de datos con imágenes de entrenamiento etiquetadas, puedes entrenar un modelo nuevo.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Llama a la función create_model
para crear un modelo. El ID del conjunto de datos es de los pasos anteriores. Debes modificar las siguientes líneas de código:
- Establece el
project_id
en tu PROJECT_ID. - Establece el
dataset_id
para el conjunto de datos (a partir del resultado del paso anterior). Establece el
display_name
para tu modelo (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}
Respuesta
La función create_model
inicia una operación de entrenamiento y, luego, imprime el nombre de la operación. El entrenamiento se realiza de forma asíncrona y puede llevar un tiempo en completarse, por lo que puedes usar el ID de la operación para verificar el estado del entrenamiento. Cuando finaliza el entrenamiento, create_model
muestra el ID del modelo. Al igual que con el ID del conjunto de datos, puedes establecer una variable de entorno MODEL_ID
según el valor del ID del modelo que se muestra.
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
Paso 4: Evaluar el modelo
Después del entrenamiento, puedes evaluar la preparación del modelo mediante la revisión de su puntuación F1, precisión y recuperación.
La función display_evaluation
toma el ID del modelo como parámetro.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Realiza una solicitud para mostrar el rendimiento general de la evaluación del modelo mediante la ejecución de la siguiente solicitud. Debes modificar las siguientes líneas de código:
- Establece el
project_id
en tu PROJECT_ID. Establece
model_id
para el ID de tu modelo.python3 list_model_evaluations.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations" {Java}
node list_model_evaluations.js {Node.js}
Respuesta
Si la puntuación de precisión y recuperación es demasiado baja, puedes fortalecer el conjunto de datos de entrenamiento y volver a entrenar a tu modelo. Para obtener más información, consulta Evalúa modelos.
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%
Paso 5: Usa un modelo para hacer una predicción
Cuando el modelo personalizado cumpla con tus estándares de calidad, podrás usarlo para clasificar imágenes de flores nuevas.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Para la función predict
, debes modificar las siguientes líneas de código:
- Establece el
project_id
en tu PROJECT_ID. - Establece
model_id
en el ID del modelo. Establece la
file_path
para el archivo descargado ("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}
Respuesta
La función muestra la puntuación de clasificación que indica el grado de coincidencia de la imagen con cada categoría, por encima del umbral de confianza de 0.7.
Prediction results: Predicted class name: dandelion Predicted class score: 0.9702693223953247
Paso 6: Borra el modelo
Cuando hayas terminado de usar este modelo de muestra, puedes borrarlo de forma permanente. Ya no podrás usar el modelo para predicción.
Copia el código
Python
Java
Node.js
Si quieres obtener más información, consulta la documentación de referencia de la API de AutoML Vision Node.js.
Para autenticarte en AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Solicitud
Realiza una solicitud con el tipo de operación delete_model
para borrar un modelo que creaste. Debes modificar las siguientes líneas de código:
- Establece el
project_id
en tu PROJECT_ID. Establece
model_id
para el ID de tu modelo.python3 delete_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel" {Java}
node delete_model.js {Node.js}
Respuesta
Model deleted.