Вы можете использовать сиамскую сеть с базой VGG-16. Модель будет обучена с вашими помеченными изображениями, похожие изображения будут обучены со схожестью 1, разные изображения будут обучены со схожестью 0.
Потери триплетов могут быть использованы для минимизации различий между одинаковыми объекты.
Вот реализация в keras: https://medium.com/@prabhnoor0212 / siamese-network-keras-31a3a8f37d04
Процесс обучения с вашим набором данных:
Допустим, у вас есть простой набор данных классификации. Итак, у вас есть класс для яблок, один для кошек и так далее.
- Во-первых, вы должны убедиться, что изображения в одном классе очень похожи.
(Если вы поместите автомобиль и грузовик в один класс и ожидайте, что у них будет оценка сходства 1, это ухудшит работу вашей сети)
Когда у вас есть набор данных, вам просто нужно сгенерировать пары. Если два изображения принадлежат к одному классу, метка будет 1., а если нет, то метка будет 0.
Теперь просто обучите модель с потерей триплетов и сиамским VGG.
Вы можете изменить примеры кода и даже найти множество ресурсов с общим кодом.
![enter image description here](https://i.stack.imgur.com/3PWgK.png)