NeRF의 단점과 후속 연구 소개
이번 콘텐츠에서는 1) NeRF의 단점, 2) NeRF의 후속 연구 흐름을 알 수 있는 논문과 웹페이지, 3) Instant NeRF & NeRF in the Wild, 4) 라이브러리 NeRF-Factory를 소개하려고 합니다.
지난 콘텐츠인 NeRF: 2D 이미지를 3D로 바꿔준다고요?에서는 NeRF를 소개하였습니다. 하지만 초기의 NeRF에도 몇 가지 단점이 있었습니다. NeRF의 몇 가지 단점을 개선하기 위한 많은 연구가 지금도 계속 되고 있습니다. 이번 콘텐츠에서는 1) NeRF의 단점, 2) NeRF의 후속 연구 흐름을 알 수 있는 논문과 웹페이지, 3) 후속 연구 중 인기가 많은 몇 가지 모델(Instant NeRF, NeRF in the Wild), 4) NeRF 중 유명한 7가지 모델의 코드를 정리한 라이브러리 NeRF-Factory를 소개하려고 합니다.
1. NeRF의 단점
NeRF는 획기적인 기술이었지만 여러 가지 단점을 가집니다. 아래의 단점들 때문에 상용화하기에는 어려움이 있었습니다. NeRF의 대표적인 단점과 이를 개선한 몇 가지 논문을 나열하겠습니다.
1) 느린 속도
NeRF는 학습에만 1일 이상이 걸리고 새로운 이미지 1장을 rendering하는데에도 30초 정도 걸립니다. 따라서 실시간으로 NeRF를 사용할 수 없습니다.
개선한 연구
- PointNeRF (CVPR 2022)
- Plenoxels (CVPR2022)
- Instant NGP (SIGGRAPH 2022)
- EfficientNeRF(CVPR2022)
- Depth-supervised NeRF (CVPR2022)
- IBRNet (CVPR 2021)
- PlenOctrees (ICCV 2021)
- KiloNeRF (ICCV 2021)
- FastNeRF (ICCV 2021)
- MVSNeRF (ICCV 2021)
- NSVF (NeurIPS 2020)
- DVGO1, 2 (CVPR 2022)
2) 많은 입력 데이터 필요
NeRF에 필요한 학습 데이터는 최소 50장 이상이 필요합니다. 현실적으로 똑같은 사물을 50장 이상 촬영하는 것이 쉽지 않습니다.
개선한 연구
- eoNeRF(CVPR2022)
- NeuRay(CVPR2022)
- Depth-supervised NeRF (CVPR2022)
- MVSNeRF (ICCV 2021)
- metaNeRF (CVPR 2021)
- PixelNeRF (CVPR 2021)
- DietNeRF(ICCV 2021)
3) 하나의 물체에 하나의 모델이 필요(Generalization)
NeRF는 하나의 물체의 이미지를 생성하기 위해 1개의 모델을 학습해야 합니다. 예를 들어 나무를 학습한 모델로 건물의 이미지를 생성할 수는 없습니다. 세상의 수많은 물체에 대해 이미지를 생성하려면 수많은 모델을 학습해야 하죠. 비효율적이지 않나요?
개선된 연구
- PixelNeRF (CVPR 2021)
- IBRNet (CVPR 2021)
- MVSNeRF (ICCV 2021)
4) 움직이지 않는 물체
NeRF는 움직이지 않는 물체에 대해서만 학습할 수 있습니다. 사람이 움직이거나 바람에 휘날리는 물체가 있을 경우에는 노이즈가 많이 발생해 사용할 수 없습니다.
개선된 연구
- BANMo (CVPR 2022)
- Nerfies (ICCV 2021)
- HyperNeRF (SIGGRAPH 2021)
- D-NeRF (CVPR 2021)
5) 같은 환경에서 촬영한 이미지
현실에서는 같은 물체라 해도 시간이나 계절에 따라 다르게 보이기도 합니다. NeRF는 같은 환경에서 찍은 다양한 이미지를 학습할 때만 좋은 성능을 보여줍니다. 다양한 환경에서 촬영한 물체의 경우는 학습이 어렵습니다.
개선된 연구
- ShadeGAN (NeurlPS 2021)
- NeRS (NeuraIPS 2021)
- NeRV (CVPR 2021)
- NeRF in the wild (CVPR 2021)
- NeRD (ICCV 2021)
6) 다양한 카메라 파라미터 필요
NeRF는 이미지 뿐 아니라 이미지를 촬영한 카메라의 파라미터와 보이는 방향 등 다양한 정보가 필요합니다. 일반적으로 우리가 물체를 촬영할 때 그런 정보들을 알기는 쉽지 않죠.
개선 연구
- iNeRF (IROS 2021)
- NeRF– (2021)
- GNeRF (ICCV2021)
- BARF (ICCV 2021)
- SCNeRF (ICCV 2021)
그 외에도 다양한 단점들이 있습니다.
2. NeRF의 연구 동향을 연구한 논문
위에서 언급한 NeRF의 단점을 개선하기 위한 많은 노력들을 한 눈에 정리한 논문이 NEURAL VOLUME RENDERING: NERF AND BEYOND입니다. 위에 적어놓은 개선된 연구 역시 이 논문과 논문의 저자의 깃헙에서 정리한 것을 가져온 것입니다. NEURAL VOLUME RENDERING: NERF AND BEYOND는 개선 항목별로 2020년 말까지의 논문을 간단히 소개하였고, 웹페이지(NeRF Explosion 2020)를 통해서도 NeRF 이전의 논문부터 NeRF, 그리고 NeRF 이후의 후속 연구를 간단한 설명과 그림으로 정리하였습니다.
논문은 2020년 말에 나왔지만 그 후에도 웹페이지와 github(Awesome Neural Radiance Fields)은 꾸준히 업데이트되고 있습니다. 특히 매년 CVPR(컴퓨터 비전 및 패턴 인식 컨퍼런스)에 나오는 NeRF 관련 논문을 정리한 블로그 글을 올리고 있으니 참고해 보세요.
3. Instant NeRF & NeRF in the Wild
Instant NeRF(NVIDIA) – 학습 및 렌더링 속도 개선
NVIDIA Instant NeRF: NVIDIA Research Turns 2D Photos Into 3D Scenes in the Blink of an AI
When the first instant photo was taken 75 years ago with a Polaroid camera, it was groundbreaking to rapidly capture the 3D world in a realistic 2D image. Today, AI researchers are working on the opposite: turning a collection of still images into a digital 3D scene in a matter of seconds with the implementation of neural radiance fields (NeRFs).
2022년 1월 NVDIA는 NVDIA GTC 세션에서 세상을 놀라게 한 기술을 발표하였습니다. Instant NeRF라는 이름의 이 기술은 신경망 네트워크를 사용해 수십장의 사진과 촬영한 카메라 각도 데이터를 몇 초만에 학습하고, 수십 밀리초 안에 3D 장면을 렌더링할 수 있습니다. 기존의 NeRFr가 학습에만 1-2일 걸린 것보다 최대 1,000배 이상 빠른 속도였죠. Instant NeRF가 나왔을 때 많은 사람들이 놀라워했고, Papers with Code에서 아직까지도 Instant NeRF는 가장 인기 있는 모델입니다.
빠른 속도로 학습하고 렌더링하기 위해 Instant NeRF의 개발자들은 최적화된 멀티-해상도 해시 그리드 인코딩(multi-resolution hash grid encoding)라고 불리는 새로운 입력 부호화 기술을 사용하였다고 합니다. 빠르지만 작은 신경망을 사용하였기 때문에 NVIDIA Tensor Core를 탑재한 NVIDIA GPU 1개만 사용하여 학습하였다고 해요. 앞으로 NeRF가 상용화될 날이 머지 않았다는 기대감이 듭니다. 언젠가 영화 해리포터 시리즈에서처럼 사진을 찍으면 자동으로 사진이 움직이는 기술을 사용할 수 있을까요?
Instant NeRF를 더 알고 싶으시면 아래의 링크에 들어가 보세요.
NeRF in the Wild(Google) – 다양한 환경, 움직이는 물체
이미지 데이터를 얻는 가장 쉬운 방법은 무엇일까요? 사진을 직접 찍는 것보다 더 쉬운 방법은 인터넷에서 원하는 이미지를 검색하는 것입니다. 하지만 인터넷에서 검색된 이미지는 촬영한 시간과 방향이 모두 다르죠. 게다가 물체만 있는 것이 아니라 주변에 다양한 인물이나 물체가 있고, 인물이나 물체는 움직일 때도 있습니다. 하지만 맨 처음에 언급했듯 기존의 NeRF는 촬영한 시간이 다르거나 카메라의 위치와 방향이 다르거나 움직임이 있는 물체가 있는 경우에는 학습이 잘 되지 않는다고 하였습니다. 하지만 이 단점을 해결한 모델이 바로 NeRF in the Wild입니다.
NeRF in the Wild의 저자들은 인터넷에서 쉽게 검색할 수 있는 2D 이미지를 활용하여 3D를 만들고자 하였고, 결국 성공하였죠. 그 결과가 아래의 영상입니다.
첫 번째 영상의 하늘을 보면 각각 다른 시간으로 변한다는 것을 볼 수 있습니다. 두 번째 영상의 아래쪽을 보면 블러(blur) 처리한 것처럼 흐릿하게 보이지 않나요? 흐릿하게 보이는 부분은 사람들이나 물체가 있던 부분이었다고 하는데요, NeRF in the Wild는 움직이는 물체나 사람이 있던 부분을 구분하여 제거하였다고 해요.
뿐만 아니라 NeRF in the Wild는 NeRF보다 더 역동적으로 움직이는 것을 볼 수 있습니다. 이는 거리 차이를 알 수 있도록 하였기 때문인데, 이로 인해 조명이나 하늘의 색을 바꾼다거나 보다 이미지를 선명하게 렌더링하고 역동적인 움직임도 만들 수 있다고 해요.
NeRF in the wild를 더 알고 싶으시면 아래의 링크에 들어가 보세요.
- 논문: NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections
- 웹페이지: https://nerf-w.github.io/
- 깃헙
- 저자의 모델 설명:(5분 이내의 영상): NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections [updated]
4. NeRF Factory – 카카오브레인
2022년 9월 카카오브레인에서는 NeRF-Factory라는 파이토치 기반의 대용량 NeRF 라이브러리를 공개하였습니다. 이 라이브러리는 다양한 NeRF 모델의 코드와 데이터셋을 하나로 모아 사용자들이 쉽게 자신의 데이터와 모델로 커스텀할 수 있도록 하였습니다. NeRF-Factory를 사용하면 NeRF, NeRF++, Mip-NeRF360 등과 같은 7개의 유명한 NeRF 모델을 7개의 데이터셋에 대해 평가 및 비교할 수 있습니다.
카카오브레인은 누구나 NeRF-Factory를 체험할 수 있도록 시각화 페이지도 만들어 두었습니다. 링크에 들어가서 데이터셋(NeRF Blender, NeRF LLFF, LF 등)을 클릭하면 아래와 같이 NeRF를 경험할 수 있습니다.
이 페이지에서는 7개의 데이터셋에 적용된 7개의 모델이 어떤 결과를 내는지를 시각적으로 볼 수 있습니다. Frame 바를 이동시키면 다양한 시점으로 변경할 수 있고 흰색 선을 이동시켜 서로 다른 모델의 결과를 비교할 수도 있습니다. 뿐만 아니라 Left Model, Right Model 아래 메뉴에서 모델의 종류를 바꿀 수도 있습니다. 모델이나 데이터에 따라 선명도나 자연스러움이 다르니 웹페이지에 들어가 다양한 NeRF 모델을 경험해 보세요.
NeRF-Factory 깃헙에는 코드가 공개되어 있고, 모델과 데이터셋을 다운로드하여 직접 실행할 수도 있습니다. 가지고 있는 데이터셋을 적용하거나 모델을 원하는 대로 커스터마이즈(customize)할 수 있도록 자세한 설명도 써놓았으니 NeRF-Factory 깃헙에 들어가 직접 실험해 보세요.
마무리하며
지금까지 NeRF의 단점과 그 단점을 개선하기 위해 나온 후속 연구, 그 중에서 인기가 있는 모델인 Instant NeRF와 NeRF in the Wild, 마지막으로 7개의 인기 모델을 모아 한 번에 사용 및 비교할 수 있는 NeRF-Factory에 대해 알아보았습니다. 지금도 NeRF는 전세계의 다양한 곳에서 연구 및 사용되고 있기 때문에 앞으로 더 발전된 NeRF가 나올 것을 기대해도 될 것 같습니다.
다양한 인공지능을 공부하고 싶다면 인공지능 혁신학교 AIFFEL에서 시작하면 어떨까요?
참고자료