Мат. моделирование / ДЗЗ
Практика 10

Знакомство с нейросетями. Плагин Deepness

О чём эта тема

Как применить готовую нейросетевую модель к снимку ДЗЗ, не обучая её самостоятельно — на примере плагина QGIS Deepness и его библиотеки готовых моделей Model ZOO.

Аннотация

Тема начинается с базовых понятий свёрточных нейросетей: искусственный нейрон, свёртка как операция скользящего ядра по изображению (с разбором числового примера), слои сети и ключевое ограничение — фиксированный размер входа и выхода, из-за которого снимок приходится резать на перекрывающиеся тайлы. Далее разбирается установка и интерфейс плагина Deepness: типы моделей (детектор, регрессор, сегментатор, супер-разрешение), параметры обработки и запуск. Практическая часть — два сквозных примера с готовыми моделями из Model ZOO: детекция автомобилей на парковке и сегментация дорог на транспортной развязке, а также знакомство с моделями суперразрешения. После изучения темы студент сможет установить Deepness, подобрать подходящую готовую модель в Model ZOO и запустить её на снимке Google Satellite с корректными параметрами обработки.

Пререквизиты
  • Практика 6 — формирование обучающей выборки и классификация в SCP (для сравнения с готовыми нейросетевыми моделями)
  • Установленный QGIS с доступом к менеджеру модулей
Мотивация

Обучение нейросети с нуля требует размеченных данных, вычислительных мощностей и экспертизы в машинном обучении — на практике это редко нужно каждому пользователю ГИС. Model ZOO снимает этот порог входа: детекцию автомобилей, сегментацию дорог или зданий можно получить за несколько минут, просто подобрав готовую модель под свою задачу.

Практика 10. Знакомство с нейросетями. Плагин Deepness

Презентация

Свёрточные нейронные сети: базовые понятия

Искусственный нейрон — базовый элемент сети. Он принимает несколько входных сигналов, каждый из которых умножается на вес — число, показывающее важность сигнала. Затем все взвешенные входы суммируются, добавляется смещение (bias), и результат пропускается через функцию активации.

Свёрточные нейронные сети — разновидность нейросетей для обработки данных с сеточной структурой: изображений и видео. Такие сети анализируют пиксели (признаки), которые находятся близко друг к другу и содержат непрерывную визуальную информацию — яркость и оттенок.

Нейроны группируются в слои: - Входной слой — принимает исходные данные (например, 784 нейрона для изображения 28×28 пикселей). - Скрытые слои — обрабатывают данные, извлекая признаки. - Выходной слой — выдаёт результат (например, 10 нейронов для классификации цифр от 0 до 9).

Математика свёртки

Для изображения \(I\) и ядра \(K\) размером \(m \times n\):

определение операции двумерной свёртки
Рис. П10.1 — определение операции двумерной свёртки

\[ (I * K)(x, y) = \sum_{i=0}^{m-1} \sum_{j=0}^{n-1} I(x+i, y+j) \cdot K(i, j) \]

формула дискретной двумерной свёртки
Рис. П10.2 — формула дискретной двумерной свёртки

Рассмотрим на числовом примере. Пусть дано изображение 5×5 и ядро 3×3 для поиска вертикальных краёв:

\[ I = \begin{pmatrix} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \end{pmatrix}, \qquad K = \begin{pmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{pmatrix} \]

Свёртка в позиции (1,1) — это сумма произведений ядра на соответствующий фрагмент изображения 3×3, начинающийся с этой позиции:

\[ (-1)\cdot1 + 0\cdot2 + 1\cdot3 + (-1)\cdot2 + 0\cdot3 + 1\cdot4 + (-1)\cdot3 + 0\cdot4 + 1\cdot5 = -1 + 3 - 2 + 4 - 3 + 5 = 6 \]

Ядро «скользит» по всему изображению, и в каждой позиции получается одно число — так строится карта признаков (feature map). Ядро именно такого вида (отрицательные значения слева, положительные справа) реагирует на резкий переход от тёмных пикселей к светлым по горизонтали, то есть выделяет вертикальные края.

Note

Любая нейросеть имеет постоянный размер входа и постоянный размер выхода. Именно поэтому, как будет показано ниже, большое изображение снимка ДЗЗ приходится разрезать на одинаковые по размеру тайлы перед подачей в модель.

Примеры архитектур из научных статей

классификация сцен ДЗЗ свёрточной сетью с переносом обучения (transfer learning) с ImageNet и пирамидальным пулингом
Рис. П10.3 — классификация сцен ДЗЗ свёрточной сетью с переносом обучения (transfer learning) с ImageNet и пирамидальным пулингом
сегментация методом U-Net: сжимающая часть извлекает признаки, расширяющая — восстанавливает пространственное разрешение по маске
Рис. П10.4 — сегментация методом U-Net: сжимающая часть извлекает признаки, расширяющая — восстанавливает пространственное разрешение по маске
двухсетевая архитектура L²CSN для классификации локальных сцен снимка (земля/море/побережье/река) по вырезанным фрагментам
Рис. П10.5 — двухсетевая архитектура L²CSN для классификации локальных сцен снимка (земля/море/побережье/река) по вырезанным фрагментам

Note

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

Плагин Deepness: Deep Neural Remote Sensing

Deepness (Deep Neural Remote Sensing) — плагин для QGIS, который позволяет применять готовые модели глубокого обучения (в формате ONNX) для сегментации, детекции и регрессии по данным дистанционного зондирования Земли, не требуя от пользователя навыков программирования.

Установка: 1. Откройте QGIS и перейдите в МодулиУправление модулями. 2. В строке поиска введите Deepness. 3. Найдите плагин Deepness: Deep Neural Remote Sensing и нажмите Установить. 4. Плагин требует Python-библиотек для глубокого обучения — после установки основного плагина согласитесь на предложенное обновление зависимостей.

переход в QGIS: «Модули» → «Управление модулями»
Рис. П10.6 — переход в QGIS: «Модули» → «Управление модулями»
плагин Deepness: Deep Neural Remote Sensing в менеджере модулей QGIS
Рис. П10.7 — плагин Deepness: Deep Neural Remote Sensing в менеджере модулей QGIS

После установки плагин станет доступен во вкладке МодулиDeepness.

пункт Deepness в меню «Модули» после установки
Рис. П10.8 — пункт Deepness в меню «Модули» после установки

Интерфейс плагина

Окно плагина открывается через МодулиDeepness и состоит из нескольких групп настроек.

Входные данные (Input data): - Input layer — слой с исходным снимком. - Processed area mask — какую часть снимка обрабатывать: только видимую часть экрана, весь слой целиком или только область под заданными полигонами.

варианты Processed area mask: Visible part / Entire layer / From polygons
Рис. П10.9 — варианты Processed area mask: Visible part / Entire layer / From polygons

Модель (ONNX Model): - Model type — какую задачу решает модель. - Model file path — путь к файлу модели в формате ONNX.

список типов моделей: Segmentor, Regressor, Detector, Superresolution, Recognition
Рис. П10.10 — список типов моделей: Segmentor, Regressor, Detector, Superresolution, Recognition

Типы моделей:

Детектор
(Object Detection)
обнаружение и локализация объектов (здания, автомобили) ограничивающими рамками
Регрессор
(Pixel Regression)
прогноз непрерывного значения для каждого пикселя (высота застройки, плотность растительности)
Сегментатор
(Mask Segmentation)
классификация каждого пикселя по категориям (дороги, вода, лес)
Супер-разрешение
(Super Resolution)
увеличение детализации изображения нейросетью

Рис. П10.11 — четыре типа моделей Deepness и решаемые ими задачи

Параметры обработки (Processing parameters): - Resolution — с каким разрешением (см/пиксель) работает модель. - Tile size — размер стороны тайла в пикселях, который модель принимает на вход (обычно определяется автоматически из файла модели). - Tiles overlap — перекрытие между соседними тайлами.

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

снимок, разбитый на перекрывающиеся прямоугольные тайлы перед подачей в модель
Рис. П10.12 — снимок, разбитый на перекрывающиеся прямоугольные тайлы перед подачей в модель
панель параметров обработки: Resolution, Tile size, Tiles overlap, а также параметры сегментации и экспорта обучающих данных
Рис. П10.13 — панель параметров обработки: Resolution, Tile size, Tiles overlap, а также параметры сегментации и экспорта обучающих данных

В блоке Segmentation parameters (только для моделей-сегментаторов) задаются порог вероятности класса и минимальный размер сегмента для удаления шумовых областей. После настройки всех параметров запуск производится кнопкой Run внизу окна.

Model ZOO — готовые модели

В официальной документации плагина (qgis-plugin-deepness.readthedocs.io) есть раздел Model ZOO — набор готовых моделей от разработчиков, распределённых по категориям (сегментация, регрессия, распознавание), с описанием, входными параметрами и примером результата.

страница Model ZOO: таблица готовых моделей с указанием размера входа, разрешения и описания
Рис. П10.14 — страница Model ZOO: таблица готовых моделей с указанием размера входа, разрешения и описания

Для каждой модели в таблице указаны: название, размер входного изображения, требуемое разрешение (см/пиксель), описание (на каких данных обучена, что на выходе) и пример изображения-результата.

столбцы таблицы Model ZOO: Model, Input size, CM/PX, Description, Example image
Рис. П10.15 — столбцы таблицы Model ZOO: Model, Input size, CM/PX, Description, Example image
пример результата модели Corn Field Damage Segmentation: контуры повреждённых участков поля
Рис. П10.16 — пример результата модели Corn Field Damage Segmentation: контуры повреждённых участков поля

Пример 1: детекция автомобилей

Для тестовой задачи возьмём подложку Google Satellite: ИнтернетQuickMapServicesGoogleGoogle Satellite.

подключение подложки Google Satellite через QuickMapServices
Рис. П10.17 — подключение подложки Google Satellite через QuickMapServices

Найдите на карте город и приблизьтесь к любой стоянке с автомобилями (например, парковка в Москве).

парковка с автомобилями на подложке Google Satellite
Рис. П10.18 — парковка с автомобилями на подложке Google Satellite

Скачайте модель детекции автомобилей и укажите путь к файлу .onnx в поле Model file path.

файл модели детекции автомобилей car_aerial_detection...onnx
Рис. П10.19 — файл модели детекции автомобилей car_aerial_detection...onnx
поле Model file path с выбранным файлом модели и кнопкой Browse
Рис. П10.20 — поле Model file path с выбранным файлом модели и кнопкой Browse
диалог выбора файла модели в формате ONNX
Рис. П10.21 — диалог выбора файла модели в формате ONNX

После выбора файла нажмите Load default parameters, чтобы подставить параметры, с которыми модель обучалась.

кнопка Load default parameters
Рис. П10.22 — кнопка Load default parameters

Установите Tiles overlap = 30 % и Confidence = 0,10 (порог уверенности модели в своём прогнозе; чем он ниже, тем больше объектов будет найдено, но выше риск ложных срабатываний).

параметры Tiles overlap = 30 % и Confidence = 0,10
Рис. П10.23 — параметры Tiles overlap = 30 % и Confidence = 0,10

Нажмите Run. Результат — обнаруженные автомобили, отмеченные рамками, и отдельный векторный слой с найденными объектами.

результат детекции: найденные автомобили отмечены зелёными рамками
Рис. П10.24 — результат детекции: найденные автомобили отмечены зелёными рамками
слой model_output с классом car в панели слоёв QGIS
Рис. П10.25 — слой model_output с классом car в панели слоёв QGIS

Пример 2: сегментация дорог

Вернитесь на страницу Model ZOO, найдите модель Roads Segmentation и скачайте её.

описание модели Roads Segmentation в Model ZOO
Рис. П10.26 — описание модели Roads Segmentation в Model ZOO

Модель разделяет снимок на классы «дорога» и «не дорога»; лучше всего работает на широких автомобильных дорогах, перекрёстках и кольцевых развязках.

результат сегментации дорог (розовым) на развязке с кольцевыми съездами
Рис. П10.27 — результат сегментации дорог (розовым) на развязке с кольцевыми съездами

Загрузите модель аналогично первому примеру и запустите обработку на новом участке.

исходный снимок транспортной развязки на подложке Google Satellite
Рис. П10.28 — исходный снимок транспортной развязки на подложке Google Satellite
параметры сегментации: применение порога вероятности класса и удаление мелких сегментов
Рис. П10.29 — параметры сегментации: применение порога вероятности класса и удаление мелких сегментов
пример результата сегментации на другой сцене
Рис. П10.30 — пример результата сегментации на другой сцене

Супер-разрешение (Super Resolution)

Super-resolution — технология, которая восстанавливает изображение высокого разрешения из одного или нескольких изображений низкого разрешения.

модели Super Resolution в Model ZOO: Residual Dense Network (RDN X2 и RDN X4)
Рис. П10.31 — модели Super Resolution в Model ZOO: Residual Dense Network (RDN X2 и RDN X4)

Качество моделей суперразрешения принято сравнивать по метрикам PSNR (пиковое отношение сигнал/шум) и SSIM (структурное сходство) — чем выше оба значения, тем ближе результат к эталонному изображению высокого разрешения.

сравнение результатов разных моделей суперразрешения (SRCNN, DRRN, RDN, SRGAN и др.) по метрикам PSNR/SSIM
Рис. П10.32 — сравнение результатов разных моделей суперразрешения (SRCNN, DRRN, RDN, SRGAN и др.) по метрикам PSNR/SSIM

Tip

Автора модели и статью, на основе которой она обучена, обычно можно найти в поле Description на странице Model ZOO — название модели или метода достаточно ввести в поисковике, чтобы найти саму статью.

Контрольные вопросы