Статьи

Компьютерное зрение в качестве красной кнопки — плагин Deepness в QGIS

ГИС Выбор команды Туториалы
Время прочтения: 4 минуты
Как часто вас просили быстро выделить определенные объекты по космической съемке, да еще не по привычной для нас всех мультиспектральной, а той, что публикуют Bing, Google и т.д. в своих картографических сервисах?
В поисках простого решения для неспециалистов была найдена «красная кнопка», способная выполнить эту задачу. В нашу с вами жизнь снова врываются нейронные сети и computer vision (компьютерное зрение).

Плагин QGIS для выделения объектов

Для решения этой задачи используется модуль QGIS
Сам модуль представляет собой оболочку с пользовательским интерфейсом, которая позволяет работать с моделями машинного обучения прямиком в проекте QGIS в том числе юзерам, далеким от этого. В модуле используется YOLO (You Only Look Once — ты смотришь только раз) — семейство открытых моделей машинного обучения, предназначенное для распознавания объектов на фото и видео, способное решать три задачи распознавания:

- Классификация

Классификация изображений предполагает извлечение информации об их содержании. Решением этой задачи будет анализ всего изображения и присвоение ему определенной метки, то есть отнесение объекта к одному из классов, которые знает человек (например, в результате классификации нейронная сеть может определить группу пикселей как кошку).

- Обнаружение

Само обнаружение предполагает не только решение задачи классификации, но и локализацию объектов на изображении при помощи ограничивающих рамок.

- Сегментация

Это разделение изображения на части или подобъекты, чтобы продемонстрировать, что машина может отличить объект от фона и/или другой объект на том же изображении. «Сегмент» изображения представляет собой определенный класс объектов, которые нейронная сеть идентифицировала на изображении, представленном пиксельной маской, которую можно использовать для его извлечения.
Проблемы, которые решает компьютерное зрение
В рамках проекта, который до сих пор находится в активной разработке, есть уже обученные модели для решения группы задач (обнаружение машин, мультиклассовая сегментация (дороги, растительность, здания, вода) и т.д.), но также реализована возможность обучения модели под сторонние цели: авторы проекта подготовили тьюториал для заинтересованных.

Как пользоваться компьютерным зрением в QGIS

В рамках этой статьи разберемся, как пользоваться предобученной моделью для обнаружения дорожного полотна.
1. Возьмем уже готовую обученную модель в библиотеке страницы самого модуля, она понадобится для дальнейшей работы (положите этот файл в любую папку, из которой вы потом сможете его достать для дальнейшего использования в работе): https://chmura.put.poznan.pl/s/y6S3CmodPy1fYYz
Версия QGIS на ваших компьютерах должна быть не ниже 3.22.
2. После того, как все будет готово, открываем QGIS и подключаем подложку «Google Satellite» через модуль QuickMapSevices, так как именно на ней и обучалась YOLO.
Вызвать меню модуля можно, перейдя во вкладку «Модули» на панели инструментов.
Модуль имеет следующий пользовательский интерфейс:
Входные данные
Входной слой (input layer): вставляем Google Satellite.
Маска обрабатываемой области (processed area mask) определяет, какая часть входного слоя должна быть классифицирована.
Параметры:
  • Видимая часть (Visible Part) — позволяет обрабатывать часть, видимую в данный момент в окне программы;
  • Весь слой (Entire Layer) — позволяет обрабатывать весь файл;
  • Из полигона (From Polygon) — в качестве границы обработки данных может выступать полигональный слой, который будет описывать область интереса.
Файл модели:
3. В данном разделе меню необходимо указать тип модели, в нашем случае это сегментация (Segmentor), и указать путь до файла с моделью, который был скачен на первоначальном этапе. Далее необходимо нажать «load default parameters», чтобы подгрузить необходимые параметры для обработки данных в плагин. Пропускаем остальные параметры, так как они погрузились на предыдущем этапе автоматически, и переходим к выходному формату данных.
Выходной формат (output format) — отдельный класс в качестве векторного слоя (single class as vector layer).
Номер отдельного класса (single class number) — «1 – road».
В окне экспорт тренировочных данных (Training data export) убираем все галочки (как на скриншоте).
Затем нажимает кнопку Run и ждем, когда модель закончит свою работу.
4. Результатом должен быть векторный слой с именем "road". Так как он будет временным, после работы его необходимо будет сохранить.
Результат, представленный на странице модуля:
Результат тестирования:
Реальный результат распознавания дорог по снимку Google с плагином Deepness в QGIS
Учим решать и другие задачи в QGIS на курсах Введение в QGIS и Продвинутый QGIS. Присоединяйтесь 😉
Материал подготовила Мария Арсентьева