Domain Adaptation on Point Clouds via Geometry-Aware Implicits

리뷰 날짜
2022/06/15
분야
Point Cloud Domain Adaptation
본 포스트에서는 Implicit Function 을 사용하여 Point Cloud 의 Domain Adaptation 을 수행한 논문에 대해서 소개드리려고 합니다. 리뷰하려는 논문의 제목은 다음과 같습니다.
“Domain Adaptation on Point Clouds via Geometry-Aware implicits”
논문에 대한 내용을 직접 보시고 싶으신 분은 이곳을 참고하시면 좋습니다.

Objective

Point Cloud 는 자율주행 및 로보틱스 분야에서 다양한 응용을 보여주며 3D 데이터를 기하학적으로 표현하는 인기있는 방법으로 부상했습니다. 하지만, Point Cloud 는 데이터의 획득 프로세스나 센서에 따라서 상당히 넓은 범위의 기하학적 variation 을 보여주는 고질적인 문제가 있습니다. 같은 물체를 표현하더라도 방법에 따라 다른 Point Cloud 가 생성되는 현상은 하나의 방법으로 생성된 Point Cloud 로 학습된 네트워크가 다른 방법으로 얻어낸 Point Cloud 에서 동작하지 않는, 일명 Domain Gap 을 야기했습니다.
Domain Gap
이를 해결하기 위해 domain 을 바꾸어 네트워크를 재학습을 시키거나 fine-tuning 하는 naive 한 접근방법이 있습니다. 하지만 이 방법은 시간 면에서, 혹은 computation cost 를 결정짓는 예산 면에서 불가능한 경우가 많습니다. 더욱이 이러한 방법론은 근본적으로 test domain 에서의 label 을 필요로하기 마련인데 label 이 없는 경우가 있거나, 혹은 직접 만드려고 하더라도 labeling cost 가 클 수 있습니다. 이러한 상황에서도 잘 동작할 수 있는 방법론으로 등장한 방법론이 Unsupervised Domain Adaptation (UDA) 입니다.
UDA 로 사용할 수 있는 일반적인 방법 중 하나가 Adversarial Training 으로 feature space 에서 두 Domain 이 align 될 수 있도록 하는 방법인데, 잘 알려져 있듯이 Adversarial Training 은 섬세한 학습이 필요하고, 이러한 조건을 만족하지 못할 경우 쉽게 local minima 에 빠져 degenerated solution 을 낼 수 있습니다. 논문에서는 이러한 상황에서도 잘 동작할 수 있는 새로운 UDA 방법론을 제안합니다.

Method

논문에서 제시한 방법론은 아래의 그림으로 설명할 수 있습니다. 논문에서는 Point Cloud Classification 을 기준으로 UDA 방법론을 설명합니다. Source Domain 의 Label 은 있지만, Target Domain 의 Label 은 없을 때, Domain Gap 을 줄일 수 있는 방법론을 제시한 것입니다.
UDA on Point Clouds without Adversarial Training
UDA 의 핵심은 크게 다음과 같은 두 가지 요소입니다.
1.
두 domain 이 point cloud space 던, feature space 던간에 (통계학적으로) align 되어야 합니다.
2.
1번에서 align 된 결과가 semantic 하게 의미가 있어야 합니다.
Semantic Meaningful 의 의미? 하나의 예시로, source domain 의 의자 카테고리가 target domain 의 사슴 카테고리와 align 되는 것은 semantic 하게 의미가 없는 alginment 입니다. 동일한 카테고리의 alignment 를 semantic meaningful 하다- 고 지칭합니다.
이 두 조건을 만족시키기 위해서 논문에서는 두 domain 에서 공유할 수 있는 Self-Supervised Task 를 정의하여 alignment 에 활용하게 됩니다. 더불어 여러가지 task 중에서 semantic meaningfulness 를 확보할 수 있는 task 를 선택하게 됩니다. 이 부분이 위 그림에서 보이는 초록색 선으로 연결되어 있는 아래쪽 path 입니다.
Self-Supervised Task 란? Label 이 없는 데이터에 대해서 Downstream Task (Target Task) 가 아닌 새로운 문제인 Pretext Task 를 정의하여 학습을 진행하고, 이렇게 진행한 학습으로 데이터 자체에 대한 이해를 높이는 방법입니다. Pretext Task 에 사용되는 label 정보는 데이터 자체로부터 (완벽하지 않더라도 어떻게 해서든) 생성해내어 Self-Supervised Task 라고 불립니다. 일반적으로는 Pretext Task 를 진행한 뒤에 Target Task 와 연결하여 최종적으로 해결하는 방법입니다. 한 예시로, 2014년의 Exemplar 가 있는데, 이는 Downstream Task 가 Image Classification 이었고, Pretext Task 가 label 이 없는 이미지를 augmentation 시켜 그 이미지들을 모두 같은 하나의 라벨로 분류하는 Classification 이었습니다. Pretext Task 로 학습시킨 데이터셋을 라벨이 있는 적은 데이터셋으로 fine-tuning 및 class 정의하는 과정을 거쳐 최종적인 Image Classification 을 해낼 수 있습니다.
이 외에도 위 그림에서 주황색 선으로 연결되어 있는 위쪽 path 를 살펴볼 수 있습니다. 이는 main task 라 불리며, label 을 보유하고 있는 source domain 상에서 네트워크가 올바른 label 을 예측할 수 있도록 학습하는, 일반적인 classifying task 를 정의하는 path 입니다.
여기까지 오시면 방법론의 대략의 맥락은 설명드렸습니다. Main Task 와 Self-Supervised Task 두 가지를 동시에 학습하는 형태가 되는데 수학적으로 표현하면 다음과 같습니다.
먼저, Source Domain Ds\mathcal{D^s} 는 다음과 같이 point cloud Pis\mathcal{P_i^s} 와 label Yis\mathcal{Y_i^s} 의 쌍의 집합으로 표현할 수 있습니다.
Ds={Pis,Yis}\mathcal{D^s} =\{ \mathcal{P_i^s}, \mathcal{Y_i^s} \}
다음으로, Target Domain Dt\mathcal{D^t} 는 다음과 같이 point cloud Pit\mathcal{P_i^t} 의 집합으로 표현할 수 있습니다.
Dt={Pit}\mathcal{D^t}=\{ \mathcal{P_i^t} \}
목표로 하고자 하는 바는 두 도메인을 포함하여 다음을 만족하는 Θ\mathcal{\Theta} 를 찾는 것입니다.
Y=Θ(P)\mathcal{Y}=\mathcal{\Theta(P)}
이 때, 해당 Θ\mathcal{\Theta} 는 Main Task 네트워크의 forward path 를 의미하며, 이는 다음과 같이 Encoder Φ\Phi 와 Classifier Ψm\Psi_m 로 구성되어 있습니다.
Θ=ΦΨm\Theta = \Phi \circ \Psi_m
위의 수식까지만 포함되어 있다면 Θ\Theta 는 Source Domain Ds\mathcal{D^s} 에 대해서만 목표를 만족할 수 있습니다. 이를 두 도메인 모두로 확장하기 위해 도입한 Self-Supervised Task 는 Encoder Φ\Phi 와 Decoder Ψs\Psi_s 로 구성되어 있습니다.
아래에선 각각의 Path 에 대한 구체적인 설명을 진행할 예정입니다.

Point Cloud Classifier (Main Task)

앞서 잠깐 언급한 것과 같이 Point Cloud Classifier 는 Main Task 이자 그 forward path 가 논문에서 목적으로 하는 Θ\Theta 를 의미하는 네트워크입니다. Label 이 존재하기 때문에 supervised learning 을 진행할 수 있고, 네트워크의 학습 과정 속에서 부가적으로 주요한 feature 이자, 논문에서 원하는 두 도메인을 align 시킬 수 있는 space 인 Implicit Representation 을 추출해낼 수 있을 것을 기대하는 네트워크입니다.
Point Cloud Classifier 만 있다면 학습된 네트워크에서 산출된 Implicit Representation 이 Source Domain 에서만 유효한 representation 일 수 있지만, 뒤에서 설명드릴 Self-Supervised Task 로 인해서 논문에서는 해당 representation 이 Target Domain 에도 적용될 수 있도록 설계합니다.
Lclss=1Nsi=1Nsj=1JYi,jslog(Ψm(Φ(Pis))j)\mathcal{L_{cls}^s}=-\frac{1}{N_s}\sum_{i=1}^{N_s}\sum_{j=1}^J\mathcal{Y_{i,j}^s}\log(\Psi_m(\Phi(\mathcal{P_i^s}))_j)
이 때 사용하는 Loss 로는 위와 같이 정의되는 Cross Entropy Loss 를 사용합니다. 일반적인 Multiclass Classification 에서 사용되는 Cross Entropy Loss 와 다르지 않기 때문에 수식에 대한 구체적인 설명은 생략하도록 하겠습니다. 네트워크로 산출된 벡터의 정답 라벨 index 의 값이 높게 산출될 수록 loss 값이 작아지는 구조라는 사실이 보이실 겁니다.

Self-Supervised Geometry-Aware Implicit (Self-Supervised Task)

논문에서는 Implicit Representation Space 에서 Source Domain 과 Target Domain 을 align 하기 위해서 Self-Supervised Task 를 설계합니다. 이 Task 는 Point Cloud 의 Implicit Suface 를 앞서 주요한 feature 로 언급되었던 Implicit Representation 으로부터 재구성하는 것입니다.
이를 위해서 논문에서는 특정 query point qq 에 대한 point cloud 의 underlying surface 까지의 거리인 unsigned distance function 을 산출하는 네트워크를 구상합니다. 눈치채신 분들도 계시겠지만, point cloud 가 주어지기 때문에 unsigned distance 의 ground truth 를 계산해낼 수 있고, 해당 네트워크는 단순한 regression 문제를 해결하는 역할을 하게 됩니다. Signed 가 아닌, unsigned 로 한 이유는 partial 한 Point Cloud 의 경우도 있기 때문이라고 합니다.
이를 수식으로 나타내면 다음과 같습니다.
먼저, unit cube 로부터 sampling 된 KK 개의 sampling point Q\mathcal{Q} 는 다음과 같이 정의됩니다.
QRK×3\mathcal{Q}\in \mathbb{R}^{K\times 3}
그리고, Implicit Representation cc 는 앞서 Encoder Φ\Phi 로 부터 다음과 같이 얻어낼 수 있습니다.
c=Φ(P)c=\Phi(\mathcal{P})
ccqQq \in \mathcal{Q} 에 대하여 unsigned distance 는 다음과 같이 표현 가능합니다.
fP(q)=Ψs(q,c)f_{\mathcal{P}}(q)=\Psi_s(q,c)
여기까지 오시면 Self-Supervised Task 의 네트워크가 Implicit Representation 과 query point 로부터 unsigned distance function 을 추출하는 역할을 한다는 사실과, 이는 단순한 regression 문제임을 깨달으셨을 것입니다. 하지만 이러한 설계가 어떻게 두 domain 모두에서 적용될 수 있는 Implicit Representation 을 산출하는 네트워크를 학습하는데 도움을 주는 설계인지에 대해서 설명을 드리지 않았습니다.
이는 반대로 생각해보면 쉽습니다. 만약, Implicit Representation 이 Target Domain 및 Source Domain 모두, 혹은 둘 중 하나에서 적용되기 어려운 형태라고 가정해봅시다. 그렇다면 해당 Implicit Representation 이 담고 있는 정보만으로 3D 데이터를 표현하는 다른 방법인 Unsigned Distance Function 을 유의미하게 산출할 수 있을까요?
그렇지 않을 것입니다. Implicit Representation 이 Point Cloud 를 잘 표현할 수 있는 representation 이어야 해당 정보를 활용하여 Unsigned Distance Function 을 재구성할 수 있을 것이기 때문입니다. 또 다시 반대로 이야기하면 둘 중 어느 한 domain 에서라도 그 Implicit Representation 이 Input Point Cloud 를 잘 표현할 수 있는 표현이 아니라면 loss 가 크게 나오고 해당 loss 를 작게하는 방향으로 Implicit Representation 을 산출하는 encoder 인 Φ\Phi 가 학습된다는 intuition 에서 나온 설계라고 볼 수 있습니다.
정리하자면, 논문에서는 Source Domain 과 Target Domain 모두에서 적용할 수 있는, Label 이 없고 input 자기 자신만을 이용해서 할 수 있는 Self-Supervised Task 를 구성하여 두 domain 에서 모두 적용될 수 있는 Implicit Representation 을 만들도록 유도했다는 것입니다.
여기까지 오시면 Self-Supervised Task 에서 진행하는 Task 가 무엇인지, 그리고 이것이 어떻게 두 domain space 를 feature 단에서 align 할 수 있는지 알게 되셨을 것입니다. 하지만, Point Cloud Reconstruction 이 아니라 Unsigned Distance Function 을 산출했는지에 대해서 궁금하실 수도 있습니다. 논문에서는 이에 대해 다음과 같이 설명하고 있습니다.
as our goal is to leverage the implicit representation to align domains and reduce performance drop, we do not need the implicits to perfectly represent the underlying geometry and reconstruct the point cloud
구체적인 답변은 아니지만, 위처럼 논문에서는 Implitic Representation 만을 domain 간에 align 하는 것이 목적이기 때문에 굳이 완벽하게 Point Cloud 를 reconstruction 할 필요가 없다- 라는 식으로 이야기를 합니다. 이는 기본적으로 Unsigned Distance Function 도 기본적으로 3D 데이터를 표현하는 방법이고 해당 Function 을 올바르게 산출하기 위해서는 Implicit Representation 이 두 domain 내 Point Cloud 의 특성을 모두 잘 반영하고 있어야함도 있으며 (Unsigned Distance Function 으로도 충분하며), 일반적으로 Point Cloud 를 reconstruction 하는 복잡도, 난이도, 비용이 Unsigned Distance Function 을 추론하는 것보다 크기 때문도 있는 대답으로 보입니다.

Adaptive Unsigned Distance of Point Cloud

앞서는 Self-Supervised Task 의 전체적인 맥락에 대해서 알아보았습니다. 얼핏 보면 위 과정을 따라서 순탄하게 학습을 진행하고 끝날 법 하지만, 실제로는 Unsigned Distance 의 ground truth 를 확보하는 과정에서 어려움이 있습니다.
Unsigned Distance Definition
특정 query point 로 부터 point cloud 의 underyling surface 까지의 거리의 mapping 인 Unsigned Distance 를 계산해내기 위해서 사용할 수 있는 잘 알려진 naive 한 방법은 위 그림의 (a)(a) 에서 나타난 것 처럼 nearest neighbor point 까지의 거리를 unsigned distance 로 지정해버리는 것입니다. 이는 실제로 dense 하고 uniform 하게 sampling 된 경우에는 잘 동작할 수 있는 방법이지만, 그렇지 않은 경우에는 sparse 한 부근 근처의 unsigned distance 는 underlying surface 가 가까이 있음에도 굉장히 멀게 책정될 수도 있습니다. 더불어 비교적 uniform 하더라도 query point 가 underlying space 에 가까이 있는 정도에 비해서 point cloud 의 density 가 꽤나 낮다면 (b)(b) 와 같이 굉장히 가까이 있는 query point 에 대해서 생각보다 Unsigned Distance 가 멀게 책정될 수 있는 오류도 나타날 수 있습니다.
이에 대한 오류를 줄이기 위해 논문에서는 Local Affinity 라는 요소를 정의한 뒤 이를 활용해 Unsinged Distance 를 계산하게 됩니다.
Local Affinity 는 특정 point 가 얼마나 응집되어 있는가- 를 표현하는 지표입니다. 실제로도 특정 point pj\mathcal{p_j} 가 주변의 MM 개의 nearest neighborhood 와 얼마나 떨어져 있는지에 대한 distance 의 평균으로 계산이 됩니다.
dj=1Mmpmpjd_j =\frac{1}{M}\sum_m \left|| p_m-p_j |\right|
이러한 Local Affinity 개념을 사용해 Point Cloud 의 Average Local Affinity 를 계산해내고, 이는
dM=1Nj=0N1djd_M=\frac{1}{N}\sum_{j=0}^{N-1}d_j
최종적인 Unsigned Distance 를 다음과 같이 정의하고 이를 Adaptive Unsigned Distance (AUD) 라고 칭합니다.
dP(q)={qp(q)ifqp(q)>dM0otherwised_{\mathcal{P}}(q)= \begin{cases} \left||q-p^*(q) |\right| & \mathrm{if} \left||q-p^*(q) |\right| > d_M \\ 0 & \rm{otherwise} \end{cases}
이렇게 정의하게 되면, 위 그림의 (c)(c) 와 같이 point cloud 의 각 점으로 부터 dMd_M 의 반지름을 가지는 원 바깥 범위에 대해서는 0 이 아닌 Unsigned Distance 를 가지고, 해당 선 안쪽에서는 모두 0 의 값을 가지게 됩니다. 초록색 선이 그 경계가 되는 선이라고 보실 수 있습니다. Point 와 point 사이의 평균 거리를 기반으로 원의 반지름을 정의하게 되므로 Point Cloud 의 underyling surface 를 비교적 잘 나타내는 초록색 경계면을 정의할 수 있다는 것입니다.
LI=1QqQfP(q)dP(q)\mathcal{L}_I=\frac{1}{\left| \mathcal{Q} \right|}\sum_{q\in\mathcal{Q}}\left|f_{\mathcal{P}}(q)-d_{\mathcal{P}}(q) \right|
이렇게 Unsigned Distance 의 ground truth 를 사용해 논문에서는 위와 같이 L1 loss 를 정의하여 사용하게 됩니다. 여기서 Q\left| \mathcal{Q} \right| 는 unit cube 로부터 sampling 된 query point 들의 cardinality 라고 합니다. 중복 query poiny 를 제거하여 계산한 L1 loss 로, 간단하게는 단순히 평균이라고 보셔도 됩니다.

Point Cloud Augmentation

일반적인 네트워크의 Input Dimension 은 고정되어 있습니다. 하지만 실제로 얻어낸 point cloud 들은 irregular sampling 등으로 인해 다른 dimension 을 가지고 있을 수 있습니다. 단적인 예시로 논문에서 UDA 레퍼런스로 많이 사용하는 PointDA-10 에서 다루는 point cloud 들도 ModelNet 과 ScanNet 인지에 따라서 dimension 이 다릅니다.
Point Cloud Jittering
가장 많이 사용되는 방법은 Point Cloud Jittering 입니다. 이는 단순히 dimension 을 맞추는 것 이상으로 Upsampling 을 해주는 느낌도 있기 때문에 성능 향상도 부가적으로 기대해볼 수 있는 방법입니다.
Point Cloud Jittering
가장 naive 한 Jittering 방법은 (a)(a) 에 표현된 것처럼 동일한 위치에 점을 복제하는 방법과 (b)(b) uniform 한 distribution 을 가지는 random perturbation 을 준 채로 복제하는 방법입니다. 하지만 이러한 방법들의 치명적인 단점은 앞서 설명드린 Local Affinity 정보를 유의미함을 줄인다는 점입니다. (a)(a) 의 경우 Local Affinity 를 작게 만들어 전체적인 Point Cloud 의 산개정도를 반영하기 어려워지게 되고, (b)(b) 의 경우 perturbation 의 섬세한 조절을 필요로 합니다.
단적으로 (c)(c) 에서 보이는 예시가 (b)(b) 의 세팅으로 학습하여 얻어낸 Implicit Function 에서 sampling 한 points 들을 나타낸 것인데, 의자의 예시처럼 dense 한 세팅에서는 크게 문제될 것은 없지만 위의 선 모양 같이 sparse 및 irregular 한 세팅에서는 전체적인 모양의 변화가 크게 나타난 것을 확인할 수 있습니다.
논문에서는 (b)(b) 에서 필요로 했던 섬세한 조절을 각각의 점들에 대한 Local Affinity 기반으로 설정합니다. 특정 점 pjp_j 에 대한 Local Affinity 가 djd_j 라고 하면, 해당 점으로부터 새로 Jittering 하여 생성할 point 는 기존 점으로부터 [dj2,dj2][-\frac{d_j}{2}, \frac{d_j}{2}] 범위 내에서 생성하는 조건을 추가한 것입니다. Point 가 생성된다는 측면에서 Local Affinity 가 줄어야 한다는 어느정도의 intuition 과 그 정도가 현재 그 점의 Local Affinity 에 Linear 한 관계를 가진다- 라고 생각하여 이렇게 설정한 것으로 보여집니다. 실제로 이렇게 설정한 결과 생성된 input point cloud 는 (d)(d) 이며 학습으로 얻어낸 Implicit Function 으로부터 sampling 한 point cloud 는 (e)(e) 로 학습 결과가 어느정도 input point cloud 의 underlying geometry 를 반영할 수 있음을 보여주었습니다.
Random Masking
Point Cloud 는 self-occlusion 등으로 인해 partial 하게 수집될 수도 있습니다. 논문에서는 이러한 Input 들도 robust 하게 처리할 수 있는 네트워크를 구상하기 위해서 일부 point 들 근처를 masking 하여 partial 한 input 을 가장하고 해당 결과가 masking 하기 전의 결과와 비슷하도록 설정하는 loss 를 추가합니다.
Lm=Φ(P)Φ(P^)\mathcal{L}_m = \parallel \Phi(\mathcal{P}) - \Phi( \mathcal{\hat{P}}) \parallel
논문에서 masking 되는 point 들은 random 하게 selection 했으며 해당 point 기준으로 rmr_m 내에 있는 모든 point 를 masking 함으로써 partial 한 input 을 흉내내었다고 합니다.

Self-Paced Self-Training

어느정도의 Initial Domain Adaptation 이 일어나면 Source Domain 과 Target Domain 이 Implicit Representation 단에서 어느정도는 align 됩니다. 이 상태가 되면 Source Domain 뿐만 아니라 Target Domain 의 classication 산출 결과도 ground truth 로 취급하여 학습을 진행하는 것이 빠르게 Target Domain 의 데이터를 학습하는데 도움이 된다고 합니다.
Lclst=1Ni=1Nt(j=1JY^i,jtlog(Ψm(Φ(Pit))j)+γY^it1)\mathcal{L}_{cls}^t=-\frac{1}{N}\sum_{i=1}^{N_t}(\sum_{j=1}^J \hat{\mathcal{Y}}_{i,j}^t\log(\Psi_m(\Phi(\mathcal{P}_i^t))_j)+\gamma \left|\hat{\mathcal{Y}}_i^t \right|_1)
이 때문에 논문에서는 기존 Source Domain 에서 Cross Entropy Loss 를 활용한 것과 비슷하게 위와 같이 새로운 loss 항목을 정의합니다. 위 수식의 뒤에 붙은 regularization term γY^it1\gamma \left| \mathcal{\hat{Y}}_i^t \right|_1 은 degerated solution 인 Y^t=0\mathcal{\hat{Y}}^t =0 으로 수렴하는 것을 방지하기 위함이라고 합니다.
물론, 위와 같이 수식을 적어놓았지만 여타 다른 GAN 등과 비슷하게 two-stage optimization 을 적용하여 한 번의 stage 에서는 Main Task 및 Self-Supervised Task 의 loss 계산 및 weight update 와 더불어 Target Domain 의 pseudo label 을 계산해내고, 다음 stage 에서 계산한 pseudo label 을 이용해 Target Domain 에서의 BCE loss 로 weight update 가 일어납니다. 이러한 구조를 GAST 라는 논문에서 제시한 Self-Paced Self-Training 이라고 합니다.

Overall Loss

최종적인 loss 는 이전에 언급했던 loss 들의 wieghted sum 형태로 표현됩니다.
L=LI+αLM+βLclss+μLclst\mathcal{L}= \mathcal{L}_I + \alpha\mathcal{L}_M+ \beta\mathcal{L_{cls}^s}+ \mu\mathcal{L_{cls}^t}
논문에서는 β=μ=0\beta=\mu=0 으로 두어 Self-Supervised Task 만 우선적으로 학습을 하는 것이 처음에 두 domain 이 공유하는 Implicit Representation 의 대략적인 형태를 찾는데 도움이 되고, 그 이후 pretrained 된 Φ\PhiΨs\Psi_s 를 가져와 전체 Loss 로 fine-tuning 을 하는 것이 빠른 학습 수렴에 좋다고 합니다. 아무래도 네트워크의 목적을 간소화하여 학습을 분리하는 것의 효과가 아닐까 싶습니다.

Experiments

논문에서는 그들의 방법론을 Unsupervised Point Cloud Domain Adaptation 을 다룬 DANN, PointDAN, RS, DefRec + PCM, 그리고 GAST 등과 비교합니다. 더불어 Target Domain 에 실제로 label 이 있는 경우도 실험에 넣어 (”Supervised”, upper-bound) 로 표시했고, label 이 없는데 UDA 를 통해 산출해낸 결과를 (”Baseline”, lower-bound) 로 표시했습니다.

Datasets

PointDA-10 은 3 개의 널리 쓰인 데이터셋들인 ModelNet, ShapeNet, 그리고 ScanNet 으로 이루어져있습니다. 세 데이터셋 모두 10 개의 카테고리로 이루어져 있고, 다음과 같은 개수로 구성되어 있다고 합니다.
ModelNet - 4183 개의 training data, 856 개의 test data (Synthetic)
ShapeNet - 17378 개의 training data, 2492 개의 test data (Synthetic)
ScanNet - 6110 개의 training data , 2048 개의 test data (Real World)
ScanNet 만 Real World dataset 이기 때문에 scan 과정에서 생기는 occlusion 및 sensor noise 가 포함되어 있었다고 합니다. 모든 point cloud 은 gravity 방향 (xy-plane 위에 놓여 있는 상태) 로 align 되으며 z-axis 를 기준으로 하는 회전만 허용했다고 합니다. 더불어 1024 개의 point 만을, 필요하다면 duplicative padding 을 사용하여 sampling 했다고 합니다.
GraspNetPC-10 은 Sim-to-Real, Real-to-Real 의 domain adaptation 을 다양한 sensor noise 가 있는 환경에서 테스트하기 위해서 논문에서 사용한 데이터셋이라고 합니다.
GraspNetPC-10
GraspNetPC-10 은 기존 robotic grasping 을 학습하기 위해 사용되던 GraspNet 의 raw depth scan 을 3D space 로 re-projection 시켜서 만들어낸 데이터셋입니다. (a)(a) 는 Kinect2 depth camera 로, (b)(b) 는 Realsense depth camera 로 얻어내었으며, (c)(c) 는 synthetic data 입니다. 여기서 PoinDA-10 과 같이 각각의 domain 에서 10 개의 카테고리 object 들을 얻어냈다고 합니다.
Synthetic Domain - 12000 개의 training data
Kinect2 Domain - 10973 개의 training data , 2560 개의 test data
Realsense Domain - 10698 개의 training data, 2560 개의 test data

Implementation Details

논문에서 실험을 진행할 때 사용한 구체적인 세팅 및 hyperparameters 들은 다음과 같습니다. 크게 중요한 내용은 아니라서 궁금하신 분들만 아래를 눌러 살펴봐주시면 될 것 같습니다.
Implementation Settings + Hyperparameters

Network Architecture

Encoder Φ\Phi 로는 Point Cloud Processing 에 자주 쓰이는 네트워크인 DGCNN 을 사용했고, implicit decoder Ψs\Psi_s 와 classifier Ψm\Psi_m 으로는 MLP 를 사용했다고 합니다.
구체적으로 Ψs\Psi_s 는 4-Layer MLP (512, 256, 128, 1) 며 Unsigned Distance 산출을 위해 output 을 항상 양으로 만들어줄 ReLU 를 마지막 activation layer 로 사용했다고 합니다. Ψm\Psi_m 은 3-Layer MLP (512, 256, 10) 으로 10 sematic class 를 분류하도록 설계되었다고 합니다.

Implicit Reconstruction

논문에서는 Self-Supervised Task 에서 산출해낸 Implicit Function 을 이용해서 Input Point Cloud 를 reconstruction 했을 때 얼마나 유사한지를 판단하기 위해 실험을 진행합니다. Unit Cube 에서 뽑은 qsR200000×3q_s \in \mathbb{R}^{200000\times3} 의 point 들에 대해서 학습한 Encoder Φ\Phi 와 Implicit decoder Ψs\Psi_s 를 가지고 Unsigned Distance 를 산출해낼 수 있습니다.
dqs=Ψs(qs,Φ(P))d^{q_s}=\Psi_s(q_s,\Phi(\mathcal{P}))
이 때, threshold ϵ\epsilon 을 설정해여 dqs<ϵd^{q_s} < \epsilon 인 points qs~qs\tilde{q_s} \sub q_s 들만 visualize 하는 형태로 최종적인 Point Cloud Reconstruction 을 진행할 수 있습니다. 그 결과는 아래와 같습니다.
Point Cloud Reconstruction based on Implicit Function
위 그림에서 (a)(a) 는 input 이고 (b)(b) (c)(c) 는 논문의 방법론인 AUD 를 적용하지 않고 ϵ\epsilon 을 달리한 결과들이며 (d)(d) 는 AUD 를 적용하고 ϵ\epsilon(b)(b) 와 동일하게 가져간 경우입니다. AUD 를 사용한 (d)(d) 의 결과가 정성적으로 보기에 input 이 표현하는 underlying geometry 를 가장 잘 복원했다고 보여집니다. 하지만 같은 ϵ\epsilon 을 사용하면서 AUD 를 적용하지 않은 (b)(b) 의 경우는 결과가 좋지 못했고, ground truth 로 사용했던 unsigned distance 가 충분하게 geometry 를 표현하지 못했다라고 볼 수 있습니다.
정량적으로 Chamfer Distance 관점에서 바라보아도 AUD 의 결과가 제일 좋습니다. 다만 (b)(b) (c)(c) 의 비교로AUD 를 사용하지 않았을 때 상대적으로 threshold 인 ϵ\epsilon 을 크게 설정해야 어느정도의 Chamfer Distance 를 확보할 수 있다는 것을 알 수 있습니다. 반면 AUD 를 적용하면 엄격한 threshold 를 설정해도 Chamfer Distance 가 높다는 것을 통해서 정확한 underlying surface 를 잘 찾아냈다고 해석해볼 수 있습니다.

Unsupervised Domain Adaptation

논문에서는 Self-Supervised Task 에 대한 실험 말고도, 근본적은 Main Task 인 Domain Adaptation with Classification Task 또한 평가합니다. 비교 모델로는 앞서 언급했던 Unsupervised Point Cloud Domain Adaptation 를 다루었던 DANN, PointDAN, RS, DefRec + PCM, 그리고 GAST 입니다.
PointDA-10 Classification Results
PointDA-10 에 3 개의 Domain ModelNet(MM), ShapeNet(SS), ScanNet(SS^*) 이 있기에 3!3! 만큼의 6 가지의 Domain Adaptation 을 모두 평가했습니다. 그 결과 Adversarial Training 에 비해서 Self-Supervised Learning 을 사용했던 방법론들이, 특히 Synthetic to Real Domain Adaptation 에서 classification accuracy 가 높은 것을 확인할 수 있었습니다. 논문의 방법론은 6 개의 Domain Adaptation Setting 중에 4 개에서 1위를 차지했고, 평균적으로 가장 높은 accuracy 를 보였습니다.
GraspNetPC-10 Classification Results
GraspNetPC-10 은 Synthetic Domain 이 test data 가 없어 4개의 Domain Adaptation Setting 만을 진행한 것으로 보입니다. 논문의 방법론은 SPST 를 적용하던 하지 않던 모든 setting 및 평균에서 가장 높은 accuracy 를 차지했습니다. SPST 는 GAST 와 논문의 경우 모두에서 효과적인 방법론이었다는 것을 이를 통해 어느정도 알 수 있었으며, GAST 는 그럼에도 불구하고 논문의 SPST 없는 버전보다 accuracy 가 낮은 것을 보아서 domain alignment 를 위해 geometry-aware implicits 를 쓰는 것이 효과적이었다고 볼 수 있었습니다.
t-SNE visualization
논문에서는 마지막으로 Source Domain 과 Target Domain 의 데이터의 분포를 시각화하여 t-SNE visualization 을 보여줍니다. Domain Adapataion 을 진행하기 전 Source Domain 에 적합한 feature extractor 로 뽑아낸 Target Domain Input 의 latent code 들을 시각화해본 결과에서는 여러가지 class 가 섞여 있는 부분들이 존재하는 것을 볼 수 있습니다 (class 1, class 5, class 2, class3).
그러나 Adaptation 을 거쳐서 Implicit Representation Space 에 도달하면 Source Domain 과 Target Domain 의 데이터 분포 및 해당 분포의 시각화 위치가 비슷해진 것을 확인할 수 있고 (alignment) Target Domain 에서 섞여 있던 class 분포들이 비교적 분리가 된 것 (Good Representation) 을 확인할 수 있었습니다.

Conclusion

이것으로 논문 “Domain Adaptation on Point Clouds via Geometry-Aware implicits” 의 내용을 간단하게 요약해보았습니다.
사실 Implicit Function 을 산출하는 네트워크의 구현으로 underlying surface 에 대한 이해를 높이려고 읽기 시작했던 논문인데, self-supervised learning, domain adaptation 방법론들에 대한 이해도 부가적으로 할 수 있게 되어서 좋았던 것 같습니다.
개인적으로는 분야 자체가 흥미롭다는 생각은 별로 안들었지만, 배우게 된 내용이 많은 논문이었던 것 같습니다. 특히 Domain Align 을 해주기 위한 Self-Supervised Task 의 설계가 제 단에서는 인상깊었던 것 같습니다.