Улучшение предварительно изученной модели с помощью человеческого ввода для лучшего определения сходства изображений с использованием python - PullRequest
0 голосов
/ 07 мая 2020

Предположим, я хотел бы создать инструмент, который бы сообщал мне по шкале от 0 до 1 сходство между изображениями.

enter image description here

Я мог бы go вперед и загрузите предварительно обученные модели мага, такие как vgg16, удалите его последние слои (классификатор), преобразуйте изображения в векторы признаков, используя предварительно обученную модель, и, наконец, вычислите сходство между векторами, используя нечто вроде косинусного сходства .

enter image description here

Метод лучше поясняется здесь: https://mc.ai/find-more-like-this-product-using-transfer-learning/

... но что, если бы я хотел улучшить инструмент, используя свой собственный набор данных? Более конкретно, у меня есть набор данных, в котором люди либо сказали, что два изображения похожи (1) или не похожи (0):

enter image description here

Мне было интересно, видите ли вы способ, как я могу сотрудничать с этим, чтобы улучшить инструмент оценки сходства? Большое спасибо. :)

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать сиамскую сеть с базой VGG-16. Модель будет обучена с вашими помеченными изображениями, похожие изображения будут обучены со схожестью 1, разные изображения будут обучены со схожестью 0.

Потери триплетов могут быть использованы для минимизации различий между одинаковыми объекты.

Вот реализация в keras: https://medium.com/@prabhnoor0212 / siamese-network-keras-31a3a8f37d04

Процесс обучения с вашим набором данных:

Допустим, у вас есть простой набор данных классификации. Итак, у вас есть класс для яблок, один для кошек и так далее.

  1. Во-первых, вы должны убедиться, что изображения в одном классе очень похожи.

(Если вы поместите автомобиль и грузовик в один класс и ожидайте, что у них будет оценка сходства 1, это ухудшит работу вашей сети)

Когда у вас есть набор данных, вам просто нужно сгенерировать пары. Если два изображения принадлежат к одному классу, метка будет 1., а если нет, то метка будет 0.

Теперь просто обучите модель с потерей триплетов и сиамским VGG.

Вы можете изменить примеры кода и даже найти множество ресурсов с общим кодом.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...