이번 포스팅은 3D object detection에서 DA(domain adaptation)에 관련된 DUDA논문의 리뷰입니다.
해당 논문의 문제정의부터 보면 최근 3D Object Detection (좀 더 자세하게는 pointcloud model을 의미합니다) 의 발전으로 only lidar raw data만으로도 높은 성능의 model이 연구/개발되고 있습니다. 하지만 model의 generalization의 문제가 있습니다. 예컨대 kitti로 pre-train 된 모델을 nuscene 데이터셋으로 test해보면 성능이 매우 낮습니다. pre-train된 yolo로 꽤 많은 class를 detection할 수 있는 이미지와는 대비되는 부분입니다.
이유로는 여러가지를 들 수 있습니다. 애초에 domain이 image보다 1차원 높고 geometrical한 특성만을 갖은 lidar data 등등이 있지만 논문에서 가장 큰 원인으로는 다양한 dataset의 부족을 말합니다. 실제로 구글에서 강아지만 검색해보아도 엄청나게 많은 특히 정말 다양한 환경에 다양한 resolution의 강아지 이미지를 얻을 수 있습니다. 하지만 pointcloud 데이터인 경우 일단 lidar센서의 값부터 일반인이 범접하기 힘들고 차량등에 마운팅해서 셋업하는 것도 쉽지않습니다. 즉 image대비 학습할 수 있는 데이터가 적습니다. 더 정확하게는 다양한 domain에서 다양한 lidar sensor로 취득한 open data가 매우 적습니다.
이번 논문은 이러한 환경에서 최대한 pre-train모델을 가지고 다른 domain data(target)에서 성능을 높이려는 목적으로 연구되었습니다.
RBRS(Random Beam Re-Sampling)
바로 method를 살펴보면, 우선 첫번째로 pre-train 모델을 학습할때 augmentation을 이용하여 최대한 다양한 data로 학습할 수 있는 방법을 제시합니다. 그 augmentation의 방법으로 RBRS를 제시하는데 density에 variance를 주는 방법입니다. 저자는 lidar sensor간의 가장 큰 차이는 density차이로 보고 그 간극을 줄여주는 것이 최선의 방법이라고 말합니다.
구체적으로 보면, lidar beam의 density를 아래와 같이 정의합니다.
위 식의 뜻은 i번째 지타각도와 i+1번째 사이에 오는 beam들의 개수를 의미합니다.(지타는 beam이 xy평면과 이루는 각도를 말합니다) 이 를 위의 식으로 approximation한 것인데 point들을 지타를 기준으로 K-Mean알고리즘을 통해 ID를 부여합니다. 부여된 ID간의 지타차이가 클수록 denity는 작아지고 지타차이가 작을수록 density가 커지도록 density 디펜던시한 식을 만들 수 있게 됩니다.
이제 이것을 사용해서 upsampling,downsampling을 하여 augmentation을 시도합니다.
down-sampling
down-sampling은 각 D(i)마다 랜덤한 확률로 마스킹합니다. 마스킹 하는 확률은 density가 높은 ID그룹일 수록 커지게 설계합니다.
up-sampling
up-sampling도 비슷한 메커니즘으로 랜덤하게 interpolation하여 인위적인 beam을 생성시킵니다. interpolation하는 확률은 density가 낮을 ID그룹일 수록 작게 설계합니다.
Teacher-Student Architecture
지금까지는 source domain에서 pretrain모델을 학습할때 사용하는 augmentation기법에 대해 이야기했습니다. 이제는 pre-train모델을 가지고 target domain에서 어떻게 활용할지에 대해 다뤄보겠습니다.
저자는 이 방법을 Teacher-Student architecture라고 이름지었는데 사실 이 아키텍쳐는 이미 예전에 있던 구조입니다. 큰 모델을 이용해서 edge device에 들어가는 작은 모델을 보다 효율적으로 training하는 방법론인데요. 논문에서는 이것의 구조를 벤치마킹합니다.
Teacher detector는 source domain에서 RBRS를 이용하여 학습한 pre-train 모델로 target domain의 data를 inference해서 bbox를 prediction하는데 이를 Student detector의 pseudo label로 사용합니다. Student detector는 마찬가지로 source domain에서 RBRS를 이용하여 학습한 pre-train 모델로 target domain의 data역시 RBRS로 augmentation한 data를 inference해서 bbox를 prediction합니다.
즉, Teacher의 prediction을 GT로 하여 Student를 학습합니다. 그것의 위의 식에서 $L_{det}$를 뜻하며 각각의 모델마다의 Loss를 사용하면 됩니다.
다만 Teacher detector의 prediction도 improving해야하기 때문의 EMA라는 방법을 써서 Teacher 또한 smoothing하게 업데이트 합니다. 식으로 표현하면 아래와 같습니다. 마치 lowpass filter와 같습니다.
이제 위의 Loss eq에서 $L_{cons}$를 보겠습니다. 이 부분은 appendix의 ablation study를 보면 fine-tune같은 역할을 하는 것 같습니다.
Object-Graph Consistency
Teacher, Student의 prediction을 이용해서 각각 graph, node-level과 edge-level 를 만듭니다. node는 object를 뜻하고 edge는 object의 relation을 뜻하는데 아래식으로 표현합니다.
object의 각각의 거리가 가까울수록, 크기가 비슷할수록, direction이 같을수록 높은 weight를 같도록 edge가 만들어집니다.
이렇게 구성된 graph를 이용하여 Node-level consistency를 측정합니다. 용어는 어렵지만 간단합니다. Teacher와 Student는 target domain영역에서 density가 invariant한 data로 각각 inference를 하였지만 같은 object의 bbox를 prediction하는 것이 이상적 혹은 목표입니다. 구체적으로는 IoU threshold를 기준으로 Teacher graph Node와 Student graph Node와 필터링하고 남는 matched node들을 이용해 loss를 구합니다.
Node-level consistency
위의 식은 matrix의 similarity를 구하는 방법인 것 같습니다(reference는 없지만 대입해보면 matrix가 서로 같으면 최대 0.5가 나옵니다), N은 매칭된 object pair의 개수, f는 각각의 ROI feature가 되겠습니다. ROI feature를 사용한다는 건 voxel feature map을 쓰지 않는 model은 사용이 힘들 수 있겠습니다.
Edge-level consistency
Teacher와 Student 그래프의 edge의 consistency의 loss를 살펴보겠습니다. edge의 consistency를 구하기 위해서 graph Laplacian regularization(GLR)를 이용합니다. GLR은 graph 학습에서 자주사용하는 smoothness를 측정하는 지표로 낮을수록 낮은 variation을 뜻합니다.
tr은 matrix의 trace를 뜻하고, F는 매칭된 node N개의 C채널의 ROI feature, W는 nxn(student와 teacher)의 adjacency matrix 로 각각의 edge matrix를 뜻하며, D는 edge matrix의 diagonal matrix로 degree를 의미합니다.
GLR를 이용해 $L_{edge}$를 구할 수 있습니다. $L_{edge}$식의 첫번째 term은 edge weight의 difference를 나타태고 두번째 term은 feature variation의 similarity를 뜻한다고 합니다.
마지막으로 이렇게 구한 Loss를 구하고 최종 $L_{cons}$를 구할 수 있습니다.
recap
위의 architecture를 보면 다시 리캡해보겠습니다. source domain의 data를 pointcloud model을 특정하여 training하는데 RBRS라는 기법을 통해 augmentation하여 보다 다양한 density에서 학습할 수 있도록합니다. 이렇게 얻은 pretrain model을 target domain의 data로 inference를 합니다.
여기서 2개의 branch가 생기는데 teacher branch는 위의 설명한대로 target domain data를 그대로 inference해서 나온 결과로 이 결과물을 student branch의 pseudo label로 합니다. student branch는 그냥 inference하지 않고 target domain또한 RBRS를 거쳐나온 data를 inference하게 됩니다.
student는 teacher의 prediction을 label로 하여 학습을 하게됩니다. 하지만 여기서 추가되는 것이 consistency의 loss를 추가하게됩니다. graph를 사용하여 teacher와 student의 consistency를 측정하여 loss에 반영합니다.
student는 두개의 loss를 통해 학습을 하게되고 마지막으로 teacher또한 improving해야하기 때문에 student의 weight를 특정비율만큼 반영합니다.
이 로직을 N번반복한 후 student의 결과물이 target domain에서의 prediction이 됩니다.
Experiments
위에서 보면 orcle 성능보다도 높은 경우가 있어서 사실상 앙상블하는 효과까지 있구나 생각하였습니다.
감사합니다