Фотограмметрия для создания датасета систем распознавания лиц

Качество и объем датасетов играют решающее значение для обучения нейросетей. Разметка данных для датасетов это очень трудоемкая работа, для которой необходим ручной труд тысяч человек. Когда пользоватьель вводит капчу типа «укажите светофоры» на сайтах , он помогает ИТ-компаниям размечать данные для датасетов. 20 лет назад считалось, что роботы не могут играть в шахматы, писать симфонии и рассказы. Сегодня в 2024 оказалось, что роботы могут писать симфонии, но не могут указать на каких картинках изображены светофоры. Поэтому для разметки датасетов используется люди. Для определения наличия на картинке светофора или пожарного гидранта используется низкоквалифицированная рабочая сила. Для определения признаков заболевания на рентгеновском снимке используются высококвалифицированные врачи. В любом случае используются люди. Поэтому данные для обучения нейросетей получаются очень дорогими. Есть даже поговорка: «Данные-это новая нефть». Я бы уточнил, что «Размеченные данные-это новая нефть».

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

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

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

Теперь переходим непосредственно к области систем распознавания лиц. Для задач распознавания лиц есть свой специфичческий способ создания синтетеческого датасета для обучения нейросети. Этот способ можно назвать «фотограмметрия и антифотограмметрия». Возможно слово «антифотограмметрия» не очень правильное, но оно наиболее точно отражает суть проводимых с датасетом манипуляций. Для наглядности я изобразил их на картинке:

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

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

Суть данного метога заключается в увеличении датасета в любое количество раз. Для построения 3д модели лица с помощью фотограмметрии нужно минимум 15–20 фотографий, что считается небольшим набором данных в контексте машинного обучения. Затем с помощью процесс, обратного фотограмметрии (антифотограмметрия) мы можем получить сколь угодно много изображений данного человека. Чем выше качество фотограмметрии, тем больше эти изображения будут соответствовать реальной внешности конкретного человека.

Что такое фотограмметрия

Фотограмме́трия (от греч. φωτός — свет,  γράμμα — запись, изображение и μετρέω — измеряю) — научно-техническая дисциплина, занимающаяся определением формы, размеров, положения и иных характеристик объектов по их фотоизображениям

Далее способы получения 3д модели:

1) Монокамерная фотограмметрия. При этом способе все фотографии получаются с одного девайса (фотоапарата/смартфона, дрона)

Это самый популярный способ. Он используется в 99% 3д проектов. Частным случаем монокулярной фотограмметрии является видеограмметрия. При видеограмметрии видеозапись частотой 30 кадров/сек разбивается на 30 фотографий, а затем уже эти кадры обрабатываются с помощью обычных программ для фотограмметрии. Например из любого видео с дрона можно легко создать 3д модель местности. Не обязательно даже снимать самому. Можно скачать видео с облетом местности на ютуб и построить 3д карту. Подходят также видео с видеорегистраторов. Вот например Tesla делает 3д модели улиц на основе записей со встроенных в авто видеорегистраторов:

Видеограмметрия из презентации Tesla Autonomy Day, April 22nd  2019 https://www.youtube.com/watch?v=Ucp0TTmvqOE&t=8389sТут немного оффтопа про вычислительные мощности, необходимые для фото/видеограмметрии

Одной из главных проблем фотограмметрии является слабые вычислительные возможности современного «железа». Например тут проводили тест рабочих станций для фотограмметрии. Проект в из 1000 фотографий на всех конфигурациях занял примерно 24 часа. даже если учесть, что тест проводился пару лет назад и вышло уже более мощное «железо», все равно 24 часа для небольшого проекта по фотограмметрии это очень медленно.

Если говорить про видеограмметрию, то здесь одна минута стандартного видео 30к/сек раскладывается на 1800 кадров. Поэтому даже на современном «железе» преобразование одной минуты видео в 3д модель может занять около суток. На практике каждый кадр нет смысла обрабатывать. Обычно берут каждый пятый или каждый десятый кадр. Тогда время обработки видео сокращается в 5 или 10 раз соответственно. Но даже так одна минута видео обрабатывается минимум несколько часов. Поэтому обычный для квадрокоптера 15-ти минутный видеоролик современный ПК будет преобразовывать в 3д порядка суток.

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

Казалось бы крупные компании с легкостью могут создать мощности для быстрой видео/фотограмметрии. Но на сайте производителя дронов DJI есть услуга фотограмметрии в облаке. обработка 500 фото там занимает около 24 часов, что примерно сравнимо с домашним ПК на видеокарте GTX1060. Возможно для DJI это не профильный, побочный бизнес.

В плеймаркете есть приложение для фотограмметрии RealityScan от Epic games. Само собой вычисления проводятся в облаке, а не на смартфоне.Проект в 200 фото обрабатывается около 30 минут. Это уровень домашнего ПК с видеокартой 4090.

Это мой ПК для фотограмметрии. Я экспериментирую с разным софтом и разным железом чтобы получить оптимальную скорость обработки фото/видеограмметрии. Если у вас есть свои или чужие примеры удачного железа-скидывайте в комменты. Будет интересно ознакомиться.

Это мой ПК для фотограмметрии. Я экспериментирую с разным софтом и разным железом чтобы получить оптимальную скорость обработки фото/видеограмметрии. Если у вас есть свои или чужие примеры удачного железа-скидывайте в комменты. Будет интересно ознакомиться.

Еще одно специализированное приложение WIDAR также обрабатывает проект из 200 фото примерно за 30 минут.

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

ЖК Салават Купере в 3D by zalomskij on Sketchfab

Создание 3д модели такого жилого квартала занимает на домашнем ПК около суток. Если бы для фотограмметрии использовались специализированные рабочие станции или суперкомпьютеры, то за сутки пожно было бы построить модель целого города.

2) Мультикамерная фотограмметрия. Используется много одинаковых фотокамер с синхронизированным затвором.

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

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

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

Подробнее про оборудование для мультикамерной фотограмметрии и сам процесс можно почитать здесь: 3D-фотограмметрия: превращая фотографии в 3D-модели

Вывод: мультикамерная фотограмметрия лучше подходит для создания 3д модели лица человека, чем монокамерная.

Второй этап это создание датасета на основе полученной 3д модели.

Head scan 12 (photogrammetry) by yaro.pro on Sketchfab

Получать изображения можно просто делая скриншоты каждый раз чуть поворачивая модель. Но проще записать минутную запись экрана с вращением модели в 30 к/сек, а затем разложить это видео по кадрам, получив 1800 кадров. Возможно кто-то скажет, что системам распознавания лиц не нужны для обучения несколько тысяч изображений каждого человека. Новым предобученным нейросетям достаточно одного изображения человека, чтобы потом узнавать его. И вообще Computer Vision — scientist’ов пора гнать на мороз Тут я спорить не буду. Каждый идет своим путем. Прав окажется тот, чья система распознавания лиц будет работать лучше. У меня есть некоторые основания полагать, что распазнавание лиц, обученное на нескольких тысячах изображений каждого человека будет работать лучше, чем система, обученная на нескольких фото.

В заключении хотелось бы добавить, что метод синтеза датасетов на основе фотограмметрии и антифотограмметрии является общим и применим не только для области распознавания лиц. Достаточно ли этот метод общий, чтобы лечь в основу общего искусственного интеллекта (artificial general intelligence) сказать сложно. Можно пробовать. Принимаются ли сейчас такие попытки я не знаю. В любом случае, если найду информацию об этом, то буду скидывать в комментарии к этой статье.

Спасибо за внимание.

© Habrahabr.ru