Self-Calibrating Neural Radiance Fields [Kor]
Jeong et al. / Self-Calibrating Neural Radiance Fields / ICCV 2021
Last updated
Jeong et al. / Self-Calibrating Neural Radiance Fields / ICCV 2021
Last updated
****English version of this article is available.
해당 논문(약칭 SCNeRF) 에서는 하나의 장면(scene)을 촬영한 여러장의 이미지가 입력으로주어졌을 때, 이미지를 촬영할 때 사용된 카메라의 intrinsic/extrinsic 파라미터와 해당 장면(scene)의 기하학적구조(geometry)를 표현하는 Neural Radiance Field 파라미터를 동시에 학습합니다. 일반적으로 카메라의 intrinsic/extrinsic을 추정할 때는 격자무늬패턴판(checker board)과 같은 보정물체(calibration object)를 촬영한 이미지가 필요하지만 해당 논문에서는 보정물체(calibration object)를 촬영한 이미지 없이 캘리브레이션 수행이 가능합니다.
수식으로는 아래와 같이 표현할 수 있습니다.
간결성과 보편성 때문에 기존의 3D 비전 연구들은 핀홀 카메라 모델 가정을 많이 사용해왔습니다. 그러나, 카메라 모델의 발전과 함께 어안렌즈 카메라, 일반화모델 등 다양한 종류의 카메라 모델이 등장했고, 기본적인 핀홀 카메라 모델은 이런 복잡한 형태의 카메라 모델을 표현하는 것에 한계가 존재합니다.
self-calibration은 카메라 파라미터를 별도의 보정물체(calibration object)(ex 체커보드패턴) 없이도 찾아내고자 하는 연구분야입니다. 많은 경우, 보정물체(calibration object)를 촬영한 이미지를 구하는 것은 불가능하기 때문에 (예를들어 인터넷에서 크롤링한 이미지 사용하는 경우) 보정물체(calibration object)가 없이도 카메라 캘리브레이션을 수행하는 self-calibration은 중요한 연구 분야입니다. 하지만, 기존의 self-calibration 방법들은 온전히 기하학적구조손실함수(geometric loss) 에 의존하거나, 희소(sparse)한 대응점간의 정보만을 이용하는 에피폴라 기하(epipolar geometry)에 의존하고 있습니다. 이러한 방법든은 촬영된 장면(scene)에 충분한 특징점이 존재하지 않을 때 noise에 극도로 민감해져 결과가 발산하고만다는 단점이 존재합니다. 또한 더 정확한 장면(scene)의 기하학적구조(geometry)를 알 수록 더 정확한 카메라 모델을 얻을 수 있음에도 불구하고, 기존의 self-calibration 방법들은 기하학적구조(geometry)를 개선하거나 학습하는 과정을 포함하지 않습니다.
NeRF는 학습시 사용되었던 이미지와는 다른 각도에서 장면(scene)을 바라보는 novel view image를 생성해내는 연구이며, 이를 위해 장면(scene)마다 별도로 정의되는 네트워크를 학습합니다. 장면(scene)에 내재된 연속적인(continuouse) volumetric scene function을 희소한(sparse) 입력 이미지들만을 이용하여 학습했다는 데 의의가 있으며, 논문이 공개되었을 당시 NeRF는 novel view systhesis 분야에서 최고의 성능을 보였습니다. 하지만 NeRF를 학습하기 위해서는, 학습하고자 하는 장면(scene)의 RGB 이미지 뿐 아니라 각 이미지에 대응되는 카메라 포즈와 카메라 파라미터가 추가적으로 필요합니다.
해당 논문에서는
핀홀 카메라 모델의 한계를 극복하기 위하여 핀홀 카메라 모델 파라미터 뿐 아니라, 비선형 카메라 왜곡을 표현할 수 있는 파라미터들(4차 방사 왜곡 파라미터, 일반 오차 파라미터)을 학습에 포함하였습니다.
기존 self-calibration 방법들이 사용해왔던 기하학적구조손실함수(geometric loss)의 한계를 극복하기 위하여 측광일관성손실값(photometric consistency loss)를 추가적으로 사용하였습니다.
개선된 기하학적구조(geometry)정보를 이용하여 더 정확한 카메라 모델을 얻기 위해, NeRF를 이용해 표현된 기하학적구조(geometry)가 카메라 파라미터와 함께 학습되었습니다.
상용 렌즈는 우리가 이상적으로 생각하는 렌즈(lens focal length가 하나의 값으로 고정됨)와 다른 특성을 가지기 때문에 다양한 종류의 수차(aberration)를 만들어냅니다. 그 중 가장 흔하게 관찰되는 것은 방사 왜곡(radial distortion)으로 알려져 있습니다. 아래 그림은 흔히 관찰되는 방사 왜곡의 종류를 직관적으로 보여주고 있습니다.
SCNeRF는 이러한 방사 왜곡(radial distortion)에 대처할 수 있도록 흔히 사용되는 4차 방사왜곡 모델을 카메라 모델에 추가하였습니다.
광선의 연속적인(cotinuous) 왜곡 파라미터를 추정하기 위해 이중선형보간법(bilinear interpolation)이 사용되었습니다.
이해를 돕기위해 일반화비선형수차모델(generic non-linear aberration model)의 개념을 표현한 그림을 아래에 첨부하였으니 참고해주세요.
더 자세한 내용이 궁금하신 분들은 Reference & Additional materials의 "Why having 10,000 parameters in your camera model is better than twelve" 논문을 참고해주세요.
위에 언급된 Pinhole Camera Model, Fourth Order Radial Distortion, Generic Non-Linear Camera Distortion 으로부터, 최종 광선방향(ray direction)과 광선기원(ray origin)을 아래와 같은 그래프로 표현할 수 있습니다.
카메라 파라미터를 학습하기 위하여, 기하학적구조일관성손실값(geometric consistency loss)과 측광일관성손실값(photometric consistency loss)가 사용되었습니다.
카메라에서 멀리 떨어진 3차원 공간상의 점의 위치는 큰 편차를 가질 수 있고, 카메라와 가까운 3차원 공간상의 점의 위치는 상대적으로 작은 편차를 갖는다는 점에 주목해주세요. 3차원 공간상에서 정의되는 광선 간의 최단거리를 직접 손실함수에 사용하는 대신, 이미지로 정사영하여 계산한 거리값을 손실함수를 사용하는 것은 이러한 거리민감도를 제거하기 위함입니다.
측광일관성손실값(photometric consistency loss)은 다음과 같이 정의됩니다.
측광일관성손실값(photometric consistency loss)이 카메라 파라미터에 대해 미분 가능하다는 사실에 주목해주세요. 우리는 이로부터 카메라 파라미터에 대한 gradient값을 정의할 수 있고, 카메라 캘리브레이션을 수행할 수 있게됩니다.
기하학적구조(geometry)를 모르거나 희소(coarse)하게만 아는 상황에서 self-calibration을 통해 정확한 카메라 파라를 학습하는 것은 불가능합니다. 이 문제를 해결하기 위하여 기하학적구조(geometry)와 선형 카메라 모델 파라미터를 먼저 학습하고, 복잡한 카메라 모델 파라미터를 나중에 학습하는 커리큘럼 학습기법이 차용되었습니다
먼저, NeRF 네트워크는 카메라 초점거리(focal length)와 주점(principal point)의 초기값을 이미지의 가로/세로길이의 절반으로 설정합니다. 카메라 파라미터가 올바를 극소점에 도달하게 하기 위하여 대략적인 기하학적구조(geometry)를 먼저 학습하는 것은 필수적인 과정입니다.
다음으로, 선형 카메라 파라미터, 방사 왜곡 파라미터, 비선형 광선 방향 노이즈 파라미터, 비선형 광선 기원 노이즈 파라미터가 순차적으로 학습에 추가됩니다.
기하학적구조(geometry)가 어느정도 학습되고 난 후, 기하학적구조일관성손실값(geometric consistency loss)을 사용하기 위하여 충분히 많은 대응점을 갖는 이미지를 랜덤하게 선택하고 이로부터 손실값을 계산하여 사용합니다.
해당 부문에서는 논문에 언급된 모든 실험 결과를 다루는 대신, 일부 대표적인 실험 결과를 다루도록 하겠습니다.
저자가 실험을 수행하기 위하여 사용한 데이터셋과 실험을 수행한 내용은 아래와 같습니다.
Dataset
LLFF
8 장면(scenes)
Tanks and Temples
4 장면(scenes)
저자가 직접 촬영 및 수집한 데이터
6 장면(scenes)
fish-eye camera
Experiments
Improve over NeRF
Improve over NeRF++
Fish-eye Lens Reconstruction
Ablation Study
여기서는 모든 실험 결과를 다루는 대신 빨강색으로 강조한 데이터와 실험에 대한 결과만 다룰 것입니다.
표1은 학습 데이터셋에대해 렌더링된 이미지의 정량평가 결과를 보여줍니다. SCNeRF가 캘리브레이션 된 카메라 모델을 알지 못함에도, 안정적으로 렌더링을 수행하는 것을 알 수 있습니다.
COLMAP을 이용하여 캘리브레이션 된 카메라 모델 결과값을 알고있는 경우에도 SCNeRF는 NeRF보다 더 나은 렌더링 성능을 보여줍니다. 표2는 이러한 경우의 NeRF와 SCNeRF의 결과를 보여줍니다.
위 결과로부터 우리는 SCNeRF가 지속적으로 NeRF보다 안정적인 렌더링 성능을 보이는 것을 확인할 수 있습니다. 아래의 그림은 각 경우의 렌더링 결과를 정성적으로 보이기 위하여 시각화한 것입니다.
여기서 (a)는 COLMAP 결과를 사용하지 않은 NeRF결과, (b)는 COLMAP결과를 사용한 NeRF 결과, (c)는 COLMAP 결과를 사용하지 않은 SCNeRF결과, (d)는 COLMAP결과를 사용한 SCNeRF 결과를 의미합니다.
제안된 방법의 효과를 확인하기위하여 Ablation Study가 수행되었습니다. 각 단계는 20만 iteration동안 학습이 진행되었습니다. intrinsic/extrinsic 파라미터(IE), 비선형왜곡(OD), 정사영광선거리를 이용한 손실값 정의(PRD)가 점진적으로 추가되었고, 이 실험으로부터 SCNeRF를 점차 확장해나감으로써 더 좋은 렌더링 결과를 얻을 수 있다는 것을 알 수 있습니다. 그러나 해당 표에는 나타나있지 않지만, 일부 장면(scene)에 대해서는 PRD를 적용하는 것이 오히려 PRD값을 증가시키는 결과를 보였다고 합니다.
아래의 그림은 각 경우의 렌더링 결과를 정성적으로 보이기 위하여 시각화한 것입니다.
SCNeRF는 기하학적구조(geometry)와 카메라 파라미터를 동시에 학습하는 Self-Calibration방법을 제안합니다. 카메라 모델은 실제 카메라 렌즈에 존재하는 노이즈를 모델링하기 위하여 핀홀 모델, 방사 왜곡 모델, 그리고 비선형 왜곡 모델을 포함하여 구성되었습니다. SCNeRF는 정사영한 광선 거리를 사용하여 손실함수를 새롭게 정의하고, 이를 통해 캘리브레이션 성능을 개선하였습니다. SCNeRF는 카메라 캘리브레이션 결과가 없을 때에도 안정적인 결과를 보이고 있으며, 카메라 캘리브레이션 결과가 주어졌을 때에도 기존 NeRF대비 더 안정적인 렌더링 결과를 보여줍니다.
해당 논문은 카메라 파라미터와 Neural Radiance Field를 함께 학습한다는 점에서 의의가 있습니다.
왜 validation set이나 test set을 이용한 성능 평가가 아닌 training set을 이용하여 성능평가를 수행하였는지 의문입니다.
좋지 않은 성능에 대한 내용은 글에서만 언급되고, 표에 수치가 기록하지 않은 점이 아쉬웠습니다. (예를들면 #Ablation Study)
몇몇 수식에서 에러가 발견되어, 개인적으로 생각하기에 맞다고 생각되는 방향으로 수정하여 글을 작성하였습니다. 혹시 수식에서 에러가 발견된다면 자유롭게 의견 남겨주세요
SCNeRF는 기하학적구조(geometry)와 카메라 파라미터를 처음부터 함께 학습합니다.
SCNeRF의 카메라 모델에는 핀홀카메라모델, 방사왜곡모델, 비선형왜곡모델이 포함됩니다.
SCNeRF는 성능을 높이기 위해 정사영광선거리(Projected Ray Distance)를 사용합니다.
김민정(Min-Jung Kim)
KAIST AI
Contact Information
email: emjay73@naver.com
Citation of this paper
Jeong, Yoonwoo, et al. "Self-calibrating neural radiance fields." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2021.
Official Project Page : https://postech-cvlab.github.io/SCNeRF/
Official GitHub repository : https://github.com/POSTECH-CVLab/SCNeRF
Citation of related work
Mildenhall, Ben, et al. "Nerf: Representing scenes as neural radiance fields for view synthesis." European conference on computer vision. Springer, Cham, 2020.
Schops, Thomas, et al. "Why having 10,000 parameters in your camera model is better than twelve." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
Zhou, Yi, et al. "On the continuity of rotation representations in neural networks." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019.
Other useful materials
Lens Aberrations : chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/viewer.html?pdfurl=https%3A%2F%2Fwww.nao.org%2Fwp-content%2Fuploads%2F2020%2F04%2FLens-Aberrations.pdf&chunk=true
camera models : chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/viewer.html?pdfurl=https%3A%2F%2Fcvgl.stanford.edu%2Fteaching%2Fcs231a_winter1415%2Flecture%2Flecture2_camera_models_note.pdf&clen=4519068&chunk=true
Find , when
여기서 은ray, 와 는 ray의 origin과 direction, 은 카메라 파라미터로부터 ray를 생성해내는 함수, 는 카메라 calibration 파라미터, 는 ray 에 대한 color 추정값, 는 Neural Radiance Field 모델 파라미터, 는 ray가 주어졌을 때 를 이용하여 이미지를 rendering하는 함수를 의미합니다.
기존의 방법들은 카메라 파라미터를 알고있다는 가정 하에 scene의 geometry만 학습하거나, scene geometry에 대한 학습 없이 카메라 파라미터만을 학습했다면, 본 논문의 목적은 와 를 동시에 학습하는 것입니다.
핀홀 카메라 모델은 동차 좌표계(homogeneous coordinate)로 표현된 3차원 공간상의 4-vector 를 동차 좌표계로 표현된 이미지 평면상의 3-vector 로 변환합니다. .
여기에서 는 intrinsics matrix, 은 회전 행렬(rotation matrix), 는 이동 행렬(translation matrix)를 의미합니다.
를 먼저 살펴보면, 는 의 초기값을 의미하는 매트릭스 와 의 잔차값(residual)을 의미하는 매트릭스 (=)로 구성됩니다. 이렇게 나누어 구성하는 이유는 국소 최저값(local minima)이 많이 존재하는 intrinsic matrix의 비볼록(non-convex) 특성 때문에, 가 올바른 값에 수렴할 수 있도록 초기값을 부여하기 위함입니다.
와 유사하게, 회전 행렬 이동 행렬 또한 extrinsic 의 초기값과 각각의 잔차(residual)를 의미하는 매트릭스로 나누어 표현할 수 있습니다. 그러나, 회전 행렬의 경우 구성요소 각각에 대해 잔차(residual)를 계산하는 것은 회전 행렬의 정규직교(orthonormal)한 특성을 파괴합니다. 이를 해결하기 위하여 해당 논문에서는 회전 행렬을 표현하기위해 6-vector 표현방식을 활용합니다. 회전 행렬에 존재하는 2개 열의 값만을 학습하고 마지막 열은 정규직교(orthonormal) 특성을 이용하여 계산하는 방식입니다:
여기에서 가 하는 역할은 Gram-Schmidt Process와 매우 유사합니다. 이해를 돕기 위하여 가 하는 역할을 그림으로 표현해보았으니 아래의 그림을 참고해주세요. 여기에서 은 normalization 을 의미합니다.
그림에서 볼 수 있듯이, 비정규화(unnormalized)상태의 두 벡터 ,로부터 정규직교(orthonormal)한 벡터 를 얻을 수 있다는 것을 확인할 수 있습니다.
픽셀 좌표 를 왜곡되기 이전의 정규화(normalized)된 상태의 픽셀 좌표 로 변환하는 과정은 4차 방사왜곡 모델(4th order radial distortion model)에 의해 아래와 같이 표현할 수 있습니다.
여기에서 는 로 표기되는 방사 왜곡(radial distortion) 파라미터 초기값을 의미하며, 는 로 표기되는 방사 왜곡 파라미터의 잔차값(residual)을 의미합니다.
앞서 설명한 Pinhole Camera Model와 Fourth Order Radial Distortion의 내용을 이용하여 광선(ray)의 방향 와 광선의 기원(origin) 을 세계 좌표(world coordinate)에서 아래 식과 같이 표현할 수 있습니다.
여기에서 은 벡터 정규화(vector normalization) 과정을 의미합니다. 혹시 왜 이동 행렬 t가 세계 좌표(world coordinate)에서 광선 기원(ray origin) (=카메라 원점 좌표) 와 동일한지 궁금하신 분들이 계신 경우를 대비하여 아래의 그림을 첨부하였으니 확인해주세요. 아래의 그림은 이동행렬 의 기하학적 의미를 보여주는 그림입니다.
광선(ray)을 구성하는 와 는 intrinsic, extrinsic, distortion 파라미터의 잔차(residual) (, , , , )에 대해 표현 가능한 함수이므로, 우리는 광선(ray)에서 잔차(residual)로 gradient를 흘려주어 해당 파라미터들을 학습할 수 있습니다. 단, ()들은 각 파라미터의 초기값으로 최적화하는 대상이 아니라는 점에 유의해주세요.
실제 렌즈에 존재하는 복잡한 광학 수차(aberration)은 매개변수카메라모델(parametric camera model)로는 표현이 불가능합니다. 실제 렌즈에 존재하는 노이즈를 표현하기 위해 일반화비선형수차모델(generic non-linear aberration model)이 사용되었습니다. 구체적으로 말하자면, 카메라 좌표계 광선(ray)의 잔차(residual) , 가 사용되었습니다. 여기에서 는 이미지 좌표를 의미합니다.
여기에서 는 이산(discrete) 좌표계상의 제어점(control point) 위치에서 정의되는 광선 방향의 잔차(residual)를 의미합니다. 는 이산(discrete) 위치에서만 정의 및 학습됩니다. 쌍대성(duality)에 의해 의 식도 아래와 같이 성립하게 됩니다.
기하학적구조일관성손실값(geometric consistency loss)은 위 그림에서 로 정의됩니다. 식의 자세한 이해를 위해 하나하나 살펴보도록 하겠습니다.
먼저, 를 카메라A로 촬영된 이미지와 카메라B로 촬영된 이미지 각각에서 추출한 대응점이라고 가정합니다. 모든 카메라 파라미터가 캘리브레이션 되어있다고 가정할 때 와 에 의해 생성된 광선(ray)은 3차원 공간상의 한 점에서 만나야합니다. 하지만 카메라 파라미터에 에러가 존재하는 경우 두 광선은 만나지 않게되고, 이 경우의 오차값은 광선간의 최단거리를 측정하여 정의할 수 있습니다.
광선 상의 점을 라 정의하고, 광선 상의 점을 라 정의할 때, 광선 와 점 간의 거리는 위의 그림에서 와 같습니다. 을 풀면 우리는 와 사이의 거리를 최소로 만드는 값을 구할 수 있으며, 이는 아래 식과 같습니다.
이 값으로부터 우리는 와 사이의 거리를 최소로 만드는 의 값을 구할 수 있습니다.
쌍대성(duality)에 의해 에 대하여 아래의 식도 만족합니다.
그림상의 수식에서는 편의상 을 제외하고 와 을 와 로 표기하고있습니다.
각 점을 이미지상에 정사영하고 거리를 계산함으로써, 기하학적구조일관성손실값(geometric consistency loss) 를 얻을 수 있습니다. 여기에서 는 정사영을 수행하는 함수입니다.
여기에서 는 픽셀 좌표를, 는 이미지상에 존재하는 모든 픽셀 좌표의 집합을, 는 광선 을 이용하여 volumetric rendering 과정을 통해 추정한 픽셀 의 색깔을, 는 실측된 color값을 의미합니다.
는 어떻게 추정하나요? Volumetric Rendering은 무엇인가요?
광선(ray)의 컬러값 는 광선상에 존재하는 점들의 컬러값을 불투명성(opaqueness) 수치로 가중(weighted)한 후 적분한 값으로 이해할 수 있습니다.
여기서 는 투명도, 는 컬러, 를 의미합니다. 이 수식에 대해 더 자세한 내용이 알고싶으신 분은 Reference & Additional materials 섹션의 "NeRF" 논문을 참고해주세요.
아래 그림은 최종 학습 알고리즘이 어떻게 돌아가는지를 보여줍니다. 특히 함수는 학습에 사용될 카메라 파라미터를 순차적으로 추가해가며 리턴하는 함수이며, 추가되는 카메라 파라미터는 점진적으로 복잡도가 높아집니다.