¿Cuáles son los algoritmos de aprendizaje automático relativamente simples pero efectivos para que el reconocimiento de imágenes se implemente desde cero para una tesis de licenciatura?

Una sugerencia: implemente un clasificador de color de piel, luego utilícelo para segmentar imágenes. Recopile imágenes que contengan caras grandes o áreas de color de piel, luego recórtelas para dejar solo los píxeles de color de piel. Esta es su información de entrenamiento. Es posible que desee convertir estas imágenes al espacio de color HSV en lugar de RGB. Además, recopile imágenes sin rostro ni piel, como ejemplos negativos de entrenamiento. Luego entrene a un clasificador para detectar el color de la piel. Debe convertir las imágenes en largas listas de píxeles, más o menos aplanarlas. El clasificador puede ser algo así como un SVM (con núcleos RBF tal vez) que puede encontrar fácilmente en una biblioteca o caja de herramientas de matlab, o podría entrenar un GMM que también está disponible en muchas fuentes y funciona bien para este problema, o cualquier otra cosa que quiero jugar con ellos. Luego aplique su clasificador a cada píxel de una imagen seleccionada. Si usa un GMM, la clasificación es un simple cálculo de distancia a un (conjunto de) valores de color central y un umbral para la decisión. Creo que este sería un ejercicio bastante factible, y también educativo y divertido.

Otro ejercicio muy simple pero divertido es implementar la recuperación de imágenes utilizando histogramas de color. Calcular un histograma de color no debería ser difícil. Si construye un conjunto de imágenes limitado con diferentes paletas de colores como puesta de sol, playa, ciudad, naturaleza, etc., puede obtener fácilmente resultados impresionantes con una técnica tan simple. Implica el cálculo de la distancia del vector y no mucho aprendizaje automático. También puede jugar con la agrupación con estos datos de histograma.

La clasificación de dígitos escritos a mano es un problema canónico, bien estudiado, común, conocido y de pequeño alcance en el reconocimiento de imágenes. Recomiendo comenzar con esta competencia de Kaggle para jugar: Reconocimiento de dígitos

Hay una muy buena entrada de blog sobre esto aquí Visualizando MNIST: una exploración de la reducción de la dimensionalidad

Si desea intentar implementar algo desde cero, puede probar un algoritmo de clasificación simple como SVM, un árbol de decisión o regresión logística.

Sugeriría máquinas de vectores de soporte (SVM). Scikit-learn tiene un módulo para esto, por lo que la implementación debería ser fácil (consulte Github para otras implementaciones). Los SVM se han aplicado en el reconocimiento de imágenes desde hace varios años, lo que significa que las citas no deberían ser demasiado difíciles de encontrar. Hay una serie de combinaciones y enfoques para usarlos, por lo que creo que debería haber suficiente “carne” para una tesis de licenciatura.