어떤 물체의 사진 몇 장을 본다고 가정해보세요. 다른 각도에서 보면 어떻게 보일지 상상할 수 있나요? 사람은 할 수 있습니다. 우리가 이전에 보지 못한 부분이 무엇인지, 보지 못한 각도가 어떤지 짐작할 수 있습니다. 실제로 모델에는 일부 장면 사진이 주어지면 보이지 않는 각도에서 이미지를 브레인스토밍할 수도 있습니다.
새로운 관점을 제시하며 최근 가장 눈길을 끄는 것은 ECCV 2020 Best Paper Honorable Mention 후보로 선정된 NeRF(Neural Radiance Field)입니다. 이전의 복잡한 3차원 재구성 과정이 필요하지 않고 단지 몇 장의 사진과 사진 촬영 카메라의 위치를 변경하여 새로운 시각의 이미지를 합성할 수 있습니다. NeRF의 놀라운 효과는 많은 시각 연구자들의 관심을 끌었으며 일련의 뛰어난 작품이 이후에 제작되었습니다.
그러나 이러한 모델은 구축하기가 상대적으로 복잡하고 현재 이를 구현할 통합 코드 기반 프레임워크가 없기 때문에 의심할 여지 없이 이 분야의 추가 탐색과 개발을 방해한다는 것이 어렵습니다. 이를 위해 OpenXRLab 렌더링 생성 플랫폼은 NeRF 유사 모델의 구성, 훈련 및 추론을 신속하게 실현하는 데 도움이 되는 고도로 모듈화된 알고리즘 라이브러리 XRNeRF를 구축했습니다.
오픈 소스 주소: https://github.com/openxrlab/xrnerf
NeRF 클래스 작업은 일반적으로 다음을 포함하여 알려진 관점에서 장면 정보를 캡처하는 것을 의미합니다. 촬영된 이미지와 각 이미지에 해당하는 내부 및 외부 매개변수를 분석하여 새로운 관점에서 이미지를 합성합니다. NeRF 논문의 다이어그램을 사용하면 이 작업을 매우 명확하게 이해할 수 있습니다.
arxiv: 2003.08934에서 선택됨.
NeRF는 이미지 수집 시 5차원 장면 정보도 수집합니다. 즉, 하나의 이미지는 3차원 좌표값에 해당하고 다른 두 개의 빛 방사 각도에 해당합니다. 이러한 장면은 다층 퍼셉트론을 통해 Radiance Field로 모델링됩니다. 즉, 다층 퍼셉트론이 3차원 좌표점을 입력하고 이를 해당 점의 밀도 및 RGB 색상에 매핑하여 복셀 렌더링을 사용한다는 의미입니다. (볼륨 렌더링) Radiance Field를 사실적인 가상 관점으로 렌더링합니다.
위 그림과 같이 몇 장의 그림을 통해 Radiance Field를 구성한 후 새로운 관점에서 드럼 세트의 이미지를 생성할 수 있습니다. NeRF는 원하는 새로운 관점을 얻기 위해 명시적인 3D 재구성이 필요하지 않기 때문에 정보를 위해 2D 포즈 이미지 데이터만 사용하여 3D 장면을 훈련할 수 있는 딥러닝을 기반으로 하는 3D 암시적 표현 패러다임을 제공합니다.
NeRF 이후 NeRF와 유사한 모델이 끊임없이 등장했습니다. Mip-NeRF는 광선 대신 원뿔을 사용하여 미세 구조 생성을 최적화합니다. KiloNeRF는 단일 대형 다층 퍼셉트론 대신 수천 개의 작은 다층 퍼셉트론을 사용합니다. 퍼셉트론은 계산량을 줄이고 실시간 렌더링 기능을 구현합니다. 또한 AniNeRF 및 Neural Body와 같은 모델은 짧은 비디오 프레임에서 인간의 관점 변환을 학습하여 우수한 관점 합성 및 추진 효과를 얻습니다. 희박한 원근 사진과 기하학적 사전 분석을 통해 서로 다른 ID 간의 일반화 가능한 인간 렌더링이 가능합니다.
GN'R은 일반화 가능한 인체 암시적 필드 표현을 제안하고 단일 모델 인체 렌더링 효과를 달성합니다.
현재 NeRF와 유사한 알고리즘은 훌륭하지만 연구 분야의 장점 매우 인기가 있지만 결국 상대적으로 새로운 방법이므로 모델 구현이 확실히 더 번거롭습니다. PyTorch나 TensorFlow와 같은 기존 프레임워크를 사용하는 경우 먼저 유사한 NeRF 모델을 찾은 다음 이를 기반으로 수정해야 합니다.
이 작업을 수행하면 먼저 구현을 완전히 이해해야 원하는 대로 변경할 수 있습니다. 둘째, 공식적으로는 이 부분의 작업량이 적지 않습니다. 논문의 구현은 균일하지 않습니다. 다양한 NeRF 클래스 모델의 소스 코드를 비교하는 것은 결국 많은 에너지를 소비하게 됩니다. 결국 특정 논문의 훈련 과정에 새로운 트릭이 있는지 여부는 아무도 알 수 없습니다. 통일된 코드 세트가 없기 때문에 새로운 모델에 대한 새로운 아이디어를 검증하는 것은 의심할 여지 없이 훨씬 느려질 것입니다.
많은 문제를 해결하기 위해 OpenXRLab은 NeRF 클래스 모델을 위한 통합된 고도로 모듈화된 코드 기반 프레임워크 XRNeRF를 구축했습니다.
XRNeRF는 많은 NeRF 모델을 구현하여 시작하기가 더 쉽고 해당 논문의 실험 결과를 쉽게 재현할 수 있습니다. XRNeRF는 이러한 모델을 데이터 세트, mlp, 네트워크, 임베더 및 렌더링의 5개 모듈로 나눕니다. XRNeRF의 사용 용이성은 구성 메커니즘을 통해 다양한 모듈을 조립하여 완전한 모델을 형성할 수 있다는 사실에 있습니다. 사용이 매우 쉽고 재사용성이 크게 향상됩니다.
사용 편의성을 보장하기 위해서는 유연성도 필요합니다. XRNeRF는 다른 레지스터 메커니즘 세트를 통해 다양한 모듈의 특정 특성이나 구현을 사용자 정의할 수 있으므로 XRNeRF를 더욱 분리하고 코드를 보다 쉽게 이해할 수 있습니다. .
또한 XRNeRF에서 구현하는 모든 알고리즘은 파이프라인 모드를 채택합니다. 데이터의 파이프라인은 원본 데이터를 읽고 일련의 처리를 거쳐 모델의 입력을 얻습니다. 해당 출력. 이러한 파이프라인은 구성 메커니즘과 등록 시스템 메커니즘을 연결하여 완전한 아키텍처를 형성합니다.
XRNeRF는 많은 핵심 NeRF 모델을 구현하고 위의 세 가지 메커니즘을 통해 이를 함께 연결하여 사용하기 쉽고 유연한 고도로 모듈화된 코드 프레임워크를 구축합니다.
XRNeRF는 Pytorch 프레임워크를 기반으로 한 NeRF 클래스 알고리즘 라이브러리로 장면 방향과 본문 방향 모두에서 8개의 고전 논문을 재현했습니다. 직접 모델링과 비교하여 XRNeRF는 모델 구축 효율성, 비용 및 유연성을 크게 향상시켰으며 완전한 사용 문서, 예제 및 문제 피드백 메커니즘을 갖추고 있습니다. 요약하면 XRNeRF의 핵심 기능은 다음과 같습니다.
1. 선구적인 NeRF, CVPR 2021 Best Paper Candidate(NeuralBody), ICCV 2021 Best Paper Honorable Mention(Mip-NeRF) 및 Siggraph 2022 Best Paper와 같은 많은 주류 및 핵심 알고리즘
을 구현했습니다. (즉시 NGP).
XRNeRF는 이러한 모델 구현을 기반으로 재생산 효과가 기본적으로 논문의 효과와 일치하는지 확인할 수도 있습니다. 아래 그림과 같이 객관적인 PSNR 및 SSIM 지표로 판단하면 원본 코드의 효과를 잘 재현할 수 있습니다.
2. 모듈형 디자인
코드를 읽고 수정합니다. 기존 NeRF 클래스 모델 방법을 분석하여 XRNeRF 설계의 구체적인 모듈 프로세스를 아래 그림에 표시합니다.
모듈화의 장점은 데이터 형식을 수정해야 하는 경우 데이터 세트 모듈을 수정해야 합니다. 아래 로직은 이미지 렌더링 로직을 수정해야 한다고 가정하고 렌더 모델 모듈만 수정하면 됩니다.
3. 표준 데이터 처리 파이프라인
NeRF 알고리즘에 대한 데이터 전처리의 보다 복잡하고 다양한 문제를 목표로 XRNeRF는 일련의 표준 데이터 처리 프로세스를 제공합니다. 이는 여러 데이터 처리 작업에서 순차적으로 가져옵니다. 데이터 처리의 원활한 구성을 완료하려면 구성 구성 파일에서 데이터 파이프라인 부분만 수정하면 됩니다.
NeRF 구성 데이터 흐름 부분.
XRNeRF는 이미 여러 데이터 세트에 필요한 데이터 처리 작업을 구현했습니다. 데이터 처리 프로세스 구성을 완료하려면 구성에서 이러한 작업을 순서대로 정의하기만 하면 됩니다. 향후 새로운 작업을 추가해야 하는 경우 해당 폴더에서 새 작업의 구현을 완료하기만 하면 되며 전체 데이터 처리 프로세스에 코드 한 줄을 추가할 수 있습니다.
4. 모듈형 네트워크 구축 방법
모델은 서로 다른 알고리즘 간의 서로 다른 모듈 교체를 실현합니다.
임베더는 포인트의 위치와 관점을 입력하고 포함된 특징 데이터를 출력합니다. MLP는 임베더의 출력을 입력으로 사용하고 샘플링 포인트의 밀도 및 RGB 색상을 출력합니다. MLP의 광선을 따라 있는 점 통합 및 기타 작업을 수행하여 이미지 픽셀의 RGB 값을 얻습니다. 이 세 가지 모듈은 표준 네트워크 모듈을 통해 연결되어 완전한 모델을 구성합니다.
네트워크 모듈의 코드 구조를 사용자 정의합니다.
5. 좋은 재현 효과
가장 빠른 60초 학습 네트워크, 초당 30프레임 실시간 렌더링을 지원하고 고화질, 앤티앨리어싱, 멀티 스케일 장면 및 인간의 이미지 렌더링. 객관적인 PSNR 및 SSIM 지표를 보든 주관적인 데모 디스플레이 효과를 보든 XRNeRF는 원본 코드의 효과를 잘 재현할 수 있습니다.
XRNeRF 프레임워크는 기능도 아주 좋은 것 같고, 사용하기도 매우 간단하고 편리합니다. 예를 들어, 설치 과정에서 XRNeRF는 PyTorch, CUDA 환경, 시각적 처리 라이브러리 등과 같은 많은 개발 환경에 의존합니다. 하지만 XRNeRF는 Docker 환경을 제공하며 DockerFile을 통해 이미지 파일을 직접 빌드할 수 있습니다.
다양한 운영 환경과 패키지를 단계별로 구성하는 것에 비해 docker build 한 줄 명령만으로 구성하는 방법이 확실히 훨씬 편리합니다. 또한, Docker 이미지 구축 시 국내 이미지 주소가 DockerFile에 구성되어 있기 때문에 여전히 속도가 매우 빠르고, 기본적으로 네트워크 문제에 대한 걱정을 할 필요가 없습니다.
이미지를 빌드하고 이미지에서 컨테이너를 시작한 후 docker cp 명령을 통해 프로젝트 코드와 데이터를 컨테이너로 전송할 수 있습니다. 하지만 컨테이너 생성 시 -v 파라미터를 통해 프로젝트 주소를 컨테이너 내부에 직접 매핑할 수도 있습니다. 그러나 여기서는 데이터 세트를 XRNeRF 프로젝트 아래의 데이터 폴더와 같은 특정 위치에 배치해야 한다는 점에 유의해야 합니다(그렇지 않으면 구성 파일을 변경해야 함).
일반적으로 데이터를 다운로드한 후 대략적인 폴더 구조는 아래와 같습니다.
이제 환경, 데이터 및 코드가 모두 준비되었으며, 짧은 코드 한 줄만으로도 작업을 수행할 수 있습니다. NeFR 모델의 훈련 및 검증:
python run_nerf.py --config configs/nerf/nerf_blender_base01.py --dataname lego
여기서 dataname은 데이터 디렉터리의 특정 데이터 세트를 나타내고 config는 모델의 특정 구성 파일을 나타냅니다. XRNeRF는 고도로 모듈화된 디자인을 채택했기 때문에 사전을 사용하여 구성을 구성했습니다. 언뜻 보기에는 다소 번거로울 수 있지만 실제로 XRNeRF의 디자인 구조를 이해하고 나면 읽기가 매우 간단합니다.
주관적으로 말하면 구성 구성 파일(nerf_blender_base01.py)에는 옵티마이저, 분산 전략, 모델 아키텍처, 데이터 전처리 및 반복 등을 포함하여 모델 교육에 필요한 모든 정보와 심지어 많은 이미지 처리 관련 구성이 포함되어 있습니다. 또한 포함됩니다. 요약하면, 특정 코드 구현 외에도 구성 구성 파일은 전체 교육 및 추론 프로세스를 설명합니다.
모델 구조 부분의 Config 구성을 설명합니다.
일반적으로 XRNeRF는 기본 운영 환경 설정부터 훈련 작업의 최종 실행까지 비교적 원활합니다. 또한 구성 파일을 구성하거나 특정 OP를 구현하면 매우 높은 모델링 유연성을 얻을 수도 있습니다. 딥 러닝 프레임워크 모델링을 직접 사용하는 것과 비교할 때 XRNeRF는 의심할 여지 없이 많은 개발 작업을 줄이고 연구원이나 알고리즘 엔지니어도 모델 또는 작업 혁신에 더 많은 시간을 할애할 수 있습니다.
NeRF 클래스 모델은 여전히 컴퓨터 비전 분야 연구의 초점입니다. HuggingFace의 Transformer 라이브러리처럼 XRNeRF와 같은 통합 코드 기반은 점점 더 우수한 연구 작업을 수집하고 새로운 코드로 점점 더 많은 새로운 코드를 수집할 수 있습니다. 아이디어. 결과적으로 XRNeRF는 연구원들의 NeRF 유형 모델 탐색을 크게 가속화하여 이 새로운 분야를 새로운 시나리오와 작업에 더 쉽게 적용할 수 있도록 하며 NeRF의 잠재력도 가속화될 것입니다.
위 내용은 새로운 관점을 브레인스토밍하는 통합 NeRF 코드 기반 프레임워크가 오픈 소스로 제공되었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!