Обзор

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

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

Цель

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

Как ваша система будет применяться в условиях реального КРС комплекса?

Описание задачи

Цель соревнования — создать систему компьютерного зрения, способную в автоматическом режиме:

  • детектировать каждую корову в кадре
  • отслеживать её перемещения (в пределах привязного содержания)
  • классифицировать её текущее состояние (одно или несколько одновременно)

Ваше решение должно заменить постоянное визуальное наблюдение оператора и выдавать структурированную информацию о поведении стада в реальном времени.

Задача: классификация действий животного на видео

Состояние животных

Состояние животных в этом хакатоне имеет следующую классификацию:

Жуёт
Не жуёт
Пристает к другой корове
Пьёт
Бьет рогами о предмет
Лежит
Жуёт
Не жуёт
Пристает к другой корове
Пьёт
Бьет рогами о предмет
Лежит

Описание данных

Данные собраны на промышленной площадке ФАНЦ РАН с использованием системы видеонаблюдения Inline.Sense компании Нейросеть-Агро. Видео записаны в условиях привязного содержания коров.

Набор данных разделен на три части:

Часть Содержимое Доступность
train Видеофайлы + полная покадровая разметка + 24 часа сырых видео без разметки С начала хакатона
val Только видеофайлы (без разметки) С начала хакатона
test Только видеофайлы (без разметки) Появляется после код-фриза

Пример кадра из датасета

Пример кадра из датасета

Структура директорий

Доступ к данным осуществляется посредством доступа к серверу каждой командой. Структура папок строго фиксирована.

/data/
├── README.md  # Краткое описание данных и условий использования
├── train/
│  ├── raw/       # mp4 файлы длительностью 600 кадров каждый
│  ├── annotation/ # .json файлы с покадровой разметкой
│  └── addition/   # 24 часа неразмеченных видео
├── val/
│  └── raw/       # видео для промежуточной проверки
└── test/       # Появляется в последний день соревнования
⚠️

Важно: addition/ содержит 24 часа сырых видео без разметки. Команды могут использовать неразмеченные данные в этом соревновании на своё усмотрение.

Формат разметки

Каждому видеофайлу в raw/ соответствует JSON-файл с идентичным именем в annotation/. Разметка покадровая и содержит информацию о каждой видимой корове.

annotation / train_007.json
развернуть

Поля верхнего уровня

ПолеТипОписание
video_namestringНазвание видеофайла
cow_countintКоличество уникальных коров в видео
duration_framesintДлительность видео в кадрах (600)
resolutionstringРазрешение видео в формате WxH
framesarrayМассив объектов с данными по каждому кадру

Объект в списке cows на каждом кадре

ПолеТипОписание
cow_idintУникальный идентификатор коровы (−1 если не определён)
statesarray<string>Список активных состояний коровы в данном кадре
has_bboxbooltrue — видима и имеет рамку; false — скрыта
bboxarray | null[x_center, y_center, width, height] нормализованные; null если has_bbox = false
Примечания по разметке

Состояния могут комбинироваться (например, корова может одновременно лежать и жевать). Взаимоисключающими являются только пары «Жуёт» / «Не жуёт»

Если корова временно скрыта (за конструкцией или другой коровой), has_bbox = false и bbox = null

cow_id = −1 обозначает корову, которую разметчик видел, но не смог сопоставить с уникальным номером. Можно игнорировать или использовать для обучения детектора без привязки к ID

Формализация задачи

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

01

Детекция

Для каждого кадра предсказать ограничивающие рамки всех видимых коров в формате YOLO [x_center, y_center, width, height] (нормализованные координаты) с указанием confidence модели.

02

Трекинг

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

03

Классификация состояний

Для каждой отслеженной коровы предсказать бинарный вектор из 7 классов. Список состояний:

ID Состояние (RU) Состояние (ENG)
0ЖуётRuminating
1Не жуётNot ruminating
2ПьётDrinking
3ЛежитLying
4Неподвижно стоитStanding still
5Бьёт рогами о предметHorn rubbing
6Пристаёт к соседней коровеMounting

Модель должна выдавать все 7 флагов для каждой коровы. Например, для лежащей и жующей коровы вектор состояний будет: [1, 0, 0, 1, 0, 0, 0]

Формат файла ответа

Для финальной оценки необходимо предоставить один JSON-файл submission.json, содержащий предсказания для всех видео из test/raw/.

submission.json
развернуть

Оценка решений

Оценка решений команды складывается из двух показателей: техническая точность системы и экспертная оценка жюри.

Техническая оценка

Основная метрика: Macro F1-Score

Macro F1 states = 1/7 sum F1 score

где i — индекс одной из семи бинарных меток состояния коровы. Мы используем Macro-усреднение, чтобы уравнять вклад редких состояний. Решение с наибольшим значением Macro F1 побеждает в техническом зачёте.

Критерий оценивания жюри «5П»
  1. 1 Результат/эффекты применения решения для предприятия и отрасли
  2. 2 Как осуществляется представление результатов работы решения специалистам фермы
  3. 3 Технологическая обоснованность решения (вписывание в непрерывный производственный процесс)
  4. 4 Экономическое обоснование внедрения
  5. 5 Обзор/аналитика рынка применимости решения

Таймлайн

27 апреля
Старт
28 апреля
Середина
29 апреля
Финал

Продолжительность хакатона — 3 дня