M2Det 논문 리뷰

김상현·2021년 12월 28일
1

논문 제목: M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network

Introduction

객체들의 scale variation은 object detection의 주된 문제 중 하나다. 대체적으로 이를 해결하기 위해 두 가지 방법이 존재한다. 첫번째 방법은 image pyramid(입력 이미지를 여러 scale로 복사한 이미지들)를 이용해 detection 하는 것으로 testing time에만 활용된다. 이 해결책은 memory와 computational complexity가 엄청나게 증가한다는 문제가 있다. 두번째 방법은 입력 이미지로부터 추출된 feature pyramid를 이용해 detection 하는 것이다. 두번째 방법이 첫번째 방법보다 적은 memory와 computational complexity를 사용할 수 있고, 최신 detectors들에 쉽게 통합될 수 있다는 장점이 있다. 하지만 이러한 방법도 이미지 분류를 위해 학습된 backbone의 feature pyramid를 사용한다는 한계가 존재한다. 이러한 한계의 문제점들은 다음과 같다. 첫째로 feature map들이 이미지 분류를 위해 학습되었으므로 object detection 문제에 맞지 않다. 둘째로 pyramid의 각 feature map은 주로 single-level 정보를 갖는다. 여기서 single-level이란 high-level과 low-level feature를 모두 포함하지 않고 한 가지 level의 정보만 포함한다는 것이다.

본 논문에서는 위에 언급된 기존의 문제들을 직면하지 않는 다양한 scale의 object detection을 위한 더욱 효과적인 feature pyramid를 고안하는데 목표로 MLFPN(Multi-Level Feature Pyramid Network)를 제안한다. 또한 저자들은 제안된 MLFPN을 평가하기 위해 end-to-end 1-stage detector인 M2Det을 고안했다. M2Det은 MS-COCO에서 SOTA의 결과를 이뤄냈다.


Proposed Method

사진 1. Overall Architecture

M2Det의 전반적인 구조는 위의 사진 1과 같다. Backbone network와 MLFPN을 사용해서 입력 이미지에서 feature들을 추출한 후 SSD와 유사하게 feature들에서 dense bounding box들과 category scores를 출력한다. MLFPN은 FFM(Feature Fusion Module), TUM(Thinned U-shape Module), SFAM(Scale-wise Feature Aggregation Module)로 구성된다.

FFMv1은 backbone의 feature maps를 fusing하므로써 semantic information을 풍부하게 한다. 각 TUM은 multi-scale features의 그룹을 생성한다. 이후 교대로 결합한 TUM과 FFMv2들이 multi-level multi-scale features를 추출한다. 추가로, SFAM은 scale-wise concatenation과 adaptive attention mechanism을 통해 multi-level feature pyramid로 features를 합산한다.

Multi-level Feature Pyramid Network

위의 사진 1에서와 같이 MLFPN은 3부분으로 구성된다. 먼저 FFMv1으로 shallow와 deep features를 혼합(fuse)하여 base feature를 생성한다. 그 다음 TUM과 FFMv2를 교대로 쌓는다. 특히 각 TUM은 서로 다른 scaledml feature map들을 생성한다. FFMv2는 base feature와 이전 TUM의 가장 scale이 큰 feature map을 혼합(fuse)한다. 이렇게 혼합된 feature map들은 다음 TUM으로 입력된다. 이를 수식으로 표현하면 다음과 같다.

[x1l,x2l,...,xil]={Tl(Xbase),l=1Tl(F(xbase,xil1)),l=2,...,L[x^l_1, x^l_2, ...,x^l_i]= \left\{ \begin{array}{ll} T_l(X_{base}), & l = 1 \\ T_l(F(x_{base},x_i^{l-1})), & l=2,...,L \end{array} \right.

XbaseX_{base}: the base feature
xilx^l_i: the feature with the ii-th scale in the ll-th TUM
LL: the number of TUMs
TlT_l: the ll-th TUM processing
FF: FFMv2 processing

마지막으로 SFAM이 scale-wise feature concatenation과 channel-wise attention mechanism을 통해 multi-level multi-scale features를 합산한다.

FFMs

사진 2. FFM( a: FFMv1, b: FFMv2)

FFMs는 M2Det의 다른 level들의 feature들을 혼합한다. FFM은 1x1 convolution으로 입력 features의 channel을 압축하고 concatentaion을 통해 feature maps를 합산한다. 특히, FFMv1의 경우 backbone network의 서로 다른 scale을 혼합하기 위해 upsample operation을 사용한다. FFMv2는 이전 단계의 TUM의 출력 feature map 중 가장 큰 scale과 base feature를 사용하는데, 둘의 scale이 같으므로 upsample operation이 필요하지 않다. 이는 사진 2를 통해 확인할 수 있다.

TUMs

사진 3. TUM

TUM은 사진 3에 나온 구조로 thinner U-shape 구조를 갖는다. Decoder branch의 bilinear upsample과 element-wise sum 이후 1x1 convolution을 적용해 학습 능력을 향상시키고, feature들의 smoothness를 유지한다. 각 TUM의 decoder의 모든 출력들은 한 level의 multi-scale features 이다. 전체적으로 stacked TUMs의 출력들은 multi-level multi-scale features로 앞단의 TUM은 주로 shallow level의 feature를 제공하고, 중간의 TUM은 주로 medium-level feature를 제공하고, 뒷단의 TUM은 deep-level feature를 제공한다.

SFAM

사진 4. SFAM

SFAM은 TUMs로 부터 생성된 multi-level multi-scale features를 multi-level feature pyramid로 합산하는 것을 목표로 한다. 이는 위의 사진 4에 나와있다. 먼저 같은 scale feature들 끼리 concatenate를 한다. 즉, X=[X1,X2,...,Xi]X = [X_1, X_2, ...,X_i]로, 각각의 Xi=Concat(xi1,xi2,...,xiL)RWi×Hi×CX_i = Concat(x_i^1, x_i^2,...,x_i^L) \in R^{W_i \times H_i \times C}이다. 하지만 단순한 concatenate는 충분하지 못하다. 따라서 두번째 단계로 channel-wise attention module을 적용한다. SE block을 따라 squeeze 단계에서 channel-wise statistics zRCz \in R^C를 global pooling을 사용해서 생성한다. 이후 channel-wise dependecies를 포착하기 위해서, excitation 단계에서 attention mechanism을 학습한다. 수식으로 다음과 같다.

s=Fex(z,W)=σ(W2δ(W1z))s = F_{ex}(z, W) = \sigma (W_2 \delta (W_1 z))

σ\sigma: sigmoid function
δ\delta: ReLU function
W1RCr×CW_1 \in R^{\frac{C}{r} \times C}, W2RC×CrW_2 \in R^{C \times \frac{C}{r}}, rr: reduction ratio(=16)

최종 결과는 ss를 이용해 XX를 reweighting 하여 얻는다. 따라서 각각의 feature들은 rescaling operation을 통해 향상되거나 약화된다. 수식으로 다음과 같다.

Xic~=Fscale(Xic,sc)=scXic\tilde{X_i^c} = F_{scale}(X^c_i, s_c) = s_c \cdot X^c_i

Xi~=[Xi1~,Xi2~,...,XiC~]\tilde{X_i} = [\tilde{X_i^1}, \tilde{X_i^2}, ..., \tilde{X_i^C}]


Experiments

표 1

사진 5. speed vs accuracy

위의 표 1과 사진 5를 통해 COCO dataset에서 M2Det이 좋은 정확도와 빠른 속도를 갖는다 것을 확인할 수 있다.


Discussion

사진 6.

M2Det의 detection accuracy 향상은 MLFPN에 의한 결과라 저자들은 주장한다. MLFPN을 통해 object instance들의 appearance-complexity variation을 다루기 더 적합하게 각각의 scale 마다 multi-level features를 사용한다. 이는 위의 사진 6의 activation value 시각화를 통해 확인할 수 있다. 같은 class의 경우 scale에 따라 activation이 달라진다. 또한 같은 scale의 물체라도 물체의 class에 따라 다른 level에서 activation 되는 것을 확인할 수 있다. 이를 통해 multi-scale과 함께 multi-level detection이 필요하다는 것을 알 수 있다.


Conclusion

본 논문에서는 Multi-Level Feature Pyramid Network(MLFPN)을 제안해서 object detection시 효과적인 feature pyramid를 만들었다. 이를 통해 SOTA의 성능을 달성했다.


References

M2Det 논문
SENet 논문
M2Det 공식 github implement

profile
Mucha Suerte

0개의 댓글