Проект

Ловись рыбка большая и маленькая. Как искусственный интеллект помог повысить производительность рыбоводной фермы на 14%

Заказчики: ZIZ

Кострома; Строительство и промышленность строительных материалов

Подрядчики: Nord Clan (Норд Клан)
Продукт: Видеоаналитика (проекты)
На базе: Комплексные проекты видеонаблюдения

Дата проекта: 2022/05 — 2022/11
Технология: Системы видеонаблюдения
подрядчики - 336
проекты - 847
системы - 684
вендоры - 327
Технология: Системы видеоаналитики
подрядчики - 177
проекты - 483
системы - 364
вендоры - 240

В статье речь пойдет о современных способах автоматизации промышленного контроля на основе технологий машинного зрения и нейронных сетей. Рассмотрим кейс, как ML-команда Nord Clan внедряла их на одной из рыбоводных ферм компании ZIZ - от зарождения идеи автоматизации до конечного этапа реализации проекта.

Считать вручную нельзя автоматизировать

Рыбоводные фермы представляют собой производственные площадки, на которых размещаются специализированные бассейны для разведения рыбы. При этом процесс их выращивания достаточно сложный - просто кинуть рыбу в воду и начать ее кормить - как способ не работает. Нужно как минимум создать комфортные условия для активного роста популяции - знать биологические особенности развития рыб и специфику их искусственного разведения, учитывать характеристики разных видов кормов, правильно спроектировать работу оборудования. Все это в итоге дает высокоэффективное рыбоводное производство.

Рис. 1. Пример, как выглядят рыбоводные фермы, построенные ZIZ.

Подобные задачи по проектированию, строительству и оснащению рыбоводных ферм успешно реализует компания ZIZ. Она в своей работе стремится активно внедрять инновации для увеличения производительности ферм. За направление разработки инноваций в области аквакультуры отвечает отдельное подразделение Dakota. Основной его задачей является разработка и интеграция современного подхода к рыболовству и создание прорыва в отрасли аквакультуры.

«

Современное хозяйство строится с определенным запасом по производительности. Например, проектные мощности завода по выращиванию форели составляют 130 тонн в год, а его стоимость около 200 млн рублей. Это означает, что минимально этот завод способен выдать 130 тонн продукции в год, при этом потенциал в нем заложен на 200 тонн. Чтобы приблизится к максимальной производительности необходимо иметь очень опытный персонал (супер героев) и отлаженную систему учета процессов перемещения рыбы. Мы приняли решение начать автоматизацию производства с процесса учета рыбы. Был проведен анализ существующих решений и у нас сформировалось свое видение, как это должно происходить в современном мире, и как достигнуть максимальной производительности. Так и начался путь создания счетчиков для рыбы на основе машинного зрения. До этого у нас уже было 2 итерации, которые вскрывали все новые и новые вызовы для инженеров и программистов. К 3 же итерации мы вышли с максимально сложными в реализации задачами, с которыми нам помог справиться Nord Clan.

Директор ZIZ, Зибров Антон.
»

«

Задача по подсчету объектов с помощью технологии машинного зрения и нейронных сетей достаточно тривиальна. Чтобы готовое решение работало в реальных условиях эксплуатации требуется учесть множество технических моментов - скорость перемещения рыбы, уровень освещения, способ загрузки рыбы в лоток и другие факторы, которые могут повлиять на точность работы системы.

СТО направления машинного зрения Nord Clan, Петр Хвесюк.
»

Организация видеостудии для рыбы

Перед началом разработки наша ML-команда из Nord Clan в первую очередь изучила как организован процесс подсчета рыбы. Вначале работник определяет бассейны, из которых будут рассажены группы рыб. После этого подключается рыбонасос для ее вылова. Далее рыба проходит сортировку с помощью специализированного оборудования и распределяется по счетчикам, которые ведут ее учет. В данном процессе важна скорость прохождения каждого этапа и невозможно применять ручные методы подсчета. В противном случае придется считать мертвую рыбу.

Рис. 2. Соединительный канал между бассейнами.
Рыба проплывает точку контроля.

По проекту подсчет происходит в трех соединительных каналах. Первый предназначен для мальков, второй – для средней рыбы, третий – для взрослых особей. Соответственно требовалось обрабатывать видеопоток и производить подсчет суммарно с 3 камер на 3 постах контроля.

Установленные на производстве камеры выдавали хороший fps (количество кадров в секунду): до 120 при отсутствии рыб в потоке и до 90 при их наличии. Но получаемые изображения были не лучшего качества - границы рыбы не всегда получались четкими.

Рис. 3. При приближении изображения мальков мы видим размытые «пикселизированные» границы.
«

Обычно на других наших проектах требуется идентифицировать объекты размерами до 1 мм и меньше (царапины на пленке, механические повреждения на металлической поверхности и т.п.). Поэтому для съемок используются специализированные камеры машинного зрения. Но так как мальки достаточно крупные по размерам, то для работы системы полученного качества изображения было вполне достаточно.

Руководитель проекта Nord Clan, Борисенко Александр.
»

Как в видеопотоке система распознает рыб?

Получив видеофайлы с камер, предстояло обучить нейронную сеть видеть на них рыбу. Для проекта мы использовали Yolo 5. В процессе обучения, чтобы нейронная сеть смогла распознавать на изображениях рыбу, датасет должен быть "размечен". Для этого видео разбивается на кадры и на каждом из них специалистами вручную выделяются контуры рыбы. Для качественного обучения нейронной сети требуется достаточно большое количество подобных изображений - от 2000 шт.Михаил Садиров, SMART technologies: На тестирование мультивендорных решений есть спрос

Рыбоводная ферма работает по определенным циклам, и на момент старта проекта у клиента отсутствовали мальки. Чтобы не останавливать процесс разработки, было принято решение смоделировать их в 3D. Для этого наши дизайнеры в Blender создали модели мальков, наложили на них текстуры, а также с помощью анимации имитировали их перемещение по каналу. Получилось вполне реалистично и мало отличимо от реальных кадров.

Рис. 4. Моделируем мальков в Blender.

Итак мы получили полноценный датасет, где на каждом изображении были выделены контуры рыб. Нейросеть без труда по этим данным смогла правильно научиться определять в потоке средние и крупные рыбы, но с мальками возникли сложности. Во время тестирования её работы уже на реальных видео возникали случаи, когда система неправильно производила подсчет. Например, мальки могли слипаться друг с другом, ехать "паровозиком" или вообще кучей малой (рис. 5).

Рис. 5. В первом случае мальки слиплись «паровозиком», во втором - можно определить мальков по количеству торчащих хвостиков.

Для решения этой задачи нам потребовалось дополнительно моделировать подобные ситуации и дополнять ими датасет. Наконец, во время очередного тестирования работы нейросети мы зафиксировали необходимый результат – точность более 97%!

«
Увы, но радость была немного преждевременной. Мальки распознавались, но теперь система находила их даже там, где они быть не должны. На крупных особях небольшие отдельные контрастирующие области (например, плавники) система могла воспринимать за мальков.

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

Руководитель проекта Nord Clan, Борисенко Александр.
»

Рис. 6.Пример областей взрослой рыбы, которые нейросеть неправильно распознавала, путая плавники с мальками.

Внедрили систему трекинга - придали каждой рыбе уникальность

Нейронная сеть научилась корректно распознает рыбу на видео. Теперь предстояло обучить ее правильно вести подсчеты. По технологии нейронная сеть разбивает полученное видео на отдельные кадры и проводит их анализ по отдельности. В среднем рыба проплывает точку контроля за 3-5 секунд. Если камера снимает со скоростью 60 кадров в секунду, то получается, что одна и та же особь может фигурировать на 180-300 кадрах. И каждый такой случай система будет засчитывать.

Поэтому в помощь к работе нейронных сетей мы внедрили трекинг – систему определения движущихся объектов во времени.

Она работает по принципу поиска границ объекта (сontour tracking), также как в компьютерной анимации. То есть с момента появления в кадре и до момента прохода через контрольную точку отслеживаются контуры рыбы. По ним определяется уникальность каждой особи в кадре.

Рис. 7. Наглядный схематичный пример как система трекинга отслеживает и анализирует изменение положения границ туши покадрово.

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

Как мы оптимизировали серверную часть, чтобы процессор не утомился считать

Борьбу за оптимизацию и снижение требований к железу мы начали с поиска ответа на вопрос – какое количество кадров в секунду будет достаточно для эффективной работы всей системы?

Про видеокарту

Определение одной единицы рыбы на изображении - это отдельная "задача" для видеокарты и процессора. Если в кадре одновременно находится 100 рыб, то это 100 отдельных операций. Соответственно нагрузка на видеокарту может меняться. Например, при 60 FPS требуется 6000 вычислений, а при 120 FPS - 12000. А если камер несколько - то эти цифры нужно умножить ещё и на число камер.

Про процессор

Также FPS влияет на нагрузку процессора. Он напрямую не обрабатывает видео, а используется для трекинга - поочередного сравнения пересечений контуров рыб на последовательных кадрах. Если число кадров растет - то растет количество подобных вычислений.

По результатам тестирования мы определили, что оптимальным решением будет использовать 30 FPS

Стоит оговориться, что расчеты основывались в том числе на максимальной пропускной способности системы, заявленной в техническом задании – 1500 рыб в минуту. Мы также учли ситуации, когда это число будет превышено и, например, составит 5000 рыб в минуту. Для снижения нагрузки в этих случаях мы предусмотрели, что все сверхлимитные потребности в расчетах будут сохранятся в буферную память и обрабатываться по мере снижения нагрузки.

Как оператор взаимодействует с искусственным интеллектом

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

«
Основная идея создания проекта состояла в том, чтобы пользователю, не обладающему специальными знаниями, все было нативно понятно. Именно этого эффекта мы достигли. Счетчик интегрируется в процесс сортировки, сам считает сколько прошло через него рыбы и выдает результат.
Директор ZIZ, Зибров Антон.
»

Перед стартом подсчета оператор заполняет поля с названиями бассейнов, из которого будет подаваться рыба и куда эта рыба будет перегоняться. После начала подсчета в режиме реального времени на экране отображается актуальная информация о количестве рыб, проплывающих на каждой камере. При этом приложение уведомляет оператора о слишком плотном потоке рыб (свыше 1500 шт. в минуту). При необходимости можно выбрать определенный период и выгрузить подробную статистику работы системы в формате Excel.

Рис. 8. Настройка и процесс подсчета рыбы глазами оператора.

Итоговое тестирование. Насколько повысилась производительность фермы?

После 4 месяцев работы над проектом система была смонтирована и готова к финальным испытаниям. Чтобы провести контрольные замеры и оценить точность подсчета специалистами `ZIZ` были подготовлены несколько партий рыб, которые заранее были пересчитаны вручную. Затем поочередно каждая партия пропускалась через соединительный канал и наша система их подсчитывала.

Соответственно 100% точность означала, что цифры подсчета вручную и системы должны совпасть. Мы достигли итогового показателя в 99,78%, что превысило требования технического задания.

«
После 9 месяцев от внедрения завод увеличил производительность с 130 до 150 тонн, на следующий год планы увеличить эту производительность до 200 тонн. Таким образом легко посчитать, что система учета помогла увеличить производительность на 14% - это 28 млн рублей от 200 миллионной стоимости завода. По планам увеличить производительность на 35%, а это уже 70 млн рублей и все это без дополнительного строительства и модернизации производства.
Директор ZIZ, Зибров Антон.
»