¿Cuántas imágenes por clase son suficientes para entrenar a una CNN?

12

Estoy comenzando un proyecto donde la tarea es identificar los tipos de zapatillas a partir de imágenes. Actualmente estoy leyendo las implementaciones de TensorFlow y Torch . Mi pregunta es: ¿cuántas imágenes por clase se requieren para alcanzar un rendimiento de clasificación razonable?

Feynman27
fuente
Definir "razonable"? ¿Su objetivo es llegar a una precisión que pueda usarse en un sistema de producción? ¿Tu objetivo es otra cosa? ¿Cuántas clases hay? Hay algunas variaciones en el entrenamiento previo y semi-supervisado que podrían ahorrarle esfuerzo, por lo que podría aclarar si su preocupación está en el esfuerzo de etiquetar imágenes, o simplemente obtener cualquier imagen. Finalmente, ¿qué tan limpias y simples son sus imágenes de destino? Las imágenes en las que se fijan la iluminación y la postura serán más fáciles de entrenar que las fotografías del "mundo real" con las zapatillas de deporte que se usan.
Neil Slater
Sí, esto se usará en la producción. Actualmente no sé cuántas clases habrá ya que no sé cuántos tipos de zapatillas diferentes hay en la biblioteca de imágenes. Mi mejor conjetura sería del orden de 50-100, pero cuanto más baja sea la descripción de la zapatilla, menos clases (por ejemplo, air-jordan vs air-jordan-ultrafit). Desafortunadamente, la biblioteca de imágenes es una mezcla de zapatillas que se usan y zapatillas que se presentan como elementos fijos con un fondo blanco.
Feynman27

Respuestas:

2

De ¿Cuántos ejemplos de entrenamiento son muy pocos al entrenar una red neuronal? en CV:

Realmente depende de su conjunto de datos y arquitectura de red. Una regla general que he leído (2) fueron unos pocos miles de muestras por clase para que la red neuronal comenzara a funcionar muy bien. En la práctica, la gente trata de ver.


Una buena manera de evaluar aproximadamente hasta qué punto podría ser beneficioso tener más muestras de entrenamiento es trazar el rendimiento de la red neuronal en función del tamaño del conjunto de entrenamiento, por ejemplo, de (1):

ingrese la descripción de la imagen aquí


Franck Dernoncourt
fuente
0

El mejor enfoque es recopilar tantos datos como sea posible. Luego comience con el proyecto y haga un modelo de datos.

Ahora puede evaluar su modelo para ver si tiene un sesgo alto o una varianza alta.

Alta varianza : en esta situación, verá que el error de validación cruzada es mayor que el error de entrenamiento después de la convergencia.

Alto sesgo : en esta situación, el error de validación cruzada es ligeramente mayor que el error de entrenamiento, que en sí mismo es alto cuando se traza contra el tamaño de los datos de entrenamiento. y errores de trama.

Si ve que su modelo tiene una alta varianza (sobreajuste), agregar más datos generalmente ayudará en contraste con el modelo de alto sesgo (falta de ajuste) donde agregar nuevos datos de entrenamiento no ayuda.

Además, por clase, debe intentar obtener el mismo número de imágenes; de lo contrario, los conjuntos de datos pueden quedar sesgados (más de un tipo).

También sugiero que si está utilizando TensorFlow , lea más sobre el Clasificador de imágenes INCEPTION de GOOGLE . Ya es un clasificador entrenado en la base de datos de imágenes de Google y puede usarlo para sus imágenes, de esa manera los requisitos para la cantidad de imágenes se reducen drásticamente.

Xeqtr
fuente
Ya he realizado una prueba rápida usando Inception-v3 de TensorFlow. Lo mejor que podría hacer es darme una clasificación de curso, como "zapatillas para correr", pero necesito algo un poco más granular, como "air-jordan-ultrafit". Es por eso que estoy construyendo un nuevo conjunto de entrenamiento para usar con Inception.
Feynman27
Esa es una extraña definición de "un poco más granular".
Jivan