Microsoft AI для Земли

Ускорение исследований биоразнообразия с помощью машинного обучения Azure

Компьютерное зрение на миллионах фотографий, сделанных с помощью фотоловушек

Этот пост написали Дэн Моррис и Сию Ян из Microsoft AI for Earth.

Устранение проблем с аннотациями в исследованиях дикой природы

Биоразнообразие сокращается во всем мире с катастрофической скоростью. Перед биологами-природоохранителями стоит непростая, но неотложная задача изучения популяций диких животных и выработки политических рекомендаций. Какие виды нуждаются в правовой защите? Где будет наиболее эффективно строительство подземных переходов в качестве коридоров миграции диких животных? Где размещать ресурсы по борьбе с браконьерством?

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

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

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

В этом сообщении в блоге описывается наш подход к аннотации изображений фотоловушек с помощью машинного обучения и сотрудничество с нашим первым партнером, Департаментом рыболовства и охоты штата Айдахо (IDFG), с которым мы разработали комплексное решение с открытым исходным кодом, которое теперь обслуживает дюжину организаций по охране дикой природы по всему миру.

Затем мы подробно рассмотрим, как мы обрабатываем изображения в пакетном режиме с помощью нашей модели обнаружения животных на кластере виртуальных машин с поддержкой графического процессора с помощью машинного обучения Azure (AML). Мы также представили эту функциональность через API, что позволяет интегрировать нашу модель в существующие инструменты аннотации и краудсорсинга. На сегодняшний день наш API пакетной обработки для обнаружения животных обработал более 25 миллионов изображений с камер-ловушек из 13 организаций, а мы продолжаем добавлять в наш репозиторий обучающих данных.

Весь представленный здесь код и модели доступны на GitHub. Кроме того, в партнерстве с Zooniverse, Университетом Миннесоты и Университетом Вайоминга мы собрали наборы данных о камерах-ловушках из многих организаций и разместили их публично в Azure, включая более 200 000 аннотаций ограничивающих рамок; эти наборы данных доступны на lila.science. Набор из них из Серенгети используется в соревновании машинного обучения DrivenData Хакуна Ма-данные: определение дикой природы в Серенгети.





Проект и партнерство

В течение последних двух лет программа ИИ для Земли работала с рядом организаций над подборкой помеченных данных и разработкой конвейеров на основе компьютерного зрения для обработки изображений съемки дикой природы, получаемых с датчиков движения, портативных и аэрофотокамер. За всеми нашими проектами в этой сфере вы можете следить здесь.

Основное внимание в наших усилиях уделяется камерам, срабатывающим по движению (фотоловушкам), поскольку они являются наиболее распространенными инструментами для непрерывного наблюдения за местами обитания диких животных. Биологи-природоохранники всего мира разработали рабочие процессы для установки фотоловушек и подходы к анализу для оценки характеристик популяции по аннотированным изображениям.

К лету 2018 года мы собрали значительное количество изображений фотоловушек из разных мест, чтобы сформировать разнообразный набор обучающих данных. Мы также пометили более 100000 изображений ограничивающими рамками вокруг животных, чтобы мы могли обучать модели обнаружения объектов. Затем мы экспериментировали с различными архитектурами сверточной нейронной сети и обучили наш первый MegaDetector - модель, которая идентифицирует животных и людей на изображениях с фотоловушек, - которая хорошо работала на изображениях в различных средах обитания.

Департамент рыбной ловли и дичи штата Айдахо (IDFG) связался с нами, узнав о наших проектах: IDFG выпускает 800 фотоловушек и выразил обеспокоенность тем, что у них не хватит рабочих часов, чтобы аннотировать миллионы фотографий, которые они получат после таяния снега. Поскольку некоторые организации, в том числе IDFG, используют изображения по времени, а не по движению, чтобы получить более точные оценки популяции животных, пустые изображения могут составлять до 98% всех изображений. Результаты обнаружения MegaDetector дают естественный способ отделить пустые изображения от непустых, что может значительно повысить эффективность этих исследований.

Увидев очень обнадеживающие результаты MegaDetector на небольшой партии изображений IDFG, мы перешли к дальнейшей количественной оценке характеристик детектора. Для этого мы получили от IDFG около трех миллионов изображений, которые были помечены вручную в предыдущие годы. Поскольку MegaDetector представляет собой большую сеть, которой требуется около 0,8 секунды для оценки одного изображения на новейшем графическом процессоре, оценка трех миллионов изображений на одном узле займет 28 дней. Это побудило нас реализовать нашу модель с помощью машинного обучения Azure и распределить обработку изображений в масштабируемом кластере.

Однако сами по себе результаты машинного обучения не могут быть полезны экологам; очень важно включить эту модель в практический рабочий процесс. С этой целью мы сотрудничали с разработчиком Timelapse, популярного инструмента для маркировки изображений фотоловушек с открытым исходным кодом, который IDFG и другие уже используют для ручного аннотирования, чтобы показать результаты наших обнаружений. Таким образом, аннотаторы могут визуально просматривать выходные данные нашей модели в знакомой среде и, не выходя из рабочего процесса, устанавливать порог достоверности, ниже которого изображения можно безопасно считать пустыми. Другие инструменты могут делать то же самое с нашими результатами, которые предоставляются в формате JSON, где каждая запись соответствует изображению, указанному здесь.

Подход машинного обучения: двухэтапный конвейер обработки с общим детектором и классификатором для конкретного проекта

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

Поэтому, чтобы ускорить работу биологов по дикой природе по всему миру без необходимости обучать отдельные модели для каждого региона развертывания, мы использовали подход обучения двухклассового детектора для широкого круга видов и экосистемы (MegaDetector, где каждое обнаружение - животное или человек) с последующим созданием классификаторов видов для конкретных экосистем. Запуск нашего детектора перед классификацией видов означает, что классификаторы могут быть обучены на вырезанных участках, содержащих животных, сосредоточив внимание классификатора на животном, а не на фоне.

Поскольку ложно инициированные пустые изображения составляют более 75% всех собранных данных в развертываниях, запускаемых по движению (это может достигать 98% для камер с синхронизацией по времени), мы уже можем значительно сократить количество изображений, требующих ручного просмотра, даже если только детектор применяется для отделения пустых изображений от непустых.

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

API пакетной обработки обнаружения: внедрение модели

Выбирая модельную архитектуру нашего детектора, мы отдавали предпочтение точности, а не скорости, поскольку пропавшие животные сделали бы автоматизацию бесполезной. Таким образом, для вывода изображения требуется около 0,8 секунды на графическом процессоре NVIDIA V100. Следовательно, мы вводим в действие MegaDetector, чтобы можно было быстро оценивать большие пакеты изображений в масштабируемом кластере графических процессоров и чтобы несколько пакетов можно было поставить в очередь. Мы также развертываем эту функциональность как API, чтобы мы и другие пользователи могли вызывать ее из скриптов и приложений.

Мы нашли подходящее решение для наших потребностей в масштабировании в Azure Machine Learning (AML) Compute, управляемой вычислительной инфраструктуре, которую можно установить в качестве целевого объекта вычислений в рабочих областях AML. Это позволяет нам легко создавать кластер, который может автоматически масштабироваться от 0 узлов до некоторого максимума при отправке заданий. Очередь заданий также управляется, и когда она становится пустой, кластер масштабируется до 0 узлов после заданной пользователем задержки. Его Python SDK также упрощает подключение хранилищ данных, таких как контейнеры хранилища BLOB-объектов, к целевому объекту вычислений, загрузку файлов модели, ранее загруженных в рабочую область AML, и указание среды выполнения (пакеты Python для установки или настраиваемые контейнеры Docker).

Настройка рабочей области AML и цели вычислений

Подготовка рабочего пространства AML и целевого объекта вычислений занимает 10 минут. Шаги демонстрируются в этом Jupyter Notebook:

  1. После установки AML Python SDK, аутентификации и настройки желаемой подписки для использования через Azure CLI мы создаем рабочую область AML с помощью метода Workspace.create() (документация; вы также можете сделать это на портале Azure).
    Учетная запись хранения, указанная или созданная на этом шаге, должна находиться в том же регионе, что и рабочая область, поскольку она используется для хранения артефактов AML, таких как загруженные модели, образы Docker и запуск снимков. Обратите внимание, что входные и выходные данные могут находиться в разных учетных записях хранения и в разных регионах.
    После создания рабочая область AML будет указана в разделе Машинное обучение на Портале Azure. Здесь вы также можете управлять целевыми объектами вычислений, моделями и экспериментами (которые мы используем для обработки пакетов изображений).
  2. Затем мы создаем вычислительный кластер AML с помощью метода AmlCompute.create ().
    Путаница заключается в том, что квота в вашей подписке для каждого SKU виртуальной машины для вычислений AML отделена от квоты для обычных виртуальных машин. Вы можете проверить квоту для этой цели и запросить увеличение в разделе «Использование + квоты» на странице рабочей области.
  3. Нам также необходимо зарегистрировать модели, которые наш API делает доступными с помощью метода Model.register().
    Хотя мы всегда можем загрузить модель из удаленного хранилища внутри скрипта скоринга, регистрация модели в рабочем пространстве AML делает их доступными для скрипта скоринга. автоматически.
    Каждый раз, когда загружается одноименная модель, AML меняет ее номер версии, и мы можем выбрать, какую версию использовать в скрипте скоринга (мы используем версию по умолчанию / последнюю версию).
  4. Мы создали рабочую область выше, выполнив аутентификацию по нашей подписке в интерфейсе командной строки. Когда нашему API требуется доступ к экземпляру AML, он должен пройти аутентификацию как приложение (принцип службы). Теперь нам нужно создать приложение, представляющее наш API, и предоставить ему доступ к этому рабочему пространству AML. Вы можете сделать это на портале Azure с помощью этих инструкций. Пароль приложения должен быть установлен как переменная среды (AZUREML_PASSWORD) в Dockerfile для нашего контейнерного API, а tenant-id и application-id хранятся в конфигурационном файле API.

Использование конвейеров AML для оценки изображений

Мы используем функцию ML Pipelines сервиса AML для выполнения пакетного скоринга (для обучения моделей см. Функцию Оценщик). В настоящее время в нашем конвейере есть только один шаг (применение MegaDetector), но он позволяет нам включать оценку классификатора и другие шаги постобработки в будущем и выполнять их на тех же или разных целевых объектах вычислений.

Вы можете увидеть, как мы настроили наш шаг оценки как PythonScriptStep здесь (также см. Эту новую возможность пакетного вывода с использованием ParallelStep). Чтобы использовать графические процессоры на виртуальных машинах, установите следующие параметры в конфигурации запуска AML, переданной в конструктор PythonScriptStep:

amlcompute_run_config.environment.docker.enabled = True
amlcompute_run_config.environment.docker.gpu_support = True
amlcompute_run_config.environment.docker.base_image = DEFAULT_GPU_IMAGE

Параметр source_directory должен указывать на каталог, содержащий ваши скрипты оценки. Если ваш код оценки находится в нескольких файлах, как наш, не забудьте установить hash_paths в [.], чтобы весь source_directory был хеширован для определения изменений перед запуском нового прогона.

Мы делим каждую работу на партии по 2000 изображений. Результаты обнаружения каждого пакета изображений, обработанного на одном узле, сохраняются в формате JSON и выгружаются в контейнер для хранения. И (1) разделение изображений на пакеты для распространения по кластеру, и (2) агрегирование выходных данных должны выполняться с помощью сценария координации, обычно в виде записной книжки Python, а в нашем случае - в компоненте API.

Открытие конвейера через API

Настроив пакетную систему оценки на AML, мы теперь хотим предоставить эту функциональность в виде API. Обертка возможностей обработки в API (по сравнению с вызовом из Jupyter Notebook или скрипта) дает два преимущества:

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

Для поддержки таких сценариев, когда наши сотрудники или мы сами хотели бы представить полезную модель машинного обучения через API, AI for Earth создал API Framework и API Platform. Платформа состоит из уровня над приложением Flask, который обеспечивает автоматическую телеметрию и серию настраиваемых образов Docker для контейнеризации. Платформа позволяет размещать API-интерфейсы, созданные с помощью Framework, в масштабируемом кластере в Azure, используя несколько служб Azure, включая Cache for Redis, Application Insights и Kubernetes Service (AKS).

В процессе создания API есть два важных файла:

  • Dockerfile. Начиная с базового контейнера Python из нашей API Framework, это устанавливает простую среду для запуска API. Ключи и пароли к учетной записи хранения Azure, в которой мы храним выходные данные модели и рабочую область AML, задаются здесь как переменные среды.
  • Runserver.py. Здесь определяются наши конечные точки, включающие инструменты из API Framework.

Наш API пакетной обработки изображений фотоловушек является асинхронным, поскольку для завершения оценки большого количества изображений может потребоваться несколько часов или дней. API Framework учитывает это, реализуя шаблон асинхронного вызова на основе опроса, когда «идентификатор запроса» возвращается пользователю после вызова конечной точки. Затем пользователь отвечает за проверку статуса запроса через конечную точку /task, используя этот идентификатор запроса.

Пакетная обработка координируется API, который отправляет задания в очередь в рабочем пространстве AML после разделения изображений на более мелкие пакеты. После отправки заданий запускается другой поток, периодически опрашивающий рабочую область AML, чтобы узнать, все ли пакеты завершили обработку. Когда все изображения оценены, поток мониторинга объединяет отдельные выходные файлы в контейнере хранения, совместно используемом всеми заданиями, загружает объединенные выходные данные и обновляет статус задачи API с помощью URL-адреса с ключом SAS в файл результатов для загрузки пользователем.

Использование результатов детектора

В сообществе по охране дикой природы экологи используют различные инструменты для просмотра изображений с фотоловушек, и мы хотели бы интегрировать результаты MegaDetector в эти рабочие процессы, где это возможно, вместо того, чтобы требовать от экологов изучения новых инструментов. Мы определили наш выходной формат в JSON, чтобы инструменты маркировки могли отображать ограничивающие рамки при обнаружении животных с высокой степенью достоверности и отделять пустые изображения. Мы работали с разработчиком Timelapse, чтобы построить эту интеграцию и протестировать ее в IDFG.

Следующие шаги

Ценность MegaDetector и API пакетной обработки отражается в количестве неинтересных изображений, которые не просматриваются нашими соавторами. Следующим шагом является ускорение маркировки на уровне видов, т. Е. Обработки интересных изображений, путем обучения классификаторов, специфичных для экосистемы. Для этого мы используем нашу библиотеку помеченных изображений и вывод MegaDetector для обучения классификатора обрезанным областям обнаружения на каждом изображении. Чтобы узнать больше, перейдите в наш каталог классификаций.

Мы также настраиваем базу данных с помощью Azure Cosmos DB для организации метаданных наших изображений, чтобы мы могли быстро обучать классификаторы для новых экосистем.

Активное обучение - еще одна область, в которую мы инвестируем, чтобы ускорить создание меток видов, опираясь на инструменты, созданные в партнерстве с Conservation Metrics.

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

Заключение

Когда мы только начали этот проект, нашей целью было создать инструмент, который использовался бы хотя бы одним биологом для более эффективного выполнения природоохранных работ. С разработкой API пакетной обработки обнаружения мы получили более 25 миллионов изображений с камер-ловушек от 13 различных организаций, и мы надеемся, что отсюда их масштаб будет только увеличиваться, что позволит природоохранным организациям во всем мире ускорить исследования биоразнообразия с помощью AI.

Подтверждение

Этот проект явился результатом вклада многих людей в команде ИИ для Земли и за ее пределами: Сары Бири, Марселя Саймона, Сола Гринберга, Энни Энчакатту, Патрика Фликингера и Нила Джоши.

Мы хотели бы поблагодарить следующие организации, которые работали с нами над внедрением рабочего процесса на основе машинного обучения и MegaDetector, а в некоторых случаях предоставляли изображения для повторного обучения моделей (список обновлен в январе 2021 года):

  • Департамент рыбы и дичи Айдахо
  • Зоопарк Сан-Диего Глобал
  • Лаборатория количественной экологии Вашингтонского университета
  • Университет Айдахо
  • Научно-исследовательский институт Borderlands при Государственном университете Сул Росс
  • Природный фонд Борнео
  • Парки Канады
  • Австралийский заповедник дикой природы
  • Лаборатория доктора Билала Хабиба в Институте дикой природы Индии
  • Королевское общество защиты птиц (RSPB)
  • Решения по защите дикой природы
  • Сохранение острова
  • Синтетический
  • Школа естественных наук, Университет Тасмании
  • Департамент качества окружающей среды Аризоны
  • Исследования дикой природы, Департамент рыб и дикой природы штата Орегон
  • Национальная система заповедников дикой природы, Юго-западный регион, Рыба и дикая природа США
  • Лаборатория пространственной экологии и охраны млекопитающих в Университете штата Вашингтон
  • Совет по договорам Point No Point
  • SPEA (Португальское общество изучения птиц)
  • Ghost Cat Analytics
  • EcoLogic Consultants Ltd.
  • Смитсоновская программа Северных Великих равнин
  • Федеральный университет Амапы, Исследовательская группа по экологии и сохранению амазонских позвоночных
  • Хамаараг, Музей естественной истории Штейнхардта, Тель-Авивский университет
  • Чешский университет естественных наук в Праге
  • Природный парк Рамат-Ханадив, Израиль
  • TU Berlin, Департамент экологии
  • DC Cat Count, возглавляемый Альянсом гуманного спасения
  • Центр биоразнообразия и сохранения при Американском музее естественной истории
  • Камелот
  • Исследовательская группа Грэма Шеннона в Бангорском университете
  • Снимок США

дальнейшее чтение

Обзор Camera Trap ML: все, что я знаю о машинном обучении и фотоловушках для обзора технологий в этой области (наборы данных, модели машинного обучения и программное обеспечение для просмотра изображений)
https://agentmorris.github.io/ фотоловушка-мл-обзор /

Предотвращение браконьерства на носорогов с помощью Microsoft Azure от наших друзей из команды CSE и Peace Parks Foundation
microsoft-azure / »

Машинное обучение Azure: Выполнение пакетных прогнозов для больших наборов данных с помощью службы машинного обучения Azure
https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-run -batch-прогнозы

Машинное обучение Azure: Как создать свой первый конвейер
https://docs.microsoft.com/en-us/azure/machine-learning/service/how-to-create-your-first-pipeline

AI for Earth API Framework для контейнеризации кода вывода модели и API хостинга
https://github.com/microsoft/AIforEarth-API-Development