El blog de Machine Learning

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

 

computer vision

Este es el segundo artículo de una serie de tres artículos que explica cómo construir un clasificador de imágenes sin programar. Si no has leído la parte 1, por favor léela aquí antes de continuar.

Ahora que hemos decidido crear un clasificador de imágenes con dos clases, necesitaremos un dataset de imágenes limpio. En mi ejemplo, decidí construir un clasificador de imágenes que pudiera juzgar si es seguro para un bebé abrazar o no un objeto. Mi clasificador de imágenes se llamará "can_I_hug_it".

 

can i hug it

 

Elegí esta clasificación a propósito, ya que es algo muy subjetivo y difícil de explicar en palabras y reglas. ¿Qué hace que un objeto o una cosa sea segura para abrazar? la forma tiene mucho que ver con eso, pero también los materiales, el tamaño y algunas otras propiedades. ¿Es seguro abrazar a un perro? Depende. Si es un lindo cachorro, sí, ¿por qué no? Pero si estamos hablando de un rottweiler furioso, es de sentido común alejarse de él lo antes posible. ¿Es seguro abrazar a una araña? solo si es una araña de juguete ... entiendes la idea.

toy spider

Construiremos nuestro conjunto de datos con imágenes de internet. Utilizaremos imágenes de Google y también "Fatkun batch download image", Un plugin gratuito de Chrome que te ayuda a descargar imágenes en lote desde cualquier página. Comienza añadiendo el plugin "Fatkun batch download image" a tu navegador.

 

fatkun image download

 

Ahora ve a google images y escribe el nombre de algo que pueda abrazar, como por ejemplo "conejito" y haga clic en el plugin que acabas de instalar en la esquina superior derecha de tu navegador. Haz clic en "solo esta pestaña", de lo contrario obtendrás todas las imágenes de todas las pestañas de Chrome.

 

bunnies

Esto abrirá el complemento y seleccionará todas las imágenes que obtuviste con tu búsqueda en google.

Haz clic en las imágenes que deseas deseleccionar. Debes asegurarte de que tu conjunto de datos esté limpio, así que asegúrate de seleccionar solo las imágenes de los conejitos que puedas abrazar. Trate de evitar dibujos, imágenes borrosas, imágenes de cosas imaginarias o dibujos animados y falsos positivos como imágenes de conejitos aterradores. Recuerda que la fiabilidad de tu clasificador de imágenes dependerá de la fiabilidad de las imágenes de entrenamiento que usarás para entrenarlo.

 

bunnies selection

 

Antes de descargar las imágenes, haz clic en "Más opciones" para cambiar automáticamente el nombre de las imágenes descargadas, comenzando con el prefijo "bunny".

 

fatkun options

 

Asegúrate de que en la configuración de Chrome, la opción que pregunta dónde descargar cada imagen no esté activada, de lo contrario recibirás un pop up por cada imagen que estás descargando y será muy molesto.

 

chrome settings do not ask where to download

Por defecto, las imágenes se descargarán en tu carpeta "downloads".

Ahora que ha descargado un par de imágenes de conejitos, haz el mismo ejercicio para otras cosas que puedan abrazarse. Estas son las palabras de búsqueda que utilicé:

  1. Conejito
  2. Bebé
  3. Peluche
  4. Boa de plumas
  5. Perrito
  6. Gatito
  7. Cerdito
  8. Almohada
  9. Polluelo
  10. Suéter

Recuerda cambiar el prefijo de los archivos cada vez que hagas una nueva imagen de búsqueda de Google, de lo contrario, el plugin intentará reescribir los artículos con el mismo nombre que antes y obtendrás molestos popups alertándote de que ya hay un archivo con ese nombre.

 

puppy fatkun download

 

Repite el proceso hasta que tengas 1000 imágenes de cosas que puedas abrazar. Ahora copia todas estas imágenes en una carpeta en tu computadora llamada "hug".

Cuando termines, tu carpeta debería verse más o menos así.

 

hug dataset

Ahora repite el proceso para las cosas que no deberían ser abrazadas "not_hug". Estas son las palabras clave que utilicé en mi búsqueda en imágenes de Google:

  1. Hacha
  2. Cactus
  3. Erizo
  4. Payaso asesino
  5. Cuchillo
  6. Perro aterrador
  7. Sierra
  8. Araña

Como antes, asegúrate de obtener 1000 imágenes de cosas que no son seguras para abrazar y ponlas en una carpeta llamada "not_hug".

En este punto, deberías tener dos carpetas con 1000 imágenes cada una.

 

hug and not hug dataset

Repasa las imágenes rápidamente y asegúrate de que todas representen las dos etiquetas que tiene.

Ahora que tenemos un dataset adecuado, debemos cambiar el nombre de todos los archivos dentro de estas carpetas para poder manipularlos más adelante.

Ten en cuenta que si tienes MacOS, hay una pequeña aplicación gratuita que puedes usar y que hace todos los pasos siguientes. Se llama NameChanger y puedes descargarla aqui.

 

Si tienes una computadora con Windows, esto es lo que debes hacer:

Abra la carpeta "abrazo" y oprime CTRL + E para seleccionar todos los archivos. Haz clic en el primer archivo con el botón derecho del mouse y selecciona la opción "cambiar el nombre".

 

file name change batch windows

 

Renombrarlos a todos como "sample"

 

file name change batch windows

 

Esto cambiará los nombres de todos los archivos seleccionados.

Todos sus archivos se deben llamar ahora sample (1).jpg, sample (2).jpg, etc.

 

file name change batch windows

Ahora necesitamos eliminar los espacios de los nombres de los archivos. Tenemos que cambiar el nombre de "sample (12).jpg" a "sample (12).jpg". Es necesario hacer este paso, ya que el servicio de google que utilizaremos no acepta espacios en los nombres de los archivos o en los nombres de las etiquetas. Sé que prometí que no hay programación necesaria en este tutorial, pero a menos que quieras renombrar todos los archivos manualmente, necesitarás usar un pequeño script que preparé para ti.

 

Si tiene una computadora con Windows, ve a la carpeta "hug". Haz clic en el botón derecho de tu mouse y selecciona la opción "nuevo" y luego "documento de texto".

 

new text document

 

Abre el archivo en cualquier aplicación de edición de texto como el bloc de notas y copia estas líneas:

 

: renameNoSpace [/ R] [FolderPath]
@echo off
setlocal disableDelayedExpansion
if / i "% ~ 1" == "/ R" (
establecer "forOption =% ~ 1% 2"
establecer "inPath ="
) else (
establecer "forOption ="
if "% ~ 1" neq "" (set "inPath =% ~ 1 \") else establece "inPath ="
)
para% forOption% %% F in ("% inPath% * *") do (
if / i "% ~ f0" neq "%% ~ fF" (
establecer "carpeta = %% ~ dpF"
establecer "file = %% ~ nxF"
setlocal enableDelayedExpansion
echo ren "! folder !! archivo!" "! archivo: =!"
ren "! carpeta !! archivo!" "! archivo: =!"
endlocal
)
)

 

Guarda y cierra el archivo.

Haz clic derecho en tu archivo y cambia su nombre y extensión a "renameNoSpace.bat"

file extension change

 

Windows te preguntará si estás seguro de que deseas cambiar la extensión del archivo, haz clic en "sí".

Si el script que creaste está en la misma carpeta que las imágenes, simplemente puedes hacer doble clic en el y automáticamente cambiará el nombre de todos tus archivos borrando los espacios en los nombres.

En este punto, todos los nombres de tus archivos en la carpeta "hug" se deben llamar sample(1).jpg, sample(2).jpg, etc.

 

files rename no spaces

 

Ahora haz lo mismo con los archivos en la carpeta "not_hug", pero nombra los archivos "example", en lugar de "sample".

En este punto, tu dataset de imágenes debería verse así en tu computadora:

 

proper can i hug it dataset

 

Ahora que tienes un dataset adecuado de imágenes y están nombradas correctamente, deberás crear tu clasificador de imágenes con Google Cloud Vision Auto ML, lee la parte 3 de este artículo.

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