Идея проекта возникла этой весной, когда в наши края приезжал вице-президент Союза охраны птиц России Алексей Леонович Эбель, для учёта гуменника, мигрирующего через Алтайский край. Проблема в том, что численность этой группировки только оценочная, так как, в отличии от многих других водоплавающих, он не образует сколь-нибудь значимых скоплений ни во время миграции, ни на зимовках. Поэтому разброс мнений экспертов огромен: от 7-10 тысяч в Wetlands до нескольких сотен тысяч у некоторых отечественных.

Проблема в том, что гусь летит 5-6 недель и неравномерно (насколько неравномерно — это базовый вопрос). И ещё нерешённая задача: гусь может лететь ночами.

Алексей Леонович вычислил место, где гуменника во время весенней миграции учитывать оптимальнее всего. Эта точка оказалась недалеко от меня. За два полных плюс один неполный световых дня в коридоре 7-8 км он насчитал почти 15 000 пролётных особей, а мы с друзьями ему в этом немного помогали.

Стадо гуменника :)
Стадо гуменника :)

Понятно, что посчитать это вручную более-менее точно не получится, поэтому я сразу подумал о том, чтобы автоматизировать задачу.

Идея довольно простая. Клин гуменника (да и в принципе любой птицы) летит не очень быстро. Можно просто при помощи длиннофокусной камеры сканировать небо и пытаться найти птицу в кадре при помощи нейросети. Камеру можно закрепить на механизме наподобие турели, управлять моторами будет Arduino, а искать птиц и посылать команды на контроллер будет одноплатник (или подобная более мощная железка).

3D модель железки
3D модель железки

Проект не очень сложный, я его отдал своему ученику. Большую часть он по-честному сам выполнил, я же просто немного помог со скриптами и 3D моделями. А также нашел нужные комплектующие.

❯ Подбор комплектующих

Первым делом надо было найти подходящую длиннофокусную камеру с интерфейсом USB и нормальным сенсором. Естественно, готовой камеры не нашлось. Но обнаружился обычный модуль USB камеры. И объектив под него на 50мм.

Сенсор 1/2.9", 4мп
Сенсор 1/2.9", 4мп
50мм без ик фильтра
50мм без ик фильтра

Как оказалось, я немного просчитался: на камере ИК-фильтр был установлен прямо на объективе. А новый объектив оказался совсем без него. Если будем пытаться использовать эту систему ночью — это плюс. Но вот днем совсем не то, чего бы я хотел)

Решение оказалось довольно простым и удачным — кронштейн объектива со встроенным переключаемым фильтром. Это позволит в дальнейшем переходить в ночной режим.

Ещё выяснилось, что 50мм многовато. Такое фокусное расстояние я рассчитывал под сенсор 1/2 дюйма (а такую камеру за недорого я не нашел). Под 1/2.9 идеально было бы 35мм, но и так вполне можно работать.

❯ Сборка

Дальше начался процесс сборки прототипа. Камера должна крутится почти на 360° по горизонтали и хотя бы 90° по вертикали. Для поворота по вертикали использовали сервопривод mg996, а по горизонтали — стандартный шаговый мотор из комплектов ардуино 28byj-48.

Первый прототип
Первый прототип

Все это подключили к плате от контроллера zero (про него писал в статье Как я скрещивал Arduino и Lego), просто к ней было удобнее.

Тут возникла новая проблема. Эта «турель» начала накручивать на себя все провода :). Так как у шагового мотора нет нулевой точки (и вообще обратной связи), при любом переподключении турель начинала работать с текущей точки.

Решение этой проблемы я подсмотрел на своей камере видеонаблюдения.

При запуске Arduino она просто едет в одну точку на 360°, упирается в пластиковый штифт, пропускает какое-то неизвестное количество шагов (пока по мнению Arduino не доедет в точку 360°) и едет обратно на 180°.

Дальше упаковали всю электронику в пластиковый корпус.

❯ Прошивка

Прошивки получается две. Точнее одна прошивка для Arduino и один скрипт на python.

Алгоритм работы следующий. Камера движется по горизонтали от начального угла до конечного угла, с шагом примерно равным углу обзора камеры. На каждом шаге делается кадр (точнее 3 кадра, для надежности). И на этом кадре, при помощи библиотеки YOLO 8 ищутся птицы. Если птицы найдены, считается их количество и кадр сохраняется. Чтобы поиск птицы происходил побыстрее, использована модель yolov8s. Когда камера доходит до конечного угла по горизонтали, она делает один шаг по вертикали и все начинается сначала.
Моторами шевелит Arduino nano, общение происходит по Serial порту.

То есть, если поставить камеру в чистом поле, она тупо будет крутиться и постепенно подниматься, сохраняя фотографии, если увидит птицу. Алгоритм ещё не доработанный, потому что пока не понятно, как камера будет ловить пролетающие стаи.
Дальше надо будет придумать, как отличать одни стаи от других, чтобы не считать одних и тех же птиц несколько раз (Буду благодарен если подкинете пару идей).
Прошивку, если кому-то будет интересно, загружу на github.

❯ Испытания

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

Голубей ловит хорошо
Голубей ловит хорошо
На готовом снимке нашел не всех, но это просто вопрос способа обнаружения. Можно просто темные силуэты искать
На готовом снимке нашел не всех, но это просто вопрос способа обнаружения. Можно просто темные силуэты искать

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

Полноценные испытания видимо откладываются до весны, а пока будем дорабатывать прошивку и придумывать, на чем это запустить. Одноплатника для YOLO 8 категорически не хватает, а полноценный мини-ПК для такого проекта использовать дорого. Скорее всего, придется перейти на обнаружение птиц более простыми методами, и последующую обработку полученных данных на более производительном ПК.


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

Комментарии (3)


  1. blik13
    18.11.2025 08:29

    Лет 7-8 назад наблюдал прям апокалиптическую картину, летело не просто один-два клина перелетных уток/гусей, навскидку несколько км неба во все стороны было просто залеплено этими клиньями, такое видел всего раз в жизни, там в моменте наверное в поле зрения было с тысячу перелетных. Часов 10 утра было. Причем каких то больших болот/озер рядом не было.


    1. EnvalidGamer Автор
      18.11.2025 08:29

      Я наблюдал в момент пика миграции. Клинья летят без остановки, только один клин пролетел сразу летит второй. Но так много как вы не наблюдал)
      Этой весной и летом над моим городом коршуны кружили в таком количестве, что все небо было в ник, выглядит тоже страшно)


  1. vesowoma
    18.11.2025 08:29

    Дальше надо будет придумать, как отличать одни стаи от других, чтобы не считать одних и тех же птиц несколько раз (Буду благодарен если подкинете пару идей).

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

    А вот как отличать разные виды при такой низкой разрешающей способности, я не знаю. На ту же турель вешать вторую камеру с телеобъективом? Сомнительно.