[Обработка изображений] Поиск изображений с помощью AffNet

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
29-Янв-2021 08:30

Перед нами стояла задача сравнения изображений (image matching) для поиска изображения максимально подобного данному изображению из коллекции. В этой статье я расскажу как мы использовали для этой задачи подход на основе нейронных сетей под названием AffNet. Кому интересно, прошу под кат.
В нашем случае нам нужно было найти для заданного изображения наиболее похожее с целью последующего вычисления позиции камеры на основе метода фундаментальной матрицы трансформации в OpenCV.
Первоначально мы попробовали стандартный матчинг изображений с использованием дескрипторов признаков SIFT и матчера FLANN из библиотеки OpenCV, а также Bag-of-Words. Оба подхода давали слабые результаты. Bag-of-Words к тому же требует огромный датасет изображений и много времени для обучения.
Обзор подхода AffNet
На использование подхода нас вдохновил вебинар «Points & Descriptors», который прошлым летом проводил CVisionLab. Для всех заинтересованных здесь доступны слайды с этого вебинара. На этом вебинаре представили интересный подход: AffNet + HardNet. Результаты матчинга, представленные на слайдах нас впечатлили и мы решили попробовать его в нашей задаче. По словам авторов AffNet это инновационный метод для обучения регионов ковариантных к афинной трансформации с функцией постоянной отрицательной потери (hard negative-constant loss), который обходит state-of-the-art подходы типа Bag-of-Words на задачах матчинга изображений и wide baseline stereo.

HardNet это новый компактный обучаемый дескриптор признаков, показавший лучшую эффективность state-of-art в сравнении с классическими и обучаемыми дескрипторами признаков и который возможно быстро вычислять на GPU (ссылкана статью). Он доступен публично на github. Здесь есть хороший пример матчинга изоображений с большой афинной трансформацией с использованием AffNet.

Авторы AffNet объясняют подход более детально в своей статье.
Тестирование подхода AffNet
Клонируем репозиторий с github:
git clone https://github.com/ducha-aiki/affnet.git

Затем переходим в папку affnet.
Запустим Jupyter :
jupyter notebook

и откроем ноутбук SIFT-AffNet-HardNet-kornia-matching.ipynb в папке examples. Сначала установим все завивисимости. Создадим ячейку в верху ноутбука и запустим ее
!pip install kornia pydegensac extract_patches

Если у вас установлен OpenCV версии 4 вы можете получить ошибку из-за функции SIFT_create:
The function/feature is not implemented) This algorithm is patented and is excluded in this configuration;

. Дело в том, что начиная с версии 3.4.2.16 SIRF и SURF больше недоступны в основном репозитории opencv, они были вынесены в отдельный пакет opencv-contrib. Установим OpenCV и opencv-contrib:
pip install opencv-python==3.4.2.16
pip install opencv-contrib-python==3.4.2.16

Когда мы запустим матчинг изображений с AffNet на изображениях, предоставленных авторами, мы получим примерно такой результат:
30.0 inliers found


Довольно неплохой результат для таких изображений.
Для пайплайна DoG-AffNet-OriNet-HardNet
18.0 inliers found


И наконец для пайплайна DoG-OriNet-HardNet
25.0 inliers found


Когда мы применили подход на своих изображениях сцен домашей обтановке (комнаты в доме), мы были удивлены результатами. AffNet находил соответствия между двумя изображениями с очень плохим освещением и большей разницей в угле обхора камеры. AffNet показал хорошие результаты без дополнительного дообучения.
Теперь осталось попробовать AffNet на своих изображениях.
Чтобы интегрировать AffNet в свою программу вам нужно только установить все необходимые библиотеки, скачать предобученные веса модели и скопировать несколько функций из ноутбука SIFT-AffNet-HardNet-kornia-matching.ipynb.
Можно легко сконвертировать Jupyter ноутбук в скрипт python с помощью утилиты jupyter nbconvert. Установим ее через pip:
pip install nbconvert

и запустим конвертацию:
jupyter nbconvert SIFT-AffNet-HardNet-kornia-matching.ipynb --to python

На этом все. Удачи в использовании AffNet для матчинга изоображений и до новых встреч.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_obrabotka_izobrazhenij (Обработка изображений), #_deep_learning, #_computer_vision, #_image_matching, #_feature_extraction, #_convolutional_neural_network, #_obrabotka_izobrazhenij (
Обработка изображений
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 23:39
Часовой пояс: UTC + 5