1 votos

Algoritmos de aprendizaje automático recomendados para un problema de clasificación de imágenes de 10 clases con solo 1900 muestras.

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.

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).

0voto

Shlomi Hassid Puntos 76

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:

https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X