Научитесь выполнять надежную классификацию растительного покрова, используя окрестности NxN вокруг пикселя.

Введение

В последней части мы научились делать визуализацию и классификацию растительного покрова по высоте и интенсивности. В этой части мы рассмотрим, как выполнить более надежную классификацию, принимая во внимание соседство N x N вокруг пикселя. Соседняя область даст нам лучшее представление об изменении высоты и интенсивности вокруг этой точки. Если пиксель принадлежит траве или дороге, изменение высоты в соседней области будет меньше. Однако, если пиксель принадлежит деревьям, то изменение высоты будет значительно большим. Таким образом, мы можем лучше оценить, к какому классу принадлежит конкретный объект.

Данные

Мы использовали набор данных MUUFL Gulfport. Данные находятся в файле .mat. Мы можем прочитать файл .mat на python, используя библиотеку Scipy. В этой части мы узнаем, как выполнять классификацию растительного покрова, используя область соседства NxN, окружающую пиксель. Давайте начнем!

Выполнение

Шаг 1: Импорт библиотек

Шаг 2: Прочитайте файл и извлеките данные LiDAR и наземную правду.

Файл .mat содержит несколько имен полей структуры MATLAB. Поле под названием hsi содержит наземные данные, данные лидара и т. д. Описание файла .mat можно прочитать здесь. Мы будем извлекать данные LiDAR, наземную правду и изображение RGB из соответствующих полей структуры MATLAB.

Шаг 3: Найдите окрестность NxN вокруг каждого пикселя

Шаг 4: Измените основную правду

Мы берем область соседства 11x11 вокруг пикселя. Наземная истина содержит метки -1, 1, 2, … и 11. "-1" – это немаркированные данные. Нам нужны ярлыки 1, 2, … и 11. Теперь нам нужно закодировать метки от 0 до 10. Для этого мы просто вычтем 1 из меток истинности основания.

Шаг 5: Разделите данные на train-test, сохраните в файле npz и загрузите файл.

Мы разделяем данные на поезд и тест и перемешиваем данные поезд-тест, чтобы получить случайный набор поездов и выборок.

Позже мы проведем эксперимент Монте-Карло и в конце сообщим о средней точности. Для этого нам нужны случайные обучающие и тестовые выборки в каждом эксперименте.

Шаг 6: нормализуйте обучающие и тестовые данные

Шаг 7: Сбалансируйте данные поезда

Так как данные несбалансированные, печатаем все этикетки и их количество семплов. Мы установили порог 4000. Все ярлыки с частотой менее 4000 повторяются, при этом следите за тем, чтобы они не превышали 4000. Если частота определенных ярлыков меньше 4000, их индексы повторяются и добавляются к useful_indices, а если они уже больше 4000, они просто добавляются в полезные_индексы.

Шаг 8: Горячее кодирование меток

Шаг 9: Определите модель CNN для классификации

Шаг 8. Обучите модель, сделайте прогноз на основе тестовых данных и сообщите о точности

Мы выполнили метод Монте-Карло с 7 итерациями одного и того же кода. Каждый раз мы брали случайный набор обучающих и тестовых образцов. Мы достигли средней точности 87,65% ± 3,08. Матрица путаницы для лучшей точности показана ниже:

Полный код доступен на GitHub здесь.

Заключение

В этой части мы научились классифицировать классы растительного покрова, используя регион соседства 11x11. Соседние пиксели дают лучшее представление об изменении высоты и интенсивности вокруг интересующей области. Мы можем поэкспериментировать с различными размерами патча, поскольку функция размера патча является обобщенной. Учет патчей дает лучшую точность, чем отдельные пиксели. Мы по-прежнему сталкиваемся с некоторой путаницей между «преимущественно травой» и «смешанным грунтом», «тенью здания» и «деревьями», «тротуаром» и «дорогой» и т. д. Однако эта путаница невелика.

Надеюсь, эта статья окажется для вас полезной!

Вперёд, аллигаторы! 🐊

Рекомендации

П. Гадер, А. Заре, Р. Клоуз, Дж. Эйткен, Г. Туэлл, «MUUFL Gulfport Hyperspectral and LiDAR Airborne Data Set», Университет Флориды, Гейнсвилл, Флорида, Tech. Отчет РЭП-2013–570, октябрь 2013 г.

X. Du и A. Zare, «Технический отчет: карта истинности меток сцены для набора данных MUUFL Gulfport», Университет Флориды, Гейнсвилл, Флорида, Tech. Отчет 20170417, апрель 2017 г.