Estoy trabajando con Python, scikit-learn y keras. Tengo 3000 mil imágenes de relojes frontales como los siguientes: Watch_1 , Watch_2 , Watch_3 .
Quiero escribir un programa que reciba como entrada una foto de un reloj real que tal vez se haya tomado en condiciones menos ideales que las fotos de arriba (color de fondo diferente, rayos más oscuros, etc.) y encontrar los relojes más similares entre los 3000. Por similitud quiero decir que si doy como entrada una foto de un reloj redondo de color marrón con encaje fino, entonces espero como salida relojes de forma redonda, de color oscuro y con encaje fino.
¿Cuál es el algoritmo de aprendizaje automático más eficiente para hacer esto?
Por ejemplo, siguiendo este enlace tengo dos soluciones diferentes en mi mente:
1) Usando un CNN como un extractor de características y compare las distancias entre estas características para cada par de imágenes con referencia a la imagen de entrada.
2) Usar dos CNN en una red neuronal siamesa para comparar las imágenes.
¿Son estas dos opciones las mejores para esta tarea o sugeriría algo más?
¿Conoces alguna red neuronal pre-entrenada (con hiperparámetros predeterminados) para esta tarea?
He encontrado algunas publicaciones interesantes en StackOverflow sobre esto, pero son bastante antiguas: Post_1 , Post_2 , Post_3 .