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

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

Обнаружение животных

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

В целом, я бы сказал, что данных, которые я использовал, было довольно мало. Многие изображения были размыты, и в конечном итоге изображения оказались довольно маленькими - всего около 100x100 пикселей. Я использовал около 200 образцов для тестирования, что тоже довольно мало, но я решил начать с них и продолжить утомительные разговоры о сборе дополнительных снимков экрана только в случае необходимости.

Ниже приведены некоторые примеры типов изображений, которые я собрал ...

TensorFlow

Я хорошо прочитал статью Лео Бокура« Обнаружение объектов обработки видео в реальном времени с использованием Tensorflow, OpenCV и Docker » и использовал ее в качестве основы для настройки моей модели Tensorflow. Я выбрал Tensorflow, потому что я уже знаю, что обнаружение объектов широко изучалось на платформе, и я уже был знаком с ним.

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

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

Плюсы:

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

Минусы:

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

Этапы реализации:

1 - Настройка сервера Ubuntu

2 - Установите Python и Tensorflow и сервер.

3 - Обучите модель с соответствующими изображениями.

4 - Тестовое предсказание в модели.

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

Когнитивные службы Microsoft

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

Azure Custom Vision - это часть когнитивной службы компьютерного зрения, которая позволяет создавать, развертывать и улучшать собственные алгоритмы классификации изображений, созданные в графическом интерфейсе пользователя Azure Image Recognition. Предоставляемая услуга AI может наносить ярлыки на изображения в соответствии с их визуальными характеристиками после прохождения обучения с учителем. Изображения могут быть отправлены в обученную модель для классификации с помощью вызова REST API, а результат может быть возвращен в формате JSON.

Плюсы:

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

Минусы:

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

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

Ксимилар

Чешская компания Ximilar предоставляет услуги компьютерного зрения, которые созданы, чтобы бросить вызов подобным Google и Microsoft в области распознавания изображений. Я обнаружил, что это очень эффективная альтернатива, и она очень проста в использовании. У меня было много сообщений от команды Ximilar, которая предлагала мне продемонстрировать модели для тренировки рук и дать мне совет о том, как получить максимальную отдачу от их платформы. Я настоятельно рекомендую работать с командой, так как я нашел их высокий уровень открытости и обновления услуг.

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

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

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

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

Это ограничение, которое команда Ximilar могла бы помочь мне исправить, если бы я спросил их позже, во время внедрения.

Проектирование системы

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

Периферийные компоненты

Хранилище BLOB-объектов Azure - это решение Microsoft для хранения объектов в облаке. Хранилище BLOB-объектов оптимизировано для хранения больших объемов неструктурированных данных. Неструктурированные данные - это данные, которые не соответствуют определенной модели данных или определению, например текстовые или двоичные данные. Я хотел собрать как можно больше из этого с дрона, а также с веб-сайтов погоды, насколько это возможно, чтобы температура, погода и фазы луны, как я представлял, есть шанс, что они играют роль в местах расположения животных, которые мы еще не понимаем .

Xamarin - это кроссплатформенный фреймворк и набор инструментов, позволяющий разработчикам эффективно создавать собственные макеты пользовательского интерфейса и приложения, которые можно использовать на платформах iOS, Android и универсальных платформах Windows. Я планировал использовать его в качестве своей платформы приложений, поскольку он основан на C #, может быть легко развернут в Azure, а это означает, что мне нужно создать только одно приложение для iOS и Android.

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

Ubuntu - это бесплатный дистрибутив Linux с открытым исходным кодом. Я планировал разместить свою реализацию Tensoflow на сервере Ubuntu, а не в контейнере докеров под управлением Ubuntu.

Система, использующая TensorFlow

Шаг обучения 1
Инфракрасные видеозаписи и полетные данные загружаются разработчиком с дрона.

Шаг обучения 2
Разработчик берет данные изображения и полетные данные и отправляет их на сервер Ubuntu, где их можно использовать для обучения пользовательской модели Tensorflow.

Шаг обучения 3
Разработчик берет данные изображения и данные полета и использует их для обучения пользовательской модели Tensorflow на основе комбинированных функций данных полета и изображений из каждого кадра отснятый материал.

Шаг обучения 4
Модель создается, преобразуется в формат, который можно использовать в настраиваемой службе прогнозирования Tensorflow, и фиксируется для экспорта.

Шаг обучения 5
Замороженная модель загружается в настраиваемую службу прогнозирования Tensorflow, которая будет использоваться для прогнозирования.

Шаг 1 прогнозирования
Пользователь проводит наблюдение / разведку с помощью дрона, собирая инфракрасные изображения и данные полета дрона.

Шаг прогнозирования 2
Программа загружает данные с дрона и отправляет их в кроссплатформенное приложение Xamarin. Приложение можно использовать на устройствах iOS или Android.

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

Шаг использования 1
Приложение берет обрезанный отснятый материал, разделяет его на видео со скоростью 5 кадров в секунду и отправляет каждый кадр в приложение-функцию Azure. В то же время приложение загружает данные и отснятый материал в хранилище BLOB-объектов Azure для архивирования и потенциального использования в будущем.

Этап использования 2
Приложение-функция вызывает AI на сервере Ubuntu, чтобы предсказать содержимое для каждого изображения. Результаты прогнозирования возвращаются в приложение-функцию, которое затем передает их обратно в приложение Xamarin для каждого кадра, а приложение Xamarin собирает из них сокращенное видео, используя только кадры, содержащие животных, и сохраняет его в видеотеке пользователя в приложении Xamarin. Время кадров, содержащих животных, идентифицируется и используется для извлечения данных о местоположении из файла .DAT и создания файла .KML для визуализации карты.

Система, использующая когнитивные сервисы

Шаг обучения 1
Инфракрасные видеозаписи и полетные данные загружаются разработчиком с дрона.

Этап обучения 2
Разработчик берет из отснятого материала только изображения и загружает их на панель управления Custom Vision Training.

Шаг обучения 3
Разработчик использует загруженный материал для обучения модели с помощью панели управления Microsoft Custom Vision Training.

Шаг обучения 4
Затем обученная модель присоединяется к службе Custom Vision Prediction Service для использования через вызовы API приложением Xamarin.

Шаг 1 прогнозирования
Пользователь проводит наблюдение / разведку с помощью дрона, собирая инфракрасные изображения и данные полета дрона.

Шаг прогнозирования 2
Программа загружает данные с дрона и отправляет их в кроссплатформенное приложение Xamarin. Приложение можно использовать на устройствах iOS или Android.

Шаг прогнозирования 3
Пользователь использует приложение, чтобы выбрать, какое видео он хочет отправить в ИИ для прогнозирования. Пользователь может обрезать начало или конец отснятого материала, чтобы избежать отправки нерелевантных отснятых материалов о взлете и посадке.

Шаг использования 1
Приложение берет обрезанный отснятый материал, разделяет его на 5 кадров в секунду и отправляет каждый кадр в ИИ. В то же время приложение выгружает данные и отснятый материал в хранилище BLOB-объектов Azure для архивирования и потенциального использования в будущем.

Результаты прогнозов возвращаются в приложение для каждого кадра, и приложение собирает из них сокращенное видео, используя только кадры, содержащие животных, и сохраняет его в видеотеке пользователя в приложении.

Время кадров, содержащих животных, идентифицируется и используется для извлечения данных о местоположении из файла .DAT и создания файла .KML для визуализации карты.

Система, использующая Ximilar

Шаг обучения 1
Инфракрасные видеозаписи и полетные данные загружаются разработчиком с дрона.

Этап обучения 2
Разработчик берет из отснятого материала только изображения и загружает их на панель управления Ximilar.

Шаг обучения 3
Разработчик использует загруженный материал для обучения модели с помощью панели управления Ximilars Training.

Шаг обучения 4
Затем к обученной модели можно получить доступ с помощью вызовов API из приложения Xamarin.

Шаг 1 прогнозирования
Пользователь проводит наблюдение / разведку с помощью дрона, собирая инфракрасные изображения и данные полета дрона.

Шаг прогнозирования 2
Программа загружает данные с дрона и отправляет их в кроссплатформенное приложение Xamarin. Приложение можно использовать на устройствах iOS или Android.

Шаг прогнозирования 3
Пользователь использует приложение, чтобы выбрать, какое видео он хочет отправить в ИИ для прогнозирования. Пользователь может обрезать начало или конец отснятого материала, чтобы избежать отправки нерелевантных отснятых материалов о взлете и посадке.

Шаг использования 1
Приложение берет обрезанный отснятый материал, разделяет его на 5 кадров в секунду и отправляет каждый кадр в ИИ. В то же время приложение выгружает данные и отснятый материал в хранилище BLOB-объектов Azure для архивирования и потенциального использования в будущем.

Результаты прогнозов возвращаются в приложение для каждого кадра, и приложение собирает из них сокращенное видео, используя только кадры, содержащие животных, и сохраняет его в видеотеке пользователя в приложении.

Время кадров, содержащих животных, идентифицируется и используется для извлечения данных о местоположении из файла .DAT и создания файла .KML для визуализации карты.

Вывод

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

Чтобы компоненты решения, связанные с искусственным интеллектом / машинным обучением (AI / ML), были точными, я думаю, что для каждого животного потребуется не менее 4000 различных примеров обучения, прежде чем я смогу комфортно использовать его в производственной среде. Основываясь на моем кратком тестировании, я думаю, что система сможет достичь точности около 70%.

О диких свиньях в Западной Австралии

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

Правительство Западной Австралии выпустило стратегический документ о том, как они планируют решать проблему свиней, который можно найти здесь. Правительство недавно выделило гранты в размере 300 000 долларов на решение этой проблемы, но пока использование технологий остается базовым, полагаясь на статические камеры и GPS-мониторинг только некоторых свиней.