Модели и платформы ИИ
Жюльен Ребец, ведущий инженер машинного обучения в Picterra – Интервью

Жюльен Ребец – ведущий инженер программного обеспечения и машинного обучения в Picterra. Picterra предоставляет геопространственную облачную платформу, специально разработанную для обучения детекторам на основе глубокого обучения, быстро и безопасно.
Без единой строки кода и с только несколькими аннотациями, созданными человеком, пользователи Picterra создают и развертывают уникальные, действенные и готовые к использованию модели глубокого обучения.
Это автоматизирует анализ спутниковых и аэрофотоснимков, позволяя пользователям идентифицировать объекты и закономерности.
Что привлекло вас к машинному обучению и ИИ?
Я начал программировать, потому что хотел создавать видеоигры, и заинтересовался компьютерной графикой. Это привело меня к компьютерному зрению, которое является обратным процессом, когда вместо создания компьютером фальшивой среды, вы имеете его восприятие реальной среды. Во время моих исследований, я прошел некоторые курсы по машинному обучению и заинтересовался компьютерным зрением. Я думаю, что интересно в машинном обучении – это то, что оно находится на пересечении между программным обеспечением, алгоритмами и математикой, и все еще кажется немного магическим, когда оно работает.
Вы работали над использованием машинного обучения для анализа спутниковых изображений в течение многих лет. Какой был ваш первый проект?
Мое первое знакомство со спутниковыми изображениями было проектом Terra-i (для обнаружения вырубки лесов), и я работал над ним во время моих исследований. Я был поражен количеством бесплатно доступных спутниковых данных, которые производятся различными космическими агентствами (NASA, ESA и т. д.). Вы можете получить регулярные изображения планеты бесплатно каждый день или около того, и это является отличным ресурсом для многих научных приложений.
Можете ли вы рассказать больше подробностей о проекте “Terra-i”?
Проект Terra-i (http://terra-i.org/terra-i.html) был начат профессором Андезом Перес-Урибе из HEIG-VD (Швейцария) и теперь возглавляется Луисом Реймондinem из CIAT (Колумбия). Идея проекта заключается в обнаружении вырубки лесов с помощью бесплатно доступных спутниковых изображений. В то время мы работали с изображениями MODIS (разрешение 250 м) потому, что они предоставляли унифицированное и предсказуемое покрытие (как пространственно, так и временно). Мы получали измерение для каждого пикселя каждые несколько дней, и из этой временной серии измерений вы можете попытаться обнаружить аномалии или новинки, как мы их называем в машинном обучении.
Этот проект был очень интересным, потому что количество данных было проблемой в то время, и также было некоторое программное обеспечение, которое необходимо было разработать, чтобы сделать его работоспособным на нескольких компьютерах и т. д. С точки зрения машинного обучения, мы использовали Байесовскую нейронную сеть (не очень глубокую в то время) для прогнозирования того, как должна выглядеть временная серия пикселя. Если измерение не соответствовало прогнозу, то у нас была аномалия.
В рамках этого проекта я также работал над удалением облаков. Мы использовали традиционный подход сигнальной обработки, где у вас есть временная серия измерений, и некоторые из них будут полностью неправильными из-за облака. Мы использовали подход, основанный на Фурье (HANTS), для очистки временной серии перед обнаружением новинок в ней. Одна из трудностей заключалась в том, что если мы очистим ее слишком сильно, мы также удалим новинки, поэтому были проведены некоторые эксперименты, чтобы найти правильные параметры.
Вы также разработали и реализовали систему глубокого обучения для автоматической классификации типа культуры из аэрофотоснимков полей. Какими были основные проблемы в то время?
Это было мое первое реальное знакомство с глубоким обучением. В то время, я думаю, основные проблемы были больше связаны с запуском фреймворка и правильным использованием GPU, чем с самим машинным обучением. Мы использовали Theano, который был одним из предшественников Tensorflow.
Цель проекта заключалась в классификации типа культуры в поле по аэрофотоснимкам. Мы попробовали подход, при котором модель глубокого обучения использовала гистограммы цветов в качестве входных данных, а не сырые изображения. Чтобы сделать это работоспособным достаточно быстро, я помню, что мне пришлось реализовать пользовательский слой Theano, вплоть до некоторых кода CUDA. Это был отличный опыт обучения в то время и хороший способ глубже понять технические детали глубокого обучения.
Вы официально являетесь ведущим инженером программного обеспечения и машинного обучения в Picterra. Как бы вы описали свою повседневную деятельность?
Это действительно варьируется, но большая часть этого заключается в контроле общей архитектуры системы и продукта в целом, а также в общении с различными заинтересованными сторонами. Хотя машинное обучение является核心 нашей деятельности, вы быстро понимаете, что большая часть времени не тратится на само машинное обучение, а на все, что с ним связано: управление данными, инфраструктура, UI/UX, прототипирование, понимание пользователей и т. д. Это довольно отличается от академии или предыдущего опыта в больших компаниях, где вы более сосредоточены на конкретной проблеме.
Интересно в Picterra то, что мы не только запускаем модели глубокого обучения для пользователей, но также позволяем им обучать свои собственные модели. Это отличается от типичных рабочих процессов машинного обучения, где у вас есть команда машинного обучения, которая обучает модель и затем публикует ее в производство. Это означает, что мы не можем вручную настраивать параметры обучения, как вы часто делаете. Нам необходимо найти метод обучения, который будет работать для всех наших пользователей. Это привело нас к созданию того, что мы называем нашим “рамочным обучением”, которое является большим репозиторием наборов данных, имитирующих обучающие данные, которые наши пользователи будут создавать на платформе. Мы можем затем легко протестировать изменения в нашей методологии обучения на этих наборах данных и оценить, помогают ли они или нет. Итак, вместо оценки одной модели, мы больше оцениваем архитектуру + методологию обучения.
Другой проблемой является то, что наши пользователи не являются практиками машинного обучения, поэтому они не обязательно знают, что такое обучающий набор, метка и т. д. Создание интерфейса, который позволяет непрактикам машинного обучения создавать наборы данных и обучать модели машинного обучения, является постоянной проблемой, и существует много обратной связи между командами UX и ML, чтобы обеспечить правильное направление пользователей.
Некоторые из ваших обязанностей включают прототипирование новых идей и технологий. Какие из проектов были наиболее интересными для вас?
Я думаю, что наиболее интересным был прототип Custom Detector в Picterra. 1,5 года назад у нас были “встроенные” детекторы на платформе: это были детекторы, которые мы обучали сами и делали доступными для пользователей. Например, у нас был детектор зданий, детектор автомобилей и т. д.
Это является типичным рабочим процессом машинного обучения: у вас есть инженер машинного обучения, который разрабатывает модель для конкретного случая, а затем вы предоставляете ее клиентам.
Но мы хотели сделать что-то по-другому и немного расширить границы. Итак, мы сказали: “Что, если мы позволим пользователям обучать свои собственные модели直接 на платформе”? Были несколько проблем, чтобы сделать это работоспособным: во-первых, мы не хотели, чтобы это заняло несколько часов. Если вы хотите сохранить это чувство интерактивности, обучение должно занять несколько минут максимум. Во-вторых, мы не хотели требовать тысяч аннотаций, которые обычно необходимы для больших моделей глубокого обучения.
Итак, мы начали с очень простой модели, сделали несколько тестов в Jupyter, а затем попробовали интегрировать ее в нашу платформу и протестировать весь рабочий процесс, с базовым интерфейсом и т. д. Сначала это не работало очень хорошо в большинстве случаев, но были несколько случаев, когда это работало. Это дало нам надежду, и мы начали итерировать над методологией обучения и моделью. После нескольких месяцев мы смогли достичь точки, когда это работало хорошо, и теперь у нас есть пользователи, которые используют это все время.
Интересно в этом было двойной вызов: сохранение обучения быстрым (в настоящее время несколько минут) и, следовательно, модели не слишком сложной, но в то же время сделать ее достаточно сложной, чтобы она работала и решала проблемы пользователей. Кроме того, это работает с небольшим количеством (<100) меток для многих случаев.
Мы также применили многие из “правил машинного обучения” Google (GOOGL ), в частности те, которые связаны с реализацией всего конвейера и метрик до начала оптимизации модели. Это ставит вас в режим “системного мышления”, когда вы понимаете, что не все ваши проблемы должны быть решены ядром машинного обучения, а некоторые из них могут быть переданы в интерфейс, некоторые из них могут быть предварительно/постобработаны и т. д.
Какие технологии машинного обучения используются в Picterra?
В производстве мы в настоящее время используем Pytorch для обучения и запуска наших моделей. Мы также используем Tensorflow время от времени для некоторых конкретных моделей, разработанных для клиентов. Кроме того, это довольно стандартный научный стек Python (numpy, scipy) с некоторыми геопространственными библиотеками (gdal) добавленными.
Можете ли вы рассказать, как работает Picterra на уровне бэкенда, когда кто-то загружает изображения и хочет обучить нейронную сеть для правильной аннотации объектов?
Да, конечно. Итак, сначала, когда вы загружаете изображение, мы обрабатываем его и храним в формате “Cloud-Optimized-Geotiff” (COG) на нашем хранилище (Google Cloud Storage), что позволяет нам быстро получить доступ к блокам изображения без необходимости загружать все изображение позже. Это является ключевым моментом, поскольку геопространственные изображения могут быть огромными: у нас есть пользователи, которые регулярно работают с изображениями 50000×50000 пикселей.
Затем, чтобы обучить вашу модель, вы должны создать свой обучающий набор данных через наш веб-интерфейс. Вы будете делать это, определяя 3 типа областей:
- области обучения, в которых вы будете рисовать обучающие метки
- области тестирования, где модель будет предсказывать, чтобы вы могли визуализировать некоторые результаты
- области точности, где вы будете рисовать метки, но они не будут использоваться для обучения, а только для оценки
Как только вы создали этот набор данных, вы можете просто нажать “Обучить”, и мы обучим детектор для вас. То, что происходит дальше, – это то, что мы ставим обучение в очередь, запускаем одну из наших GPU-работ и обучаем вашу модель, сохраняем ее веса в хранилище и, наконец, предсказываем в области тестирования, чтобы отобразить на интерфейсе. Оттуда вы можете итерировать над вашей моделью. Обычно вы заметите некоторые ошибки в областях тестирования и добавите области обучения, чтобы помочь модели улучшиться.
Как только вы будете довольны оценкой вашей модели, вы можете запустить ее в масштабе. С точки зрения пользователя, это действительно просто: вы просто нажимаете “Обнаружить” рядом с изображением, которое вы хотите запустить. Но это немного более сложно под капотом, если изображение большое. Чтобы ускорить процесс, обработать ошибки и избежать обнаружения, которое занимает несколько часов, мы разбиваем большие обнаружения на сеточные ячейки и запускаем независимую задачу обнаружения для каждой ячейки. Это позволяет нам запускать очень большие обнаружения. Например, у нас был клиент, который запустил обнаружение по всей Дании на 25-сантиметровых изображениях, что находится в диапазоне терабайт данных – для одного проекта. Мы описали подобный проект в этом посте на Medium.
Есть ли что-то еще, что вы хотели бы поделиться о Picterra?
Я думаю, что отлично в Picterra то, что это уникальный продукт, находящийся на пересечении между машинным обучением и геопространственными данными. То, что отличает нас от других компаний, которые обрабатывают геопространственные данные, заключается в том, что мы оснащаем наших пользователей самодостаточной платформой. Они могут легко находить места, анализировать закономерности и обнаруживать объекты на спутниковых и аэрофотоснимках. Это было бы невозможно без машинного обучения, но наши пользователи не нуждаются даже в базовых навыках программирования – платформа делает работу на основе нескольких аннотаций, созданных человеком. Для тех, кто хочет глубже изучить основные концепции машинного обучения в геопространственной области, мы запустили комплексный онлайн-курс.
Также стоит упомянуть, что возможные применения Picterra бесконечны – детекторы, построенные на платформе, были использованы в управлении городами, точном сельском хозяйстве, управлении лесами, гуманитарном управлении и управлении рисками стихийных бедствий, фермерстве и т. д., просто чтобы назвать наиболее распространенные применения. Мы基本но удивлены каждый день тем, что наши пользователи пытаются сделать с нашей платформой. Вы можете попробовать и рассказать нам, как это сработало в социальных сетях.
Спасибо за отличное интервью и за то, что поделились с нами, насколько мощна Picterra, читателям, которые хотят узнать больше, следует посетить веб-сайт Picterra.












