Hogar Machine Learning Detección de objetos: algunos aspectos técnicos

Detección de objetos: algunos aspectos técnicos

por Iván Torres
0 comentario

Como practicantes de Machine Learning, es importante saber cómo funcionan los algoritmos. La razón por la que debe saber cómo funcionan los algoritmos de Machine Learning es que cuando no funcionan, puedes usar ese conocimiento para descubrir por qué y tal vez incluso cómo solucionarlos.

Una puntada a tiempo

Supongamos que tienes un conjunto de datos simple donde intentas predecir una variable en función de su valor en el pasado. Por ejemplo, quizás quieras predecir el precio de una acción en función de sus promedios móviles de 5, 10, 50 y 300 días (nota: este es solo un ejemplo). Imagina que tienes datos para dos acciones, una con un promedio de precio a largo plazo de alrededor de $10 y otra con un promedio de precio a largo plazo de alrededor de $100, sin mucha variabilidad en esos valores.

Si proporcionas estos datos a un árbol de decisiones, ¿cómo se comportará? En cada uno de los nodos de hoja del árbol, asignará un precio en función de las instancias de entrenamiento que llegaron a ese nodo de hoja. Es importante destacar que el precio asignado probablemente estará cerca de $10 o $100 porque esos son los valores que vio durante el entrenamiento. Si tienes una acción con un promedio de $50 o $500, la predicción de los precios futuros de esa acción probablemente será muy imprecisa.

Si utilizas una regresión lineal, este será un problema menor. Debido a que la predicción es una combinación lineal de las variables de entrada, el modelo debería brindar buenos resultados incluso cuando las entradas no estén cerca de las entradas de entrenamiento, siempre y cuando la misma relación lineal se mantenga para las entradas que proporciones. Si solo tienes datos para unas pocas acciones y aún deseas que tu modelo se generalice a acciones con precios muy diferentes, la regresión lineal podría ser una mejor opción. Sería aún mejor si te das cuenta de eso antes de que aparezca un error en un entorno de producción.

Visión artificial: más de lo mismo

Veamos si podemos hacer algunas deducciones similares sobre nuestros algoritmos de detección de objetos. Aquí está un resumen de cómo funcionan algunos algoritmos de detección de objetos: Primero, dividen la imagen en una cuadrícula gruesa. En cada celda de la cuadrícula, consideran varias propuestas diferentes de cuadros delimitadores. Estos son solo rectángulos de diferentes tamaños, generalmente dos o tres en cada celda de la cuadrícula. Si uno de esos rectángulos contiene la mayor parte de uno de los objetos que estamos buscando, dicen que hay un objeto presente en ese rectángulo. Luego, intentan ajustar el rectángulo para que se ajuste al objeto lo más cómodamente posible, trasladándolo o escalándolo. La predicción final incluye varios valores: la probabilidad de que haya un objeto en el rectángulo, los ajustes necesarios para x, y, alto y ancho del rectángulo, y la distribución entre clases para ese rectángulo.

En la imagen, el detector probaría cada uno de los tres cuadros delimitadores que se muestran en cada celda de la cuadrícula. Se puede ver que en este lugar en particular, uno de los cuadros delimitadores está cerca de “abarcar” la silla. Sin embargo, el rectángulo debe moverse un poco hacia abajo y hacia la izquierda para que la silla quede correctamente centrada. Este modelo de detección de objetos predice simultáneamente la presencia y la clase de la silla, así como los ajustes necesarios para que el rectángulo encaje correctamente.

Todo está bien hasta ahora, pero ¿de dónde provienen las propuestas de cuadros delimitadores? En la práctica, obtenemos resultados mucho mejores de estos modelos si aprendemos las propuestas de cuadros delimitadores de los datos de entrenamiento.

Una forma sencilla de hacer esto es agrupar todos los cuadros delimitadores en los datos de entrenamiento por sus dimensiones, y luego tomar el centroide de cada grupo como nuestra lista de propuestas. El lector astuto probablemente verá la implicación: si sólo vemos objetos pequeños en el conjunto de entrenamiento, el conjunto de propuestas asegurará que solo estemos buscando cosas de ese tamaño.

En sus marcas, listos, falla

Entrenemos un detector de objetos para que reconozca algunas piezas de ajedrez. Todas las imágenes que estamos utilizando para el entrenamiento tienen esta vista del tablero:

Una evaluación muestra que el modelo que entrenamos es muy capaz de reconocer reyes negros:

Y en ese caso, esto debería ser fácil:

Espera, ¿que?

Todas las piezas que hemos visto en el entrenamiento eran pequeñas en comparación con la imagen. Ahora estamos presentando una pieza de ajedrez que ocupa casi toda la imagen. No hay un cuadro delimitador en los datos de entrenamiento ni siquiera cerca de este tamaño. Para el modelo, esto no se parece en absoluto a una pieza de ajedrez de ningún tipo. Es demasiado grande.

Desde una perspectiva, el modelo ha fallado. ¿Por qué nuestro modelo de piezas de ajedrez no puede detectar piezas de ajedrez? Sin embargo, desde una perspectiva más útil, hemos fallado nosotros. Si queríamos que nuestro modelo funcionara correctamente en esta vista de una pieza de ajedrez, ¿por qué no le enseñamos esta vista? ¿Por qué esperamos que el modelo se desempeñe bien en una situación que nunca ha visto antes?

El lector escéptico podría objetar a esta línea de pensamiento: “Entonces, para obtener un reconocedor general de piezas de ajedrez, tengo que agregar todas las vistas posibles de una pieza de ajedrez a mi conjunto de datos de entrenamiento. ¡Eso es imposible!”. Hay un grado desafortunado de verdad en esto: cuanto más general quieras que sea un modelo, más datos necesitarás. Puedes evitar esto en cierta medida con trucos como la augmentación de datos y el uso de modelos grandes previamente entrenados, pero a menudo no se pueden cubrir todos los escenarios.

Sin embargo, a menudo no es necesario. Si puedes garantizar los datos de entrada, es posible que un reconocedor funcione bien solo para las entradas que tienes en mente y necesites menos datos para entrenar y funcionar. Por ejemplo, si solo se quieren analizar imágenes desde una sola vista de un tablero de ajedrez, no importa si puede reconocer reyes que ocupan toda la imagen porque eso nunca sucederá. En aplicaciones de monitoreo, donde tienes una cámara fija que mira básicamente la misma escena todo el tiempo, esto puede ser fácil.

Como hemos dicho antes, escribir código que funcione con modelos de aprendizaje automático puede ser desafiante. Debes prever sus errores y prepararte para sus imprecisiones. Al igual que cualquier herramienta poderosa, el Machine Learning puede brindar resultados sorprendentes, pero solo si se maneja con precaución. ¡Con un poco de paciencia, avanzaremos hacia adelante y hacia arriba!

También te Puede Interesar

Sobre nosotros

About Data Blog es un espacio traido a ti por Gold Light Data con el objetivo de investigar y compartir información valiosa sobre Big Data, Inteligencia Artificial, Machine Learning, Analítica de Negocio e Inteligencia de Negocios.

 

Estamos comprometidos con la investigación y nuestra misión siempre será compartir ese conocimiento para la evolución tecnológica y de negocio.

© 2022 About Data. Created by WeApp4U