¿Cuál es la mejor técnica de aprendizaje automático para clasificar ~ 50,000 imágenes sin etiquetar (2-3% de ruido) en 3 clases diferentes?

Depende de lo que entiendas por mejor. Si quiere decir, “Resultados lo suficientemente buenos en el menor tiempo”, diría que primero intente k-means con k = 3, y vea si da algún resultado bueno y significativo.

La razón por la que digo k-means es, en primer lugar, es simple y los códigos están fácilmente disponibles. Y en segundo lugar, como con cualquier algoritmo no supervisado, obtendrá 3 clases, pero si son exactamente las 3 clases que desea o no, no lo sabe, porque no conoce la interpretación de las clases. Entonces, después de obtener el resultado k-means, puede verificar si la clasificación es la deseada o no. Si no, entonces ejecute k-means nuevamente, hasta que obtenga la clasificación deseada. K-means da resultados diferentes cada vez que se ejecuta. Si incluso entonces no obtiene buenos resultados, puede probar otros métodos como SVM u otros métodos en conflicto. Creo que esta es la forma más eficiente de tiempo si solo quieres hacer el trabajo.

De manera no supervisada, un buen algoritmo podría segmentar al máximo las imágenes en distintas partes (agrupación), pero no podría decirle qué segmentó.
Entonces, si lo necesita y no tiene el dinero o la capacidad para etiquetar sus datos
tienes dos posibilidades, que son:

  • Transferencia de aprendizaje
  • Aprendizaje semi-supervisado

El aprendizaje por transferencia significa que busca un modelo de aprendizaje automático que otra persona ya haya entrenado en un problema similar al suyo. También puede implementar un modelo bien conocido y entrenarlo en un conjunto de datos estándar como imagenet. Luego etiqueta solo un par de sus imágenes (no sé cuántas serían necesarias para alcanzar la calidad que espera) y vuelve a entrenar el modelo en ese conjunto de datos.

En los enfoques de aprendizaje semi-supervisado , el modelo se entrena de manera no supervisada en el conjunto de datos completo y luego se vuelve a entrenar en un subconjunto del conjunto de datos que está etiquetado. En el aprendizaje profundo esto se puede hacer con Convolutional Deep Belief Networks.

Las técnicas de aprendizaje no supervisadas, como la agrupación en grupos, agrupan los datos sin etiquetar en ‘agrupaciones’ basadas en alguna noción de similitud, de modo que esos objetos en un grupo son similares. No creo que podamos agrupar objetos arbitrariamente como deseamos utilizando datos no etiquetados. Su mejor opción es el aprendizaje semi-supervisado, [1] donde debe tener algunos datos etiquetados para comenzar y una gran cantidad de datos sin etiquetar. La ventaja de este enfoque es que, con un poco de esfuerzo, si puede crear las clases deseadas, puede crear un clasificador adecuado para su tarea.

Notas al pie

[1] Aprendizaje semi-supervisado – Wikipedia

No soy (actualmente) una persona con visión, pero que yo sepa, las redes neuronales convolucionales (CNN) siguen siendo más o menos lo último en clasificación de imágenes. Este es un enfoque supervisado.

Esto es lo que haría:

  1. Divida sus datos en tres conjuntos: un conjunto de entrenamiento, un conjunto de desarrollo y un conjunto de prueba. *
  2. Etiquete manualmente un par de miles de estas imágenes en sus conjuntos de entrenamiento y desarrollo o use crowdsourcing para que otras personas lo hagan por usted si necesita más.
  3. Ejecute su clasificador.

* También puede intentar usar un motor de búsqueda de imágenes para descargar una gran cantidad de imágenes a granel con palabras clave y usar esto como sus datos de capacitación / desarrollo.

Hay documentos sobre agrupación de imágenes sin supervisión, pero no los he leído.