Обзор
За последние десятилетия в агропромышленном секторе наблюдается два взаимосвязанных тренда: консолидация небольших компаний в крупных холдинги и нехватка рабочей силы на производстве.
С одной стороны, производство в больших компаниях имеет экономическую эффективность, с другой же стороны совокупность этих трендов исключает индивидуальный подход к каждому животному, в отличие например от домашнего хозяйства, в котором каждый фермер «знает» своих животных. Потеря индивидуальности подхода приводит не только к дискомфорту животных, но и снижает реальную эффективность производства. Цель этого хакатона — заполнить этот пробел.
Цель
Цель хакатона — разработать систему на основе искусственного интеллекта, которая в автоматическом режиме наблюдает за животным и определяет его состояние. На основе ваших точечных рекомендаций сотрудники фермы найдут подход к каждому животному.
Как ваша система будет применяться в условиях реального КРС комплекса?
Описание задачи
Цель соревнования — создать систему компьютерного зрения, способную в автоматическом режиме:
- детектировать каждую корову в кадре
- отслеживать её перемещения (в пределах привязного содержания)
- классифицировать её текущее состояние (одно или несколько одновременно)
Ваше решение должно заменить постоянное визуальное наблюдение оператора и выдавать структурированную информацию о поведении стада в реальном времени.
Задача: классификация действий животного на видео
Состояние животных
Состояние животных в этом хакатоне имеет следующую классификацию:
Описание данных
Данные собраны на промышленной площадке ФАНЦ РАН с использованием системы видеонаблюдения Inline.Sense компании Нейросеть-Агро. Видео записаны в условиях привязного содержания коров.
Набор данных разделен на три части:
| Часть | Содержимое | Доступность |
|---|---|---|
train |
Видеофайлы + полная покадровая разметка + 24 часа сырых видео без разметки | С начала хакатона |
val |
Только видеофайлы (без разметки) | С начала хакатона |
test |
Только видеофайлы (без разметки) | Появляется после код-фриза |
Пример кадра из датасета
Структура директорий
Доступ к данным осуществляется посредством доступа к серверу каждой командой. Структура папок строго фиксирована.
Важно: addition/ содержит 24 часа сырых видео без разметки. Команды могут использовать неразмеченные данные в этом соревновании на своё усмотрение.
Формат разметки
Каждому видеофайлу в raw/ соответствует JSON-файл с идентичным именем в annotation/. Разметка покадровая и содержит информацию о каждой видимой корове.
Поля верхнего уровня
| Поле | Тип | Описание |
|---|---|---|
video_name | string | Название видеофайла |
cow_count | int | Количество уникальных коров в видео |
duration_frames | int | Длительность видео в кадрах (600) |
resolution | string | Разрешение видео в формате WxH |
frames | array | Массив объектов с данными по каждому кадру |
Объект в списке cows на каждом кадре
| Поле | Тип | Описание |
|---|---|---|
cow_id | int | Уникальный идентификатор коровы (−1 если не определён) |
states | array<string> | Список активных состояний коровы в данном кадре |
has_bbox | bool | true — видима и имеет рамку; false — скрыта |
bbox | array | null | [x_center, y_center, width, height] нормализованные; null если has_bbox = false |
Состояния могут комбинироваться (например, корова может одновременно лежать и жевать). Взаимоисключающими являются только пары «Жуёт» / «Не жуёт»
Если корова временно скрыта (за конструкцией или другой коровой), has_bbox = false и bbox = null
cow_id = −1 обозначает корову, которую разметчик видел, но не смог сопоставить с уникальным номером. Можно игнорировать или использовать для обучения детектора без привязки к ID
Формализация задачи
Вам необходимо построить систему, которая для каждого тестового видео выдаёт единый структурированный ответ, содержащий результаты трёх взаимосвязанных подзадач.
Детекция
Для каждого кадра предсказать ограничивающие рамки всех видимых коров в формате YOLO [x_center, y_center, width, height] (нормализованные координаты) с указанием confidence модели.
Трекинг
Назначить каждой обнаруженной корове постоянный уникальный идентификатор (cow_id), сохраняющийся на протяжении всего видео.
Классификация состояний
Для каждой отслеженной коровы предсказать бинарный вектор из 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/.
Оценка решений
Оценка решений команды складывается из двух показателей: техническая точность системы и экспертная оценка жюри.
Основная метрика: Macro F1-Score
где i — индекс одной из семи бинарных меток состояния коровы. Мы используем Macro-усреднение, чтобы уравнять вклад редких состояний. Решение с наибольшим значением Macro F1 побеждает в техническом зачёте.
- 1 Результат/эффекты применения решения для предприятия и отрасли
- 2 Как осуществляется представление результатов работы решения специалистам фермы
- 3 Технологическая обоснованность решения (вписывание в непрерывный производственный процесс)
- 4 Экономическое обоснование внедрения
- 5 Обзор/аналитика рынка применимости решения
Таймлайн
Продолжительность хакатона — 3 дня