Практика 10. Знакомство с нейросетями. Плагин Deepness
Свёрточные нейронные сети: базовые понятия
Искусственный нейрон — базовый элемент сети. Он принимает несколько входных сигналов, каждый из которых умножается на вес — число, показывающее важность сигнала. Затем все взвешенные входы суммируются, добавляется смещение (bias), и результат пропускается через функцию активации.
Свёрточные нейронные сети — разновидность нейросетей для обработки данных с сеточной структурой: изображений и видео. Такие сети анализируют пиксели (признаки), которые находятся близко друг к другу и содержат непрерывную визуальную информацию — яркость и оттенок.
Нейроны группируются в слои: - Входной слой — принимает исходные данные (например, 784 нейрона для изображения 28×28 пикселей). - Скрытые слои — обрабатывают данные, извлекая признаки. - Выходной слой — выдаёт результат (например, 10 нейронов для классификации цифр от 0 до 9).
Математика свёртки
Для изображения \(I\) и ядра \(K\) размером \(m \times n\):

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

Рассмотрим на числовом примере. Пусть дано изображение 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
Любая нейросеть имеет постоянный размер входа и постоянный размер выхода. Именно поэтому, как будет показано ниже, большое изображение снимка ДЗЗ приходится разрезать на одинаковые по размеру тайлы перед подачей в модель.
Примеры архитектур из научных статей



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-библиотек для глубокого обучения — после установки основного плагина согласитесь на предложенное обновление зависимостей.


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

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

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

Типы моделей:
(Object Detection)
обнаружение и локализация объектов (здания, автомобили) ограничивающими рамками
(Pixel Regression)
прогноз непрерывного значения для каждого пикселя (высота застройки, плотность растительности)
(Mask Segmentation)
классификация каждого пикселя по категориям (дороги, вода, лес)
(Super Resolution)
увеличение детализации изображения нейросетью
Рис. П10.11 — четыре типа моделей Deepness и решаемые ими задачи
Параметры обработки (Processing parameters): - Resolution — с каким разрешением (см/пиксель) работает модель. - Tile size — размер стороны тайла в пикселях, который модель принимает на вход (обычно определяется автоматически из файла модели). - Tiles overlap — перекрытие между соседними тайлами.
Поскольку нейросеть не может обработать весь снимок целиком (у неё фиксированный размер входа, см. заметку выше), изображение разрезается на тайлы с перекрытием — это нужно, чтобы объекты, попавшие на границу между тайлами, не потерялись и не разрезались пополам.


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

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


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

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

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



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

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

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


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

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

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



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

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

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