Русский
Русский
English
Статистика
Реклама

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

Перед нами стояла задача сравнения изображений (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.

image

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

image

Авторы 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.16pip install opencv-contrib-python==3.4.2.16

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

30.0 inliers found

image

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

18.0 inliers found


image

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

25.0 inliers found


image

Когда мы применили подход на своих изображениях сцен домашей обтановке (комнаты в доме), мы были удивлены результатами. 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
К списку статей
Опубликовано: 29.01.2021 02:04:02
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Обработка изображений

Deep learning

Computer vision

Image matching

Feature extraction

Convolutional neural network

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru