Данный сервис позволит анализировать изменения лесопарковых площадей Ростова-на-Дону в соответствии с данным кейс-заданием: https://drive.google.com/file/d/1nDDueI9eiSFpFzIJgmX8TeIPcJiD9mwH/view?pli=1
-
✅ Минимально работающий Web-клиент для интерактивного анализа
-
➡️ Реализация основных архитектур FCCNN - Unet и DeepLab:
- ✅ Обучены пробные версии моделей, пока не показывающие достаточной точности
- ✅ Реализована интеграция моделей с Web-клиентом
- ...
-
❌ Выбор баз снимков дистанционного зондирования Земли
-
❌ Выбор периода
-
❌ Отчет с аналитикой
- U-Net[1] - доступно в Web-клиенте
- UNet++[2] - доступно в Web-клиенте
- DeepLabV3+[3]:
- версия с ResNet50 енкодером - доступно в Web-клиенте
- версия с EfficientNetV2S енкодером - доступно в Web-клиенте
Блокноты с процессом обучения моделей доступны в директории train.
На рис. 1 показано сравнение метрики Intersection-Over-Union вывода моделей и размеченных вручную масок (данные для сравнения расположенны в models /benchmark_data). Как видно, на данный момент, самые лучшие результаты показала архитектура DeepLabv3+ с EfficientNetV2S енкодером, особенно на уровне приближения 17 (модели показывают достаточное качество анализа изображений только с последних 3-х самых высоких уровней приближения - 16, 17, 18). Однако, размеченных данных (пока что) крайне мало, поэтому результаты нельзя назвать точными.
На рис. 2 и рис. 3 видно, что эта же модель не идеально выделяет лесопарковые площади, особенно в городской среде (однако, тут играет роль и процесс постпроцессинга вывода модели, это тоже не доработано).
Для обучения моделей был использован датасет аэрофотоснимков LandCover.ai-v1[4][5]. Так как данный датасет содержит более одного размеченного класса, то для обучения была выбранна подвыборка примеров содержащих достаточную концентрацию класса Woodland, а также класса Building, так как, в данном случае необходимо обучить модели сегментировать растительность в преимущественно городской среде. Затем, из полученной подвыборки были убраны остальные метки классов кроме Woodland. Процесс предобработки и аугментации датасета сохранен в блокноте train/data_work.ipynb.
При запуске контейнера по умолчанию будут использованы настройки из файла backend\config.json
(путь до файла можно изменить в системной переменной 'CFG-PATH'). Данный файл имеет следующую структуру:
{
*Важно: не используйте абсолютные пути, все пути должны быть относительны директории /backend*
Основные настройки
"logs_path": - путь до .txt файла где будут записываться логи сервера
"models": - список моделей для анализа снимков со спутников которые будут использованны, на данный момент доступны "U-Net", "Unet++", "ResNet-DeepLabV3+" и "EfficientNet-DeepLabV3+"
"weights_destination": - расположение .h5 файлов с обученными весами для моделей: 'local' - искать веса в локальной директории, 'remote' - брать веса из удаленной Google Drive директории
"local_weights": { Настройки которые будут применены при выборе локальной загрузки весов
"weights_dir_path": - путь до локальной директории с .h5 файлами весов
},
"remote_weights": { Настройки которые будут применены при выборе удаленной загрузки весов
"weights_dir_id": - id удаленной Google Drive директории с .h5 файлами весов
"google_drive_credentials_path": - путь до файла с Google Drive credentials с api key для доступа к вышеописанной удаленной директории
}
}