Coder Social home page Coder Social logo

nikita-belyakov / cloud_snow_segmentation Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 1.0 917.57 MB

Research work for cloud and snow segmentation problem using meteorological satellite Electro-L №2 multispectral data, also suitable for GOES-16,17 multispectral data. This project includes all needed functions and utils for preprocessing multispectral data to make your own dataset for cloud and (or) snow segmentation problem

Jupyter Notebook 100.00%
electrol2 geostationary goes-r manet modis-data multispectral-images pytorch remote-sensing satellite segmentation

cloud_snow_segmentation's Introduction

Cloud and snow semantic segmentation for meteorological satellite Electro-L № 2 data

About:

This project is devoted to the cloud and snow semantic segmentation using multispectral satellite images, received from a multizone scanning instrument (MSU-GS) used for hydrometeorological support and installed on the Russian satellite Electro-L No. 2. As the additional information, geographical information (latitude, longitude and altitude) is used. The main difficulty of snow and cloud discrimination using Electro-L No. 2 data is the absence of SWIR channels in the range 1300-1600 nm, which are necessary for accurate snow & cloud distinction (NDSI tests). The repo includes a self-collected dataset with Electro-L No. 2 imagery, cloud masks for it from the geostationary satellites GOES-16 & Meteosat-10 and snow masks from Terra/MODIS. We also attach a trained Multi-Scale Attention Network (MANet) segmentation model weights (from SMP: https://smp.readthedocs.io/en/latest/models.html), able to do accurate segmentation of cloud ansd snow for MSU-GS data. The developed algorithm works in any season of the year during the daytime and is able to perform cloud and snow segmentation in real time mode for Electro-L No.2 and GOES-R data.

Cite: https://doi.org/10.1016/j.asr.2024.03.019

Setup python version

The INFERENCE.ipynb and other notebooks from both folders mentioned above have been run with python 3.9.7 on Windows 10 OS with NVIDIA CUDA supported (Adapt all needed packages versions accroding your Python version)

All required packages are written in requirements.txt

  • It's recomended to use Pytorch version with CUDA support! To install pytorch with cuda run appropriate command in your console from here:
    • https://pytorch.org/get-started/locally/
    • (We used this version of cudann: pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116)
  • There are seperated requrements.txt for each .ipynb in every folder in this repo! Be careful!
  • Just run in your .ipynb this cell:
 !pip install -r requirements.txt

Acknowledgments:

Work is greatly supported by Non-commercial Foundation for the Advancement of Science and Education INTELLECT

Also thanks a lot to https://github.com/skolpin & https://github.com/VasilievArtyom for a huge assist for creating this project!

cloud_snow_segmentation's People

Contributors

nikita-belyakov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

edunetarchive

cloud_snow_segmentation's Issues

Планы до 13.03

  • Получить результаты обучения модели на LEVIR-CS
  • Подумать о получении априорной разметки человеком для нескольких снимков ELECTRO L1
  • Разобраться с цветовыми каналами с LEVIR-CS, почему там снимки выглядят как сепия

Планы до 07.06.23

  • Начать переписывать курсовую под статью (ИКИ РАН шаблон)!

  • Переобучить MANet на датасете с Электро Л2 и масками с GOES-16 с учетом световой коррекции

  • Попробовать получить репроекции на все месяцы\даты с GOES-16 для funetunning'a

  • Попробовать получить достаточно точные репроекции на все месяцы\даты с SEVIRI для funetunning'a

  • Почистить код и сделать пример inference'a на небольшой части данных, который влезет в github

  • Посмотреть на работу модели без геоинфы для раздела explainability

  • сгенерить requirements.txt

  • Найти альтернативный источник масок с GOES-16

  • Выкачать маски снега Terra\MODIS и clear_sky GOES-16 за все месяцы в 2022 году

Планы до 24.05.2023

  • Писать и редачить курсовую!!!

  • Получить метрики для классификатора и MANet на одних и тех же снимках для сравнения

  • Для всех дат и времен сделать световую коррекцию для Электро Л2

  • Переобучить MANet на датасете с Электро Л2 и масками с GOES-16 с учетом световой коррекции

  • Проверить и уточнить репрекции на все даты с GOES-16 для funetunning'a

  • Если выйдет точная репроекция, то написать автоэнкодер для DDA каналов с GOES-16 в каналы Электро Л2

  • Почистить код и сделать пример inferenc'a на небольшой части данных, который влезет в github

  • Подумать\попробовать что-то сделать для раздела explainability

Планы до 19.06.23

  • Дописать и шлифануть курсовую, поправить ссылки на источники

  • Сгенерить несколько requirements.txt - отдельно для инференса, отдельно для обучения и тд

  • Залить блокнот с пайплайном обучения модели на датасете с Электро Л2 на github

  • Написать readme инструкцию пользования кодом и тезисно саму задачу

  • Распарсить оставшиеся снимки с Л2 за 2021, 2022 и 2023, маски облаков и снега

  • Попробовать обработать цветные маски снега MODIS на 2023 в бинарные маски

  • За сплитить оставшиеся снимки на патчи для finetunning'a модели

  • На дополненном датасете дообучиться еще раз с инициализацией весов с GOES

  • Провалидироваться и потеститься на снимках за 5 месяцев для лучшей репрезентативности

Планы до 24.04.2023

  • Обучить трансформеры MAnet, PAN

  • Попробовать и подумать про U-2-Net и TverskiyLoss вместо DICE

  • Voting ensembling моделей сегментации и классификатора

  • Почитать про Data Adaptation датасета LEVIR_CS и Электро Л3 inference

  • Поаналозировать гистограммы спектральных каналов Levir и Электро Л3, чтоб подогнать одно под другое

  • Поискать еще разметку с GOES, GK-2A, SKYSAT

  • (возможно!?) Сделать несколько сэмплов ручной разметки с Электро Л3

Планы до 03.05.2023

  • Чекнуть, есть ли для SEVIRI radiance, BT в файлах L2 в открытом доступе - НЕМА(((

  • Все каналы, маски и пр. перезаписать в формате TIF, ибо JPG - ЗЛО!

  • Попробовать уточнить маски облаков из Clear Sky GOES (более разреженными сделать)

  • Собрать несколько снимком GOES 16 и 17, разбить на патчи и сделать датасет из нескольких папок

  • Модифицировать класс датасета для GOES 16 и 17 под несколько директорий и с выборов прогона всех патчей или только непустых + добавить возможность выбора числа спектральных каналов до всех 10

  • Пересчитать mean, std для Электро на непустых патчах

  • Уточнить параметры репроециорования для Электро и попробовать сматчить часть маски облаков с GOES'a с Электро Л2

  • Подумать над предобучением энкодера через BYOL на всевозможных геостационарных снимках

  • Добавить подсчет метрик IoU, F1 для снега и облаков

  • Увеличить выборку с GOES'ов до 18 снимков для всех времен года

  • Правильно линейно нормировать все BT каналы для GOES'ов и Электро

  • Обучить MANet на всех каналах, которые совпадают у GOES'ов и Электро

  • Добавить weighted sampler для баланса снежных патчей

  • Подумать, как исправить черный верх в карте снега с MODIS !!!!

TO DO LIST ASSA ARTICLE!

  • Appendix for WRS on ELECTRO-L No. 2
  • remake patches with predicts with correct stats
  • Appendix with pretrain on GOES-16,17?
  • Appendix with models comparison on Levir CS?
  • Refit MANet without WRS to make a new table
  • Make inference on snow date
  • Explainability remake
  • Overfitting check up on aux info remake
  • References clean and rewrite in a needed format

Планы до 17.04.2023

  • Подумать, как блендить классификатор и сегментатор по предиктам снега и облачности

  • Пообучать U-Net++ дальше на Levir_CS с CosineAnnealing scheduler и повысить IoU via souping

  • Потюнить классификатор, чтоб поднять F1 до уровня, как в статье

  • Завалидироваться на масках от НИЦ Планета, если пришлют их

  • Написать черновик курсовой !!!!

  • Отредачить презентацию к воркшопу 2

Планы до 10.04.2023

  • Попробовать классификатор 11*11 на картинке из HDF5 с radiance, brightness

  • Сделать постпроцессинг масок, используя карты снега MODIS и убрать черные квадраты в предиктах

  • Обучить модель DeepLabV3+ на датасете Levir CS

  • Получить и распарсить маски снега и облаков из НИЦ Планета

  • Попробовать разобраться с таблицами перехода к radiance, brightness temperature в L1.5 файлах

ПЛАНЫ ДО 15.05.2023

  • Уточнить репроекцию маски облаков с GOES-16 на Электро Л2 (Серега хелп)) - подобрать нужные параметры эмпирически - ОК для октября и июля, в марте 2022 картинки Электро сдвинуты вверх, в январе 2023 - вверх и сильно вправо!

  • После репроекции масок облаков сделать датасет для Электро Л2 для finetunning'a MANet'a

  • Дообучить MANet на половинках снимка с Электро Л2 с масками с ГОЕСа (finetunning) -чет все плохо, без понятия пока - почему(...

  • Сделать soup MANet'ов после косинусного scheduler'a, чтоб чутка улучшить качесство для GOES'ов (НЕ СУПИТСЯ ПОКА, на 81 эпохе SOTA все равно на тесте)

  • Подумать про предобучение энкодера MANet'a на снимках ГОЕС'ов и Электро (реализация в коде)

  • Поискать сервера\хранилища, чтоб выложить туда данные для inference (мб выйдет сжать и залить на github)

  • Начать писать\переписывать курсач с учетом нового собранного датасета с ГОЕСов

  • autoencoder squeeze extintion goes to electro l2

  • Для proof of concept попробовать пообучать прошлую модель MANet только с RGB каналами, но с сэмплером

ПЛАНЫ ДО 30.03.23

  • Добавить геометрические аугментации в пайплайн обучения на GPU через kornia

  • Попробовать использовать Ranger21 optimizer вместо AdamW

  • Попробовать сопоставить карты высот в разрешении 10*10км с aster GDEM на 2D развертке со снимком ЭЛЕКТРО Л1

  • Поискать способы ручной разметки в микроволновых каналах по разным порогам и через анализ гистограмм каналов

  • Уточнить\проверить правильность световой коррекции по углу Солнца для видимого спектра ЭЛЕКТРО Л1

  • Попробовать оптимизировать скорость работы световой коррекции по углу Солнца

  • Подумать, как матчить маски снега со смешанной маской облаков и снега с SEVIRI

  • Попробовать прогнать СNN классификатор из статьи для текстур 11*11 на изображении ЭЛЕКТРО Л1 с шагом 1 пиксель

Планы к ВШ2

  • Определиться с тем, как оценивать качество модели на данных ELECTRO L1
  • Применить Transfer Learning с модели, обученной на LEVIR-CS, к данным ELECTRO L1
  • Экспериментировать с параметрами обучения, функциями потерь и т. д.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.