С нейронками опыта еще нет, и не понятно куда копать.
На чем можно сделать нейронку и обучить ее, скормив X картниток и по каждой картинке указать bool значение присутствуеит ли на ней что-то. Для примера возьмем картинки дверей, а bool значение присутствует ли остекление у двери. А дальше загружать новую картинку и определять:
- присутствует ли на картинке дверь
- определить есть ли у двери остекление
- после этого найти из нашей базы на которой обучались, самые похожие двери из этого сегмента (с остеклением или без)
Хочется услышать совет по выбору инструмента и желательно ссылки на какие-то статьи с разбором подобных задач. Спасибо!
Если вы обучили сеть давать ответ Да/Нет, вы никогда не получите "похожие двери". Для этого сеть должна преобразовывать картинку в некий вектор, и вот тогда вы сможете найти похожие вектора. Абсолютно так же как делают поиск по фото.
Если нейросеть даёт много ответов да/нет (если, допустим, у фото много параметров), то сравнивать двери можно будет, просто не так эффективно, как можно было сравнивать float-значения.
Дарья Сафонова, Что-то мне из вопроса показалось, что будет всего одни параметр. Если будет много параметров, то мы и получим тот самый вектор из N-параметров. Разница, лишь в том, что каждый параметр мы определили сами, а не нейросеть обобщила что-то сама.
а если отдельно научить давать похожие и отдельно научить давать Да/Нет. Потом скармливаем новую картинку, сначала определяем Да/Нет, потом из нашей базы из тех у которых совпадение по этому признаку, уже из них искать похожие?
Нашел вот такой проект на гитхабе - https://github.com/matsui528/sis , опыта нет чтобы оценить, но у себя установил локально, загрузил 1к картинок, и на их основе работает поиск похожих. Работает неплохо, но вот как добавить сюда параметры дополнительные, типа Да/Нет, не понимаю пока
Евгений Перин, Лучше не учить данную нейронку давать ответ да/нет. Ведь есть ещё и промежуточные:
да/скорее всего/не уверен/вряд ли/нет. Можно сделать так: Преобразовать фото к тем векторам и собрать датасет из фото-вектор. Далее, нужно просто "вытаскивать" случайные пары фото и отмечать, насколько они похожи (выбирать один из уровней уверенности и записывать в вектор из одной единицы и нулей).
Далее создаём мелкую нейронку с простой архитектурой, которую учим преобразовывать [v1,v2] -> h, где v - векторы самих фото, а h - вектор их схожести.
Если лень с этим париться, то можно просто установить эмпирическим путём условие (v1-v2)^2