[Обработка изображений] Поиск изображений с помощью AffNet
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Перед нами стояла задача сравнения изображений (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
===========
Похожие новости:
- [Машинное обучение] LIVENESS DETECTION — проверка идентификатора на принадлежность «живому» пользователю
- [Обработка изображений, Microsoft Azure, Машинное обучение, Разработка для интернета вещей] Azure Custom Vision без Azure, или «где у них маска». Как мы распознавали маску на лице (и других частях тела)
- [Python, Программирование, Алгоритмы, Машинное обучение, Искусственный интеллект] Нейронная Сеть CLIP от OpenAI: Классификатор, который не нужно обучать. Да здравствует Обучение без Обучения
- [Python, Big Data, Data Engineering] Coins Classification using Neural Networks
- [Разработка под iOS, Обработка изображений, Машинное обучение, Разработка под AR и VR] А ну-ка, сгруппировались, или как отделить фото котиков от счетов ЖКХ
- [Обработка изображений, Facebook API, Машинное обучение, Искусственный интеллект, Социальные сети и сообщества] Facebook улучшил описания фотографий с помощью ИИ для слабовидящих
- [Python, Машинное обучение, Искусственный интеллект] ML в реальном мире: Складская система распознавания деталей
- [Python, Программирование, Обработка изображений, Управление медиа, Софт] Миллион домашних фотографий: наводим порядок
- [Информационная безопасность, Обработка изображений, Законодательство в IT] Атака на Капитолий не оправдывает расширение слежки за населением
- [Обработка изображений, Гаджеты, Смартфоны, Фототехника] Камера iPhone 12 Pro Max: Разбор
Теги для поиска: #_obrabotka_izobrazhenij (Обработка изображений), #_deep_learning, #_computer_vision, #_image_matching, #_feature_extraction, #_convolutional_neural_network, #_obrabotka_izobrazhenij (
Обработка изображений
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:54
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Перед нами стояла задача сравнения изображений (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 =========== Похожие новости:
Обработка изображений ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:54
Часовой пояс: UTC + 5