Giter VIP home page Giter VIP logo

no_fire_with_ai_aij2021's Introduction

NoFireWithAI: прогнозирование степени пожароопасности

link to github
Вебинар с разбором задачи
Соревнование алгоритмов, прогнозирующих пожароопасность региона на 8 дней вперёд.

Участникам предлагается спрогнозировать пожар в определённом регионе России, используя различные, имеющиеся в открытом доступе, данные.

Результаты соревнования

Corrected forecast

Постановка задачи

Разобьём пространство на территории России на ячейки размером 0,2x0,2 градуса и для каждой ячейки поставим метку пересечения с полигоном пожара в соответствующий день. Таким образом, получим набор прямоугольников с меткой 1, если этот участок горел, и 0 в обратном случае.

Требуется разработать алгоритм, выдающий прогноз возникновения пожара (0 или 1) на 1, 2, 3, 4, 5, 6, 7 и 8 дней вперёд для заданной ячейки на определённую дату. Решение должно быть реализовано в виде программы, которая принимает на вход CSV таблицу со следующими столбцами:

id - id строки для оценки предсказаний,
dt - дата,  
lon_min - минимальное значение долготы ячейки,  
lat_min - минимальное значение широты ячейки,  
lon_max - максимальное значение долготы ячейки,  
lat_max - максимальное значение широты ячейки, 
lon - долгота пожара, зафиксированного в ячейке на данную дату (пусто если пожара не было),  
lat - широта пожара, зафиксированного в ячейке на данную дату (пусто если пожара не было),  
grid_index - индекс ячейки,
type_id - тип пожара (пусто если пожара не было),  
type_name - расшифровка типа пожара (пусто если пожара не было).  

На выход необходимо сформировать таблицу, где для каждой ячейки (строки - id из входного файла) будут указаны 8 чисел (0 или 1), означающих наличие пожара через 1, 2, 3, 4, 5, 6, 7 и 8 дней соответственно. В проверяющую систему необходимо отправить код алгоритма, запакованный в ZIP-архив. Решения запускаются в изолированном окружении при помощи Docker.

В качестве дополнительных данных, доступных участникам как на момент обучения моделей, так и в момент инференса в проверяющей системе, могут быть использованы:

  • Исходные данные по произошедшим пожарам - train_raw.csv;
  • Пример таблицы для которой требуется сформировать прогнозы пожаров - sample_test.csv;
  • Предобработанные исходные данные, описываемые в базовом решении - train.csv
  • Данные openstreetmap - russia-latest.osm.pbf
  • Данные по населённым пунктам РФ (https://wiki.openstreetmap.org/wiki/RU:Key:place) - city_town_village.geojson
  • Данные реанализа, полученные от Copernicus.eu (ERA5 — данные реанализа "(2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS)". ) Подробное содержание датасета приведено в input/README.md

Также участники могут использовать для обучения моделей любые открытые источники данных, например спутниковые снимки и индексы пожароопасности. Однако стоит учитывать, что после загрузки решения в проверяющую систему у моделей не будет доступа в интернет и все необходимые для прогноза дополнительные данные нужно упаковать в docker-контейнер.

Формат решения

В проверяющую систему необходимо отправить код алгоритма, запакованный в ZIP-архив. Решения запускаются в изолированном окружении при помощи Docker. Время и ресурсы во время тестирования ограничены. Участнику нет необходимости разбираться с технологией Docker.

Содержимое контейнера

В корне архива обязательно должен быть файл metadata.json следующего содержания:

{
    "image": "cr.msk.sbercloud.ru/aicloud-base-images-test/custom/aij2021/infire:f66e1b5f-1269",
    "entrypoint": "python3 /home/jovyan/solution.py"
}

Здесь image — поле с названием docker-образа, в котором будет запускаться решение, entrypoint — команда, при помощи которой запускается решение. Для решения текущей директорией будет являться корень архива.

Для запуска решений можно использовать существующее окружение:

  • cr.msk.sbercloud.ru/aicloud-base-images-test/custom/aij2021/infire:f66e1b5f-1269Dockerfile с описанием данного image и requirements с библиотеками

Подойдет любой другой образ, доступный для загрузки из sbercloud. При необходимости, Вы можете подготовить свой образ, добавить в него необходимое ПО и библиотеки (см. инструкцию по созданию Docker-образов для sbercloud); для использования его необходимо будет опубликовать на sbercloud.

Ограничения

В течение одного дня Участник или Команда Участников может загрузить для оценки не более пяти решений. Учитываются только валидные попытки, получившие численную оценку.

Контейнер с решением запускается в следующих условиях:

  • 94 Гб оперативной памяти;
  • 3 vCPU;
  • 1 GPU Tesla V100 32 Gb;
  • время на выполнение решения: 30 минут;
  • решение не имеет доступа к ресурсам интернета;
  • максимальный размер упакованного и распакованного архива с решением: 10 Гб;
  • максимальный размер используемого Docker-образа: 25 Гб.

Проверка качества

Качество решения оценивается на отложенной выборке.

Целью данного соревнования является прогнозирование начала пожара. Оценка как быстро этот пожар потушат зависит от многих факторов и не является приоритетной для данной задачи. Поэтому для расчёта метрики используются только метки начала пожара. После первой метки начала пожара (т. е. первой "1" в прогнозе) будем считать, что ячейка "горит" все оставшиеся дни:

Corrected forecast

В общем виде формула расчёта метрики:

total_error = 1 - sum((C**(penalty_i / 16) - 1) / (C-1)) / N

penalty_i = (-2) * (sum(gt_corr_i) - sum(pred_corr_i)), штраф для i-ой строки, если пожар случился раньше, чем прогнозировался
penalty_i = (sum(gt_corr_i) - sum(pred_corr_i)), в ином случае

где N - количество строк в прогнозе,
С=5 - нормировочный коэффициент, 
pred_corr_i - скорректированный прогноз пожара для i-ой строки,
gt_corr_i - скорректированное действительное состояние i-ой строки.

Для финальной оценки можно выбрать 3 решения. По умолчанию это решения с наилучшей метрикой на public-лидерборде. Большее значение метрики соответствует лучшему результату (лучшее значение метрики → 1, худшее → 0).

В случае одинаковых значений метрики у нескольких Участников, их решения оцениваются по processing time (время, затраченное на обработку задач). Чем быстрее обрабатывается решение, тем выше позиция в лидерборде.

Если же и значения метрик, и processing time моделей у нескольких участников совпадают, то будет учитываться время загрузки решения на Сайт Конкурса. Ранее загруженному решению на Сайт Конкурса будет присвоено более высокое место.

Призовой фонд

1 место - 500 000 рублей;
2 место - 250 000 рублей;
3 место - 150 000 рублей;

Дополнительно, есть возможность получить специальный приз - 100 000 рублей, который выдаётся на основании заключения экспертной комиссии, оценивающей применимость решения для прогнозирования опасных пожаров. Комиссия учитывает, но не ограничивается только ими, следующие факторы:

  • интерпретируемость модели;
  • возможность определения степени важности используемых признаков;
  • общее количество признаков и скорость их подготовки;
  • скорость работы модели и её размер.

Участники, претендующие на спец. приз должны:

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

Пользовательское соглашение
Правила соревнования

no_fire_with_ai_aij2021's People

Contributors

andrewtrefilov avatar denndimitrov avatar izemtsova avatar maximazzik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

no_fire_with_ai_aij2021's Issues

Problems installing cfgrib on colab.

I'm trying to run the Baseline notebook but I cannot import cfgrib, hence I cannot proceed further.
Please find the traceback below:

Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/usr/lib/python3.7/runpy.py", line 142, in _get_module_details
return _get_module_details(pkg_main_name, error)
File "/usr/lib/python3.7/runpy.py", line 109, in _get_module_details
import(pkg_name)
File "/usr/local/lib/python3.7/dist-packages/cfgrib/init.py", line 19, in
from .cfmessage import CfMessage
File "/usr/local/lib/python3.7/dist-packages/cfgrib/cfmessage.py", line 29, in
from . import messages
File "/usr/local/lib/python3.7/dist-packages/cfgrib/messages.py", line 28, in
import eccodes # type: ignore
File "/usr/local/lib/python3.7/dist-packages/eccodes/init.py", line 13, in
from .eccodes import * # noqa
File "/usr/local/lib/python3.7/dist-packages/eccodes/eccodes.py", line 12, in
from gribapi import (
File "/usr/local/lib/python3.7/dist-packages/gribapi/init.py", line 13, in
from .gribapi import * # noqa
File "/usr/local/lib/python3.7/dist-packages/gribapi/gribapi.py", line 34, in
from . import errors
File "/usr/local/lib/python3.7/dist-packages/gribapi/errors.py", line 16, in
from .bindings import ENC, ffi, lib
File "/usr/local/lib/python3.7/dist-packages/gribapi/bindings.py", line 34, in
raise RuntimeError("Cannot find the ecCodes library")
RuntimeError: Cannot find the ecCodes library

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.