Я работаю с Python, scikit-learn и keras. У меня есть 3000 тысяч изображений лицевых часов, таких как следующие: Watch_1 , Watch_2 , Watch_3 .
Я хочу написать программу, которая получит в качестве входных данных фотографию настоящих часов, которые могут быть сделаны в менее идеальных условиях, чем фотографии выше (другой цвет фона, более темное освещение и т. Д.), И найду наиболее похожие часы среди 3000 из них. Под сходством я подразумеваю, что если я приведу в качестве фотографии круглые коричневые часы с тонким кружевом, то я ожидаю в качестве выходных часов круглой формы, темного цвета и с тонким кружевом.
Какой алгоритм машинного обучения наиболее эффективен для этого?
Например, по этой ссылке у меня в голове два разных решения:
1) Использование CNN в качестве извлечения характеристик и сравнить расстояния между этими функциями для каждой пары изображений со ссылкой на входном изображение.
2) Использование двух CNN в сиамской нейронной сети для сравнения изображений.
Эти два варианта лучше всего подходят для этой задачи, или вы предложите что-нибудь еще?
Знаете ли вы какие-либо предварительно обученные нейронные сети (с заранее определенными гиперпараметрами) для этой задачи?
Я нашел несколько интересных постов в StackOverflow по этому поводу, но они довольно старые: Post_1 , Post_2 , Post_3 .