В нашей работе хватает безумных задач. Мы собирали датасеты с уличными драками, где сами вживались в роль дебоширов перед камерами, и делали много чего еще, о чем не всегда можно рассказать. В общем, мы в своей работе привыкли к странным задачам. Но когда к нам пришли с просьбой научить искусственный интеллект узнавать «в лицо» 10 000 лошадей, мы поняли — будет интересно...
Здесь было все: почти сорванный дедлайн, паника, отчаяние и, как вишенка на торте, нейросеть, которую мы создали, чтобы обучить другую нейросеть.
Кони-авторитеты и спокойствие стада
Все началось пару лет назад с проекта, который прилетел из совершенно неожиданной для нас сферы. Клиенту была нужна система, способная безошибочно отличать одну лошадь от другой. Зачем? Чтобы предотвратить смешивание табунов.
Оказалось, что в коневодстве это серьезная проблема. В каждом табуне есть свой вожак — доминирующий самец, от авторитета которого зависит спокойствие и здоровье всего стада. Он обеспечивает порядок и иерархию, благодаря которой лучшие особи получают доступ к еде и воде. Если в табун затесался чужак, он мог бросить вызов лидеру. Начинались драки, привычный уклад рушился, страдало все стадо. Нам нужно было найти способ предупреждать такие ситуации.
Идея была в том, чтобы применить к лошадям принципы биометрии, как у людей. Создать уникальный «паспорт» для каждой особи, чтобы камера, увидев лошадь, сразу понимала, кто это и из какого она табуна. С людьми все относительно просто: даешь нейросети 5-10 фотографий, и она запоминает лицо в 99% случаев, даже в очках или маске. С лошадьми мы ступали на неизведанную землю.

Наша задача выглядела так: собрать «цифровой табун» из 10 000 уникальных лошадей, по 10 фотографий на каждую. Причем на каждом снимке должны были быть видны 5 ключевых точек морды, а сама морда — занимать не менее 224 пикселей в высоту. Мы провели беглое исследование, погуглили YouTube-ролики и соцсети и с оптимизмом решили: «Материала полно, справимся!»
Как же мы ошибались.
Сетевая каторга и цифровой шлак
Первые два месяца превратились в ад. Мы использовали все, что могли придумать: парсеры, готовые датасеты, ручной поиск по геолокациям, хештегам на разных языках, сайтам конных клубов и аукционов. Но все тщетно. Везде были одни и те же популярные лошади. Наши инструменты раз за разом скачивали одинаковые изображения с разными фильтрами, принимая их за уникальные. Мы тонули в тоннах некачественного материала, где морда была не в фокусе или снята с неправильного ракурса.
За два месяца каторжного труда мы наскребли всего 3000 уникальных лошадей. Это было 30% от плана. В день получалось находить около 500 подходящих изображений. А над нами зловещей тенью нависал дедлайн в конце года, и Галина Петровна из бухгалтерии уже начинала неодобрительно смотреть в нашу сторону. Стало кристально ясно — проект летит в пропасть.

Построить нейросеть, чтобы она помогла строить другую нейросеть
Когда отчаяние достигло пика, в разгар очередной панической планерки родилась идея. Сумасшедшая, но, как оказалось, гениальная. А что, если перестать искать вручную и заставить нейросеть работать на нас?
Мы взяли те 30 000 изображений, что у нас уже были, и на них обучили простенькую нейросеть‑детектор. Ее единственной задачей было просматривать гигабайты фото и видео и находить кадры, где есть лошадь с нужным ракурсом морды, отсеивая весь мусор.

Чтобы довести автоматизацию до абсурда, мы написали Telegram-бота. Мы просто скачивали из тематических каналов все медиафайлы архивами, «скармливали» их боту, а он уже отправлял их на обработку нашей нейросети. На выходе мы получали идеальные, отсортированные по папкам фотографии уникальных лошадей.

Результат превзошел все ожидания
За следующие 13 дней мы собрали 70 000 изображений для оставшихся 7 000 лошадей. Наша скорость выросла с жалких 500 снимков в день до 5 384. Мы увеличили собственную эффективность в 10 раз и закрыли проект точно в срок, спасли свою репутацию и уберегли нервы Галины Петровны.

Этот кейс в очередной раз доказал нам простую истину: лучшее решение порой лежит на поверхности, нужно лишь посмотреть на свои же инструменты под другим углом. И да, не беритесь за сложные проекты в конце года.
Если у вас есть такая же безумная и сложная задача, напишите мне. Будет интересно.
r.fedorov@neuro-core.ru
MountainGoat
Статья о том, как вы сделали самое очевидное и напрашивающееся, что можно было сделать в вашей ситуации, но перед этим первые два месяца страдали фигнёй. Это же первая мысль при виде грязного датасета: присобачить какое-нибудь YOLO фильтровать. А на лошадиные морды наверняка есть даже готовое.
Пойду к осени подготовлю статью, как я придумал убирать листья метлой.