Сопоставление шаблонов через сиамскую архитектуру CNN + гиперсеть - PullRequest
0 голосов
/ 02 февраля 2020

В настоящее время я пытаюсь создать NN для «сопоставления с шаблоном» (поиска подизображения в большем) в Керасе. Идея основана на статье: http://cs231n.stanford.edu/reports/2017/pdfs/817.pdf Используется сиамская архитектура CNN, где одна ветвь предназначена для изображения шаблона, а другая - для сцены. Выходные данные шаблона-ветви изменяются и передаются весам (3, 3, 512, 512) последнего слоя conv2D ветви сцены (гиперсети). Выходные данные ветви сцены в конечном итоге преобразуются в размер входного изображения сцены. Эти выходные данные представляют собой двоичное изображение, которое должно показывать локализацию шаблона в сцене.

Прогнозирование по шаблону из обучающего набора по сравнению с прогнозированием по шаблону, которого нет в обучающем наборе

В качестве CNN используются VGG11 или VGG16. Гипросеть реализована следующим образом:

Оптимизатор: Адам (lr = 0,001), потеря = категориальная_кросентропия, метри c = cc, размер пакета 1, поскольку изображения довольно большие ( 768x768 + 256x384). Тестируйте его на 500 парах изображений, где сцена остается той же самой, и изменяются только шаблоны изображений. Сеть способна правильно предсказать шаблон, только когда он обучен на нем. Когда набор для обучения и проверки основан на различных шаблонах, точность и val_accuracy сходятся к 0,9888, который в основном представляет собой двоичное изображение значений интенсивности = 0.

Изменения, которые я в настоящее время изучаю, следующие: 1) Использование верхних слоев FCN 2 ) Использование предварительно обученного VGG16 + заморозка 3) Увеличение регуляризации L2 4) Увеличение отсева 5) Увеличение / уменьшение LR 6) Оптимизатор SGD

Я только начал рассказывать о NN, поэтому прошу прощения, если я пропустил некоторые соответствующие данные. Кто-то понял, что я мог сделать, чтобы NN узнал связь между шаблоном и сценой, а не только запомнил указанный шаблон c? Спасибо за ваши ответы заранее!

...