Авторы : Аман Далмиа и Вишал Агарвал, Wadhwani AI

Хлопок - основная волокнистая культура во всем мире, выращиваемая в более чем 80 странах, где почти 100 миллионов семей во всем мире зависят от выращивания хлопка как источника средств к существованию. Учитывая такое значение, придаваемое многим сельскохозяйственным культурам, особая уязвимость хлопка перед заражением вредителями вызывает у многих беспокойство. Однако заражение вредителями одновременно является одной из наиболее серьезных и предотвратимых проблем, с которыми сталкиваются фермеры, поскольку 55% ​​всех пестицидов, используемых в Индии, приходится на выращивание хлопка.

ИИ для мониторинга вредителей

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

Используя PyTorch, исследователи Wadhwani AI смогли создать модель, которая способна точно предсказать местонахождение вредителей в посевах хлопка. После захвата изображение проходит через многозадачную сеть, которая проверяет, действительно ли изображение. Если это так, ветвь обнаружения предоставляет потенциальные местоположения обнаруженных вредителей. Окончательная рекомендация дается на основе количества обнаруженных вредителей и правил, установленных энтомологами.

Общий процесс описан ниже с более подробной информацией:

Еще одно преимущество PyTorch заключается в его способности использовать автономный вывод. Поскольку многие мелкие фермерские хозяйства расположены в сельской местности, доступ многих фермеров к покрытию сети является плохим и ограниченным. Чтобы улучшить взаимодействие с пользователем, Wadhwani AI может развертывать свои модели, используя алгоритмы сжатия моделей, чтобы уменьшить размер модели на 98% с 250 МБ до менее 5 МБ. В недавней статье нашей команды, опубликованной в KDD 2020, рассказывается о нашем пути, проблемах, с которыми мы столкнулись, и о том, что мы узнали.

Создание решения для машинного обучения

Наша работа обеспечивается множеством инструментов, в частности, PyTorch для разработки и развертывания наших моделей, а также Weights & Biases для отслеживания экспериментов и передачи результатов соответствующим заинтересованным сторонам. Полный обзор всех используемых нами инструментов показан ниже.

Многозадачная модель

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

Single Shot MultiBox Detector (SSD) был одним из первых одноступенчатых детекторов, которые показали производительность, сопоставимую со своими двухкаскадными аналогами, при этом будучи быстрыми. Мы столкнулись с серьезной проблемой, поскольку наш набор данных сильно отличается от стандартных наборов данных для обнаружения объектов. Наши изображения худшего качества, поскольку они снимаются со смартфонов в отдаленных деревнях. Вредители часто собираются вместе, что часто затрудняет определение границ. Эти границы, такие как конечности и крылья, которые являются ключевыми характеристиками для классификации, в конечном итоге отсутствуют на входном изображении.

Целевая функция, используемая для обучения SSD, называется MultiBox loss. Он состоит из компонента локализации и классификации для учета плотности ограничивающего прямоугольника и точности прогнозируемого класса соответственно. Здесь очень удобно отслеживать эксперименты, чтобы понять, как на различные аспекты функций потерь влияют изменения в оптимизации, увеличении данных, сетевой архитектуре и размере ввода. Например, на изображении ниже можно увидеть, что в общих потерях (поезд / потеря) всегда преобладают потери классификации (train / loss_c), а не потеря локализации (train / loss_l).

Еще один способ наблюдать за развитием производительности модели - визуализировать, как прогнозы меняются с течением времени. Веса и смещения помогают нам в этом, поскольку мы можем отслеживать, как прогнозируемые ограничивающие рамки меняются с течением времени, как показано ниже:

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

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

Оценка модели

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

  • Частота пропущенных срабатываний сигнализации (MAR): процент случаев, когда рекомендовалось бы производить опрыскивание, но система предложила иное.
  • Частота ложных тревог (FAR): процент случаев, когда не следует предпринимать никаких действий, но система предложила опрыскивание.

Мы поставили цель достичь

Мы специально обнаружили, что график DataFrame в Weights & Biases чрезвычайно полезен для понимания прогнозов на уровне изображения во время вывода.

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

График важности параметра в Weights & Biases помогает определить наиболее важные гиперпараметры в отношении потери val.

Модель сжатия

Несмотря на то, что основной мотивацией для сжатия модели является развертывание по телефону, оно оказывается полезным и для развертывания в облаке, поскольку выполняется значительно быстрее. Мы используем итеративную обрезку (как описано в этой статье) и квантование, чтобы уменьшить размер нашей модели с 265 МБ до 5 МБ. В статье представлена ​​следующая техника классификации сетей.

На рисунке выше показано, как удаляется один фильтр. Давайте посмотрим на два последовательных слоя, L и L + 1. Количество входных и выходных каналов для слоя L составляет K и N соответственно . Поскольку выходные данные слоя L являются входными данными для слоя L + 1, количество входных каналов для слоя L + 1 также равно N , а количество выходных каналов равно M. Удаление фильтра по индексу i со слоя L уменьшит количество выходных каналов. слоя L и, следовательно, количество входных каналов в слое L + 1 на один. Таким образом, для обрезки выбранного фильтра нам также необходимо обновить все слои, указав на входе слой L. Мы модифицируем этот метод для работы с нашей многозадачной архитектурой, уменьшая 1024 фильтра на каждой итерации сокращения на 15 итераций. Обратитесь к этому сообщению в блоге для получения более подробной информации и контекста.

Развертывание модели

Чтобы развернуть модели в производстве, мы сначала конвертируем модель PyTorch в модуль TorchScript. Torchscript сериализует модель и делает ее независимой от каких-либо зависимостей Python. Мы смешиваем сценарии и трассировку для нашей модели, поскольку определенные части модели имеют поток управления, который зависит от данных.

Развертывание в облаке

Мы используем TorchServe для обслуживания нашей модели. Он имеет встроенный веб-сервер, который принимает модель и обслуживает ее как запрос REST API. Это также позволяет нам легко настроить модель для пакетных прогнозов. Модуль torchscript упакован в файл архива модели (.mar), необходимый для TorchServe, который содержит точку входа и рабочий процесс для выполнения запроса на вывод. Наконец, модуль TorchScript и файл mar загружаются в корзину s3. Мы создали внутреннюю структуру для ведения реестра и обслуживания моделей. Каждая модель, готовая к производству, добавляется в реестр моделей со всеми связанными с ней метаданными. Платформа использует эти артефакты для последующего обслуживания модели в экземпляре AWS EC2 с TorchServe.

Развертывание по телефону

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

Лучшие практики

Чтобы такие эксперименты можно было воспроизвести, примите во внимание следующее:

  • Контейнеризация: Docker широко используется для обеспечения того, чтобы все зависимости, необходимые для репликации эксперимента, были упакованы в единую автономную среду.
  • Управление версиями данных. Поскольку наборы данных продолжают развиваться с течением времени, разделения на обучение / проверку / проверку не могут быть статичными. Явно версия данных для создания снимков образцов, используемых для обучения любого конкретного эксперимента. На данный момент мы храним разбиения явно в файле версии данных. В будущем мы с нетерпением ждем перехода на Артефакты от Weights & Biases.
  • Управление версиями эксперимента. Мы сохраняем все гиперпараметры для каждого эксперимента в файле конфигурации вместе с идентификатором фиксации Git и конкретным начальным значением.

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

Авторы

Аман Далмия
@dalmiaman

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

Вишал Агарвал
@ the_vobot

Вишал - инженер машинного обучения в Wadhwani AI. Он работал над искусственным интеллектом для раннего обнаружения заражения вредителями и инструментами скрининга на туберкулез. В настоящее время он занимается MLOps, разрабатывая и адаптируя передовые методы, которые позволяют нам создавать масштабируемые системы машинного обучения. Вишал интересуется системами и машинным обучением и имеет академическое образование в области электроники и электротехники.

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