ИИ-мониторинг здоровья рыб в аквакультуре
На лососёвой ферме с 20 садками и 500 000 особей ежедневный обход занимает 6–8 часов персонала. Раннее выявление болезни (лох, SRS, IHN) критично — промедление 48 часов означает распространение на весь садок и потери в сотни тысяч долларов. Подводные камеры с CV-аналитикой мониторят непрерывно.
Что анализирует система
Поведенческие аномалии — нездоровые рыбы демонстрируют аномальное поведение: вялость, изменение глубины плавания, сбившееся в сторону движение, отказ от корма. Видеоаналитика отслеживает:
- Среднюю скорость движения рыб в садке (fps frame-to-frame optical flow)
- Распределение по глубине (из стереокамеры или структурированного освещения)
- Частоту движения жабр (respiratory rate) — учащённое дыхание = признак гипоксии или инфекции
Визуальные признаки болезней — язвы на теле, потемнение чешуи, экзофтальм (пучеглазие), ерошение чешуи. Детектор объектов YOLOv8 на кропах отдельных рыб.
Смертность — автоматический подсчёт всплывших особей. Критически важно отловить ранний признак: нарастание % мёртвых рыб на поверхности.
Подводные камеры: технические сложности
Снимки в воде — это не то же самое, что на воздухе. Специфика:
- Рассеивание света: на глубине 4–6м цвета смещаются в синий/зелёный спектр, красный канал затухает экспоненциально
- Взвесь частиц: мутная вода даёт артефакты, похожие на пузырьки или чешую
- Блики от поверхности: нарушают освещение верхней части садка
- Постоянное движение воды: смаз, размытые кадры
Preprocessing: white balance correction по Snell's law (восстановление красного канала пропорционально глубине), CLAHE для контраста на мутных снимках, temporal deblurring для смаза.
def underwater_white_balance(image, depth_m):
"""Восстановление красного канала для подводных снимков"""
img_float = image.astype(np.float32) / 255.0
# Коэффициент поглощения для красного канала воды ~0.35/м
red_attenuation = np.exp(-0.35 * depth_m)
img_float[:, :, 2] = np.clip(
img_float[:, :, 2] / (red_attenuation + 1e-6), 0, 1
)
return (img_float * 255).astype(np.uint8)
Подсчёт и биомасса
Подсчёт рыб в садке — задача со значительной окклюзией (рыбы перекрывают друг друга). Методы:
- Direct counting через Instance segmentation (Mask R-CNN) + де-дупликация треков
- Density estimation — регрессионная модель предсказывает плотность рыб в кадре, умноженная на объём садка
Оценка биомассы (средний вес): стереокамера измеряет длину тела (BL — Body Length) → аллометрическая формула W = a × BL^b (коэффициенты видоспецифичные). Точность оценки веса: ±8–12% от реального.
Integration с системами кормления
Поведенческие паттерны рыб — прямой индикатор аппетита. CV-система измеряет «активность кормления» (movement intensity у поверхности в момент подачи корма) и передаёт сигнал в систему автоматического кормления: снизить подачу при низком аппетите (признак болезни или перекорма).
Это снижает кормовые затраты на 8–15% и уменьшает загрязнение среды невыеденным кормом.
Сроки
Базовая система мониторинга (5–10 камер, поведение + смертность): 8–12 недель. Полная платформа с детекцией болезней, биомассой, интеграцией кормления: 16–24 недели. Стоимость рассчитывается индивидуально.







