Обзор

Современное свиноводство — одна из самых технологичных отраслей животноводства. На крупных комплексах давно автоматизирован климат-контроль, дозирование кормов и поение. Ветеринары используют ультразвук для диагностики супоросности, селекционеры оперируют огромными массивами данных по происхождению и продуктивности, а операторы ежедневно заносят в учётные системы показатели привесов, конверсии корма и толщины шпика. Кажется, что о каждом животном известно если не всё, то почти всё.

Но если углубиться, во всей этой цифровой идиллии зияет огромный пробел. Мы до сих пор почти ничего не знаем о состоянии опорно-двигательного аппарата свиней — той самой «ахиллесовой пяты», которая часто ставит точку в карьере высокопродуктивной свиноматки. Бетонные щелевые полы, круглосуточное стояние, агрессивная среда — ноги животного работают в экстремальных условиях, но их здоровье оценивают по старинке: на глаз, от случая к случаю, когда проблема уже стала очевидной.

А ведь именно конечности лимитируют продуктивное долголетие. Исследования показывают, что заболевания ног и копыт занимают второе место среди причин преждевременной выбраковки свиноматок, уступая только нарушениям воспроизводства. При этом хромота у свиней — проблема коварная: эволюция научила их скрывать боль, чтобы не стать жертвой сородичей.

Сегодня диагностика опирается на визуальный осмотр, который проводят перегруженные зоотехники. Заметить ранние признаки — отёк сустава, изменение постановки ноги, асимметрию нагрузки — в потоке сотен голов практически невозможно. В результате многие проблемы выявляются слишком поздно, когда лечение уже неэффективно и свиноматка идёт под нож. Это не только страдания животных, но и прямые экономические потери: затраты на выращивание ремонтной свинки, упущенные опоросы, простой оборудования.

Цель

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

Как ваша система будет определять здоровье конечностей животных? Как ваша система поможет «перегруженному» потоком животных зоотехнику?

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

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

Задача: Мультилейбл-классификация (Multi-output binary classification).

Изображение животного
Ракурс 1 (Правый бок)
Ракурс 2 (Сверху)
Ракурс 3 (Левый бок)
Ракурс 4 (Сзади)

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

Съемка производится в бонитировочном станке (Станок автоматического фенотипирования серии Pigline компании Нейросеть-Агро) одновременно с четырех синхронизированных ракурсов.

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

1
Тренировочный набор данных

Передается командам как сырые данные, так и разметка

2
Тестовый набор данных

Передается командам без разметки для тестирования решения по ходу соревнования

3
Валидационный набор данных

Передается командам в конце соревнования для финального прогона решений, передается без разметки

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

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

/data/
├── README.md  # Краткое описание данных и условий
├── train/
│  ├── raw/       # Видео pig_{id}_cam_{view}.mp4
│  ├── annotation/ # Разметка pig_{id}.json
│  └── metadata/  # meta_data.xlsx (передние ноги)
├── val/
│  ├── raw/       # Видео без разметки
│  └── metadata/  # meta_data.xlsx (передние ноги)
└── test/       # Появляется в последний день соревнования

Описание ракурсов (Views)

View Ракурс Значение view в имени файла
1 Сверху top
2 Правый бок right
3 Левый бок left
4 Сзади rear

Пример реальных кадров из датасета

Кадр 1. Правый бок
Правый бок — пример кадра
Кадр 2. Вид сзади
Вид сзади — пример кадра
Кадр 3. Левый бок
Левый бок — пример кадра
Кадр 4. Вид сверху
Вид сверху — пример кадра

Дополнительные табличные данные (Metadata)

В файлах meta_data.xlsx (для train/val/test) содержится информация о состоянии передних конечностей. Эти данные не являются таргетом, но могут быть использованы как вспомогательные признаки, так как патологии передних и задних ног могут коррелировать.

Схема таблицы metadata:

Колонка Тип Описание
ID int Уникальный идентификатор животного
front_left_bad_posture bool Плохая постановка передней левой
front_right_bad_posture bool Плохая постановка передней правой
front_left_bumps bool Шишки на передней левой
front_right_bumps bool Шишки на передней правой
front_left_soft_pastern bool Мягкая бабка передней левой
front_right_soft_pastern bool Мягкая бабка передней правой
front_left_x_shape bool Х-образность передней левой
front_right_x_shape bool Х-образность передней правой

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

В папке train/annotation/ лежат файлы pig_{id}.json. Каждый файл содержит пути к видео, идентификатор животного, таргеты и покадровые аннотации объектов для всех четырёх ракурсов.

train / pig_12345.json
свернуть
{
  "pig_id": "12345",
  "video": {
    "top":   "train/raw/pig_12345_cam_top.mp4",
    "right": "train/raw/pig_12345_cam_right.mp4",
    "left":  "train/raw/pig_12345_cam_left.mp4",
    "rear":  "train/raw/pig_12345_cam_rear.mp4"
  },
  "target": {
    "bad_posture":  0,
    "bumps":        1,
    "soft_pastern": 0,
    "x_shape":      0
  },
  "annotations": [
    {
      "frame_id": 150,
      "top": [
        { "bbox": [0.512, 0.478, 0.345, 0.567], "label": "pig" }
      ],
      "right": [
        { "bbox": [0.612, 0.523, 0.234, 0.432], "label": "right_back_leg" }
      ],
      "left": [
        { "bbox": [0.388, 0.556, 0.221, 0.445], "label": "left_back_leg" }
      ],
      "rear": [
        { "bbox": [0.423, 0.389, 0.112, 0.234], "label": "left_back_leg" },
        { "bbox": [0.587, 0.376, 0.108, 0.241], "label": "right_back_leg" }
      ]
    },
    {
      "frame_id": 300,
      "top": [
        { "bbox": [0.501, 0.482, 0.350, 0.572], "label": "pig" }
      ],
      "right": [],
      "left":  [],
      "rear": [
        { "bbox": [0.415, 0.392, 0.118, 0.238], "label": "left_back_leg" },
        { "bbox": [0.591, 0.381, 0.105, 0.239], "label": "right_back_leg" }
      ]
    }
  ]
}

Описание полей

КлючТипОписание
pig_id string Уникальный идентификатор животного
video object Словарь с относительными путями к видеофайлам. Ключи: top, right, left, rear
target object Эталонные значения для четырёх бинарных признаков задних конечностей
annotations list[object] Список кадров, для которых выполнена разметка объектов. Каждый элемент соответствует одному frame_id

Поля внутри каждого кадра (annotations[i])

КлючТипОписание
frame_id int Номер кадра (индекс с 0)
top list[object] Объекты в ракурсе «сверху». Обычно один объект с label="pig"
right list[object] Объекты в ракурсе «правый бок». Ожидается один объект right_back_leg
left list[object] Объекты в ракурсе «левый бок». Ожидается один объект left_back_leg
rear list[object] Объекты в ракурсе «сзади». Два объекта: left_back_leg и right_back_leg

Формат Bounding Box

Все координаты заданы в нормализованном формате YOLO относительно ширины и высоты кадра.

"bbox": [x_center, y_center, width, height]

x_center, y_center — координаты центра ограничивающей рамки (от 0.0 до 1.0)
width, height — ширина и высота рамки (от 0.0 до 1.0)

Описание таргета

Для каждого животного в тестовой выборке (test/raw/) необходимо предсказать 4 бинарных метки состояния задних конечностей.

Предсказываемые поля (Targets):

ID МеткиНазвание (RU)Название (ENG)Тип
1 Плохая постановка bad_posture 0 или 1
2 Шишки на ногах bumps 0 или 1
3 Мягкие бабки soft_pastern 0 или 1
4 Х-образные конечности x_shape 0 или 1

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

Файл должен называться submission.csv. Разделитель — запятая. Первая строка — заголовок.

id,bad_posture,bumps,soft_pastern,x_shape
1001,0,1,0,0
1002,1,0,1,0
1003,0,0,0,1

Важно: ID животного берется из имени файла (например, из pig_1001_cam_top.mp4id=1001).
Порядок колонок в CSV должен строго соответствовать указанному.

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

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

Техническая оценка
  • Основная метрика: Macro F1-Score
Score = (1/4) × Σ F1_score

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

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

Таймлайн

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

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