El reconocimiento de imágenes es otra importante aplicación de la IA. en este caso, la IA es capaz de identificar, analizar y comparar las matrices de bits que componen una imagen digital, con el objetivo de realizar alguna acción a partir de la información obtenida.
De esta forma la IA es capaz de identificar personas, lugares, objetos y cualquier otro elemento que se encuentre en una imagen. Se apoya también en el Machine Learning y el Deep Learning.
1. Creamos nuestro modelo de reconocimiento de imágenes
Para poder interpretar cualquier imagen, esta red neuronal debe ser entrenada a partir de otras imágenes, las cuales deben mostrar claramente el tipo de información que queremos encontrar. Durante este entrenamiento la inteligencia artificial va aprendiendo y almacenando grandes volúmenes de datos que le ayudarán a analizar nuevas imágenes.
Con LearningML la creación de modelos para reconocer imágenes es igual a la de reconocimiento de texto, con las mismas fases: entrenar, aprender y probar. La única diferencia es que los ejemplos que añadimos son imágenes en lugar de textos.
En este videotutorial Juan David Rodríguez (creador de la plataforma LearningM) te enseñará a construir modelos de reconocimiento de imágenes y aplicaciones con Scratch que usen esos modelos.
Recuerda que si lo necesitas puedes activar los subtítulos del video.
Actividad
Planteamiento
¿Se puede utilizar el reconocimiento de imágenes para clasificar objetos por su tamaño?
Supongamos que tenemos una cinta en un aeropuerto donde pasan todo tipo de objetos y hay que clasificarlos por tamaño. Puede haber un bolso grande y otro exactamente igual pero pequeño, por ejemplo. ¿Podrá la IA de LearningML clasificarlos por tamaño?
1. Entrenar: Selección de objetos
Para el entrenamiento lo ideal es:
Utilizar una superficie lisa con fondo uniforme como una pared o tablero blanco para que la IA se centre en el objeto en cuestión.
La distancia a la cámara sea la misma siempre
Se utilice un objeto como nivel de referencia. En las imágenes siguientes hemos utilizado una barra de pegamento.
Sería adecuado utilizar un mínimo de 10 objetos de cada categoría para poder dejar alguno de ellos para la validación.
En las imágenes siguientes hay algunos ejemplos.
2. Aprender
Ahora hay que seleccionar los parámetros adecuados en el modo avanzado. Hay que dejar al menos un 20% de ejemplos para validación. Además de la matriz de confusión de la que ya hemos hablado, tenemos la curvas de evolución del aprendizaje. Esta curva se genera cuando el algoritmo que se ha usado es “Red Neuronal”.
Cuando el “porcentaje de ejemplos para validación” es cero, la grafica sólo muestra dos curvas:
La curva azul representa la evolución de la precisión (accuracy) del modelo a medida que se va generando, es decir, en cada una de las épocas de entrenamiento.
La curva naranja representa la evolución de la función de pérdida (loss). Cuanto más próxima a 1 sea la precisión y más próxima a cero sea la función de pérdida, mejor es la calidad del modelo.
Si en la generación del modelo hemos definido un valor distinto de cero para el parámetro “porcentaje de ejemplos para validación”, aparecerán en esta gráfica dos curvas más, que se corresponden con la evolución de la precisión y de la función de pérdida para los datos reservados para la evaluación del modelo.
Estas dos curvas son más útiles para determinar la calidad del modelo. En general:
Si val_acc y val_loss tienden a coincidir con las de acc y loss respectivamente, será un buen modelo.
Si val_acc se aleja de 1 y val_loss se aleja de 0 el modelo no ha funcionado correctamente por lo que hay que cambiar los parámetros o introducir más o mejores imágenes para el entrenamiento.
Modelo maloModelo bueno
3. Probar y aplicación con Scratch
Tras probarlo con algunos objetos, es el momento de crear una aplicación con Scratch que mediante un botón tome una imagen y nos la clasifique en una de las tres categorías:
Debe quedar algo parecido a esto:
El sesgo al seleccionar los datos
La toma de datos está sujeta al sesgo causado por el programador, o sesgo causado por los datos. Los datos de entrenamiento que se basan en datos etiquetados con sesgo darán lugar a prejuicios y omisiones en un modelo predictivo, aunque el algoritmo de aprendizaje automático sea legítimo.
Los datos etiquetados que se utilizan para entrenar un algoritmo de aprendizaje automático específico deben ser una muestra estadísticamente representativa para no sesgar los resultados.
Debido a que los datos etiquetados disponibles para entrenar sistemas de reconocimiento facial no han sido representativos de una población, los grupos peor representados en los datos etiquetados a menudo se clasifican erróneamente posteriormente. En los EE.UU. se denunciaron muchos casos de hombres de raza negra arrestados después de que el reconocimiento facial los identificara falsamente como sospechosos en casos penales. Es decir, es más probable que el software de reconocimiento facial cometa errores al intentar reconocer a mujeres y a personas con tonos de piel más oscuros, y que acierte con los hombres y aquellos con tonos de piel más claros.
El sesgo es un peso desproporcionado a favor o en contra de una cosa, persona o grupo en comparación con otra, generalmente de una manera que se considera injusta.