El blog de Machine Learning

Cómo hacer un clasificador de imágenes sin programar. Parte 3

 

introducing cloud automl vision

 

Este es el tercer artículo de una serie de tres artículos que explica cómo construir un clasificador de imágenes sin programar. Haz clic aquí para leer la parte 1 y haz clic aquí para leer la parte 2.

 

Ahora que tenemos un dataset limpio de imágenes, podemos entrenar nuestro clasificador de imágenes. Para esto, utilizaremos un increíble nuevo servicio de Google Cloud, llamado AutoML Vision. Ten en cuenta que para el momento en que se escribe este artículo, este servicio está en versión Beta. Esto significa que el producto puede cambiar sin previo aviso y debe usarse para pruebas y no para aplicaciones en producción.

 

 

Google Cloud AutoML Vision es una plataforma de aprendizaje automático automatizada y completamente administrada que se lanzó recientemente. Hasta donde sabemos, actualmente es el único servicio de este tipo y en el Machine Learning Lab estábamos ansiosos por probarlo desde que se anunció por primera vez a principios de este año.

 

excited

 

AutoML Vision permite entrenar un modelo de machine learning para que pueda clasificar imágenes. Es muy simple de usar y no requiere absolutamente ningún conocimiento de programación. Seguimos los tutoriales oficiales de Google, pero pensamos que eran un poco confusos para los no desarrolladores, así que decidimos escribir el nuestro.

 

Tutorial de Google Cloud AutoMl Vision

Lo primero que necesitarás es crear una cuenta de Google cloud.

Haz clic aquí e inicia sesión con tu cuenta de Gmail (si tienes una) o crea una cuenta nueva. Google ofrece $ 300 en crédito para que puedas jugar con sus productos y APIs. Puedes activar este crédito si lo deseas.

 

free google cloud trial

 

Deberás aceptar los términos y condiciones

 

free

 

Y deberás completar tu información de contacto y proporcionar una tarjeta de crédito válida para continuar. Tu tarjeta de crédito solo se cobrará si gastas más de $ 300 de crédito. El resto de este tutorial supone que estás creando una cuenta como individuo. Si creas una cuenta como empresa, algunas características y opciones probablemente sean diferentes

 

free google cloud trial

 

Ten en cuenta que probablemente un representante de ventas de Google en Irlanda te contactará (si te encuentra en Europa). Su equipo es fantástico y pueden responder todas tus preguntas sobre Google cloud. Diles que Camilo Rodriguez del Machine Learning Lab dijo ¡hola!

Si todo salió bien y tu tarjeta de crédito fue aceptada, deberías ver una pantalla de bienvenida y el panel de la consola de Google Cloud.

 

google cloud console dashboard

 

Ahora, antes de comenzar, necesitas crear un nuevo proyecto.haz clic aquí

Crea un nuevo proyecto.

 

google cloud create new project

 

Dale un nombre. Solo puedes usar letras y números. Decidí nombrar mi proyecto "can-i-hug-it", ya que es representativo de lo que quiero lograr.

 

google cloud name new project

 

Tu nuevo proyecto ahora debería estar visible en el tablero del administrador de recursos. Si no es así, espera unos momentos y actualiza tu navegador.

 

google cloud console ressource manager

 

Ahora necesitas habilitar la facturación para tu proyecto. Normalmente, este paso se realiza automáticamente si solo tienes una cuenta de facturación y eres el administrador de facturación, pero solo verifica nuevamente para asegurarte.

Recuerda que solo se te cobrará si superas el crédito gratuito de $ 300.

Para esto, haz clic en el menú derecho del proyecto. Haz clic en "facturación".

 

google cloud console billing

 

Tu proyecto debería aparecer aquí, si no, ve a esta página de Google para leer las instrucciones sobre cómo habilitar la facturación para tus proyectos.

Recuerda que, en cualquier momento, puedes deshabilitar la facturación de tu proyecto, pero es probable que lo rompas y no `puedas volver a utilizar las funcionalidades hasta que vuelvas a habilitar la facturación.

Si todo está bien, haz clic en el botón grande de la parte superior izquierda "Google Cloud Platform" para volver al panel de inicio.

 

google cloud dashboard button

 

Ahora, deberás asegurarse de que se activaron un par de APIs necesarias para construir tu clasificador de imágenes.

Normalmente, estas API ya están activadas cuando creaste el proyecto, pero para asegurarte de que lo están, haz clic en "Ir a la descripción general de APIs".

 

google cloud dashboard api overview button

 

Es posible que recibas un mensaje que dice que no tienes permiso para ver los servicios habilitados en este proyecto, aunque seas el administrador.

 

google cloud console bug

 

Esto es definitivamente un error de Google Cloud en Internet Explorer, pero no le prestes mucha atención. Cambié mi navegador a Chrome y de repente funcionó.

 

google cloud console bug

 

Normalmente, las tres API que necesitas ya están habilitadas como en la captura de pantalla anterior. Pero si este no es el caso, puedes habilitarlas haciendo clic en el botón "habilitar API y servicios".

 

google cloud enable apis and services

 

Deberías ver una biblioteca de APIs. Escribe los nombres de estas APIs una por una.

La biblioteca completará automáticamente los nombres.

 

  • Google Cloud Storage
  • Google AutoML
  • Google Cloud storage json

 

google cloud api library

 

Asegúrate de que las tres APIs mencionadas anteriormente estén activadas o actívalas ahora.

 

google cloud console api enabled

 

Ahora que estás listo, finalmente puedes comenzar a construir tu clasificador de imágenes.

Pero primero, deberás subir tus imágenes a google cloud. Vuelve al panel y haz clic en "storage" y luego en "browser"

 

google cloud storage browse button

 

Deberás crear un "bucket". Un bucket es simplemente una carpeta en Google Cloud donde puedes almacenar archivos y documentos. Un poco como Dropbox. Hazclic en "crear bucket"

 

google cloud create bucket

 

Dale un nombre (debe ser único), selecciona tu región y deja intactas todas las otras opciones. Haz clic en "crear"

 

google cloud bucket options

 

Ahora que tienes tu bucket, puedes subir las imágenes que descargaste en tu computadora en el artículo anterior de este tutorial. Te recomiendo que crees dos carpetas. Uno para el conjunto de datos "hug" y otro para el conjunto de datos "not_hug".

 

google cloud bucket folder create

 

Ahora simplemente ve a la carpeta "hug" y carga tus imágenes de "hug" haciendo clic en "cargar archivos".

 

google cloud bucket upload images

 

Puedes subir varias imágenes al mismo tiempo, haciendo clic en CTRL + E en tu explorador y luego haciendo clic en "abrir".

 

google cloud bucket batch image upload

 

Si tienes 1000 imágenes en tu dataset "hug", dependiendo de tu conexión a Internet, este proceso puede demorar aproximadamente de 5 a 20 minutos. Verás una imagen en la parte inferior de tu navegador que muestra el proceso de la operación.

 

google cloud bucket image upload process

 

Si por alguna razón, la operación se interrumpe, no te preocupes. Regresa a la carpeta del bucket y verifica que el nombre del archivo que fue importado de último, afortunadamente, todos tienen números del 1 al 1000. Continúa desde ese punto.

Cuando hayas terminado de subir las imágenes a la carpeta "hug", repite el mismo proceso nuevamente en la carpeta "not_hug" con las imágenes "not_hug".

 

google cloud bucket batch image upload

 

Y ve a tomar una taza de café mientras esperas que las imágenes se suban al cloud.

 

workstation with coffee

 

¡¡Buen trabajo!! Tu dataset ahora está en la nube.

Ahora que tus imágenes están en Google Cloud, puedes entrenar tu modelo. Para esto, deberás acceder a AutoML. Google tiene una buena interfaz de usuario a la que puedes acceder haciendo clic aquí.

Tendrás que proporcionar AutoML algunos permisos, antes de usarlo.

 

google automl access

 

Selecciona tu proyecto y haz clic en "continuar".

 

automl tutorial

 

Es probable que se te vuelva a solicitar que habilites la facturación y actives las APIs. Simplemente haz clic en el botón de facturación. Abrirá una nueva pestaña en tu navegador que luego podrás cerrar.

Si haces clic en el segundo botón, podrás continuar.

 

automl setup

 

Crea un dataset, asígnale un nombre y marca la opción que dice que importarás las imágenes más adelante.

 

automl create daset

 

Esta interfaz de usuario de Google todavía está en Beta y tiene algunas fallas. Por ejemplo, creó automáticamente un segundo "bucket" de almacenamiento en el cloud de google, diferente al que usamos antes y vinculó el proyecto clasificador a ese nuevo bucket. No te preocupes, transferiremos las imágenes de un bucket a otro y te sentirás como un experto ingeniero devops :)

Abre una nueva pestaña y ve al panel de control en el menú de almacenamiento, haz clic en el botón "transferir".

 

google cloud storage transfer button

Ahora haz clic en "crear transferencia"

 

google cloud storage transfer

 

Ahora debes especificar que deseas mover los archivos del bucket anterior al bucket recién creado. Entonces debes seleccionar el origen y el destino.

También asegúrate de eliminar los datos del origen una vez que se transfieran a su destino (para evitar duplicados) y ejecuta la tarea ahora.

google cloud bucket to bucket transfer

 

En mi caso, la operación duró menos de 45 segundos. Eso es bastante impresionante, ya que Google estaba moviendo 2000 archivos de un datacenter en Europa a un datacenter en los Estados Unidos. ¡Muy rápido si me preguntas!

 

google cloud bucket transfer complete

 

Si quiere asegurarte de que la operación fue exitosa, simplemente ve y explore el nuevo bucket. Verás las dos carpetas con las imágenes allí.

 

google cloud bucket browsing

 

De acuerdo, tus imágenes están en el buen bucket, pero el modelo aún no sabe que están allí. Ahora necesitarás crear un archivo .csv donde especificarás la ubicación de cada imagen, junto con la etiqueta que tiene.

Abre Microsoft Excel o incluso mejor, Google sheets y crea un documento nuevo.

 

google sheets blank document

 

Deja ese documento abierto por el momento y ve a la carpeta en tu computadora donde tienes las imágenes de "hug".

Asegúrate de ver los archivos como una lista y no sus miniaturas.

Ahora selecciona todos los archivos con CTRL + E, presione SHIFT y haz clic en el botón derecho del mouse. Deberías ver una opción "copiar como ruta de acceso" como a continuación.

 

windows copy as path files

 

Regresa a tu archivo de Excel y pega los nombres de tus archivos.

 

create csv file automl vision

 

Deberías tener 1000 filas en tu archivo y si haces lo mismo con los archivos "not_hug" terminarás con 2000 filas en tu archivo Excel.

Ahora debes reemplazar el nombre de las rutas de las imágenes en tu computadora con la ruta desde el bucket en el cloud.

La ruta en el cloud comienza con "gs: //" y luego tiene el nombre del bucket y luego el nombre de la carpeta separados por "/"

 

google cloud bucket path

 

en mi caso específico, el camino donde están las imágenes de "hug" es así:

"gs://can-i-hug-it-215408-vcm/hug/"

 

Entonces, en el archivo Excel, escribe CTRL + F y luego "más opciones".

Busca y reemplaza todas las rutas locales de tu computadora con las rutas de bucket en la nube.

 

find and replace fonction in excel

 

El objetivo es reemplazar todas las filas de esta manera:

C:\Users\Camilo\Documents\MLAB\programas\can_i_hug_it\dataset\hug\sample(14).jpg

en algo como esto:

gs://can-i-hug-it-215408-vcm/abrazo/muestra(14).jpg

que representa la ubicación del archivo en google cloud.

Por ahora, tu archivo de Excel debería verse así:

 

renamed files bucket

 

Ahora, escribe el nombre de las etiquetas en la segunda columna y cópialo en todas las filas. En mi ejemplo, la etiqueta de todas estas imágenes es "hug"

 

image path with labels

 

Ahora, en el mismo archivo justo después de la última línea, repite el mismo proceso con las imágenes "not_hug". Recuerda que están en una ruta diferente, tanto en tu computadora como en el bucket de Google. Además, asígnales a todos los archivos la etiqueta "not_hug".

Por ahora, si hiciste todo correctamente, tu archivo Excel debería verse así y deberías tener 2000 filas en tu archivo:

 

all image paths with labels

 

Ahora necesitas exportar tu archivo de Excel como un archivo .csv. Haz clic en "archivo" y luego "exportar a csv".

 

excel export to csv

 

Una vez que hayas creado el archivo, ve a la carpeta de descargas en tu computadora y cambia el nombre del archivo a "labels.csv".

 

file rename

 

Ahora ve a tu bucket e importa el archivo que acabas de crear, ya deberías saber cómo subir archivos al bucket.

Una vez que hagas eso, el archivo debería estar visible en tu bucket.

 

csv file on bucket

 

Bien, ahora que tiene tus imágenes y el archivo con las rutas de cada imagen, junto con las etiquetas, regresa a la interfaz de usuario de AutoML Vision y haz clic en "agregar imágenes" y "seleccionar el archivo csv en el cloud storage"

 

add images autoML

 

Selecciona la ruta en la que guardaste tu archivo .csv y haz clic en "Aceptar".

Esto importará las imágenes en el proyecto AutoML.

 

csv path on bucket

 

Esta operación probablemente demorará unos minutos, ya que google está escaneando tu archivo .csv, importando cada imagen que tiene en tu bucket y asignándole la etiqueta que decidiste darle.

Aprovecha la oportunidad para ir y tomarte otro café :)

Una vez completado, deberías verse algo como esto ...

imported complete automl

Como puedes ver, no todas mis imágenes fueron importadas, faltan algunas.

Esto no es importante, como expliqué antes, este servicio todavía está en Beta.

 

Ok, ahora que tienes todas las imágenes con las etiquetas correctas importadas en AutoML, ahora necesitas entrenar el modelo. Normalmente, este es el paso más difícil en el proceso y los profesionales de machine learning pueden pasar semanas o incluso meses haciendo esta parte. Pero gracias a Google Cloud AutoML, ahora puedes entrenar tu modelo simplemente haciendo clic en el botón "entrenar"

 

train model button autoML

 

En este punto, tienes la opción de asignar un presupuesto de entrenamiento a tu modelo.

Cuanto más tiempo dediques a entrenar a tu modelo, más preciso será.

Para esta cantidad de imágenes, sin embargo, 10 minutos deberían ser más que suficientes. Además, la primera hora de entrenamiento es de hecho gratis :)

 

train model automl vision

 

Haz clic en iniciar entrenamiento.

Google te dirá que está entrenando tu modelo y que puedes cerrar la ventana si lo deseas.

¡Dice que te enviará un correo electrónico tan pronto como se complete el entrenamiento!

 

automl vision training in progress

 

Una vez que se complete el entrenamiento, puedes regresar a tu modelo y ver los resultados del entrenamiento en la pestaña "evaluar". En mi caso, los resultados son bastante impresionantes !!

No voy a entrar en detalles explicando estos resultados, lo dejaré para otro artículo, pero mi modelo es preciso hasta el 98,5%, esto es realmente increíble ...

 

model results auto ml vision

Ahora a la parte buena. ¡Debes probar tu modelo!

Encuentra una imagen en Internet de algo que puedas abrazar y algo que no debas abrazar. Obviamente, usa imágenes que NO HAS USADO en tu dataset de entrenamiento.

Puedes probar tu modelo "prediciendo" qué etiqueta le dará tu modelo a la nueva imagen.

 

automl vision predict hug

Ahora pruebalo con algo que no puedes abrazar.

automl vision predict not hug

 

Funcionó, ¡bien hecho!

Creaste un programa funcional que utiliza inteligencia artificial para analizar imágenes y decirte si deberían abrazarse o no. ¡Y lo mejor de todo es que hiciste todo sin programar!

 

drop mike

 

Ahora puedes vender esta tecnología a los fabricantes de cámaras para bebés de todo el mundo, convertirte en millonario y luego invitarme a tu isla privada :)

 

cash

 

El machine learning es un campo increíble en el que se progresa mucho todos los días. Si te interesa comprender cómo funciona el machine learning y qué está haciendo google en detalle, por favor contáctame o simplemente déjame un comentario a continuación.

 

Muchas gracias por leer todo este tutorial, espero que lo hayas disfrutado tanto como yo.

 

 

Inteligencia Artificial
Aprendizaje profundo
Redes neuronales
Aprendizaje supervisado
Aprendizaje automático