Estoy tratando de determinar la mejor enfoque a tomar para un problema de clasificación de imágenes que involucra 10 clases y solo 1900 muestras. Las imágenes (resolución de 1288 x 964) son de piezas industriales en las cuales cada clase de pieza difiere por su número de serie y otras características. He considerado utilizar una CNN pero me pregunto si esto puede ser inviable debido a la insuficiente cantidad de datos; ¿o no es así? De lo contrario, según mi investigación, he determinado que los métodos más tradicionales como KNN o SVM pueden funcionar mejor debido a la menor cantidad de datos, pero necesito orientación de expertos. Gracias.
Respuesta
¿Demasiados anuncios?Dependiendo de los datos que tengas y su distribución en las clases, parece que puedes usar un modelo pre-entrenado que fue entrenado en un gran conjunto de datos (preferiblemente algo similar al tuyo). Como mencionó @johnor, puedes utilizar una técnica de transfer learning, por ejemplo 'Congelar' todas las partes del modelo y entrenar solo la última capa completamente conectada con tus nuevas clases. La idea detrás de esto es que el modelo pre-entrenado ha aprendido buenas representaciones de una imagen, por lo tanto, puede ser utilizado para representar cualquier imagen nueva.
Dependiendo del lenguaje y la biblioteca que elijas utilizar, puedes encontrar varios buenos modelos pre-entrenados en la web (por ejemplo, ResNet que fue entrenado en ImageNet)
Básicamente, la idea es usar el modelo pre-entrenado para obtener una representación vectorial de la imagen, podemos referirnos a ello como el codificador de la imagen.
Y luego, entrenar solo el decodificador para clasificar el vector codificado y clasificarlo en la clase relevante.
Existen varias técnicas más que se pueden utilizar, puedes leer más al respecto en este artículo:
Como mencioné al principio de mi respuesta, todo depende de los datos que tengas.
Puede ser que para tus datos específicos, un algoritmo de ML más clásico (como RandomForest) pueda dar resultados suficientes
0 votos
Intenta el aprendizaje por transferencia en una CNN que esté preentrenada en ImageNet o similar. Con 190 muestras por clase, podría funcionar bastante bien.
0 votos
+1 para el aprendizaje por transferencia. La adecuada ampliación de datos también ayudará. En la práctica, cuanta más estandarización se pueda lograr en cómo se toman las fotos (es decir, si se trata, por ejemplo, de clasificar piezas, entonces asegurarse de una iluminación consistente, etc. probablemente ayude).