Descripción de la inteligencia artificial y Custom Vision
Ahora que ya tenemos el proyecto listo, conviene que analicemos en términos generales lo que vamos a hacer. La inteligencia artificial (IA) es justamente eso: artificial. La IA es una inteligencia simulada que usa una inmensa cantidad de datos para funcionar.
Si nos fijamos en concreto en la detección de objetos de la IA de Custom Vision, el proceso se puede dividir en dos pasos:
- Indicar a la IA en qué parte de una imagen hay un objeto
- Proporcionar a la IA una imagen con el objeto en ella para que nos indique dónde está ese objeto
No parece complicado, pero ¿cómo sabe la IA cómo hacer esto?
Reconocimiento de imágenes: Color
Detallar el modo en que la IA se crea está fuera del ámbito de este módulo, pero sí que podemos empezar a entender cómo funciona. Los equipos se basan en lo que se puede convertir en datos, más concretamente, en números. Así, podemos pensar en un equipo que, al mostrarle una imagen, sea capaz de recorrer cada píxel e indicar qué color hay en cada ubicación. Este equipo no sería "inteligente", pero sí podría indicarnos el color de cada píxel a medida que los recorre.
Ahora, imaginemos que el equipo es un poco más inteligente y que es capaz de identificar el color primario que se muestra en una imagen. Ya podemos empezar a enseñar (entrenar en terminología de IA) al equipo a identificar imágenes. Por ejemplo, si mostráramos esta imagen de Bungee al equipo:
El equipo probablemente entendería que las imágenes que son eminentemente blancas y amarillas se corresponden con imágenes de Bungee. Pero, ¿y si mostráramos al equipo esta imagen de Chang'e?
Esa imagen también tiene una gran cantidad de blanco y amarillo, por lo que el equipo probablemente crea que también es una imagen de Bungee.
¿Y si mostramos al equipo esta imagen de Bungee con un cielo nocturno?
Hay blanco, pero ni una traza de amarillo, así que probablemente el equipo crea que no es una imagen de Bungee.
Reconocimiento de imágenes: Forma
Para tener en consideración imágenes de objetos distintos con colores similares, o imágenes del mismo objeto con diferentes colores, hemos desarrollado algoritmos de inteligencia artificial para empezar a reconocer líneas y formas. Podemos empezar a imaginar cómo se hizo esto en los albores del desarrollo de la IA. Una línea o forma se puede describir como un cambio de color.
En lugar de controlar únicamente los colores incluidos en una imagen, el equipo empezaría a tener en cuenta la posición, esto es, dónde se encuentran esos colores. Si los mismos colores están uno al lado del otro, lo más probable es que estén creando una línea o una forma.
Este tipo de análisis puede ser útil si, por ejemplo, empezamos a identificar imágenes de la Luna. Podemos afirmar que la Luna está en una imagen si hay un círculo blanco, normalmente con un fondo azul o negro, como esta:
Si mostráramos al equipo esta imagen:
Probablemente el equipo seguiría identificando la Luna, ya que hay un círculo blanco inconfundible sobre un fondo azul o negro.
En cambio, seguramente el equipo no sea capaz de identificar esto como una imagen de la Luna:
Esto se debe a que no aparece como un círculo blanco completo.
Reconocimiento de imágenes: IA avanzada
Como podemos ver, el avance de la IA, específicamente en torno al reconocimiento de imágenes, empezó siendo sencilla y fue haciéndose más compleja a medida que se empezó a invertir en distintas de formas de ayudar a los equipos a desentrañar lo que estaban viendo. En el mundo actual, y con una IA que controla los recursos de Custom Vision de Azure, el reconocimiento de imágenes tiene en cuenta muchas más cosas aparte de simplemente el color o la forma. La IA se ha entrenado con miles, millones de imágenes. Es capaz de detectar sutiles diferencias entre gatos y perros que pueden parecer obvias al ojo humano. Pero si un equipo viera dos formas de color marrón del mismo tamaño con cuatro patas, colas y orejas, resulta verdaderamente asombroso que puedan distinguir las peculiaridades de un gato de las de un perro.
Entrenamiento con imágenes específicas
Aunque la IA avanzada es capaz de detectar infinidad de objetos comunes (perros frente a gatos, coches frente a bicicletas), aún nos queda trabajo por hacer si queremos entrenarla para que reconozca un objeto específico, por ejemplo, un personaje específico de una película específica, como Bungee.
Aquí es donde entra en juego el servicio Custom Vision. Este servicio tiene IA en segundo plano que ya tiene cierto conocimiento del mundo, pero que no sabe nada sobre Bungee (o la mascota que elijamos). Por lo tanto, lo que vamos a hacer es proporcionar una gran cantidad de imágenes de Bungee e indicar a la IA que son de Bungee. Cada imagen que proporcionemos de Bungee aportará a la IA más datos sobre las peculiaridades que representan específicamente a Bungee. Cuanto mayor sea el número de imágenes de Bungee (desde distintos ángulos, o con iluminaciones y tamaños diferentes), mejor será la capacidad de la IA a la hora de identificarla en una imagen más grande.
Este proceso se conoce como entrenamiento.
Ahora, vamos a probar nuestra IA para ver si la hemos entrenado bien. Para ello, le proporcionaremos imágenes que en las que salga Bungee que nunca antes haya visto. Es fundamental que las pruebas las hagamos con imágenes que la IA no haya usado para entrenarse, ya que de lo contrario no estaremos poniendo a prueba realmente su capacidad para reconocer a Bungee, sino simplemente constatando su capacidad para recordar que vio esa imagen exacta.
Este es el paso de predicción de nuestro proyecto, y se conoce como probar la IA.
Una vez que hayamos validado que la predicción de la IA es lo suficientemente precisa, podemos implementarla para que otros usuarios puedan usarla para identificar objetos con sus teléfonos o equipos. Esa actividad queda fuera del ámbito de este módulo, pero es algo que definitivamente hay que probar.
Nota:
¿Recuerda cuando creamos el proyecto de Custom Vision en el portal de Custom Vision y se nos preguntó qué región queríamos elegir para el entrenamiento y para la predicción, por separado? La razón para ello es que puede que entrenemos la IA desde, por ejemplo, nuestra casa en Seattle, Washington (en cuyo caso nos interesará usar recursos de nube más cercanos para que el proceso sea rápido), pero podríamos implementarla en casa de nuestros padres que viven en Londres, y queremos que las predicciones sean rápidas. En ese caso, querremos usar los recursos de nube más cercanos para realizar las predicciones.