안녕하세요 이재찬 연구원입니다. 이번 주에 다뤄 볼 논문도 Self-supervised monocular depth estimation 분야의 논문입니다. 이번 학기 기초교육의 마지막 논문이 되겠습니다. 해당 논문은 저와 조현석 연구원의 기초교육을 담당하시는 신정민 연구원님이 RA-L 2022 에 쓰신 TransDSSL 논문인데요. 특히 트랜스포머로 ViT를 사용하지 않고 Swin Transformer를 인코더로 사용했다는 점과 local context를 보기위한 PWSA 디코더 모듈 제안이 저번주 조현석 연구원이 리뷰한 MonoViT와 다른 점이 되겠습니다.
Swin-Transformer는 ViT와 비교하면 먼저 계층적 구조를 가지고 있습니다. 계층적 구조라 함은 인코더 층을 하나씩 통과할 때마다 나오는 feature map이 점진적으로 down sampling 되는 것입니다. ViT는 각 패치 사이즈를 16pixel x 16pixel으로 만들어 총 224/16 ** 2 = 196개의 patch를 가진 상태를 유지하는 반면에 Swin Transformer에서는 마치 feature pyramid network처럼 작은 patch 4×4에서 시작해서 점점 patch들을 merge 해나가는 방식을 취합니다. 이 덕분에 일반적인 CNN의 계층적 구조를 모방하여 다양한 representation을 학습하고, 다양한 scale을 가지는 visual entity를 더 잘 학습하는 것과 동시에, 줄어든 해상도에서 attention을 수행하기 때문에 연산량 면에서 기존 ViT보다 이점을 가지게 됩니다.
트랜스포머에 대한 설명은 간단히 이정도로 언급하고, 정리하자면 본 논문은 이 트랜스포머를 적용하면서도 globally context와 fine-detail을 모두 잘 학습하게 만든 논문입니다. 리뷰 시작하겠습니다.
Introduction
monocular depth estimation은 Computer Vision task 에서 potential한 benefits을 가집니다. 예를 들면 3D space 예측을 위한 비싼 LiDAR 센서를 대체할 수 있죠. 하지만, supervision을 위해 정확한 gt depth 정보를 충분히 취득하는 것은 cost가 많이 들고 힘듭니다. 이런 상황을 타개할 방법은 보통 self-supervised learning 테크닉인데 이전의 연구들에서는 보통 동기화된 stereo image나 sequence적인 monocular video를 사용해왔습니다.
각종 CNN 기반 network의 개선으로 사실 depth estimation의 퀄리티가 드라마틱하게 증가하긴 했지만, CNN은 long-range spatial dependencies를 모델링하는데 많은 제약이 있습니다. 그래서 보통 이런 한계를 극복하기 위해 dilated/deformable convolution의 large receptive field 모델링이나, self attention 메커니즘, multi-scale feature fusion 같은 larger context 인코딩으로 다양한 기술들이 제안되어 왔습니다. 하지만 여전히 convolution 연산자의 locality 성향 때문에 기본적인 한계가 있습니다.
그래서 이것의 solution으로써 NLP 분야에서 사용되던 트랜스포머가 다양한 컴퓨터 비전 태스크로 채택되게 되었었습니다. 원래 트랜스포머는 NLP 태스크에서 sequence 내의 long-range dependecies를 보기 위함이었지만, 본 논문에서 언급하기로는 이 트랜스포머를 컴퓨터 비전 태스크에 적용한 baseline모델은 pixel-level 태스크에서 local detail 손실이 생기고, 그런 pixel-level task는 fine detail들이 좋은 예측을 내는 데 있어서 중요했기 때문에 fine detail한 object에 대해서는 CNN 기반 네트워크보다 못 본다는 단점이 생기게 되었습니다.
아까 언급했던 것처럼 Fig1에서 보이는 것과 같이 기존 Transformer-baseline은 fine detail을 예측하는데 한계가 있었습니다. 예를 들면 pole같은 thin structure와 물체의 boundary같이. 이건 다 local 정보의 부족 때문이었습니다. 또 다른 부수적인 optimizability 이슈는 transformer-baseline model이 학습하는 데 어려움이 있다는 점이었습니다. 그건 바로 multi-scale photometric loss로부터 온 noisy한 학습 시그널 때문이었습니다.
트랜스포머가 위와 같이 fine detail에서 이슈가 생기는 것을 해결하기 위해 본 논문은 self-supervised monocular depth estimation task에서 Swin-Transformer 인코더와 새로운 디코더 모듈인 PWSA를 활용한 더 나은 신경망을 학습하는 포괄적인 연구를 제시했습니다. 이 중 PWSA(Pixel-Wise Skip Attention)이라는 모듈은 트랜스포머 인코더의 global context를 효과적으로 유지하면서 local details을 잡기 위한 방법으로 제시했습니다.
또 self-distillation loss라는 기존의 multi-scale photometric loss를 대체하기 위한 loss도 제안했습니다. 그래도 완전히 대체는 아니고 single-scale photometric loss와 결합된 방식으로 쓰이는 데, DepthNet의 학습과정에서 보통 가장 큰 resolution 예측(가장 마지막 depth map)이 여전히 single-scale photometric loss에 의해 supervised됩니다. 하지만 논문이 제안한 self-distillation loss는 가장 큰 resolution 예측을 다른 중간 scale의 것들을 supervised하기 위해 수도 라벨로 쓰이는 방식을 채택했습니다. 이는 결국 중간단계의 representation을 강화시킬 수 있고, 안정적으로 학습할 수 있게 하는 역할을 하게 되었습니다. 이 때 부정확한 수도 라벨으로부터의 error propagation을 최소화 하기위해, 논문은 adaptive weighting scheme이란 것도 multi-scale self-distillation loss를 위해 만들었습니다. 이는 추후 Method 부분에서 더 자세히 살펴보도록 하겠습니다.
아무튼 그래서 해당 논문을 정리하자면, self-supervised monocular depth estimation의 pixel level prediction의 가장 중요한 요소 Global Context modeling 과 Fine detail 두 표현을 모두 충족하기 위해, 다음과 같은 Contribution을 가지는 것으로 정리해볼 수 있습니다.
- global context 정보를 가지는 인코더로 Swin-Transformer를 이용해 feature를 뽑고, 해당 feature로 spatial-wise attention을 수행하여 local context 정보를 가질 수 있는 PWSA(Pixel-Wise Skip-Attention module)를 디코더로 사용.
- Extra Decoder module을 통해 생성된 가장 resolution이 크고 가장 detail한 정보를 갖는 최종 depth map을 Pseudo label로 사용하여, 중간 단계의 다른 prediction depth map들에 ditillation 하여 fine detail을 향상시킴.
Related Work
A. Self-Supervised Monocular Depth Estimation
해당 논문을 설명하기 위해 언급된 관련 기존 연구 중에는 먼저, 순수 monocular setting에서의 self-supervised 학습 프레임워크를 제안한, 자세히 말하자면 depth net과 pose net을 unlabeled monocular video로부터 동시에 학습하는 방법론을 제안한 연구가 시작이겠습니다. 그 다음 monodepth2 연구는 occlusion과 움직이는 물체로 인한 static-world assumption이 깨지는 영역을 다루기 위해 minimum reprojection loss와 auto-masking loss 등을 제안했습니다. 이후 monodepth2의 확장으로 다양한 방법론들이 추가적인 목적과 제약을 토대로 나왔는데, FeatDepth의 경우에는 photomeric loss가 정확한 학습 시그널을 만들기 어려운 textureless 영역에 대해 대응하기 위해 image reconstruction 관점의 기존 photometric loss 대신 feature metric loss를 제안했습니다. 이 외에도 단순히 즉각적인 GPS 나 학습동안의 카메라 속도 등을 사용함으로써 2D 영상으로 3D 정보를 추출하는 monocular SFM (Structure From Motion) 기반의 방법론의 scale 모호 문제를 다룬 연구도 있고, detail을 보존할 수 있는 representation을 학습하기 위해 self-supervision을 사용한 새로운 아키텍쳐를 제안한 다양한 연구도 있었습니다.
게다가 어떤 연구들은 depth prediction의 퀄리티를 높이기 위해 optical flow, segmentation label, augmentation loss 같은 추가적인 소스들을 활용했습니다. 이런 추가적인 소스들은 accurary를 향상할 수 있는 반면, 추가적인 모델과 처리 스텝이 필요했었습니다.
기존의 연구들과 비교해보았을 때, 본 논문의 self-distillation loss는 학습 중에 fine detail이 있는 수도 라벨을 만들어내기 위해 분리 가능한 모듈을 활용하는 간단하면서도 효과적인 방법이 되겠습니다.
B. Global Context Modeling
self-attention module이 있는 트랜스포머는 CNN의 기본적인 한계인 global context 정보를 잘 캐치합니다. 그래서 트랜스포머는 제안된 이후로 다양한 Computer Vision 분야에 두루두루 좋은 성능을 보여왔었습니다. 그 중 ViT는 순수 트랜스포머기반 이미지 분류 모델이 SoTA를 찍은 첫 연구입니다. 그런데 본 논문은 이런 ViT를 사용하지 않았고 추후 제안된 Swin Transformer를 사용했습니다. Swin Transformer는 앞선 서론에서 언급했듯이 객체 인식 태스크에서 효과적인 네트워크를 달성하기 위한 shifted windowing scheme가 있는 계층적 트랜스포머입니다. supervised monocular depth estimation에선 DPT라는 방법론이 ViT를 백본모델로 대체해서 가져다 쓴 dense vision 트랜스포머를 제시했었고, TransDepth에선 트랜스포머와 CNN의 이점을 동시에 가지기 위한 하이브리드 모델을 제안했었습니다.
근데 위에서 언급한 연구들은 LiDAR 같은 명백한 GT 정보에 의한 supervision을 갖는 연구였는데, 이와 달리 MT-SfMLearner란 방법론은 self-supervised monocular depth estimation을 위한 비전 트랜스포머를 채택할 방안을 연구했습니다. 하지만 트랜스포머를 사용한 다른 비전 태스크들의 성공 사례와는 달리 해당 MT-SfMLearner 성과는 기대에 미치지 못했다고 합니다. 그래서 self-supervised learning을 위한 트랜스포머를 성공적으로 적용시키기 위해, 본 논문은 트랜스포머와 PWSA 모듈의 새로운 결합을 제안하고, 특히 PWSA를 통해 fine-detailed 하고 spatially하게 일관된 depth 예측을 만드는 성과를 이뤘습니다.
Proposed Method
[Overall Architecture: Adopt Transformer]
본 논문은 global 및 local context를 효과적으로 aggregate하기 위해 기존의 CNN기반의 방법론들과 달리 트랜스포머 기반의 아키텍쳐를 제안했습니다. global context의 경우 window 기반 self-attention으로 인해 효율적이고 계층적 feature map에서 어떤 visual 객체의 다양한 스케일을 학습하기에 유리한 Swin Transformer를 백본 인코더로 사용했습니다.
위 그림의 a 와 같이 주어진 입력 영상이 네트워크에 들어오면, 모든 인코더 stage 이후에 1*1 conv layer가 뒤따르는 multi-scale encoder feature map F^E_n이 생성됩니다. 각 feautre map의 해상도는 기존 CNN 기반 인코더와 같이 첫번째 feature map에서 2배만큼 down sampling 되므로, 이 Swin Transformer 인코더는 컨볼루션 기반 인코더를 쉽게 대체할 수 있습니다.
인코더들을 거친 후, residual block 이후에 마지막 인코더 feature map F^E_4 가 업샘플링되고, 또 다른 1*1 conv 가 적용되어 디코더 feature map F^D_4 가 만들어집니다. 인코더 feature map F^E_n-1과 디코더 feature map F^D_n pair는 디코더 feature map F^D_n-1을 생성하는 디코더 모듈의 입력으로 사용됩니다. 이 output feature map F^D_n-1 은 다음 디코더 스테이지와 inverse depth head의 입력으로 사용되게 됩니다.
[Pixel-Wise Skip Attention ]
위 그림 1과 같이 로컬 세부 정보가 부족하기 때문에, 트랜스포머를 채택하는 것은 dense한 depth estimation 태스크에서는 사실 성능이 부족합니다. 그래서 본 논문의 목표는 디코더 feature map F^D_n에 풍부한 global 및 local context가 포함되도록 하는 것이기 때문에, 간단하면서도 효과적인 attention block인 PWSA(Pixel Wise Skip Attention)을 제안하고 이를 디코더 모듈로 사용하여 local detail 정보를 향상시킵니다.
위 그림 b와 같이 본 논문의 PWSA 모듈은 long-skip connection과 pixel-wise attention 이 두개의 스트림으로 구성됩니다. long-skip connection은 두 개의 입력 feature map인 F^D_n 과 F^E_n-1 의 element-wise summation S_add 로 구현됩니다. 여기서 long-skip connection 은 resnet의 skip connection과 똑같은 과정으로 보면 될 것 같습니다. 또 다른 스트림은 residual block 과 linear-embedding 에 이어 소프트맥스를 F^E_n-1에 적용하여 일반적으로 위치 인식 정보를 인코딩하는 데 탁월하다고 알려진 pixel-wise spatial attention map S_att 을 계산하는 것입니다. 이 attention map S_att는 합산된 feature S_add를 spatially detail하게 향상된 feature S_scaled로 변환하게 합니다.
여기서 resblock은 ReLU가 따라붙는 2개의 3*3 conv layer 로 구성되고, embedding은 1*1 conv layer로 구성되고, ⊙ 은 element-wise multiplication을 가리킵니다.
추가로, 학습의 초기 단계에서 rescaled 된 feature S_scaled 가 지나치게 강조되거나 무시되는 것을 완화하기 위해, attention 전에 S_scaled에 또 다른 resblock을 적용하고 fusion 된 feature인 S_add를 아래와 같이 추가하게 됩니다. 그 후에는 2배로 bilinear upsampling 하고 1*1 conv layer인 embedding을 거쳐 좀 더 향상된 output decoder feature map을 출력하게 됩니다.
위 그림 3은 PWSA 모듈이 있고 없고의 feature map을 시각화한 것입니다.
두번째 행의 PWSA가 없는 feature map은 global 하게 활성화되어 객체의 경계가 명확하지 않는 반면, 세번째 행의 PWSA를 사용한 feature map은 객체의 경계가 배경과 구별되어 두드러집니다. 다시 말하자면, PWSA가 feature map의 fine detail을 개선하는 데 도움이 됐다고 볼 수 있겠습니다.
[Self-Distillation Loss With Pseudo Label ]
photometric loss는 weak한 학습 시그널로 알려져 있었습니다. 근데 이것에 의해 depth network를 최적화한다고 해서 항상 정확한 깊이 추정을 하는 것이 아니었습니다. 예를 들어, texture-less/occluded 영역과 움직이는 물체는 auto-masking 기법이 모델의 불안정한 학습을 완화할 수 있음에도 불구하고 깊이 추정 성능은 크게 향상되진 않았었습니다. photometric loss는 나이브한 transformer-baseline 아키텍쳐에 대해서 성능이 떨어지는 것으로 실험적으로 확인했다고 합니다. 학습 시의 트랜스포머의 불안정성으로 인해, 본 논문은 photometric loss로 인한 약한 학습 시그널이 트랜스포머가 정확한 중간 feature representation(예 F^E_n, F^D_n 등)을 학습하는 데 불리하다고 추측했습니다.
본 논문은 그리고 마지막 inverse depth prediction 즉 가장 큰 resolution을 갖는 inverse depth map을 수도 라벨로 사용하는 새로운 self-distillation loss를 제안했습니다. 기본 아이디어는 복잡성에 크게 기여하는 가장 큰 resolution을 갖는 prediction이 일반적으로 최고의 성능을 보이며, 최고 해상도 inverse depth map의 fine detail을 예측하는 기능을 distillation에 의한 예측으로 전이할 수 있다는 것이었습니다. 그래서 multi-scale photometric loss을 single-scale photometric loss와 self-distillation loss의 조합으로 대체하기를 제안했습니다.
최고 해상도의 prediction은 여전히 single-scale photometric loss에 의해 supervised 되며, 서로 다른 해상도를 가진 다른 중간 prediction들을 supervise 하기 위한 수도 라벨로 사용됩니다. 이로 인해photometric loss로 발생하는 반복되는 약한 학습 시그널로의 학습을 막을 수 있었다고 하며, self-distillation loss는 더 나은 중간 feature를 학습하여, 더 나은 depth estimation 성능을 보이고, 트랜스포머 학습의 불안정성을 개선하는 데 도움이 된다고 합니다.
self-distillation loss 인 L_sd를 계산하기 위해, inverse depth prediction인 D_i (i는 1,2,3) 을 upsampling하는 방법을 사용합니다. 여기서 가장 높은 해상도를 가진 D_0 depth map은 수도라벨이며 중간 단계 depth prediction들은 이 D_0과 해상도를 일치시키기 위해 upsampling 되는 것입니다. 이건 수도 라벨에 가능한 한 많은 fine detail을 유지하기 위함이라고 볼 수 있습니다.
L1 loss는 upsampled prediction들과 수도 라벨 간의 loss를 계산하고 학습의 안정성을 위해, auto-mask M이 사용됩니다(monodepth2에서 언급된 auto-masking입니다.). 또한 훈련 초기 단계에서 Pseudo Label의 부정확성으로 인한 error propagation을 완화하기 위해, 학습 진행 동안 loss weights을 점진적으로 제어하는 adaptive weighting scheme인 λadp를 제안합니다. 다음과 같습니다.
위의 epoch threshold는 10으로 설정했으며 이렇게 적응형 람다를 적용했다고 합니다.
다시 정리하자면 해당 방법론의 핵심은 더 고해상도의 depth map에서는 더 풍부한 디테일 정보들이 남아있다는 것입니다. 하지만 고해상도의 depth map을 만들기 위해서는 추가적인 디코딩 단계를 거쳐야만 하는데, 이렇게 되면 모델의 복잡성과 연산량이 크게 증가하게 됩니다.
본 논문은 PWSA 모듈을 이용해 extra decoder를 설계하여 더 고해상도의 깊이 맵을 생성한 후, 해당 깊이 맵을 Pseudo label로 사용하여 그 아래 스케일의 깊이 맵과 supervised manner로 학습한 것입니다. 이를 통해 중간 단계의 깊이 맵들이 fine detail 정보를 더 잘 학습하도록 했었는데, inference 시에는 extra decoder module을 제거하여 모델의 복잡성 및 연산량을 줄이는 방안도 가지게 되었습니다.
Experiments
실험은 KITTI, DDAD 데이터셋을 사용했고, KITTI의 경우에는 기존의 monocular depth estimation에서 학습과 평가 시에 주로 사용하던 large-scale outdoor multi-sensor 데이터셋이고, DDAD의 경우에는 도심, 고속도로, 주거지역 같은 다양한 시나리오에 대한 미국과 일본에서 취득된 데이터입니다.
평가 메트릭의 경우, 기존의 monocular depth estimation의 평가 메트릭을 그대로 사용했습니다.
먼저 위 테이블은 KITTI eigen dataset 에 대한 결과입니다. 기존 방법론들과 비교해보면 우선, CNN 기반 self-supervised monocular depth estimation 방법론들인 [3],[19]보다 당연히 성능이 월등했고, attention 모듈같은 architectural change를 가진 [1], [4], [17], [23], [26] 과 비교했을 때도 성능이 높았습니다. 그리고 Transformer를 적용했던 기존 연구인 MT-SfMLearner보다 성능이 뛰어나며 SoTA 성능을 찍었음을 확인할 수 있었습니다.
위의 테이블은 DDAD 데이터셋에 대한 결과입니다. 이 역시 기존 방법론들과 비교해보았을 때 SoTA 성능을 달성한 것을 확인해볼 수 있었습니다. 아까 KITTI dataset과 달리 accuracy에 대한 테이블은 같이 첨부되지 않은 것이 눈에 띕니다.
위의 그림은 각 방법론들에 대해 거리별 깊이 맵의 정확도를 비교한 그림입니다. TransDSSL 방법론이 40~60M를 제외하고 모든 거리에서 RMSE가 전반적으로 낮은 모습을 보여주고 있습니다. 특히 80~100미터 이상에서는 기존의 방법론들과 비교했을 때 큰 성능 차이를 보여주고 있습니다. 이는 중장거리의 object를 인식하는 데 있어서는 local context를 주로 보는 CNN 기반의 방법론이 썩 효과적이지 않았음을 방증하며, TransDSSL같이 트랜스포머 기반의 인코더 네트워크를 구성하여 Global Context modeling을 하면 전체적으로 일관성 있는 깊이 맵을 추정할 수 있기 때문에 효과가 있었던 것으로 추정됩니다.
위의 두 그림은 정성적인 결과를 보여줍니다. 맨 마지막 column들이 TransDSSL인데, fine detail에서도 좋은 성능을 보이는 것을 확인할 수 있었습니다.
위는 ablation study입니다.
베이스라인으로는 self-attention이 없는 DDV를 사용했고, 백본으로는 dilated convolution을 쓴 ResNet101입니다.
2번째 row는 encoder는 swin transformer를, decoder는 일반적인 residual block과 upsampling으로 구성된 디코더를 사용한 것입니다. 3번째 row에서 Single-scale photometric loss를 사용한 경우 multi-scale photometric loss를 사용하여 약한 supervision을 갖던 기존보다 성능이 조금 올랐고, 4번째 row에선 디코더 모듈을 PWSA 모듈로 변경하게 될 경우 local하고 디테일한 정보들을 더욱 잘 학습하게 되어 큰 성능 향상을 볼 수 있었습니다. 그리고 마지막으로 5번째, 6번째 row에서 순차적으로 SD Loss 및 Extra decoder detach를 사용하게 될 경우 점진적으로 성능 향상이 일어납니다. SD loss를 통해 중간 레벨의 깊이 맵들이 fine detail 정보들을 더 쉽게 최적화하면서 정확한 깊이 맵을 추정할 수 있음을 보여주고, extra decoder 를 제거하여 성능평가를 D_1의 depth map으로 하게 되면, D_0 depth map의 성능을 능가함을 보여줍니다. 이는 self-distillation loss가 highest resolution의 detail한 마지막 단의 depth prediction(D_0)을 앞단의 depth prediction(D_1,2,3)에 전이시키는 것이 목적이었기 때문에, 이를 supervision으로 삼은 D_1으로 평가한 성능이 더 좋게 나오는 것으로 보아 self-distillation loss가 잘 작동한 것으로 볼 수 있습니다.
마지막으로 위의 그림은 다양한 모델들의 inference 속도를 나타낸 것입니다. TransDSSL은 transformer 기반의 방법론이다보니 다른 방법론들과 비교하여 느릴 수 밖에 없으나, PackNet, DDV와 비교하였을 땐 훨씬 더 빠른 속도를 보이면서 동시에 성능에서도 큰 차이를 보여주고 있습니다. †는 Extra Decoder가 detaching되지 않고 인퍼런스 시에도 수도라벨이 사용되었다는 뜻입니다. ( i.e. 수도라벨 = the highest resolution prediction D0)
그리고 †가 없는 TransDSSL들은 Extra Decoder가 detach 된 모델들이고, 인퍼런스 시 수도라벨 depth map(D_0)으로 예측이 이루어지지 않고, 그 다음 작아진 resolution을 갖는 depth map(D_1)으로 예측이 이루어지는 모델을 의미합니다. 그래서 FPS는 기존 †있는 모델과 비교했을 때 향상되었지만 모델의 성능은 유사하게 유지하는 것을 볼 수 있어 이로써 모델의 효율성이 증가했음을 증명하였습니다.