Статьи

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

2023-07-18 18:52 ГИС Выбор команды Туториалы
Время прочтения: 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. Присоединяйтесь 😉
Материал подготовила Мария Арсентьева