다음은 아래 Lecture에 대한 요약 및 필기 내용을 정리한 것입니다. 틀린 내용이 있다면 댓글 부탁드립니다 🙌
단일 이미지에서 3D 모양 예측 (좌):
3D 데이터를 입력으로 받는 작업 (우):
"모델링
"이라는 용어는 3D 모양과 3D 정보를 표현하거나 표현하는 방법을 설계하고 구성하는 과정을 의미합니다.
깊이 맵(Depth Map):
개념: 깊이 맵은 각 픽셀에 대해 카메라와 해당 픽셀이 표현하는 객체 간의 거리를 할당하는 간단한 3D 표현 방식입니다.
표현 방식: 전통적인 RGB 이미지가 색상 값을 저장하는 2D 그리드라면, 깊이 맵은 각 픽셀에 거리 값을 할당하는 2D 그리드로, RGB 이미지에 깊이 정보를 추가한 것입니다.
장점: 깊이 맵은 다양한 3D 센서(예: 마이크로소프트 Kinect, iPhone의 Face ID 등)로부터 직접 캡처할 수 있는 유형의 3D 데이터입니다.
단점: 깊이 맵은 가려진 객체의 구조를 캡처할 수 없으므로, 일부 객체의 구조를 온전히 표현하지 못합니다. 이 때문에 완전한 3D가 아닌 '2.5D'로 불립니다.
깊이 맵 예측: 신경망을 사용해 RGB 이미지로부터 깊이 맵을 예측할 수 있습니다. 이를 위해 전체적으로 합성곱 신경망(Fully Convolutional Network, FCN) 아키텍처를 사용할 수 있습니다.
💡 Scale-depth ambiguity
- Scale-depth ambiguity는 3D 비전에서 발생하는 문제로, 단일 2D 이미지에서는 객체의 실제 크기와 거리 간의 구분이 불가능하다는 점을 의미합니다.
- 즉, 어떤 객체가 멀리 있는 큰 객체인지, 가까이 있는 작은 객체인지 단일 이미지에서만으로는 구별할 수 없다는 것입니다.
예를 들어, 두 배 더 큰 고양이가 두 배 더 멀리 떨어져 있다고 상상해보겠습니다(위 이미지 참고). 이 두 고양이는 서로 다른 크기와 거리에 있지만, 2D 이미지에서는 두 고양이가 동일한 크기로 보이기 때문에 이 둘을 구분하기 어렵습니다. 이러한 모호성 때문에, 3D 데이터를 예측하거나 분석할 때 신경망 모델이 객체의 절대적인 크기와 거리를 정확하게 예측하기 어렵습니다.
이러한 문제를 해결하기 위해, scale-invariant loss function이라는 특수한 손실 함수를 사용하여 절대적인 크기 대신, 객체의 상대적인 크기와 깊이 관계에 집중하여 모델을 학습시키는 방법이 사용됩니다. 이 방법을 통해 스케일 차이에 의한 오류를 줄이고, 모델이 보다 일관된 3D 예측을 할 수 있도록 도와줍니다.
표면 법선 맵(Surface Normal Map):
복셀 그리드(Voxel Grid):
개념: 3D 공간을 일정한 크기의 그리드로 나누고, 각 그리드 셀이 점유되었는지 여부를 이진 값으로 나타내는 방식입니다.
특징: 마치 '마인크래프트'와 같은 블록 기반의 세계를 상상하면 이해하기 쉬우며, 2D의 픽셀 그리드를 3D로 확장한 개념입니다.
복셀 예측: 복셀 그리드에서 객체를 분류하거나 인식하기 위해 3D 합성곱 신경망(3D Convolutional Neural Network)을 사용할 수 있습니다.
2D 입력 이미지: 입력으로 3채널 RGB 이미지(크기: 3xHxW)가 사용됩니다.
2D CNN: 2D 합성곱 신경망(CNN)이 이미지를 처리하여 특징 맵을 생성합니다. 이때, 생성된 2D 특징 맵의 크기는 CxHxW입니다.
3D CNN: 2D CNN에서 나온 특징 맵을 기반으로, 3D CNN이 사용되어 3D 특징 맵(C'xDxHxW)을 생성합니다.
복셀 그리드 생성: 마지막으로, 3D CNN을 사용해 4D 텐서(크기: 1xVxVxV)로 변환하여, 복셀의 점유 확률(occupancy probability)을 예측합니다.
학습: 각 복셀의 예측된 점유 확률을 그라운드 트루스와 비교하는 per-voxel cross-entropy loss를 사용해 학습합니다.
👉 위 방식은 3D CNN을 사용하여 3D 공간 전체에서 특징을 추출하고 복셀 점유 확률을 계산합니다. 그러나 3D CNN은 2D CNN에 비해 다음과 같은 이유로 계산 비용이 많이 듭니다:
👉 두 번째 방법인 Voxel Tubes 방식은 이러한 계산 비용을 줄이기 위해 고안되었습니다:
단점: 높은 해상도로 복셀 그리드를 표현하려면 많은 메모리가 필요합니다. 예를 들어, 1024×1024×1024 해상도의 복셀 그리드를 저장하는 데만 약 4GB의 메모리가 필요합니다.
효율성 문제 해결: 복셀의 메모리 사용량을 줄이기 위해 다중 해상도 복셀 그리드(Multi-resolution Voxel Grid)나 옥트리(Octree) 등의 기법을 사용할 수 있습니다.
암시적 표면(Implicit Surface):
개념: 3D 모양을 함수로 표현하여, 임의의 3D 좌표가 객체의 내부인지 외부인지를 확률로 나타내는 방식입니다.
표현 방식: 주어진 3D 공간의 좌표를 입력으로 받아, 그 좌표가 객체의 표면인지 여부를 결정하는 함수입니다. 이 함수는 신경망으로 학습될 수 있습니다.
암시적 함수는 3D 공간에서 임의의 점이 특정 객체의 내부에 있는지 또는 외부에 있는지를 결정하는 함수입니다.
✔️ 이 함수는 3D 공간 내의 좌표 (x, y, z)를 입력받아, 해당 좌표가 객체의 내부에 있으면 1, 외부에 있으면 0을 반환합니다.
✔️ 결과적으로, 3D 객체의 표면은 o(x) = 1/2인 점들의 집합으로 정의됩니다.
활용: 암시적 표면 표현은 복셀과 달리 특정 점에서만 표면을 정의하지 않고, 3D 공간 전체에서 표면을 정의할 수 있는 장점이 있습니다.
포인트 클라우드(Point Cloud):
개념: 3D 모양을 표현하는 대표적인 방법 중 하나로, 객체의 표면을 3D 공간의 수많은 점으로 표현합니다. 각 점은 3D 좌표계에서 (x, y, z) 위치 정보를 가지고 있으며, 이러한 점들의 집합이 객체의 전체 모양을 형성합니다.
특징: 포인트 클라우드는 복셀 그리드보다 더 적응적인 방법으로, 객체의 세부 사항을 표현하기 위해 점의 밀도를 조절할 수 있습니다.
장점:
단점:
💡 PointNet
PointNet은 Point Cloud 데이터를 효과적으로 처리하기 위한 신경망 아키텍처로, 다양한 응용 분야에서 Point Cloud 데이터를 분석하고 활용할 수 있는 중요한 도구입니다.
💡 Loss Function
=> Chamfer Distance는 두 개의 Point Cloud 집합 간의 유사성을 비교하는 데 사용되는 손실 함수입니다.
- Point Cloud는 3D 공간 내에서 객체의 표면을 표현하는 점들의 집합이기 때문에, 두 Point Cloud를 비교하기 위해서는 두 집합 내 각 점들이 얼마나 가까운지를 측정하는 방식이 필요합니다.
- Chamfer Distance는 이러한 비교를 수행하는 대표적인 방법입니다. 슬라이드에서 보이는 수식을 아래와 같이 설명할 수 있습니다:
▶️ (첫번째항) 집합 𝑆1의 각 점 𝑥에 대해, 𝑆2에서 가장 가까운 점 𝑦까지의 L2 거리(유클리드 거리)를 계산합니다. 이 최소 거리를 모든 𝑆1의 점들에 대해 합산합니다.
▶️ (두번째항) 집합 𝑆2의 각 점 𝑦에 대해, 𝑆1에서 가장 가까운 점 x까지의 L2 거리를 계산하고, 이를 합산합니다.
메쉬(Mesh) 표현
개념: 메쉬는 3D 공간에서 정점(Vertices)
, 모서리(Edges)
, 그리고 면(Faces)
의 집합으로 객체를 표현하는 방식입니다.
정점(Vertices)
: 폴리곤의 모서리를 정의하는 공간의 점입니다.모서리(Edges)
: 꼭지점을 연결하는 선입니다.면(Faces)
: 모서리로 둘러싸인 평평한 표면입니다. 대부분의 모델에서 면은 삼각형 또는 사각형입니다.Mesh Deformation Block
과 Graph Unpooling Layer
영역으로 구분되어 있습니다:Chamfer Distance (CD):
F1 Score:
뒤에 나오는 개념들을 이해하기 위해서는 3D Vision에 대한 이해를 해야하기 때문에 다음과 같이 "3D Vision" 강의를 듣고, 정리해보았습니다.
이 강의는 2D 이미지에서 3D 구조를 이해하고 표현하는 다양한 방법과 그 한계, 그리고 이를 극복하기 위한 여러 가지 혁신적인 기술을 탐구합니다.
각각의 표현 방식은 특정 작업에 따라 장단점이 있으며, 복잡한 3D 데이터의 처리와 예측을 위한 다양한 접근법을 제공합니다.
읽어주셔서 감사합니다 🤗