포토그래매트리부터 최신기술 3D Gaussian Splatting까지.
예전에 작성한 적이 있던 사진만으로 3D 모델 만들기에 이어 새로운 기술이 등장했기에 어느 정도 성능향상이 있었는지 살펴보기로 했다. 당시에 최신기술은 NeRF(Neural Radiance Fields)로 사진으로 3D 씬을 구성하는데 패러다임을 바꾸는 기술이었다. 사진으로 3D를 만드는 전통적인 방식은 포토그래매트리다. 그 방법은 다음과 같다.
1. 사진을 찍고
2. 사진이 찍힌 위치와 자세를 역 추적한 다음
3. 특징점을 중심으로 3D 메시를 재건한다.
전통적인 방식이라고 칭한 이유는 딥러닝을 사용하지 않았기 때문이다. 강아지인지 고양이인지 구분하는 이미지 인식 분야에서도 전통적인 방식이 있는데, 딥러닝이 등장하고 성능으로 모두 압살 당했다. 심지어 전통적인 방식은 영상처리, 패턴인식을 깊게 이해해야 나의 알고리즘을 작성할 수 있었기에 진입장벽이 상당히 높았다. 강아지와 고양이를 구분하는 알고리즘에서 포카칩과 허니버터칩을 구분하는 알고리즘을 만드는 것이 아주 오래 걸린다는 뜻이다. 그런데 딥러닝은 어떤가? 강아지와 고양이를 구분하는 모델을 강아지 사진 100장 고양이 사진 100장으로 만들었다면 포카칩 사진 100장, 허니버터칩 100장만 있다면 다른 물체를 구분하는 알고리즘 만들기는 전문 지식이 없어도 가능하다. 심지어 인식을 훨씬 잘한다. 한술 더 떠서 100장이 아니라 몇 장만 있어도 가능하다.
돌이켜 생각해 보면 고등학교 때 미분을 내가 평생 살아가면서 쓸 일이 있을까? 고민하며 공부했던 것처럼 전통적인 방식을 내가 공부해야 할까? 시간만 버리는 것이 아닌가?라고 생각할 수도 있는데, 오늘 가져온 새로운 기술은 비교적 오래된 기술과 딥러닝의 융합이 만들어낸 걸작이라는 데에 공부한 것은 결국 어디엔가 쓰인다는 사례를 제시해 준다.
오늘 살펴볼 기술은 3D Gaussian Splatting(3D GS)이다. Splatting이라는 말은 스플래툰이라는 게임을 연상케 하는데, 물감을 여기저기 뿌리며 다니는 게임이다. 게임과 비슷하게 마치 잭슨 폴록의 그림처럼 흩뿌려놓는다는 의미로 받아들이면 된다.
그러면 3D 씬에 가우시안을 흩뿌려놓는다는 말인가? 맞다. 그렇다면 가우시안은 무엇인가? 가우시안은 럭비공처럼 생겼는데 내가 사이즈를 조절할 수 있는 덩어리라고 생각하면 된다. 3D GS는 그 럭비공들을 공중에 뿌려놓는 기술이다. 입력된 사진과 최대한 비슷하게 럭비공의 가로 세로 높이 사이즈를 조절하고 럭비공의 색깔과 투명도를 조절하는 알고리즘이 3D GS다. 그림을 그리는데, 붓으로 물감을 칠하는 게 아니고 럭비공으로 그린다고 생각하면 된다. 그런데 그게 여러 장의 사진과 최대한 비슷하게 럭비공을 3D 씬에 최적화하는 것이다. 당연히 사진이 많을수록 유리하고 해상도가 높을수록 유리하다. 럭비공의 개수도 많으면 많을수록 유리하다. 반면 그만큼 럭비공 그리기에 시간이 오래 걸린다.
이와 비슷한 것이 있다. 바로 포인트 클라우드다. 공중에 구형태로 색깔을 가진 점들을 띄워 3D 장면을 구성하는 것이다. 보통 3D 라이다의 데이터로 포인트 클라우드를 얻게 되는데, 포인트 클라우드 놔두고 럭비공을 쓴 이유가 뭘까? 사실 럭비공 사이즈를 조절하면 구로 만들 수 있어서 럭비공이 상위호환이다. 추가로 얻을 수 있는 장점은 바로 모양을 다양하게 잡을 수도 있고, 바라보는 방향에 따라 색을 다르게 칠할 수 있다는 것이다. 바라보는 방향에 따라 색이 다르다는 것은 어느 정도 반사광을 표현할 수 있다는 것이고, 이것은 전통적인 방식인 포토그래매트리가 못하는 것이다. 그리고 사람은 여기에서 진짜다 그래픽이다를 판단하는 지점이 된다. 3D 그래픽인데 와 이게 그래픽이야?라고 생각하게 하는 몇몇 지점이 있는데, 그중 하나가 반사광 표현이다. 포토그래매트리는 전혀 못하는데, 3D GS는 잘한다.
이전 글에서 다뤘던 NeRF는 반사광을 못 잡냐, 그건 아니다. NeRF도 훌륭한 기술이지만 씬을 구성하는데 너무 느렸다. 구성은 둘째치고 3D 장면을 보는 것도 너무 느렸다. 그런데 3D GS는 씬을 구성하는 것, 3D 장면을 보는 것 모두 NeRF에 비해 매우 빠르다. 퀄리티도 좋다.
먼저 포토그래매트리가 유리한 분야를 살펴보자. 매트한 재질의 신발이다. 신발을 놓고 돌아가면서 81장을 찍었다.
먼저 전통적인 포토그래매트리 결과다. 많이 아쉽다.
다음은 오브젝트 마스킹 등 여러 잡기술이 들어간 애플의 오브젝트 캡처를 사용한 결과다. 아주 훌륭하다. 당장 사용 가능한 수준이다.
다음은 대망의 3D GS다. 애플의 오브젝트 캡처가 너무 잘돼서 그런지 약간 애매하다. 더 학습하면 더 좋은 결과를 낼 것이라고 생각한다. 물론 여기에도 잡기술들이 우후죽순 나오고 있기 때문에 포토그래매트리의 결과정도는 뽑을 수 있을 것이라고 생각한다.
매트한 재질에서는 이견없이 애플의 오브젝트 캡처의 완승이다. 다음은 스틸재질처럼 반사하는 재질일 경우이다. 나의 텀블러 가운데 두고 돌아가며 77장 사진을 찍었다.
전통적인 포토그래매트리는 우선 탈락시켰고, 아래는 진짜 사진과 애플의 오브젝트 캡처를 사용하여 텀블러를 3D 모델링한 결과다.
안타깝게도 반사광에서는 매트한 재질급의 성능을 내지 못했다. 찌그러져있는 결과를 냈다. 아쉬운 결과다. 다음은 3D GS를 사용하여 3D로 모델링한 결과다.
형태는 잘 잡는 것 같지만 완성도가 뛰어나지는 않다. 원본사진의 퀄리티가 떨어진 것도 있지만 그래도 반사광에서 사용할 수 있는 수준의 결과를 내는 알고리즘은 없었다. 좀 더 알고리즘의 발전을 기다리거나 반사광에 대해 처리할 수 있는 좋은 아이디어가 떠오르면 연구를 해봐야겠다.
사실 실제로 3D 모델을 리얼한 씬에 활용하기 위해서는 PBR(Physically Based Rendering)을 지원하는 모델로 만들어야 한다. 주변 환경에 진짜 현실처럼 융합되기 위해선 재질 같은 정보가 필요하다. 포토그래매트리로는 한계가 있다. 그런데 3D GS는 보는 방향에 따라서 색을 바꿀 수 있는 럭비공이 있기 때문에 주변 환경 정보와 융합하여 충분히 PBR 가능한 모델로 출력이 가능할 것이라고 생각한다.