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

OSCHINA-MIRROR/OpenXRLab-xrnerf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

XRNeRF

actions LICENSE

Введение

Английский | 简体中文

XRNeRF — это открытый исходный код на основе PyTorch для Neural Radiance Field (NeRF). Это часть проекта OpenXRLab.

https://user-images.githubusercontent.com/24294293/187131048-5977c929-e136-4328-ad1f-7da8e7a566ff.mp4

На этой странице представлены основные учебные пособия по использованию XRNeRF. Инструкции по установке см. в installation.md.

Бенчмарк

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

Поддерживаемые методы сцены-NeRF:

(нажмите, чтобы свернуть)

Поддерживаемые методы человека-NeRF:

(нажмите, чтобы свернуть)

Хотите увидеть больше методов, поддерживаемых XRNeRF? Опубликуйте метод, который вы хотите увидеть в XRNeRF, в нашем списке желаний.

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

Рекомендуется связать корень набора данных с $PROJECT/data. Если ваша структура папок отличается, вам может потребоваться изменить соответствующие пути в файлах конфигурации.

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

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

Установка

Мы предоставляем подробное руководство по установке для XRNeRF, пользователи могут установить с нуля или использовать предоставленный dockerfile.

Рекомендуется начать с создания образа докера:

docker build -f ./docker/Dockerfile --rm -t xrnerf .

Дополнительную информацию см. в нашем руководстве по установке.

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

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

В XRNeRF компоненты модели в основном делятся на 4 типа.

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

Следуя некоторым основным конвейерам (например, NerfNetwork), структуру модели можно настроить через файлы конфигурации без проблем.

Написание новой сети

Чтобы написать... Новый Nerf-сети: наследование от BaseNerfNetwork

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

  • train_step() — прямой метод тренировочного режима;
  • val_step() — прямой метод тестового режима.

NerfNetwork (xrnerf/models/networks/nerf.py) является хорошим примером того, как это сделать.

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

  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):
        ...
  1. Импортировать модуль в xrnerf/models/networks/init.py:
from .my_networks import MyNerfNetwork
  1. Изменить конфигурационный файл (configs/nerf/nerf_blender_base01.py):
model = dict(
    type='NerfNetwork',
    ...
)

на

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

Процедура для реализации новых компонентов для embedder/mlp/render аналогична описанной выше.

Реализация новых компонентов

  • Для написания нового Nerf embedder необходимо наследоваться от nn.Module или BaseEmbedder и определить метод forward. Хорошим примером является BaseEmbedder (xrnerf/models/embedders/base.py).
  • Для написания нового Nerf mlp необходимо наследоваться от nn.Module или BaseMLP и определить метод forward. Хорошим примером является NerfMLP (xrnerf/models/mlps/nerf_mlp.py).
  • Для написания нового Nerf render необходимо наследоваться от nn.Module или BaseRender и определить метод forward. Хорошим примером является NerfRender (xrnerf/models/renders/nerf_render.py).

Обучение модели

XRNeRF использует mmcv.runner.IterBasedRunner для управления тренировкой и mmcv.runner.EpochBasedRunner для тестового режима. В тренировочном режиме max_iters в конфигурационном файле определяет количество итераций. В тестовом режиме max_iters принудительно изменяется на 1, что представляет собой только одну эпоху для тестирования.

Тренировка

python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego

Аргументы:

  • --config: путь к конфигурационному файлу;
  • --dataname: выбор данных из каталога набора данных.

Тестирование

Мы предоставили модель iter_200000.pth для тестирования, которую можно скачать здесь.

python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego --test_only --load_from iter_200000.pth

Аргументы:

  • --config: путь к конфигурационному файлу;
  • --dataname: выбор данных из каталога набора данных;
  • --test_only: влияние на весь тестовый набор один раз;
  • --load_from: загрузка контрольной точки для тестирования, которая перезапишет исходный load_from в конфигурационном файле для удобства.

Учебники

В настоящее время мы предоставляем некоторые учебники для пользователей:

Другие документы

Кроме этого, документ включает следующее:

Цитирование

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

@misc{xrnerf,
    title={OpenXRLab Neural Radiance Field Toolbox and Benchmark},
    author={XRNeRF Contributors},
    howpublished = {\url{https://github.com/openxrlab/xrnerf}},
    year={2022}
}

Лицензия

Лицензия нашего исходного кода — Apache-2.0 (LICENSE). Обратите внимание, что эта лицензия применяется только к коду в нашей библиотеке, зависимости которой являются отдельными и лицензируются индивидуально. Мы хотели бы отдать должное открытому исходному коду. Реализация, на которую мы полагаемся.

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

Вклад в проект

Мы ценим любой вклад в улучшение XRNeRF. Пожалуйста, обратитесь к CONTRIBUTING.md для ознакомления с руководством по внесению вклада.

Признание

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

Проекты OpenXRLab:

Комментарии ( 0 )

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

Введение

Набор инструментов и тестов OpenXRLab для работы с нейронными полями излучения (NeRF). Развернуть Свернуть
C++ и 6 других языков
Apache-2.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