Руководство к действию для классификации данных методом опорных векторов
Обсудить в форуме Комментариев 10
Метод опорных векторов (Support Vector Machines) - один из способов решения задачи классификации из группы методов машинного обучения (Machine Learning).
Это статья не ставит целью объяснение того как работает SVM, но пошагово демонстрирует процесс классификации с программным обеспечением imageSVM, использующим IDL и работающим в ENVI.
Для начала работы, необходимо иметь 1 или несколько снимков, например Landsat. Пример рассмотренный здесь связан с дешифрированием классов изменений, поэтому используется два изображения за разные года.
ImageSVM можно загрузить, предварительно зарегистрировавшись на сайте Университета Гумбольдта, он может работать под IDL ENVI и в виртуальной машине IDL, без ENVI. Получить ImageSVM.
Перед началом работы необходимо собрать некоторое количество тренировочных данных в точечной форме, где каждой точке соответствует выходной класс. Значение класса должно храниться в одном из атрибутивных полей, например ID. Рекомендованное количество точек - 100 на класс. Рекомендуется производить сбор тренировочных данных в порядке увеличения класса 1, 2, 3 и т.д., это облегчит управление данными и экспорт результирующей классификации в формат GeoTIFF.
Система координат точечного слоя должна совпадать с СК классиицируемых данных ДЗЗ.
Точечный слой должен иметь корректный PRJ файл.
В качестве исходных данных используются изображения в формате GeoTIFF. В случае дешифрирования классов изменений, как правило необходимо собрать данные ДЗЗ в единое композитное изображение, где первая группа слоёв соответствует снимкам "до", а вторая "после".
Это можно сделать в QGIS, ERDAS IMAGINE, ENVI (подробнее).
Если мультиканальное изображение сделано не в ENVI, то далее необходимо:
Открыть мультиканальный снимок в ENVI: File\Open Image File
Сохранить файл как standard ENVI raster: File\Save File As\ENVI Standard
Закрыть изначально открытый снимок и переоткрыть его из файла ENVI Standard.
Для работы со снимком в imageSVM необходимо сначала масштабировать растр.
imageSVM\Pre-Processing\Scale image
Необходимо выбрать: Individual Bands и Set extreme Values to 0/1, а также указать имя выходного файла. После этого необходимо нажать Accept.
Откроем точечный слой в формате shape: File\Open Vector File
В диалоге открытия, убедимся в правильности имени и пути выходного файла EVF (они назначаются автоматически) и убедимся что правильно распозналась проекция слоя. Нажмем OK.
Экспортируем слой в ROI
Для этого выберем его в появившемся списке слоев:
Выберем: Choose File\Export layers to ROI
Сконвертируем все записи слоя EVF в новый ROI используя поле ID в качестве источника значений:
Откроем масштабированное изображение в просмотровщике данных. Для этого вызовем список растровых слоёв: Window\Available Bands List
Откроем в просмотровщике снимок, не важно в какой комбинации: Load RGB
Чтобы вызвать редактор ROI щелкнем правой кнопкой на изображении и выберем ROI Tool, появится окно с таблицей где каждой точке ROI соответствует запись:
ROI Tool используется, чтобы объединить все точечные значения в единые тренировочные классы и назначить им цвета. Объединение производится следующим образом:
1. В меню: Options\Merge Regions
2. В новом окне, выбираем первую запись для первого класса как Base ROI (левая часть окна). Иногда, список пролистан в конец, в этом случае необходимо переместиться в самое начало.
3. В правой части окна, нужно выбрать все ROI имеющие тот же класс (например ID=1), для выбора можно использвоать SHIFT. Таким образом, слева выбираем первую запись класса, справа - все записи этого класса. Переключатель Delete Merged ROIs должен быть установлен в Yes.
5. OK
В результате все ROI будут объединены по ID этого класса.
Эту операцию нужно повторить для других классов. Не забудьте каждый раз изменять базовый ROI. После того как все классы объединены, щелкните правой кнопкой на каждый класс и выберите подходящий цвет, который будет обозначать этот класс на результирующей классификации.
Далее нужно растеризовать тренировочные данные: Options\Create Class Image from ROIs. Для этого, выберите все классы и нажмите OK, будет создано новое изображение и файл hdr.
Можно также сохранить созданные классы и в векторной форме. Для этого в ROI Tool выберите: File\Save ROIs, выберите все классы и имя файла и нажмите OK.
Векторный слой будет иметь расширение *.roi. После этого ROI Tool можно закрыть.
Для обучения классификатора с помощью тренировочных данных выберите: imageSVM\Classification\Parameterize SV Classifier (SVC)
Выберите масштабированное изображение и созданную растровую тренировочную матрицу и нажмите Accept:
Далее нужно выбрать имя файл в который будет сохранена обученная модель:
Нажмите OK и дождитесь окончания процесса. Он может занять несколько минут в зависимости от количества тренировочных данных. Например: для 1200 тренировочных точек на Pentium 4 параметризация занимает 2.5 минуты.
Полученную модель можно использовать для классификации изображения:
imageSVM\Classification\Classify Image
Выберите файл SVC созданный при параметризации на предыдущем шаге и масштабированное изображение и нажмите Accept:
В следующем окне выберите имя для результирующей классификации и выключите режим Output Class Probabilities для более быстрого обсчета. Нажмите Accept.
Классификация может занять значительное время, для сцены Landsat с 12 каналами (6 каналов за период) и 1200 тренировочных точек время классификации составляет примерно 2 часа.
Обсудить в форуме Комментариев 10
Последнее обновление: September 09 2021
Дата создания: 04.08.2010
Автор(ы): Максим Дубинин
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).