Как оптимизировать видеоаналитические сервисы. Пример ГК «Русагро»
В животноводстве приходится регулярно считать поголовье скота. Чтобы не заниматься этим вручную и повысить поточность подсчета, ГК «Русагро» при помощи ML создал видеоаналитический сервис. Что из этого вышло — в докладе Павла Ширяева, руководителя группы компьютерного зрения «Русагро Тех».
ГК «Русагро» — ведущий вертикально интегрированный агрохолдинг России, представленный в категориях: сахар, мясная продукция, масла и жиры, молочные продукты и сельскохозяйственная культура. Это третий российский производитель свинины с долей рынка 5,4 %. Об этом направлении, свиноводстве, и пойдет речь.
Видеоаналитические сервисы в ГК «Русагро»
В свиноводстве необходим регулярный подсчет количества животных в загонах, следить за кормом, обнаруживать заболевших и оценивать поведение животных, чтобы предсказать лучший период их осеменения. Для этого компания использует специальное оборудование: IP-камеры, тепловизоры и роботизированные каретки, на которых эти сенсоры расположены.
Ежедневно системы сбора данных получают тысячи фотографий и видео, а затем используют их для обучения нейросетей. Не потеряться в таком объеме данных им помогает S3-совместимое хранилище MinIO и базы данных — в них лежат файлы с метаданными по каждому видео и фото. Таким образом, сотрудники знают, что и где было снято, когда, на какой сенсор, для какого проекта и где это хранится. Это позволяет оперативно фильтровать данные, генерировать новые датасеты, забирать новые фото и видео в сервисы ГК «Русагро».
Хранилище данных занимает центральное место в двух рабочих процессах: в инференсе и трейнинге:
Сборщики сохраняют данные в хранилище. Далее инференс пайплайн забирает данные и генерирует результаты. Затем эти результаты получают ветеринары, служба безопасности и все остальные, кому нужна эта информация. А трейнинг-пайплайн позволяет регулярно обновлять модели для сервисов с учетом новых данных.
Как устроено обучение сервисов
Чтобы сервисы выдавали стабильный качественный результат, нужно непрерывно обучать модели. Для этого CV-инженеры при помощи методов активного обучения оценивают новые изображения и проверяют, с какими из них сервисы справляются хуже. Далее эти фото и видео забирают для переобучения системы.
Все эксперименты для трейнинг-пайплайнов организованы в ClearML. В нем «Русагро Тех» обучает и оптимизирует модели, собирает метрики и затем оценивает, как изменилась скорость инференса и не упала ли точность. Все это объединяют в одну таблицу и дальше от эксперимента к эксперименту следят за изменениями.
Процесс инференса строится при помощи оркестратора Prefect — он легко разворачивается и настраивается, в нем удобно планировать и управлять задачами для сервисов по видеоаналитике. То есть фактически результаты работы модели генерируются на одном из шагов Prefect-пайплайна. Также в работе помогают Grafana, Prometheus и телеграм-боты для мониторинга и оперативного реагирования на возникающие инциденты.
Пример проекта «Инвентаризация животных»
А теперь конкретный кейс — как ГК «Русагро» научился подсчитывать поголовье свиней в загонах с точностью не ниже 99%.
Подсчет животных — типовая задача в животноводстве. Она позволяет компании планировать производство, оценивать количество корма или узнавать, сколько голов ушло в мясопереработку. Для человека это не самая простая задача: свиньи разбегаются, приходится тратить много времени, в результатах бывают ошибки, а главное — это стресс для животных. Поэтому вместо ручного труда ГК «Русагро» решила использовать роботизированную каретку для перемещения видеокамеры и, силами «Русагро Тех», разработала сервис по распознаванию и подсчету животных по видео.
Как работает система видеоаналитики
Схема выглядит так:
Что здесь происходит? Для каждого загона с животными определены лучшие углы и точки съемки для камеры. Эта информация забирается из хранилища и передается в сервис по сбору данных. Сервис, в свою очередь, управляет кареткой: указывает ей, в какой точке остановиться, под каким углом поставить сенсор, сколько ехать до края загона и когда снимать видео с животными. Затем все видео с необходимыми метаданными записываются обратно в хранилище.
Следующий сервис забирает поступающие видео для подсчета. Здесь происходит пре- и постпроцессинг изображений, и, главное, покадровая обработка нейросетями. Информация о количестве свиней передается обратно в хранилище, сотрудникам на производстве, вносится в дашборды.
Сложности при подсчете
На работу камеры влияют внешние факторы — их нужно учитывать при обучении и настройке системы.
Освещение. В загонах есть не только искусственное освещение, но и естественное — от окон. А так как естественный свет меняется в течение дня и календарного года, сотрудникам «Русагро Тех» приходится подбирать настройки для камер.
Окклюзии. Каретка перемещается под потолком, поэтому в поле зрения постоянно попадают посторонние предметы. Чтобы они не мешали съемке, специалисты выбирают области для съемки, где животных лучше видно.
Загрязнение камеры. В загонах с животными этого не избежать, поэтому камеры приходится протирать.
Поведение животных. Все животные разные: поросята юркие и любят бегать, а взрослые свиньи группируются и наваливаются друг на друга, из-за чего некоторых особей не видно. Все это усложняет работу трекера.
Дальние животные. Особенно сложно считать в дальних углах загона, потому что таких животных хуже видно.
Как настраивали систему
Группа компьютерного зрения «Русагро Тех» провела исследование и установила, что для человека точность подсчета поголовья свиней составляет 96–97%. У сервиса видеоаналитики этот показатель должен был стать не менее 99%.
Для начала группа компьютерного зрения ввела кросс-проверку. Для съемки стали использовать три независимых разметчика — каждый на видео подсчитывает животных. Четвертый разметчик собирает данные, находит ошибки в подсчетах и усредняет. Такое усредненное значение принимается за истинное.
Практически сразу сервис по подсчету показал точность 97%. Оставалось только снизить количество ошибок.
Еще один процент точности дал тюнинг гиперпараметров после оптимизации пороговых значений для алгоритмов детекции, трекинга и счета животных
Настройка активной зоны прибавила 0,5%. Активная зона — это область на изображении, в котором подсчитывается животное с уникальным ID. Для разных по размерам загонов нужна разная область. Но так как сервис знает, какой загон снят, то может выбрать необходимую.
Активная область выделена зеленым:
И последнее — усреднение данных. Группа компьютерного прокатывает каретку три раза в день, а данные усредняет.
Съемка выполняется с разницей в несколько часов. Это дает больше шансов увидеть тех животных, которые были перекрыты другими во время одного из проездов. А алгоритм подсчета может отбросить аномальные данные, которые появились из-за севших на объектив насекомых во время съемки.
99% — точность после настройки и обучения сервисов.
Заключение и советы
ГК «Русагро» до сих пор находится в активной фазе разработки своих ML-процессов и выбора инструментов. В ближайшем будущем силами «Русагро Тех» планируется реализовать полную синхронизацию и автоматизацию процесса обучения и инференса. Но уже сейчас у них есть опыт и советы для тех, кто еще не приступал к организации MLOps-системы.
Как можно скорее организуйте удобное хранение данных. Так вы сэкономите немало времени, потому что это краеугольный камень любой ML-системы.
Пробуйте разные MLOps-инструменты. Существуют лучшие практики, однако не бывает идеального сочетания. Если вы будете пробовать что-то новое, то рано или поздно найдете подходящий именно вам набор инструментов.
И главное, не бойтесь и просто начните собирать свою MLOps-платформу.
Вы можете использовать инфраструктуру Selectel для обучения и развертывания ML-моделей. Мы даем две недели бесплатного тестового периода, чтобы вы попробовали поработать с ML-платформой, выбрать интересующие модели GPU и провести несколько экспериментов.
Платформа позволяет организовать полный цикл обучения и использования ML-модели в кластере Kubernetes, а также адаптирована под установку системы управления ML-экспериментами ClearML. Вы можете полностью настроить ее под цели и задачи своей компании — наши сотрудники помогут определиться с конфигурацией, научат работать с платформой и будут помогать в процессе ее использования.
Интересна тема ML? Вступайте в Telegram в сообщество ML- и MLOps-инженеров. Обсуждайте production ML, читайте полезные статьи и обменивайтесь опытом с комьюнити.