Вот уже три года, как я ушел из зоопарка. Время лечит, и сейчас я вспоминаю об этом месте исключительно с теплотой — признаюсь, мне его не хватает.На новой работе (по моему первому образованию в сфере IT) мне приходится постоянно использовать искусственный интеллект. Он реально облегчает жизнь, и я все чаще задаю себе вопрос:
А насколько же проще мне было бы работать зоотехником, будь у меня эти технологии тогда?
Реальное фото меня в зоопарке. Отредактировал, естественно, с помощью ИИ.
ИИ — это мгновенный доступ к колоссальному опыту сотен зоопарков по всему миру. Главное — правильно составить промпт и уметь вовремя отсекать нейросетевые галлюцинации. Рационы, варианты обогащения среды, методики тренингов… Раньше, чтобы найти крупицы информации о содержании какого-нибудь редкого малого канчиля, приходилось сутками перелопачивать англоязычный интернет. Сейчас для этого достаточно одного точечного запроса. Однако технологии способны на большее, чем просто просвещать персонал. Самое интересное начинается на стыке камер видеонаблюдения и нейросетей. При правильном подходе система компьютерного зрения может моментально прислать киперу сообщение в мессенджер, если в вольере происходит что-то неладное. Просто обычно это: пока ЧП кто-то заметит, пока передаст по цепочке, пока информация дойдет до адресата… А ведь в нашей работе бывают ситуации, когда каждая минута на счету.
Вот этим занимаюсь сейчас.
Итак, встречайте одних из первопроходцев:
Зоопарк Сан-Диего (San Diego Zoo, США): Один из самых богатых и передовых зоопарков мира. Они используют кастомные модели YOLO в связке с тепловизорами для ночного мониторинга. Нейросеть считает новорожденных детенышей в темноте и следит, чтобы крупные хищники не проявляли скрытой агрессии к сородичам, когда киперы уходят домой.
Лондонский зоопарк (ZSL London Zoo, Великобритания): Историческая база Лондонского зоологического общества активно тестирует детекцию объектов для подсчета птиц и мелких приматов в проходных вольерах (куда заходят посетители). YOLO помогает автоматически фиксировать, не пытается ли условный лемур эвакуироваться на плече у туриста.
Думаю, что вы уже догадались, что понятие YOLO относится как раз к нейросети. Немного об этом расскажу.
Ultralytics YOLO — это ведущее семейство моделей машинного зрения, работающих в режиме реального времени. Разработанное компанией Ultralytics, оно предоставляет единую экосистему для решения ключевых задач ИИ: обнаружения объектов (object detection), сегментации (instance/semantic segmentation), классификации, оценки поз (pose estimation) и трекинга.
Надо отметить, что пусть YOLO хорошо знает людей, кошек, собак, но отличить африканского леопарда от дальневосточного для нейросети будут проблемно. Поэтому ИИ придётся обучиться на терабайтах зоопарковских видео.
Ultralytics YOLO
Как это работает?
Нужна современная IP-камера, умеющая отдавать RTSP-стрим (Real Time Streaming Protocol). Это стандартный сетевой протокол, который превращает видеокамеру в своеобразную «интернет-радиостанцию», непрерывно транслирующую видеопоток в локальную сеть зоопарка. Камера должна иметь хорошую инфракрасную подсветку для ночной съемки, широкий угол обзора и высокую степень защиты от внешних воздействий. Если камера ставится в вольер к крупным приматам или хищникам, она обязательно прячется в антивандальный кожух, иначе любопытный шимпанзе демонтирует её за пару минут.
Поток данных от камеры по кабелю (или по защищенному Wi-Fi) летит на сервер обработки. Внутри сервера крутится наш Python-скрипт.
Часть кода на Python. Самое начало.
Далее видео разгрызается по кадрам, нейросеть сканирует пиксели, находит объекты, обводит их рамками и присваивает имена классов. Модель не просто видит объект в текущем кадре, она помнит его по прошлым кадрам. Ему присваивается уникальный номер (Track ID). Это нужно, чтобы понимать траекторию: человек просто идет вдоль вольера или он движется внутрь него?
Скрипт сверяет координаты рамок с правилами безопасности. Если рамка класса, дпустим, person пересекла запретную линию или оказалась внутри геозоны "Вольер №5 ночью", мозг мгновенно принимает решение — Ужас ужасный! У нас ЧП! Он делает скриншот экрана, вырезает лицо нарушителя (или силуэт) и запускает скрипт оповещения.
Когда сервер зафиксировал нарушение, ему нужно мгновенно достучаться до работников зоопарка. Сервер вызывает специальную функцию, которая через интернет отправляет скриншот и текстовое сообщение на сервера какого-либо мессенджера. Буквально через 0.5–1.5 секунды после того, как человек занес ногу над забором вольера, у дежурного кипера и начальника охраны в кармане вибрирует телефон. Кипер сразу видит реальную картину: это просто ветка упала и сеть ошиблась (галлюцинация) или туда действительно залез пьяный посетитель. Каждая сэкономленная минута здесь буквально спасает жизни.
Например, корова в рамке, которая сидит/лежит. Пикча из интернета.
Выше описан конкретный гипотетический сценарий, но эта же нейронка может использоваться и для определения состояния здоровья животных, наблюдение за их поведением, нарушение техники безопасности со стороны персонала, подсчёт крупных стай или стаж животных...в общем на что фантазии хватит. Только для всех этих возможностей ИИ должен дообучиться зоопарковскому делу.
Архитектура YOLO.
Нейросеть должна учиться на тех же камерах и в тех же условиях, в которых ей предстоит работать. Понадобятся сотни и тысячи скриншотов с реальных IP-камер вольера. Животное должно быть зафиксировано во всех ракурсах: спящим в углу, бегущим к кормушке, со спины, сбоку. Обязательно собираем кадры при разном освещении: яркое солнце, пасмурный день, сумерки и, самое главное, ночные кадры в черно-белом ИК-спектре.
А далее ИИ требуется учитель, который как в школе "разжуёт и в рот положит"
Для этого используются инструменты разметки — например, бесплатный CVAT (Computer Vision Annotation Tool) или удобный облачный Roboflow. Далее Homo sapiens открывает каждый кадр и вручную обводит наше животное мышкой в прямоугольник, присваивая ему тег, например, kanchil. Инструмент генерирует крошечные текстовые файлы, где записаны координаты этих рамок. Именно по ним YOLO поймет, какие пиксели на картинке относятся к зверю, а какие — к бревну или к стене. Этого будет достаточно, если нам надо посчитать поголовье, или спалить пьяного другого Homo sapiens, который рассекает атмосферу по направлению к вольера.
Раскадровка тигра Ultralytics YOLO.
А если вдруг котик заболел!? В дикой природе хищники и копытные до последнего скрывают слабость, чтобы не стать добычей. Кипер может заметить неладное, когда тигр уже хромает вовсю.
Для обнаружения болезней на ранней стадии идеально подходит YOLO Pose (оценка по ключевым точкам). При разметке датасета мы вместо прямоугольника размечаем виртуальный скелет животного: ставим точки на суставы лап, плечи, бедра, кончик носа, уши и основание хвоста. После обучения нейросеть начинает в реальном времени строить скелет зверя прямо на видео. Специальный алгоритм непрерывно измеряет углы в суставах и амплитуду движений. Если у гепарда угол сгиба скакательного сустава при шаге уменьшился на 10% или изменилась частота шага — ИИ мгновенно поймет, что лапа травмирована, и пришлет ветеринару уведомление задолго до того, как хромоту станет видно визуально.
Ultralytics YOLO Pose
Ну что можно сказать? Восстание машин отменяется? Все ушли смотреть на капибар.
В Московском зоопарке с приходом осени начался важный биологический период для одного из самых известных обитателей - палласова кота Тимофея. С середины августа пушистый хищник начал активнее интересоваться едой, чаще выходить на прогулки и демонстрировать себя посетителям.
Чтобы поиск «добычи» был для кота интересным, зоологи прячут перепёлок и грызунов по всей территории его вольера в укромных местах: в различных норах, в кустах, а также подвешивают в бумажный пакет.
К концу сентября вес Тимофея достиг 5 килограммов. Для сравнения, его минимальный летний вес составлял 3,7 кг. Пик пищевого интереса и активности манула приходится именно на осеннюю пору. На данный момент рацион хищника строго контролируется: Тимофей получает около 250–300 граммов корма ежедневно, при этом один раз в неделю у него предусмотрен голодный день. Размер порций высчитывается индивидуально на основе данных взвешиваний и будет постепенно увеличиваться по мере приближения зимы.
«Осенняя зажировка - важный этап в жизни манулов, обусловленный их природными особенностями. Наша задача зоопарка - создать Тимофею все условия для комфортного набора веса, который позволит ему благополучно пережить холода. Сейчас мы внимательно следим за его состоянием: набранные килограммы – это необходимый запас энергии. Мы рады видеть, что Тимофей следует своим инстинктам и активно готовится к зиме», — прокомментировала генеральный директор Московского зоопарка Светлана Акулова.
Сроки окончания зажировки напрямую зависят от погодных условий - температуры воздуха и обилия снега. Обычно процесс набора веса завершается в декабре. С первыми морозами шерсть Тимофея станет более плотной и пушистой. Максимальная плотность шерстяного покрова манула может достигать 9 тысяч волосков на квадратный сантиметр, что позволяет этим животным выживать в суровом степном климате при температурах до минус 50 градусов.
Когда Тимофей наест необходимые жировые запасы, его активность значительно снизится. Зимой он может по 3–4 дня не покидать свой тёплый домик, выходя лишь для того, чтобы подкрепиться или сходить в туалет. Интересно, что на улице манул предпочитает справлять нужду исключительно на самых высоких сугробах. А, находясь в тёплом внутреннем домике, Тимоша ходит в лоток.