1 de 28

Улучшение результатов фотограмметрии, используя нейронные сети

Артюшков Павел

Школа имени Маршала Чуйкова, Москва

Научный руководитель: Воронцов Илья

2 de 28

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

Фотограмметрия - технология, которая позволяет получить 3D модель объекта только по его фотографиям с разных ракурсов

3 de 28

Polycam - социальная сеть фотограмметрии

4 de 28

Но есть проблема…

5 de 28

Цель проекта

Обучить нейронную сеть для улучшения результата фотограмметрии исправления дефектов в 3D модели

6 de 28

Как научить нейросеть?

Нужно дать ей большой набор готовых решений: результат фотограмметрии и ее целевые версии.

Поэтому давайте возьмем готовые 3D модели как целевые и получим из них отсканированные версии

7 de 28

Процесс сбора датасета

01

8 de 28

9 de 28

Сгенерировать кадры со всех возможных ракурсов

10 de 28

Получить результат фотограмметрии

11 de 28

Отсеять плохие результаты

12 de 28

Пример сканирования

13 de 28

14 de 28

15 de 28

Список обнаруженных дефектов

  • Отверстия в модели
  • Шершавые поверхности
  • Деформированные углы
  • Лишние детали в пространстве вокруг модели

16 de 28

Автоматизация сбора датасета

Время обработки одной пары: от 1 до 2 часов. Собрать большой датасет на одном устройстве будет невозможно.

Поэтому была реализована распределенная система воркеров на множестве устройств.

Собран датасет размером 528 валидированных моделей

17 de 28

Обучение нейронной сети

02

18 de 28

Модель

Задачу можно представить как перевод языков. Поэтому была использована кастомная seq2seq RNN. Использовался teacher forcing

Модель работает с облаками вершин: последовательностью из 2000 точек

19 de 28

Предобработка

  • Убрать из модели все вершины, не видные камере
  • Равномерно расположить вершины на модели
  • Разбить их на чанки, потому что все в память не поместится
  • Нормализовать вершины в чанках

20 de 28

Процесс обучения

  • Encoder, чтобы получить векторное “информационное” представление чанка
  • Decoder, чтобы по нему создать качественную модель
  • Считаем ошибку с помощью функции ошибки chamfer distance

При предсказаниях модели

нужно применить регистрацию

облаков точек

21 de 28

Предсказания на одном чанке

Оранжевые вершины - предсказания модели

22 de 28

Результаты сети

Модель после фотограмметрии

Оранжевые вершины - предсказания модели

23 de 28

Результаты сети

Оранжевые вершины - предсказания модели

24 de 28

График ошибок

Ошибка Chamfer distance на 500 вершинах

0.0086 на train выборке, 0.0081 на test выборке

25 de 28

Затраты…

1259 компьютерных часов на сбор датасета

208 коммитов

4 репозитория

44 закрытых issues

75 запусков обучения модели

2.2 TB данных в датасете (это без бекапов)

4 сервера

Много боли…

26 de 28

Планы на будущее

Увеличить датасет и обучить модель на полном датасете

Вторая сеть для избавления от мусора в модели

Использовать более мощную структуру модели, например трансформер

Работать не только с облаками вершин, но и с гранями

Работать с текстурами моделей

Расширить работу нейронной сети на NeRF (Neural Radiance Fields)

27 de 28

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

28 de 28

Тезисы проекта