M2Det: SSD based on Multi-Level FPN 요약
다양한 크기의 물체들을 인식하기 위해서는 다양한 해상도의 feature map들을 활용하는 것이 중요하다. Feature Pyramid Network는 다양한 해상도의 feature map을 적은 연산양으로 만들면서도, 합성곱 신경망 앞쪽에서 생성되어 자칫 low-level 정보가 부족할 수 있는 feature map들에도 뒤쪽 layer의 feature 들을 전달하여 여러 SOTA 모델들에서 활용되어 왔다. (DSSD, RetinaNet, RefineDet, Mask R-CNN 등)
FPN이 좋은 성과를 많이 낸 것은 사실이지만, 객체 분류를 위해 사전학습된 backbone network에서 feature를 추출하는 한계 상 FPN은 객체의 간단한 정보들밖에 뽑아내지 못하는 문제가 있다.
M2Det에서는 새로운 Multi-Level Feature Pyramid Network(MLFPN)을 통해 더 효과적인 feature 정보들을 담고 있는 feature pyramid를 만드는 방법을 소개한다.
기존 Pyramidial Feature들의 문제점
M2Det에서는 SSD, FPN을 비롯한 기존의 방법들이 사용하는 Feature Pyramid가 주로 Image Classification을 위해 사전학습된 하나의 모델 속, 여러 계층들에서 추출된 것이 다음과 같은 문제를 갖는다고 지적한다.
- pyramid 속 feature들이 detection을 수행하기에 충분히 representative 하지 않다.
- pyramid의 각 feature map들은 각각의 대응하는 크기의 물체들을 탐지하는데 사용되는데, 이 feature map들은 주로 한 개의 계층에서 생성된다.
2에 대해 보충하자면, 일반적으로, 더 깊은 신경망 계층에서 생성되는 high-level feature들은 classification에 적합한 판별적(discriminative) feature들인 반면, 더 얕은 신경망 계층에서 생성되는 low-level feature들은 location regression에 적합한 feature들이 생성된다.
또한, low-level feature들은 물체들의 간단한 형태들을 학습하는 반면, high-level feature들은 물체의 더 복잡한 형태들을 학습한다.
그러나 실제 상황에서, 같은 크기의 물체들 간에도 형태는 매우 다를 수 있다. 예를들어, 신호등과 보행자는 비슷한 크기를 가지지만, 보행자가 훨씬 복잡한 형태를 갖는다.
기존 feature pyramid의 feature map들은 같은 크기의 물체에 대해서 같은 수준의 feature들을 사용하기 때문에, 이는 detection 성능을 떨어뜨리게 된다.
Overview
Feature Pyramid의 각 feature map들이 다양한 스케일을 가지면서도, 서로 다른 수준의 복잡도를 가진 물체들을 잘 detect 하기 위해, 이 논문은 위 그림과 같은 구조의 모델을 제안한다.
먼저, backbone network의 다양한 layer에서 추출된 multi-level features들을 fusion하여 Base feature를 만든다.
그다음 base feature를 여러 개의 Thinned U-Shape Modules(TUM)에 순차적으로 투입하고, Feature Fusion Modules(FFM)을 통해 더 많은 multi-level multi-scale feature들을 뽑아낸다.
이때, 각 TUM에서 디코더 부분이 바로 Multi-Scale Feature Pyramid가 된다.
이 Pyramid들을 각각 같은 크기의 feature끼리 모아서 multi-level multi-scale feature pyramid를 완성하게 된다.
이 방법을 Multi-Level Feature Pyramid Network (MLFPN)라고 한다.
논문에서는 이 모델을 평가하기 위해, SSD 구조와 MLFPN을 결합하여 M2Det 모델을 만들었는데, MS-COCO 데이터셋에서 41.0 AP, 11.8FPS(single-scale inference)와 44.2 AP(multi-scale inference)로 SOTA를 달성했다.
Proposed Method
M2Det은 위 그림에 나타난 것처럼 MLFPN에서 Multi-Scale, Multi-Level Feature Pyramid를 만들어 SSD와 유사한 방식으로 prediction을 수행한다.
MLFPN은 세 개의 모듈로 구성되는데, Feature Fusion Module(FFM), Thinned U-shape Module(TUM), Scale-wise Feature Aggregation Module(SFAM)이다.
FFMv1은 backbone network에서 제공된 feature map들을 fusion 하여 sementic 한 정보들을 강화한다.
각 TUM들은 각각의 multi-scale feature들을 만들어내고, 더 고수준의 다음 TUM으로 feature를 전달하면 이 feature와 base feature를 FFMv2가 fusion 하여 더 high-level의 multi-scale feature들을 만든다.
마지막으로 SFAM이 각 TUM들이 만들어낸 각기 다른 level의 feature들을 크기 별로 합쳐, multi-level multi-scale의 feature pyramid를 만드는 것이다.
Feature Fusion Modules
FFM은 M2Det에서 다른 level의 feature들을 합치는 데 사용된다. FFM은 $1\times 1$ 합성곱을 통해 채널을 압축하고, concat을 통해 feature들을 합친다.
FFMv1은 서로 다른 크기의 feature들을 합치는데, 이때 upsample을 통해 크기를 맞추고 concat을 진행한다.
TUMs
TUM은 U자 형태의 구조로 되어있다. Encoder는 $3\times 3$에 stride 2인 합성곱으로 구성되어 있고, Decoder는 Encoder의 출력을 이용해 multi-scale feature들을 만들어 낸다.
각 TUM은 해당 TUM에 해당하는 level의 feature pyramid를 만들고, 이 feature pyramid들을 합치면 multi-level multi-scale feature pyramid를 얻을 수 있는 것이다.
SFAM
SFAM은 TUM들이 생성한 feature pyramid들을 합쳐서 multi-level feature pyramid를 만든다.
SFAM은 우선 각 pyramid의 feature들을 같은 해상도를 가진 것들끼리 합친다.
8개의 각 TUM은 6개의 각기 다른 scale의 feature map을 만드므로, 최종적으로는 8개의 level과 6개의 scale을 갖는 feature map을 만든다.
그다음, channel-wise attention module을 적용하여 가장 중요한 feature들에 집중할 수 있도록 한다.
Squeeze Excitation(SE) block을 CNN에 부착하면, 연산량을 크게 늘리지 않으면서 정확도를 향상할 수 있다.
SE block은 아래의 3가지 과정으로 구성된다.
- Squeeze step: 입력된 HxWxC 크기의 feature map에 Global Average Pooling을 수행하여 1x1xC로 변환.
- Excitation step: 1에서 얻은 feature map에 대하여 2개의 FC layer를 적용하여 channel 별로 상대적인 중요도를 구한다.
이때, 마지막 FC layer의 활성화 함수를 sigmoid로 하여 각 채널의 중요도가 0~1 사이로 나오도록 한다. - Recalibration step: 앞서 구한 채널별 중요도를 원본 feature map에 채널별로 곱해줘 채널들을 보정한다.
M2Det 요약
- 입력된 이미지를 backbone network에 통과시키고, 이때 backbone network에서 추출한 2개의 scale의 feature map을 FFM으로 합쳐 Base feature를 만든다.
- Base Feature를 TUM에 넣어, low-level feature pyramid를 얻는다.
- 2에서, TUM을 통과한 마지막 feature와 base feature를 FFMv2로 합쳐 다음 TUM에 넣는다.
- 2, 3과정을 반복하여 8개의 multi-level feature pyramids를 얻는다.
- SFAM 과정을 통해 각 feature pyramid들을 합쳐주고, SE block을 이용해 보정한다.
- 이렇게 얻은 multi-level multi-scale feature map들로 예측을 수행한다.
결론
SSD를 읽고 구현한 뒤, 성능을 개선하기 위해 FPN을 적용했었다.
생각보다 성능이 오르지 않아 찾아보니 M2Det에서 FPN의 약점을 설명하고, 멋지게 개선하여 SOTA를 달성한 것을 알게 되었다.
내가 하고 있는 고민들을 먼저 하고 극복한 사람들이 있다는 것이 놀랍고 가슴 벅차다.
이렇게 연구의 참맛을 알아가고 있는 것 같다. (맛있다.)
지금까지 인터넷에서 발견한 Object Detection 논문 추천 이미지를 보면서 공부하고 있었는데, 이 이미지가 한국의 hoya님이 만든 것이라는 걸 알았다.
더불어, 내가 자주 참고하는 블로거인 herbwood님이 이 목록을 확장하신 것도 발견했다.
이렇게 멋진 선배님들 덕분에 내가 편하게, 즐겁게 공부를 잘하고 있는 것 같다.
나도 어서 누군가에게 조금이나마 도움을 줄 수 있는 사람이 되고 싶다.
Reference
'Deep Learning > 공부 노트' 카테고리의 다른 글
Retrieval Task와 Metric Learning (0) | 2023.03.24 |
---|---|
Multimodal Object Detection via Probabilistic Ensembling(ProbEN) 요약 (0) | 2023.02.09 |
FPN (Feature Pyramid Network) 요약 (1) | 2023.02.01 |
YOLO v2(YOLO9000: Better, Faster, Stronger) 요약 (0) | 2023.01.30 |
FPPI, LAMR, MR: Object Detection을 위한 지표들 (0) | 2023.01.26 |
댓글
이 글 공유하기
다른 글
-
Retrieval Task와 Metric Learning
Retrieval Task와 Metric Learning
2023.03.24 -
Multimodal Object Detection via Probabilistic Ensembling(ProbEN) 요약
Multimodal Object Detection via Probabilistic Ensembling(ProbEN) 요약
2023.02.09 -
FPN (Feature Pyramid Network) 요약
FPN (Feature Pyramid Network) 요약
2023.02.01 -
YOLO v2(YOLO9000: Better, Faster, Stronger) 요약
YOLO v2(YOLO9000: Better, Faster, Stronger) 요약
2023.01.30