12 апреля 2018

Как петербуржец придумал приложение, которое с помощью нейронных сетей распознает пение соловья, дрозда и других птиц

Петербургский орнитолог Олег Кенунен создал приложение, которое при помощи нейронных сетей распознает птиц по их пению. Пока в базе 20 голосов: среди них, например, соловей, дрозд и зяблик.

Как нейронная сеть отличает синицу от вороны, после каких доработок «Shazam для птиц» может стать доступен для всех и чем работа с птичьими голосами похожа на изучение иностранного языка? Кенунен рассказал «Бумаге», как разрабатывал сервис и что с ним будет.

Олег Кенунен

Разработчик приложения

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

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

Приложение состоит из нескольких компонентов: это серверная часть и клиентская. Серверная часть получает файл, анализирует при помощи нейронной сети и отправляет ответ обратно клиенту.

Демонстрация работы приложения

Можно сказать, что приложение напоминает Shazam, только Shazam не совсем так устроен: он определяет сходство с теми записями, которые есть в базе. Кроме этого, речь о музыкальных файлах, то есть записях, сделанных в студии. А тут очень большая изменчивость голосов внутри одного вида. Птицы же друг друга узнают — как мы друг друга узнаем по голосу.

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

Соловей

Результат зависит от обучающей выборки. Я взял [файлы с голосами птиц] из открытых источников, которые разрешены для академической работы, потому что мне столько было бы не записать. Преимущественно c сайта Xeno-canto — это сообщество любителей, которые загружают туда записи. Там голоса по большей части правильно определены, но есть проблема с качеством записей: они не очень чистые, и нейронная сеть в них путается. Так что их нужно отбирать. Поэтому я пока опробовал [приложение] на местных видах, которые я сам могу четко отличить и сам в них не запутаюсь.

Стандартный метод тестирования нейросети такой: есть выборка, на которой происходит обучение, и еще маленькая тестовая выборка, на которой проверяется правильно или нет [работает сеть] — у меня в нее было внесено 10 % всего [объема данных]. Тестовую выборку во время обучения нейронная сеть не видит, поэтому по ней можно более или менее адекватно сказать, насколько верный результат получается.

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

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

Зяблик

Аналоги мне неизвестны. На Google Play есть одно похожее приложение, но, по всей видимости, оно не использует нейронные сети. Помимо этого есть около полутора десятков научных статей о возможности распознавания голосов птиц с помощью нейронных сетей. Эти статьи, наверное, показывают даже лучшие результаты, чем у меня, но они носят академический характер — это не рабочие приложения. Кроме того, лаборатория орнитологии Корнеллского университета в Америке, у которой самая большая в мире фонотека, выпустила приложение для определения птиц — но по фотографиям.

В целом [научиться распознавать голоса птиц на слух] можно, но надо тренироваться. Желательно найти человека, который в этом разбирается, и с ним походить по лесу, чтобы он при этом спрашивал и проверял. Мне кажется, это самый эффективный способ. Можно ли этому обучиться по фонотекам — я не уверен. Это как с изучением языка: можно попробовать учить их по сериалам, но лучше найти учителя.

Проще всего отличить голоса синиц, зябликов — самых фоновых видов, которые есть в любом парке. Или, например, все определят ворону. Это те виды, с которыми люди много встречаются и часто слышат.

Если вы нашли опечатку, пожалуйста, сообщите нам. Выделите текст с ошибкой и нажмите появившуюся кнопку.
Подписывайтесь, чтобы ничего не пропустить
Все тексты
К сожалению, мы не поддерживаем Internet Explorer. Читайте наши материалы с помощью других браузеров, например, Chrome или Mozilla Firefox Mozilla Firefox или Chrome.