ИИ-мониторинг популяции рыб через камеры и сонар
Точный подсчёт рыбы в садке — это биомасса, страховая оценка, планирование вылова. Ручной подсчёт (отбор пробы + экстраполяция) даёт погрешность 15–25%. Автоматизированная система камера + сонар снижает её до 3–8%.
Сонарные системы для мониторинга
Эхолот и рыболокатор дают акустическую картину стаи рыб: плотность, глубину залегания, биомассу. Современные мультилучевые сонары (Simrad, Kongsberg, BioSonics) дают точность подсчёта ±5% на стаях средней плотности.
Echo integration — стандартный метод оценки биомассы по данным эхолота: интегрируем acoustic backscatter по объёму, переводим в количество особей через target strength (TS) конкретного вида и размера.
ИИ-слой: классификация вида рыбы по TS-профилю (нейросеть на time-frequency спектрограммах акустических сигналов), разделение видов в смешанных стаях.
Подводное видео: подсчёт через трекинг
Для садков: стереокамера + трекинг траекторий. Задача сложнее, чем кажется — рыбы движутся в трёх измерениях, постоянно перекрываются, одинаково выглядят.
Mark-recapture digital approach: вместо физического мечения — ReID по внешнему виду. Паттерны чешуи, пятна, рубцы уникальны для особи. FishID модель (feature extractor на ViT) кодирует каждую рыбу в embedding, поиск по FAISS позволяет отследить ту же особь на разных кадрах.
Альтернатива при высокой плотности (рыбы трудно различить): density estimation. CSRNet или MCNN (Multi-Column CNN) предсказывают density map по кадру, сумма = количество рыб.
# Density estimation для подсчёта рыб в садке
import torch
import torch.nn as nn
class DensityNet(nn.Module):
"""Упрощённая density estimation сеть"""
def __init__(self):
super().__init__()
self.frontend = nn.Sequential(
# VGG-16 frontend до pool3
*list(vgg16_features.children())[:23]
)
self.backend = nn.Sequential(
nn.Conv2d(256, 128, 3, padding=2, dilation=2),
nn.ReLU(inplace=True),
nn.Conv2d(128, 64, 3, padding=2, dilation=2),
nn.ReLU(inplace=True),
nn.Conv2d(64, 1, 1)
)
def forward(self, x):
features = self.frontend(x)
density_map = self.backend(features)
return density_map # sum() = estimated count
# MAE на тестовой выборке: 23 рыбы при истинном кол-ве 400–800 особей/кадр
Fusion камера + сонар
Камера хорошо считает на небольшой глубине (< 4м) при достаточной видимости. Сонар работает в любой воде на большей глубине, но не различает особей в плотной стае.
Kalman filter для fusion: камера даёт точные данные по поверхностному слою, сонар — по всему объёму. Объединение через байесовское обновление с пространственной привязкой.
На практике: комбинированная система снижает погрешность подсчёта с 15% (только камера) и 12% (только сонар) до 4–6% (fusion).
Мониторинг миграций (открытые водоёмы)
Для рыборазводных заводов — подсчёт рыбы на рыбоходах: камера + PIV (Particle Image Velocimetry) считает проходящих особей через контрольное сечение. YOLOv8 + ByteTrack + счётчик пересечений линии.
ПИТ-метки (PIT tags) + считывающие антенны в рыбоходе дают индивидуальный учёт каждой рыбы — CV-система дополняет подсчёт для немеченых особей.
Сроки
Система видеоподсчёта для садков (1–5 камер): 8–12 недель. Integration с сонарными данными: дополнительно 4–8 недель. Стоимость рассчитывается индивидуально.







