60 миллионов полей и 27 культур. Как мы делали карту всех полей Европы и США



    Несколько месяцев назад мы запустили первую в мире бесплатную интерактивную карту, с помощью которой можно посмотреть информацию о любом поле в США и Европе. Про карту написали десятки изданий, а на 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.

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

    Комментарии 46

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

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

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

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

        Так всё таки можно будет в будущем посмотреть РФ/Украину/Китай и прочие регионы?
          0
          Украина на нашей карте есть. Над остальными странами работаем. Надеемся показать что-то в этом году.
            0
            Странно что сразу показалось что Украины нет. Сейчас посмотрел — и Крым есть. А там удивительные вещи. Wheat, Soybean, Beans… Специально посмотрел на обычных спутниковых фото — ошибается система в распознавании полей.
              0
              Вы смотрели как совпадают границы на гуглкартах? Если так, то часто на гуглкартах ситуация не актуальная. Но бывает и ошибается, конечно.
                0
                Солончаки, военные полигоны, на которых никогда не было не то, что сои, но и вообще следа плуга. Характерный признак — фальшивые «поля» имеют сложную кривую форму, а не прямоугольную как настоящие поля.
                  0
                  Не все настоящие поля прямоугольные, но да, вы правы, ошибки случаются. Проблема, что не всегда достаточно данных для обучения в специфических регионах, где почвы выглядят совсем иначе.
                    +1
                    Не только почвы, но и само земледелие в конкретных условиях. Для сравнения нужен регион Кубани. Пока заценил Херсон и Крым. Система явно неправильно реагирует на земледелие в засушливой местности. Вот эту траву и красный грунт на фотографии система называет пшеницей.
                    image
                    habr.com/ru/post/437712
                    Споткнулась и на виноградниках и на бахче. Впечатление, что при неуверенном опознавании область называется пшеницей. Я бы в таких регионах учитывал бы начало сухого сезона и отсутствие ирригации.
                      0
                      Все так. После релиза первой модели прошло более полугода. Думаю, скоро будет новая. Проблемы о которых вы говорите случаются. Посмотрим как получится это исправить.
            +1
            Было бы познавательно посмотреть на Колумбию и Афганистан.
              +1
              Работаем :)
            0
            Добрый день.

            Как понимаю по полям России данных нет?
            Можно ли загружать данные по полям координатами снятыми с GPS устройств, на основной платформе этого не нашел, либо другими способами (данными к примеру полученными из кадастра).
              0
              На карте России, к сожалению, пока нет. Мы над этим работаем. В платформе для фермеров app.onesoil.ai добавлять поля можно любым удобным способом: обвести вручную, загрузить файлом, натыкать если границы в этом регионе мы уже распознали.
              0
              Какие «информационные» (понятно, что дешевле и трактор не надо гонять) преимущества у спутниковой системы по сравнению с наземной в части реальной помощи фермерам? Я уверен, отличить кукурузу от канолы он и сам сможет без распознавания.
                0
                Представим, у вас 100 полей и вы хотите хотя бы раз в неделю смотреть что с ними происходит. С наземной системой такое не представляется возможным. Это слишком долго и слишком дорого. Наша – бесплатна и доступна любому, кто что-то выращивает.
                  +1
                  То, что трактором долго и дорого, я уже обозначил в вопросе. Ещё преимущества есть?
                  Не хочу показаться навязчивым, но хотелось бы больше подробностей. Из того, что уже озвучено, пока непонятно, зачем фермеру с сотней полей раз в неделю узнавать, не сменилась ли рожь на коноплю. То, что фермер будет сеять, он знает заранее. По крайней мере, на этапе покупке посевного материала.
                  Есть какой-то реальный сценарий применения Вашей системы фермерами?
                    0
                    Самый частый сценарий – наблюдать за развитием поля. Оперативно понимать, произошло ли что-то, требующее внимания. Как перезимовало поле, есть ли проблемные зоны. Сразу видно полегание, подтопление, и другие проблемы. Раньше нужно было объезжать поля на авто, это долго и неточно. Мы предлагаем выбирать места куда стоит отправиться просмотрев свежие снимки. Вот тут подробнее рассказываем как работает инструмент blog.onesoil.ai/ru/onesoil-scouting-app

                    map.onesoil.ai – это визуализация технологии по распознаванию полей, это не продукт для фермеров, а инфографика
                    onesoil.ai – то, чем пользуются фермеры
                      0
                      О! Это уже интереснее! Спасибо!
                      Ещё вопрос: Австралия планируется?
                        0
                        Планируем!
                          0
                          Клёво! Скоро?
                            0
                            В этом году :)
                              0
                              Вообще обалдеть! Отправил знакомому фермеру, работающему в Topcon Precision Agriculture.
                              Удачи Вам!
                                +2
                                Данные, которые мы получили, – уникальны.


                                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.
                                  0
                                  Речь в цитате про данные, которые мы распознали по спутниковым снимкам сами (а не про NDVI со спутника). Их сейчас и правда ни кто не предлагает на уровне поля кроме нас.
                            0
                            del
                  0
                  Подскажите пожалуйста:
                  1. Как вы проводите атмосферную коррекцию оптических данных? Данные Sentinel-2 «из коробки» имеют проблемы с атмосферной коррекцией и если рассчитывать NDVI по этим данным, то он будет некорректным. У вас представлена динамика NDVI, т.е. данные явно приводились к общему знаменателю либо с помощью АК, либо еще как-то.
                  2. Используете ли вы NDVI при классификации?
                  3. Каким образом вы обучали модель для столь разных участков Земли? У нас получалось, что даже экспозиция склона может оказать влияние на классификацию даже в пределах одного региона РФ.
                  4. На сайте указано, что вы используете радарную съемку Sentinel-1, для каких целей вы используете радары и, если можно, то как? «Радарный» NDVI многие пытались считать, но получается так себе. Радары сильно подвержены влиянию влажности, как вы боролись с этим?
                    0
                    1. По L1. Мы используем TOA уровень обработки для Sentinel-2. Радиометрическую калибровку на этом уровне
                    2. Да, как одну из фичей
                    3. Мы собираем данные по всему миру за счёт платформы, делаем локальные поправки по данным, для переноса модели и используем object-based подход, что повышает устойчивость к таким артефактам
                    4. SAR определенно дает буст по точности, но прямо сейчас не готов говорить как именно мы его используем
                      0
                      Использование TOA практически гарантирует некорректность расчета NDVI так как состояние атмосферы исключается из расчета. Расчет NDVI, в таких случаях, будет иметь произвольную неизвестную, которая может отразится, а может и не отразится на результате расчета NDVI. Это приводит к тому, что NDVI, особенно рассматриваемый в динамике, будет некорректным. А может и корректным. Даже атмосферная коррекция Sentinel-2 с помощью Sen2Cor исключает «нормальный» расчет NDVI. К сожалению, без дополнительных плясок, можно считать только мгновенный NDVI для данного тайла Sentinel-2.
                        0
                        Да, это правда. Проблема в том, что дополнительных плясок мы сделать не можем, и да, в нашем NDVI есть определенная ошибка, но она не такая высокая, как кажется, так как мы фильтруем облака.
                          0
                          Проблема в том, что дополнительных плясок мы сделать не можем
                          а в чем у вас проблема?
                          Была статья с конференции по ДЗЗ по классификации, насколько я помню, пшеницы, хотя могу ошибаться, но точно какой-то зерновой культуры. Там предлагалось использовать несколько NDVI в различные стадии вегетации за сезон, т.е. в динамике. Без этого невозможно было точно определить культуру, в статье рассматривались разные методы, кстати. Если использовать такой «мгновенный» NDVI как у вас, то использовать его динамику для классификации не представляется возможным, более того разные области Земли будут иметь разные периоды вегетации культуры. Мы с борщевиком с этим столкнулись даже внутри РФ.
                            0
                            1. Мы используем не только NDVI, но спектр
                            2. По нашей оценке ошибка не более 5% при условии корректной фильтрации облаков, что для нас достаточно. А у вас сколько?
                              +1
                              1. Мы используем не только NDVI, но спектр
                              и мы.
                              2. По нашей оценке ошибка не более 5% при условии корректной фильтрации облаков, что для нас достаточно. А у вас сколько?

                              А причем тут облака? Облака, конечно, мешают, но представьте, что у вас 0% облачности. И что? При отсутствии облачности вы научились считать правильный NDVI на основе TOA? Ну тогда это прорыв! Думаю, что тут Atmospheric Correction Inter-Comparison Exercise вы могли бы порвать всех, хотя-бы в части упражнений.
                              Реальность, однако, другая. Ваши 5% ошибки требуют подтверждения. И что такое 5% ошибки как вы ее считали?
                              Пример 1: Берем два соседних тайла Sentinel-2 снятые одним КА в один день, тайлы нарезаются с перекрытием. Вычисляем NDVI для точки в перекрывающейся области по одному и по другому тайлу и получаем разные значения. У меня получалось гораздо больше 5%, может быть так атмосфера повлияла, может быть местность, но ошибку в 5% я бы даже не заметил.
                              Пример 2: Берем тайл Sentinel-2 и сравниваем его с БПЛА. БПЛА без камеры MicaSense RedEdge или аналогичной камерой — это полная профанация при оценке растительности, сравнивать нечего вообще. С БПЛА с камерой MicaSense можно сравнивать. Какая у вас разница NDVI в этом случае? Для какой конкретно культуры? С какой высоты съемка? Насколько поле близко к океану?
                              Пример 3: NDVI по Sentinel-2 и по LandSat-8. Какая разница у вас для одной и той-же точки (можно подобрать дни когда они оба пролетали над какой-либо местностью)?
                              Пример 4: Вы говорите про динамику NDVI. Вот вы рассчитали, сначала 0.6, через неделю 0.7, еще через неделю 0.6. Вы построили график. Где правильное значение? Как вы оцените? Может график вообще должен идти все время вверх, а не поворачивать вниз?
                              Судя по вашему сайту, вы предлагаете продукт, в котором используется динамика NDVI поля, причем для большой части планеты. У вас отличный дизайн и интересная идея, да, видимо вы первые кто это сделал в таком масштабе. Но ваш NDVI неправильный, ну или вы обладаете технологией, которой нет ни у кого в мире. Пожалуйста, опубликуйте статью, со своими выкладками и как вы их проверяли, не надо технологий, пусть ваше know-how останется вашим. Просто лично у меня, нет доверия к NDVI, который считается по TOA. На текущем этапе развития человечества такого продукта вообще нет, либо он неизвестен. Проект ASIX, кстати, очень интересный, и там видно, что разные алгоритмы работают совершенно по разному в разных климатических зонах.
                              Все вышеперечисленное ставит под сомнение ошибку в 5%, особенно при использовании TOA. Соответственно, на данный момент можно считать вашу динамику NDVI априори некорректной.
                              Фу-ф, длинно получилось :-)
                    +1

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


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

                      0

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

                        +1
                        Да, виноградники должны быть лучше в новой версии.
                        +1
                        Так же проверил вокруг меня: Эфиромасличные розы — как виноградник орешники — как трава, но иногда попадают, само разделение полей уже радует.
                          0
                          Эфиромасличные розы, ого!
                          0
                          Насчет виноградников — вокруг моего города много виноделен, во многих я был. Однако на карте виноградников как-то совсем мало. Проверил некоторые винодельни — как правило, большая часть виноградников помечена как трава.
                            0
                            Да, виноградники должны быть лучше в новой версии.
                              0
                              К слову посмотрел на виноградники — на спутнике они трава травой. Только легкая полосчатость выдает шпалеры.
                          0
                          Возможно, ссылка на ваш сервис будет ответом на один из этих вопросов. Ну и вам реклама.
                          Хотя, насколько понимаю, скачать данные никак нельзя.
                            0
                            Спасибо!

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое