1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/OpenXRLab-xrnerf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_CN.md 7.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 08:06 d80819a

XRNeRF

actions LICENSE

Введение

简体中文 | English (README.md)

В этом документе представлено базовое руководство по использованию XRNeRF. Для получения инструкций по установке см. Руководство по установке.

Содержание

  • XRNeRF
    • Введение
    • Базовые принципы
    • Наборы данных
    • Установка
    • Создание модели
      • Основные понятия
      • Создание собственной новой модели
    • Обучение
      • Контроль количества итераций
      • Команда обучения
      • Тестирование
    • Подробное руководство
    • Ссылки
    • Вклад в проект
    • Благодарности
    • Другие проекты OpenXRLab

Базовые принципы

Более подробную информацию можно найти в benchmark.md.

Поддерживаемые сценарии для методов нейронного рендеринга включают:

(нажмите, чтобы свернуть)
  • NeRF (ECCV'2020)
  • Mip-NeRF (ICCV'2021)
  • KiloNeRF (ICCV'2021)
  • Instant NGP (SIGGRAPH'2022)
  • BungeeNeRF (ECCV'2022)

Поддерживаются методы нейронного рендеринга человеческого тела:

(нажмите, чтобы свернуть)
  • NeuralBody (CVPR'2021)
  • AniNeRF (ICCV'2021)
  • GNR

Если вы хотите увидеть новый метод NeRF в XRNeRF, вы можете оставить свой запрос на списке пожеланий, и мы организуем дальнейшие планы на основе голосования сообщества.

Наборы данных

Мы рекомендуем размещать наборы данных в каталоге проекта /data, иначе вам может потребоваться изменить содержимое config.

xrnerf
├── xrnerf
├── docs
├── configs
├── test
├── extensions
├── data
│   ├── nerf_llff_data
│   ├── nerf_synthetic
│   ├── multiscale
│   └── ...

Для получения информации о подготовке набора данных см. Подготовка набора данных.

Установка

Инструкции по установке см. в Руководстве по установке, также предоставляется файл образа Docker в качестве другого способа установки среды.

Создание модели

Основные понятия

В XRNeRF модель разделена на четыре части:

  • embedder: принимает положение и направление взгляда точек и выводит встроенные данные признаков, embedder может быть чисто функциональным или иметь обучаемые параметры;
  • mlp: использует выходные данные embedder в качестве входных данных и выводит исходные данные точек (значения rgb и плотности для точек выборки), обычно состоит из многослойных персептронов;
  • render: получает выходные данные mlp, выполняет интеграцию вдоль лучей и выводит значение пикселя rgb для изображения;
  • network: объединяет три вышеуказанные части и взаимодействует с mmcv runner, управляет вычислением потерь во время обучения и вычислением показателей во время тестирования.

Для всех вышеперечисленных моделей ввод представляет собой словарь типа data. Модель использует содержимое словаря data для создания новых пар ключ-значение и добавления их в data. Например, оригинальный nerf, начальные данные должны содержать pts (размер n_rays, n_pts, 3) и viewdirs (размер n_rays, n_pts, 3).

Создание собственной новой модели

Чтобы создать собственную сеть, необходимо наследовать от BaseNerfNetwork, который определяет два абстрактных метода:

  • train_step(): функция для вывода и вычисления потерь в режиме обучения.
  • val_step(): функция вывода в тестовом режиме.

NerfNetwork является хорошим примером.

Конкретно говоря, если вы хотите реализовать метод nerf с новыми функциями, выполните следующие шаги:

  1. Создайте новый файл, например, xrnerf/models/networks/my_networks.py.

    from ..builder import NETWORKS
    from .nerf import NerfNetwork
    
    @NETWORKS.register_module()
    class MyNerfNetwork(NerfNetwork):
    
        def __init__(self, cfg, mlp=None, mlp_fine=None, render=None):
            super().__init__(cfg, mlp, mlp_fine, render)
    
        def forward(self, data):
            ....
    
        def train_step(self, data, optimizer, **kwargs):
            ....
    
        def val_step(self, data, optimizer=None, **kwargs):
            ....
  2. Измените файл xrnerf/models/networks/__init__.py:

    from .my_networks import MyNerfNetwork
  3. Измените конфигурационный файл config file: Исходное:

    model = dict(
        type='NerfNetwork',
        ....

    Сейчас:

    model = dict(
        type='MyNerfNetwork',
        ....

Аналогично, для реализации новых функций embedder/mlp/render, процесс аналогичен:

  • Чтобы определить новый embedder, необходимо унаследовать от nn.Module или BaseEmbedder и определить метод forward. BaseEmbedder — хороший пример.
  • Чтобы определить новую mlp, необходимо унаследовать от nn.Module или BaseMLP и определить метод forward. NerfMLP можно использовать в качестве примера.
  • Чтобы определить новый render, необходимо унаследовать от nn.Module или BaseRender и определить соответствующий метод.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/OpenXRLab-xrnerf.git
git@api.gitlife.ru:oschina-mirror/OpenXRLab-xrnerf.git
oschina-mirror
OpenXRLab-xrnerf
OpenXRLab-xrnerf
main