Несколько месяцев назад мы запустили первую в мире бесплатную интерактивную карту, с помощью которой можно посмотреть информацию о любом поле в США и Европе. Про карту написали десятки изданий, а на Product Hunt она собрала беспрецедентные для продукта из агросектора полторы тысячи лайков (и в итоге стала AI & Machine Learning Product of the Year 2018). Мы разрабатывали карту два месяца — вот как это было.

Интерактивная карта построена на алгоритмах машинного обучения и спутниковых снимках. В ней собрана информация о 60 миллионах полей и 27 культурах в 44 странах Европы и США. Данные – за три года. Все поля мы распознали с помощью ML по спутниковым снимкам. При помощи карты можно как отслеживать тенденции на уровне стран и регионов, так и наблюдать за развитием конкретного поля. Например, вы можете узнать, сколько площадей было занято кукурузой в США в 2016 году (49,1 миллионов гектаров) или в каком регионе Бельгии больше всего пшеничных полей (Валлония).


Европа на минимальном зуме

При помощи карты можно узнать информацию и по отдельному полю: его размер, культуру, график развития и комплексный показатель Field Score. Он рассчитывается по индексу NDVI, климатическим показателям и относительной урожайности поля. В любой момент вы можете посмотреть, как развивается свекла на вашем поле или какую площадь под бобовые отвел сосед в прошлом году. Помимо всего прочего, — это красиво. Мы сделали кнопку «случайные красивые поля»: она перемещает вас по 35+ местам по всему миру, каждое из которых похоже на произведение абстрактного искусства.

Идея создания такой карты появилась ещё в июле прошлого года. Нам не хватало инструмента, который позволил бы наглядно продемонстрировать все наши технологические возможности. В августе вся команда вплотную приступила к разработке.

Данные: собрать, обработать, сжать


При разработке карты мы использовали снимки спутника Sentinel-2 программы Copernicus Европейского союза. Всего для Европы и США было обработано порядка 250 терабайт информации. На первом этапе мы делали препроцессинг снимков: чистили облака, тени, снег, выполняли компрессию данных. Затем на получившихся 50 терабайтах запустили процесс поиска границ полей и классификации культур на наших моделях машинного обучения. На выходе мы получили около 250 гигабайт векторных карт, содержащих геометрии полей и культуры.

Для обработки данных и просчёта статистики мы использовали базу данных PostgreSQL и PostGIS. После экспорта исходных векторных данных получили базу, в которой было около 180 миллионов записей о геометрии полей, а также более миллиарда записей дополнительной атрибутивной информации о самих полях за три года. На таком объеме данных мы просчитывали статистику, рейтинги, определяли популярность разных культур в регионах мира — всё то, что на карте отображается в левой колонке и интерактивных подсказках.


Поля Хорватии

Мы хотели быстро рассчитывать и отображать агрономические показатели по полю, а также визуализировать график развития растений за сезон. Для этого мы использовали собственный подход к кэшированию и компрессии спутниковых данных. Это позволило сократить размер хранилища данных в 100?200 раз, а скорость получения информации по полю уменьшить до 1 секунды.

Также в эту версию карты мы добавили комплексный показатель Field Score, который позволяет быстро оценить рейтинг поля. Field Score это первый шаг в направлении прогнозирования урожайности, над которым наша команда сейчас работает. Карта делалась в сжатые сроки, потому пришлось много оригинальных решений изобретать на ходу. Но все новые разработки мы применяем в работе над нашим основным продуктом.

Карта: выбрать формат и подготовить данные


Для того, чтобы визуализировать данные, мы использовали Mapbox. Существует два подхода к созданию карты, мы опробовали оба. Первый предполагает создание растровой карты. В этом случае мы делим карту на квадраты, которые рендерим в картинки и храним на сервере. Браузер загружает несколько картинок и двигает их, когда пользователь перемещается по карте. Этот подход позволяет отобразить все поля, не нужно ничего фильтровать. Это красиво, минус в том, что карта получается статичной, плюс растровые картинки много весят.

Второй подход — создание векторной карты. Браузер загружает векторные данные и уже на стороне клиента анимирует их. Так работают современные карты Google и Yandex. Данные весят меньше, чем картинки, и позволяют изменять дизайн любого элемента. Такую карту позволяет сделать сервис Mapbox, в частности, их библиотека Mapbox GL это инструмент с открытым исходным кодом для отображения карт в вебе. Среди прочего, Mapbox предоставляет платный сервис хранения картографических данных. Можно вручную загрузить свои данные на их серверы, а Mapbox будет быстро распределять информацию, обеспечивая чёткую работу карты. Это существенная часть работы, и благодаря тому, что Mapbox берёт ее на себя, задача команды сильно упростилась.


Эмилия-Романья, Италия

При работе с векторным данными есть условное ограничение: чем больше информации ты хочешь отобразить на карте, тем медленнее всё будет работать. Для решения этой проблемы мы использовали утилиту от Mapbox под названием Tippecanoe. На основании выбранных нами алгоритмов она определяла, на каком зуме те или иные поля будут видны, а какие нет, и невидимые векторные объекты убирала из слоя. Всего в Tippecanoe более 20 алгоритмов фильтрации, мы опробовали все и выбрали пару основных. Подготовленные таким образом данные мы сжали при помощи технологии mbtiles от Mapbox до 50 гигабайт, и затем загрузили на серверы компании.

Ещё больше ускорить работу карты позволило использование фреймворка Next JS, который выполняет серверный рендеринг страницы. Большинство приложений в современном мире рендерятся целиком на стороне клиента: при открытии окна в браузере отображается пустая hmtl-страница и скрипт, который загружает всю информацию. Фреймворк Next JS рендерит все на сервере, и это делает загрузку приложения быстрой для клиента.

Карта: настроить визуал и придумать «волшебную кнопку» за ночь до релиза


Mapbox стал приятным открытием для нашего дизайнера. Сервис упростил его задачу, потому что он смог визуализировать данные без привлечения front-end разработчика. Со стороны может показаться, что раскрасить поля в готовом интерфейсе легко, но есть много нюансов. У нас 27 культур, и подобрать для них цвета было непросто. Для популярных культур нужны контрастные цвета, для менее популярных – менее контрастные, и все они должны быть хорошо различимы на разных зумах. В карте много вложенностей и интерактивных подсказок, потому самым сложным было продумать логику переходов на разных уровнях.

За ночь до релиза мы поняли, что на карту и цифры хоть и интересно смотреть, но этим не хочется поделиться в социальных сетях. Поэтому решили добавить кнопку «random beautiful fields», которая перекидывает пользователей между разными местами планеты. Всем офисом мы искали красивые места, за час нарисовали кнопку и всё заверстали. Утром потестили – и запустили. Кажется, что именно эта функция дала нам такой большой охват. Иначе никто бы не обратил внимание на то, что поля похожи на абстрактные картины. Не стоит недооценивать силу решений, принятых в последнюю минуту.


Поля Франции

Ещё одну функцию мы добавили в карту уже после запуска. Мы знали, что иногда распознаем поля и культуры на карте не совсем точно, и фидбек со стороны пользователей позволяет улучшать наши алгоритмы. После релиза фермеры начали присылать сообщения о неточностях в распознавании культур: «У меня на поле растет подсолнечник, а у вас указана кукуруза». Чтобы решить этот вопрос, мы добавили в карточку поля кнопку, которая отправляет нам уведомления об ошибках. Собранную информацию мы используем для повышения точности наших моделей распознавания культур.

В итоге


За время своей разработки концепция карты многократно усложнилась. Если сначала мы планировали сделать простую визуализацию полей и культур по всему миру, то финальный продукт получился намного более комплексным. Но карта стоила затраченных на неё усилий. После релиза нам написали сотни инвесторов, фондов и научных исследователей. Часть технологических решений, например, фреймворк Next JS и утилиту Tippecanoe, мы будем использовать в работе над, нашей бесплатной веб-платформой для точного земледелия OneSoil.

Мы стали первыми, кто нанес на карту все поля США и Европы за три года. Данные, которые мы получили, – уникальны. Уже сейчас мы знаем про поля больше, чем любая компания или государство. А статистика, которую мы получаем при помощи алгоритмов машинного обучения, часто более точная, чем та, что была собрана вручную. Мы сделали первый шаг к тому, чтобы автоматически распознать поля во всём мире – это наш план на ближайшее будущее.

Комментарии (38)


  1. HEKOT
    30.04.2019 03:57

    Есть какие-либо количественные показатели качества распознавания?


    1. bsoo Автор
      30.04.2019 09:40

      Конечно. В разных регионах точность разная. Например, в европейском регионе IoU при распознавании границ в первой модели (готовим вторую) – 0.85. F1 при распознавании культур в конце сезона там же – 0.96. Вот тут про технологии


      1. HEKOT
        30.04.2019 12:19

        А как оценивали точность?


        1. bsoo Автор
          30.04.2019 15:04

          На валидационном датасете :)


          1. Bas1l
            03.05.2019 12:58

            А скажите, пожалуйста, F1—это для "поле детектировано"/"поле не детектировано"? Если да, то на каком IoU threshold вы считаете, что поле детектировано? (если вы определяете по IoU).


  1. Javian
    30.04.2019 08:03

    о любом поле в США и Европе

    определяли популярность разных культур в регионах мира

    Так всё таки можно будет в будущем посмотреть РФ/Украину/Китай и прочие регионы?


    1. bsoo Автор
      30.04.2019 09:41

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


      1. Javian
        30.04.2019 10:06

        Странно что сразу показалось что Украины нет. Сейчас посмотрел — и Крым есть. А там удивительные вещи. Wheat, Soybean, Beans… Специально посмотрел на обычных спутниковых фото — ошибается система в распознавании полей.


        1. bsoo Автор
          30.04.2019 10:12

          Вы смотрели как совпадают границы на гуглкартах? Если так, то часто на гуглкартах ситуация не актуальная. Но бывает и ошибается, конечно.


          1. Javian
            30.04.2019 10:35

            Солончаки, военные полигоны, на которых никогда не было не то, что сои, но и вообще следа плуга. Характерный признак — фальшивые «поля» имеют сложную кривую форму, а не прямоугольную как настоящие поля.


            1. bsoo Автор
              30.04.2019 10:52

              Не все настоящие поля прямоугольные, но да, вы правы, ошибки случаются. Проблема, что не всегда достаточно данных для обучения в специфических регионах, где почвы выглядят совсем иначе.


              1. Javian
                30.04.2019 11:41

                Не только почвы, но и само земледелие в конкретных условиях. Для сравнения нужен регион Кубани. Пока заценил Херсон и Крым. Система явно неправильно реагирует на земледелие в засушливой местности. Вот эту траву и красный грунт на фотографии система называет пшеницей.
                image
                habr.com/ru/post/437712
                Споткнулась и на виноградниках и на бахче. Впечатление, что при неуверенном опознавании область называется пшеницей. Я бы в таких регионах учитывал бы начало сухого сезона и отсутствие ирригации.


                1. bsoo Автор
                  30.04.2019 14:56

                  Все так. После релиза первой модели прошло более полугода. Думаю, скоро будет новая. Проблемы о которых вы говорите случаются. Посмотрим как получится это исправить.


    1. oracle_and_delphi
      30.04.2019 10:32

      Было бы познавательно посмотреть на Колумбию и Афганистан.


      1. bsoo Автор
        30.04.2019 14:58

        Работаем :)


  1. Dmitriila
    30.04.2019 09:42

    Добрый день.

    Как понимаю по полям России данных нет?
    Можно ли загружать данные по полям координатами снятыми с GPS устройств, на основной платформе этого не нашел, либо другими способами (данными к примеру полученными из кадастра).


    1. bsoo Автор
      30.04.2019 09:44

      На карте России, к сожалению, пока нет. Мы над этим работаем. В платформе для фермеров app.onesoil.ai добавлять поля можно любым удобным способом: обвести вручную, загрузить файлом, натыкать если границы в этом регионе мы уже распознали.


  1. HEKOT
    30.04.2019 12:24

    Какие «информационные» (понятно, что дешевле и трактор не надо гонять) преимущества у спутниковой системы по сравнению с наземной в части реальной помощи фермерам? Я уверен, отличить кукурузу от канолы он и сам сможет без распознавания.


    1. bsoo Автор
      30.04.2019 15:00

      Представим, у вас 100 полей и вы хотите хотя бы раз в неделю смотреть что с ними происходит. С наземной системой такое не представляется возможным. Это слишком долго и слишком дорого. Наша – бесплатна и доступна любому, кто что-то выращивает.


      1. HEKOT
        30.04.2019 17:50
        +1

        То, что трактором долго и дорого, я уже обозначил в вопросе. Ещё преимущества есть?
        Не хочу показаться навязчивым, но хотелось бы больше подробностей. Из того, что уже озвучено, пока непонятно, зачем фермеру с сотней полей раз в неделю узнавать, не сменилась ли рожь на коноплю. То, что фермер будет сеять, он знает заранее. По крайней мере, на этапе покупке посевного материала.
        Есть какой-то реальный сценарий применения Вашей системы фермерами?


        1. bsoo Автор
          30.04.2019 18:35

          Самый частый сценарий – наблюдать за развитием поля. Оперативно понимать, произошло ли что-то, требующее внимания. Как перезимовало поле, есть ли проблемные зоны. Сразу видно полегание, подтопление, и другие проблемы. Раньше нужно было объезжать поля на авто, это долго и неточно. Мы предлагаем выбирать места куда стоит отправиться просмотрев свежие снимки. Вот тут подробнее рассказываем как работает инструмент blog.onesoil.ai/ru/onesoil-scouting-app

          map.onesoil.ai – это визуализация технологии по распознаванию полей, это не продукт для фермеров, а инфографика
          onesoil.ai – то, чем пользуются фермеры


          1. HEKOT
            30.04.2019 18:40

            О! Это уже интереснее! Спасибо!
            Ещё вопрос: Австралия планируется?


            1. bsoo Автор
              30.04.2019 18:42

              Планируем!


              1. HEKOT
                30.04.2019 18:48

                Клёво! Скоро?


                1. bsoo Автор
                  30.04.2019 18:49

                  В этом году :)


                  1. HEKOT
                    30.04.2019 19:03

                    Вообще обалдеть! Отправил знакомому фермеру, работающему в Topcon Precision Agriculture.
                    Удачи Вам!


                    1. HEKOT
                      01.05.2019 05:54

                      Данные, которые мы получили, – уникальны.


                      G’day mate, thanks for the info, it’s quite interesting. There’s actually a few companies that do this, usually they offer free to view service, then to get a better resolution or quicker updated imagery you have to pay.


              1. HEKOT
                30.04.2019 18:56

                del


  1. setflag
    30.04.2019 18:35

    Подскажите пожалуйста:
    1. Как вы проводите атмосферную коррекцию оптических данных? Данные Sentinel-2 «из коробки» имеют проблемы с атмосферной коррекцией и если рассчитывать NDVI по этим данным, то он будет некорректным. У вас представлена динамика NDVI, т.е. данные явно приводились к общему знаменателю либо с помощью АК, либо еще как-то.
    2. Используете ли вы NDVI при классификации?
    3. Каким образом вы обучали модель для столь разных участков Земли? У нас получалось, что даже экспозиция склона может оказать влияние на классификацию даже в пределах одного региона РФ.
    4. На сайте указано, что вы используете радарную съемку Sentinel-1, для каких целей вы используете радары и, если можно, то как? «Радарный» NDVI многие пытались считать, но получается так себе. Радары сильно подвержены влиянию влажности, как вы боролись с этим?


    1. bsoo Автор
      02.05.2019 14:43

      1. По L1. Мы используем TOA уровень обработки для Sentinel-2. Радиометрическую калибровку на этом уровне
      2. Да, как одну из фичей
      3. Мы собираем данные по всему миру за счёт платформы, делаем локальные поправки по данным, для переноса модели и используем object-based подход, что повышает устойчивость к таким артефактам
      4. SAR определенно дает буст по точности, но прямо сейчас не готов говорить как именно мы его используем


      1. setflag
        03.05.2019 17:43

        Использование TOA практически гарантирует некорректность расчета NDVI так как состояние атмосферы исключается из расчета. Расчет NDVI, в таких случаях, будет иметь произвольную неизвестную, которая может отразится, а может и не отразится на результате расчета NDVI. Это приводит к тому, что NDVI, особенно рассматриваемый в динамике, будет некорректным. А может и корректным. Даже атмосферная коррекция Sentinel-2 с помощью Sen2Cor исключает «нормальный» расчет NDVI. К сожалению, без дополнительных плясок, можно считать только мгновенный NDVI для данного тайла Sentinel-2.


  1. Bas1l
    30.04.2019 19:44

    Я вот пытался через фэйсбук знакомому, который у вас работает, рассказать это, но попробую тут еще раз. Вот здесь и во всем регионе это не трава, это яблочные сады. А вот здесь и во всем регионе не трава, а виноградники. Там и город рядом называется "Винная гора".


    Но все равно очень круто!


    1. Bas1l
      30.04.2019 19:54

      О, вот еще. Вот тут поля вообще не очень размечены, но то, что размечено, это тоже не трава, а виноградники. Там вдоль Рейна винный регион (рислинг, вот это все)—так что там везде одни виноградники.


      1. bsoo Автор
        02.05.2019 14:44
        +1

        Да, виноградники должны быть лучше в новой версии.


    1. solariserj
      01.05.2019 16:12
      +1

      Так же проверил вокруг меня: Эфиромасличные розы — как виноградник орешники — как трава, но иногда попадают, само разделение полей уже радует.


      1. bsoo Автор
        02.05.2019 14:45

        Эфиромасличные розы, ого!


    1. miguello
      01.05.2019 19:44

      Насчет виноградников — вокруг моего города много виноделен, во многих я был. Однако на карте виноградников как-то совсем мало. Проверил некоторые винодельни — как правило, большая часть виноградников помечена как трава.


      1. bsoo Автор
        02.05.2019 14:45

        Да, виноградники должны быть лучше в новой версии.