En Parte 1discutimos la importancia de recopilar buenos datos de imágenes y asignar etiquetas adecuadas para su Clasificación de imágenes proyecto para tener éxito. Además, hablamos sobre clases y subclases de sus datos. Estos pueden parecer conceptos bastante sencillos, pero es importante tener una comprensión sólida en el futuro. Entonces, si no lo has hecho, por favor échale un vistazo.
Ahora discutiremos cómo construir los diversos conjuntos de datos y las técnicas que han funcionado bien para mi aplicación. Luego en el Siguiente partenos sumergiremos en la evaluación de sus modelos, más allá de la simple precisión.
Volveré a usar la aplicación de clasificación de imágenes de animales de zoológico de ejemplo.
Conjuntos de datos
Como ingenieros de aprendizaje automático, todos estamos familiarizados con los conjuntos de prueba de validación de tren, pero cuando incluimos el concepto de subclases discutidas en Parte 1e incorporar a los conceptos discutidos a continuación para establecer un recuento de imágenes mínimo y máximo por clase, así como datos escenificados y sintéticos en la mezcla, el proceso se vuelve un poco más complicado. Tuve que crear un script personalizado para manejar estas opciones.
Te guiaré a través de estos conceptos antes de dividir los datos para el entrenamiento:
- Cortes de imagen – Muy pocas imágenes y el rendimiento de su modelo sufrirán. Demasiados y pasas más tiempo entrenando de lo que vale.
- Umbrales de confianza – Su modelo indica qué tan seguro está en las predicciones. Usemos eso para decidir cuándo presentar los resultados al usuario.
- Conjuntos de referencia -Los datos del mundo real son desordenados y los conjuntos de referencia deben reflejar eso. Estos deben extender el modelo al límite y ayudarnos a decidir cuándo está listo para la producción.
- Datos escenificados y sintéticos -Los datos del mundo real son el rey, pero a veces necesitas producir el tuyo o incluso generar datos para despegar. Tenga cuidado de que no duela el rendimiento.
- Imágenes duplicadas – Repetir datos puede sesgar sus resultados y darle una falsa sensación de rendimiento. Asegúrese de que sus datos sean diversos.
- Construyendo los conjuntos de datos -Combine las subclases, aplique cortes y cree sus conjuntos de prueba de validación de tren. Ahora estamos listos para comenzar el espectáculo.
Cortes de imagen
En mi experiencia, el uso de un mínimo de 40 imágenes por clase proporciona un rendimiento de descenso. Dado que me gusta usar el 10% cada uno para el conjunto de pruebas y el conjunto de validación, eso significa que se utilizarán al menos 4 imágenes para verificar el conjunto de entrenamiento, lo que se siente apenas adecuado. Usando menos de 40 imágenes por clase, noto que la evaluación de mi modelo tiende a sufrir.
En el otro extremo, establecí un máximo de aproximadamente 125 imágenes por clase. He descubierto que las ganancias de rendimiento tienden a estancar más allá de esto, por lo que tener más datos ralentizará la carrera de entrenamiento con poco que mostrar. Tener más que el máximo está bien, y estos “desbordamientos” se pueden agregar al conjunto de pruebas, por lo que no se desperdician.
Hay momentos en que dejaré caer el corte mínimo para, por ejemplo, 35, sin intención de mover el modelo entrenado a la producción. En cambio, el propósito es aprovechar este modelo desechable para encontrar más imágenes de mi conjunto no etiquetado. Esta es una técnica en la que entraré en más detalles en Parte 3.
Umbral de confianza
Es probable que esté familiarizado con el puntaje Softmax. Como recordatorio, Softmax es la probabilidad asignada a cada etiqueta. Me gusta pensar en ello como un puntaje de confianza, y estamos interesados en la clase que recibe la mayor confianza. Softmax es un valor entre cero y uno, pero me resulta más fácil interpretar los puntajes de confianza entre cero y 100, como un porcentaje.
Para decidir si el modelo tiene suficiente confianza con su predicción, he elegido un umbral de 95. Utilizo este umbral al determinar si quiero presentar resultados al usuario.
Los puntajes por encima del umbral tienen mejores cambios de ser correcto, por lo que puedo proporcionar con confianza los resultados. Los puntajes por debajo del umbral pueden no ser correctos; de hecho, podría ser “fuera de eje”, lo que significa que es algo que el modelo no sabe cómo identificar. Entonces, en lugar de correr el riesgo de presentar resultados incorrectos, le solicito al usuario que intente nuevamente y ofrezca sugerencias sobre cómo tomar una “buena” imagen.
Es cierto que este es un límite algo arbitrario, y debe decidir por su caso de uso lo que es apropiado. De hecho, esta puntuación probablemente podría ajustarse para cada modelo entrenado, pero esto dificultaría la comparación de el rendimiento entre los modelos.
Me referiré a este puntaje de confianza con frecuencia en la sección de evaluaciones en Parte 3.
Conjuntos de referencia
Permítanme presentar lo que llamo los conjuntos de referencia, que se le ocurre como conjuntos de pruebas extendidas. Estas son imágenes seleccionadas a mano diseñadas para estirar los límites de su modelo y proporcionar una medida para clases específicas de sus datos. Use estos puntos de referencia para justificar mover su modelo a la producción y para una medida objetiva que se muestre a su gerente.
- Punto de referencia difícil – Estas son las imágenes de “crédito adicional”, como las preguntas de bonificación que un profesor agregaría al cuestionario para ver qué estudiantes están prestando atención. Necesitas un buen ojo para detectar la diferencia entre la verdad del suelo y una clase de aspecto similar. Por ejemplo, un guepardo durmiendo a la sombra que podría pasar como un leopardo si no miras de cerca.
- Punto de referencia fuera de logro – Estas son las imágenes de la “pregunta de truco”. Nuestro modelo está entrenado en animales del zoológico, pero las personas son conocidas por no seguir las reglas. Por ejemplo, un invitado al zoológico toma una foto de su hijo con pintura facial de guepardo.
- Punto de referencia más común – Estas son sus clases de “pan y mantequilla” que necesitan obtener puntajes casi perfectos y cero errores. Este sería un punto de referencia para mudarse a la producción.
- Punto de referencia menos común – Estas son sus clases “raras pero excepcionales” que nuevamente deben ser correctas, pero alcanzan un puntaje mínimo como el umbral de confianza.
Al buscar imágenes para agregar a los puntos de referencia, es probable que pueda encontrarlas en imágenes del mundo real desde su modelo implementado. Ver la evaluación en Parte 3.
Para cada punto de referencia, calcule los puntajes MIN, MAX, MEDIANOS y MEDIOS, y también cuántas imágenes obtienen puntajes por encima y por debajo del umbral de confianza. Ahora puede comparar estas medidas con lo que está actualmente en producción, y con sus requisitos mínimos, para ayudar a decidir si el nuevo modelo es digno de producción.
Datos escenificados o sintéticos
Quizás el mayor obstáculo para cualquier aplicación de aprendizaje automático supervisada es tener datos para capacitar al modelo. Claramente, los datos de “mundo real” que provienen de usuarios reales de la aplicación son ideales. Sin embargo, realmente no puede recolectarlos hasta que se implementa el modelo. Problema de pollo y huevo.
Una forma de comenzar es que los voluntarios recopilen imágenes “escenificadas” para usted, tratando de actuar como usuarios reales. Entonces, hagamos que nuestro personal del zoológico vaya a tomar fotos de los animales. Este es un buen comienzo, pero habrá un cierto nivel de sesgo introducido en estas imágenes. Por ejemplo, el personal puede tomar las fotos durante unos días, por lo que es posible que no obtenga las condiciones climáticas durante todo el año.
Otra forma de obtener imágenes es usar imágenes “sintéticas” generadas por computadora. Evitaría estos a toda costa, para ser honesto. Según mi experiencia, el modelo lucha con estos porque se ven … diferentes. La iluminación no es natural, el sujeto puede superpuesto en un fondo y, por lo tanto, los bordes se ven demasiado nítidos, etc. Otorgados, algunas de las imágenes generadas por IA se ven muy realistas, pero si miras de cerca puedes detectar algo inusual. La red neuronal en su modelo lo notará, así que tenga cuidado.
La forma en que manejo estas imágenes escenificadas o sintéticas es como una subclase que se fusiona en el conjunto de entrenamiento, pero solo después dando preferencia a las imágenes del mundo real. Llevo el número de imágenes escenificadas a 60, por lo que si tengo 10 mundo real, ahora solo necesito 50 escenificados. Finalmente, estas imágenes escenificadas y sintéticas se eliminan completamente, y confío completamente en el mundo real.
Imágenes duplicadas
Un problema que puede arrastrarse en su conjunto de imágenes son las imágenes duplicadas. Estas pueden ser copias exactas de las imágenes, o pueden ser extremadamente similares. Puede pensar que esto es inofensivo, pero imagine tener 100 imágenes de un elefante que son exactamente iguales: su modelo no sabrá qué hacer con un ángulo diferente del elefante.
Ahora, digamos que solo tienes dos imágenes que son casi iguales. No es tan malo, ¿verdad? Bueno, esto es lo que les puede pasar:
- Ambas imágenes van en el conjunto de capacitación: el modelo no aprende nada de la imagen repetida y pierde el tiempo procesándolas.
- Uno entra en el conjunto de entrenamiento, el otro entra en el conjunto de pruebas: su puntaje de prueba será más alto, pero no es una evaluación precisa.
- Ambos están en el conjunto de pruebas: su puntaje de prueba se agravará más alto o más bajo de lo que debería ser.
Ninguno de estos ayudará a su modelo.
Hay algunas maneras de encontrar duplicados. El enfoque que he adoptado es calcular una distancia de Hamming en todas las imágenes e identificar las que están muy cerca. Tengo una interfaz que muestra los duplicados y decido cuál me gusta más y eliminar el otro.
Otra forma (aún no he probado esto) es crear una representación vectorial de sus imágenes. Almacene estos una base de datos vectorial, y puede hacer una búsqueda de similitud para encontrar imágenes casi idénticas.
Independientemente del método que use, es importante limpiar los duplicados.
Construyendo los conjuntos de datos
Ahora estamos listos para construir la capacitación, la validación y los conjuntos de pruebas tradicionales. Esta ya no es una tarea directa ya que quiero:
- Fusionar subclases en una clase principal.
- Priorice las imágenes del mundo real sobre imágenes escenificadas o sintéticas.
- Aplique un número mínimo de imágenes por clase.
- Aplique un número máximo de imágenes por clase, enviando el “desbordamiento” al conjunto de pruebas.
Este proceso es algo complicado y depende de cómo administre su biblioteca de imágenes. Primero, recomendaría mantener sus imágenes en una estructura de carpetas que tenga carpetas de subclase. Puede obtener recuentos de imágenes usando un script para simplemente leer las carpetas. El segundo es mantener una configuración de cómo se fusionan las subclases. Para realmente prepararse para el éxito, coloque estos recuentos de imágenes y fusione las reglas en una base de datos para búsquedas más rápidas.
Las divisiones de mi conjunto de test de validación de tren suelen ser 90-10–0. Originalmente comencé usando 80-10-10, pero con diligencia en mantener limpio todo el conjunto de datos, noté que la validación y los puntajes de las pruebas se volvieron bastante pares. Esto me permitió aumentar el tamaño del conjunto de entrenamiento y usar “desbordamiento” para convertirme en el conjunto de pruebas, así como usar los conjuntos de referencia.
A continuación …
En esta parte, hemos creado nuestros conjuntos de datos fusionando subclases y utilizando los límites de recuento de imágenes. Además, manejamos los datos escenificados y sintéticos, así como la limpieza de imágenes duplicadas. También creamos conjuntos de referencia y umbrales de confianza definidos, que nos ayudan a decidir cuándo mover un modelo a la producción.
En Parte 3discutiremos cómo vamos a evaluar las diferentes actuaciones del modelo. Y finalmente, llegaremos a la capacitación del modelo real y las técnicas para mejorar la precisión.