(이 게시글은 나 참고용으로 대충 )
https://arxiv.org/abs/2103.13413
Vision Transformers for Dense Prediction
We introduce dense vision transformers, an architecture that leverages vision transformers in place of convolutional networks as a backbone for dense prediction tasks. We assemble tokens from various stages of the vision transformer into image-like represe
arxiv.org
https://github.com/intel-isl/DPT
GitHub - isl-org/DPT: Dense Prediction Transformers
Dense Prediction Transformers. Contribute to isl-org/DPT development by creating an account on GitHub.
github.com
0. Abstract
우리는 밀도 예측 작업을 위한 백본(backbone)으로 컨볼루션 네트워크 대신 Vision Transformers, ViT를 활용하는 새로운 아키텍처인 Dense Vision Transformers를 소개합니다.
비전 트랜스포머의 여러 단계에서 얻어진 토큰들을 다양한 해상도의 이미지 형태로 재구성하고, 이를 convolution decoder 를 사용하여 점진적으로 풀 해상도 예측으로 통합합니다.
트랜스포머 백본은 일정하고 비교적 높은 해상도로 표현을 처리하며, 모든 단계에서 전역 수용 영역(Global Receptive Field)을 갖습니다. 이러한 특성은 밀도 비전 트랜스포머가 완전 컨볼루션 네트워크에 비해 더 세밀하고 전역적으로 일관된 예측을 제공할 수 있도록 합니다.
우리의 실험 결과, 이 아키텍처는 특히 대규모 학습 데이터가 있는 경우 밀도 예측 작업에서 상당한 성능 향상을 보여줍니다. 단안 깊이 추정(Monocular Depth Estimation)에서는 최첨단 완전 컨볼루션 네트워크와 비교해 상대적으로 최대 28% 성능 향상이 관찰되었습니다. 또한, Semantic Segmentation에서는 ADE20K 데이터셋에서 49.02% mIoU로 새로운 최고 성능을 기록했습니다. 우리는 이 아키텍처가 NYUv2, KITTI, Pascal Context와 같은 소규모 데이터셋에서도 미세 조정을 통해 새로운 최고 성능을 기록할 수 있음을 추가로 보여줍니다.
1. Introduction
현재 대부분의 dense prediction 아키텍처는 컨볼루션 네트워크에 기반.
dense prediction 아키텍처 설계는 일반적으로 네트워크를 Encoder와 Decoder로 논리적으로 구분하는 패턴을 따릅니다.
- 인코더는 종종 ImageNet과 같은 대규모 데이터셋에서 사전 학습된 이미지 분류 네트워크(백본) 기반으로 구성됩니다.
- 디코더는 인코더에서 나온 특징을 집계하여 최종 dense prediction 결과로 변환합니다.
dense prediction 아키텍처 연구는 일반적으로 디코더와 특징 집계 전략에 초점을 맞추지만, 백본 아키텍처의 선택이 모델 전반의 성능에 큰 영향을 미친다는 것은 널리 인식되고 있습니다. 이는 인코더에서 손실된 정보는 디코더에서 복구할 수 없기 때문입니다.
Convolution backbone 은 입력 이미지를 점진적으로 다운샘플링하여 여러 스케일의 특징을 추출합니다.
다운샘플링은 수용 영역을 점진적으로 확대하고, 저수준 특징을 고수준 추상 특징으로 그룹화하며, 동시에 메모리 및 계산 요구 사항을 관리 가능한 수준으로 유지할 수 있도록 합니다.
그러나 이러한 다운샘플링은 특히 dense prediction 작업에서 특징 해상도와 세부 정보의 손실이라는 단점을 가져옵니다.
이러한 손실은 디코더에서 복구하기 어렵습니다. 이를 완화하기 위해 dilated convolution, 스킵 연결(Skip Connection), 다중 해상도 병렬 표현 연결 등의 다양한 기술이 제안되었으나, 여전히 컨볼루션이라는 기본 구조적 한계에 의해 제약을 받습니다.
이 연구에서는 dense prediction transformer(DPT)를 소개
- DPT는 트랜스포머를 인코더의 기본 계산 단위로 사용하는 아키텍처:
- 특히 최근 제안된 ViT를 백본으로 채택하여 특징 표현을 이미지와 유사한 형태로 재구성하고, 이를 convolution decoder 를 통해 dense prediction 예측으로 통합
- 이는 컨볼루션 네트워크 대비 더 세밀하고 전역적으로 일관된 예측을 자연스럽게 가능하게 합니다.
2. Related Work
Fully-convolutional networks, FCN는 dense prediction을 위한 대표적인 아키텍처입니다. 이 기본 구조의 다양한 변형이 수년간 제안되었지만, 기존의 모든 아키텍처는 다중 스케일 표현을 학습하고 적절히 넓은 문맥 정보를 활용하기 위해 컨볼루션과 다운샘플링을 기본 요소로 채택합니다.
몇몇 연구들은 다양한 단계에서 풀링된 표현을 점진적으로 업샘플링하는 방식을 제안합니다 [1, 23, 27, 31]. 다른 연구들은 세밀한 예측을 복구하면서도 충분히 큰 문맥 정보를 유지하기 위해 dilated convolution [6, 7, 49] 또는 다중 스케일 특징 병렬 집계를 사용합니다 [53]. 더 최근의 아키텍처는 네트워크 전체에서 고해상도 표현과 여러 저해상도 표현을 함께 유지합니다 [37, 42].
어텐션 기반 모델 [2], 특히 트랜스포머(Transformer) [39]는 최근 자연어 처리(NLP) [4, 10, 24]에서 강력한 모델을 학습하기 위한 주요 아키텍처로 자리 잡았습니다. 트랜스포머는 셀프 어텐션 메커니즘에 기반한 세트-투-세트(Set-to-set) 모델입니다. 트랜스포머 모델은 고용량 아키텍처로 구현되고 매우 큰 데이터셋에서 학습될 때 특히 성공적임이 입증되었습니다.
어텐션 메커니즘을 이미지 분석에 적응한 여러 연구도 진행되었습니다 [3, 28, 29, 41, 52]. 특히, NLP에서 성공한 토큰 기반 트랜스포머 아키텍처를 이미지 분류에 직접 적용하여 경쟁력 있는 성능을 달성할 수 있음이 최근 입증되었습니다 [11]. 이 연구의 핵심 통찰은 NLP에서의 트랜스포머 모델과 마찬가지로 비전 트랜스포머(ViT)도 잠재력을 실현하려면 충분한 양의 학습 데이터가 필요하다는 점입니다.
3. Architecture
Dense Vision Transformer 소개
이 섹션에서는 밀도 비전 트랜스포머(Dense Vision Transformer)를 소개합니다. 기존의 밀도 예측 작업에서 성공적인 인코더-디코더 구조를 유지합니다. 우리는 비전 트랜스포머 [11]를 백본으로 활용하며, 이 인코더가 생성한 표현을 효과적으로 밀도 예측으로 변환하는 방법과 이 전략이 성공적인 이유에 대한 직관을 제공합니다. 전체 아키텍처 개요는 Figure 1 (왼쪽)에 나와 있습니다.
Transformer Encoder
비전 트랜스포머(ViT) [11]는 높은 수준에서 이미지의 Bag-of-words 표현에 작동합니다 [36]. 개별적으로 특징 공간에 임베딩된 이미지 패치 또는 이미지에서 추출된 심층 특징은 “단어”의 역할을 합니다. 본 연구에서는 이러한 임베딩된 “단어”를 “토큰”이라 부릅니다. 트랜스포머는 다중 헤드 셀프 어텐션(MHSA) [39] 블록을 사용해 토큰 세트를 변환하며, 이를 통해 토큰들 간의 관계를 생성하고 표현을 변환합니다.
트랜스포머는 계산 과정 전체에서 토큰 수를 유지합니다. 이는 토큰이 이미지 패치와 일대일로 대응하므로, ViT 인코더는 초기 임베딩의 공간적 해상도를 트랜스포머 모든 단계에서 유지한다는 것을 의미합니다. 또한, MHSA는 본질적으로 전역 연산으로, 모든 토큰이 다른 모든 토큰에 주의를 기울일 수 있으므로 초기 임베딩 이후 모든 단계에서 트랜스포머는 전역 수용 영역(Global Receptive Field)을 가집니다. 이는 연속적인 컨볼루션과 다운샘플링 레이어를 통해 수용 영역을 점진적으로 증가시키는 컨볼루션 네트워크와는 대조적입니다.
ViT는 p^2 크기의 비중첩 사각형 패치를 처리하여 이미지에서 패치 임베딩을 추출합니다. 패치들은 벡터로 펼쳐지고 개별적으로 선형 투영(linear projection)을 사용해 임베딩됩니다. 대안적으로, ViT의 더 샘플 효율적인 변형은 ResNet50 [16]을 사용하여 이미지를 처리하고, 결과 특징 맵의 픽셀 특징을 토큰으로 사용합니다.
트랜스포머는 세트-투-세트 함수이므로 개별 토큰의 공간적 위치 정보를 본질적으로 유지하지 않습니다. 따라서 이미지 임베딩은 이 정보를 표현에 추가하기 위해 학습 가능한 위치 임베딩과 함께 연결됩니다. NLP에서의 연구를 따르며, ViT는 입력 이미지에 연결되지 않은 특별한 토큰을 추가하여 최종 전역 이미지 표현으로 사용합니다. 이를 “Readout Token”이라 부릅니다.
이미지 크기가 H \times W인 경우, 임베딩 과정의 결과는 다음과 같은 토큰 집합입니다:
t_0 = \{t_0^0, \dots, t_0^{N_p}\}, \quad t_0^n \in \mathbb{R}^D
여기서 N_p = \frac{HW}{p^2}, t_0는 Readout Token, D는 각 토큰의 특징 차원입니다.
입력 토큰은 L개의 트랜스포머 레이어를 통해 새로운 표현 t_l로 변환됩니다. 여기서 l은 l-번째 트랜스포머 레이어의 출력을 나타냅니다. Dosovitskiy et al. [11]는 이 기본 구조의 여러 변형을 정의했습니다. 본 연구에서는 세 가지 변형을 사용합니다:
1. ViT-Base: 패치 기반 임베딩을 사용하며 12개의 트랜스포머 레이어로 구성됩니다.
2. ViT-Large: 동일한 임베딩 방식을 사용하지만 24개의 트랜스포머 레이어와 더 넓은 특징 크기 D를 가집니다.
3. ViT-Hybrid: ResNet50을 사용하여 이미지 임베딩을 계산한 후 12개의 트랜스포머 레이어를 활용합니다.
모든 실험에서 패치 크기 p = 16을 사용합니다. ViT-Base와 ViT-Large의 임베딩 과정은 펼쳐진 패치를 D = 768과 D = 1024 차원으로 투영합니다. 이는 입력 패치의 픽셀 수보다 큰 특징 차원을 가지므로, 임베딩 과정은 과제에 유익한 경우 정보를 유지하도록 학습할 수 있습니다.
ViT-Hybrid 아키텍처는 입력 해상도의 1/16에서 특징을 추출하며, 이는 컨볼루션 백본에서 일반적으로 사용되는 가장 낮은 해상도의 두 배입니다.
Convolutional Decoder
우리의 디코더는 토큰 집합을 다양한 해상도의 이미지와 유사한 특징 표현으로 조립합니다. 이러한 특징 표현은 점진적으로 결합되어 최종 밀도 예측을 생성합니다. 우리는 트랜스포머 인코더의 임의의 레이어에서 출력된 토큰으로부터 이미지와 유사한 표현을 복구하기 위해 간단한 3단계 Reassemble 연산을 제안합니다.
\(\text{Reassemble}{D^{\hat{}}}^{s}(t) = (\text{Resample}{s} \circ \text{Concatenate} \circ \text{Read})(t)\)
여기서 s는 입력 이미지에 대한 복구된 표현의 출력 크기 비율을, D^{\hat{}}는 출력 특징 차원을 나타냅니다. 먼저, N_p + 1개의 토큰을 공간적 연결(spatial concatenation)이 가능한 N_p개의 토큰 집합으로 매핑하여 이미지와 유사한 표현으로 변환합니다.
\(\text{Read} : \mathbb{R}^{(N_p + 1) \times D} \to \mathbb{R}^{N_p \times D}. \tag{1}\)
이 연산은 Readout Token을 적절히 처리하는 역할을 합니다. Readout Token은 밀도 예측 작업에 명확한 목적을 제공하지 않지만, 전역 정보를 캡처하고 분배하는 데 여전히 유용할 수 있으므로, 우리는 이 매핑의 세 가지 변형을 평가합니다.
• Readignore: 단순히 Readout Token을 무시합니다.
\(\text{Read}{\text{ignore}}(t) = \{t_1, \dots, t{N_p}\} \tag{2}
\)
• Readadd: Readout Token의 정보를 모든 토큰에 추가합니다.
\(\text{Read}{\text{add}}(t) = \{t_1 + t_0, \dots, t{N_p} + t_0\} \tag{3}
\)
• Readproj: Readout Token을 다른 모든 토큰에 연결하고, 선형 레이어와 GELU 비선형성을 통해 원래의 특징 차원 D로 투영합니다.
\(\text{Read}{\text{proj}}(t) = \{\text{mlp}(\text{cat}(t_1, t_0)), \dots, \text{mlp}(\text{cat}(t{N_p}, t_0))\} \tag{4}
\)
Read 블록 이후, 생성된 N_p개의 토큰은 이미지의 초기 패치 위치에 따라 배치되어 이미지와 유사한 표현으로 변환됩니다. 이는 다음과 같은 공간 연결 연산을 통해 수행됩니다.
\(
\text{Concatenate} : \mathbb{R}^{N_p \times D} \to \mathbb{R}^{\frac{H}{p} \times \frac{W}{p} \times D}. \tag{5}
\)
마지막으로, 이 표현은 공간 재샘플링 레이어를 통해 크기가 H / s \times W / s이고 픽셀당 D^{\hat{}} 특징을 갖는 표현으로 확장됩니다.
\(
\text{Resample}_{s} : \mathbb{R}^{\frac{H}{p} \times \frac{W}{p} \times D} \to \mathbb{R}^{\frac{H}{s} \times \frac{W}{s} \times D^{\hat{}}}. \tag{6}
\)
우리는 이 연산을 1 × 1 컨볼루션을 사용하여 입력 표현을 D^{\hat{}}로 투영한 다음, s \geq p일 때 보폭(strided)이 있는 3 × 3 컨볼루션을, s < p일 때 보폭이 있는 3 × 3 전치 컨볼루션을 사용하여 공간 다운샘플링 및 업샘플링 연산을 구현합니다.
트랜스포머 백본에 관계없이, 우리는 네 개의 다른 단계와 해상도에서 특징을 다시 조립합니다. ViT-Large를 사용하는 경우, l = \{5, 12, 18, 24\} 레이어에서 토큰을 재조립하며, ViT-Base의 경우 l = \{3, 6, 9, 12\} 레이어를 사용합니다. ViT-Hybrid를 사용할 때는 임베딩 네트워크의 첫 번째 및 두 번째 ResNet 블록과 l = \{9, 12\} 단계를 사용합니다. 기본 아키텍처는 Readout 연산으로 Projection을 사용하며, D^{\hat{}} = 256 차원의 특징 맵을 생성합니다. 이 아키텍처는 각각 DPT-Base, DPT-Large, DPT-Hybrid로 명명합니다.
우리는 RefineNet 기반의 특징 융합 블록 [23, 45]을 사용하여 연속적인 단계에서 추출된 특징 맵을 결합하며, 각 융합 단계에서 표현을 2배씩 업샘플링합니다. 최종 표현 크기는 입력 이미지 해상도의 절반입니다. 우리는 작업별 출력 헤드를 추가하여 최종 예측을 생성합니다. 전체 아키텍처 개요는 Figure 1에 나와 있습니다.
Handling Varying Image Sizes
완전 컨볼루션 네트워크와 유사하게, DPT는 다양한 이미지 크기를 처리할 수 있습니다. 이미지 크기가 p로 나누어떨어지기만 하면, 임베딩 절차를 적용할 수 있으며, 가변적인 수의 이미지 토큰 N_p를 생성합니다. 트랜스포머 인코더는 세트-투-세트 아키텍처로서 가변적인 토큰 수를 간단히 처리할 수 있습니다.
하지만 위치 임베딩은 입력 이미지의 패치 위치를 인코딩하기 때문에 이미지 크기에 종속적입니다. 우리는 [11]에서 제안된 접근 방식을 따라, 위치 임베딩을 적절한 크기로 선형 보간(linear interpolation)합니다. 이는 각 이미지에 대해 동적으로 수행할 수 있습니다. 임베딩 절차와 트랜스포머 단계를 거친 후, Reassemble 및 Fusion 모듈은 입력 이미지가 컨볼루션 디코더의 보폭(32 픽셀)에 맞게 정렬되었다면, 가변적인 토큰 수를 간단히 처리할 수 있습니다.
4. Experiments
우리는 DPT를 두 가지 밀도 예측 작업에 적용했습니다: 단안 깊이 추정(Monocular Depth Estimation)과 의미 분할(Semantic Segmentation). 두 작업에서 DPT는 유사한 용량을 가진 컨볼루션 네트워크와 비교하여 특히 대규모 학습 데이터셋이 주어졌을 때 정확도를 크게 향상시킬 수 있음을 보여줍니다. 먼저 기본 설정을 사용한 주요 결과를 제시하고, 이 섹션의 마지막 부분에서 DPT의 다양한 구성에 대한 포괄적인 분석을 제공합니다.
4.1 단안 깊이 추정 (Monocular Depth Estimation)
단안 깊이 추정은 일반적으로 밀도 회귀 문제로 정의됩니다. 깊이의 다양한 표현을 공통 표현으로 통합하고, 스케일 모호성과 같은 일반적인 모호성을 학습 손실에서 적절히 처리하면 기존 데이터 소스에서 대규모 메타 데이터셋을 구성할 수 있음이 입증되었습니다 [30]. 트랜스포머는 대규모 학습 데이터가 있을 때 잠재력을 최대한 발휘하는 것으로 알려져 있으므로, 단안 깊이 추정은 DPT의 능력을 테스트하기에 이상적인 작업입니다.
실험 프로토콜
우리는 Ranftl et al. [30]의 프로토콜을 따릅니다. 우리는 스케일 및 시프트 불변의 손실과 역 깊이 표현에서 작동하는 Gradient-Matching 손실 [22]을 함께 사용하여 단안 깊이 추정 네트워크를 학습합니다. 우리는 기존 데이터셋 [30]에 사용된 MIX 5 메타 데이터셋에 다섯 개의 추가 데이터셋 ([18, 43, 44, 46, 47])을 추가하여 약 140만 개의 이미지를 포함하는 MIX 6 메타 데이터셋을 생성했습니다. 이는 단안 깊이 추정을 위해 구성된 가장 큰 학습 세트로 알려져 있습니다.
Adam [19] 최적화 알고리즘과 다중 목적 최적화 [32]를 사용하며, 백본에는 학습률 1 \times 10^{-5}, 디코더 가중치에는 1 \times 10^{-4}를 설정합니다. 인코더는 ImageNet 사전 학습 가중치로 초기화되고, 디코더는 무작위로 초기화됩니다. 출력 헤드는 3개의 컨볼루션 레이어로 구성되며, 첫 번째 컨볼루션 레이어 이후 예측을 입력 해상도로 업샘플링합니다. 배치 정규화를 비활성화했으며, 이미지의 긴 쪽이 384픽셀이 되도록 크기를 조정하고, 384 크기의 무작위 정사각형 크롭으로 학습합니다. 60 에포크 동안 학습하며, 각 에포크는 배치 크기 16으로 72,000단계로 구성됩니다.
Zero-shot Cross-dataset Transfer
Table 1은 학습 중 보지 않은 다양한 데이터셋에 대한 Zero-shot 전이를 보여줍니다. 모든 메트릭에서 낮을수록 더 나은 성능을 의미합니다. DPT의 두 가지 변형은 모두 최첨단을 크게 능가합니다. 평균 상대적 성능 향상은 DPT-Hybrid가 23%, DPT-Large가 28% 이상입니다.
4.2 의미 분할 (Semantic Segmentation)
의미 분할은 이산 레이블링 작업을 대표하며, 밀도 예측 아키텍처를 테스트하기에 매우 경쟁력 있는 분야입니다.
우리는 이전 실험과 동일한 백본과 디코더 구조를 사용합니다.
실험 프로토콜
Zhang et al. [51]에서 확립된 프로토콜을 따릅니다. 우리는 교차 엔트로피 손실을 사용하며, 최종 융합 레이어 출력에 보조 출력 헤드와 손실을 추가합니다. 보조 손실의 가중치는 0.2로 설정합니다. SGD 최적화 알고리즘과 모멘텀 0.9를 사용하며, 폴리노미얼 학습률 스케줄러로 감쇠율을 0.9로 설정합니다. 배치 크기는 48로 학습하며, 이미지의 한쪽 길이를 520픽셀로 크기를 조정하고, 480 크기의 정사각형 크롭으로 학습합니다. 학습률은 0.002로 설정합니다. 테스트 시 멀티스케일 추론을 사용하며, 픽셀 정확도 (pixAcc)와 평균 교차-엔트로피 (mIoU)를 보고합니다.
ADE20K
우리는 ADE20K 데이터셋 [54]에서 240 에포크 동안 DPT를 학습시켰습니다. Table 4는 검증 세트 결과를 요약합니다. DPT-Hybrid는 기존의 모든 완전 컨볼루션 아키텍처를 능가하며, DPT-Large는 작은 데이터셋 크기 때문에 약간 낮은 성능을 보입니다.