네이버 부스트캠프 🔗/⭐주간 학습 정리

Neck

Dobby98 2023. 5. 8. 12:06

본 글은 네이버 부스트 캠프 AI Tech 기간동안

개인적으로 배운 내용들을 주단위로 정리한 글입니다

 

본 글의 내용은 새롭게 알게 된 내용을 중심으로 정리하였고

복습 중요도를 선정해서 정리하였습니다

 

 

✅ Week 10

1. Neck

   1.1 FPN

   1.2 PANet

 

2. After Neck

   2.1 DetectoRS

   2.2 BiFPN

   2.3 NASFPN

   2.4 AugFPN


Intro.

일반적인 2 Stage Detectors

우리는 지난 시간에 Object Detection Model 중 2 Stage Detectors들에 대해서 알아 보았다

위의 사진에서 확인할 수 있듯이 2 Stage 모델들은 Backbone CNN의 마지막 층에서 나온 feature map을 갖고

RPN을 통해서 Region을 Proposal하고 이를 기반을 Prediction을 진행한다

 

하지만 이러한 과정에는 의문이 발생한다

바로 Backbone의 중간층에 있는 feature map을 활용할 수 있지 않을까? 이다

 

즉, 굳이 Backbone의 마지막 층만을 활용하는 것이 아니라

Backbone에서 만들어지는 중간중간의 feature map을 가져와서 추가로 활용한다면

모델의 성능을 향상될 수 있을 것이라는 가정을 할 수 있다

 

이러한 아이디어에서 만들어 진것이 Neck이다

 

Neck

사진에서 확인 할 수 있듯이 Backbone 중간 층의 feature map을 가져와서 다시 upsampling을 하면서 서로의 feature map을 섞어 주고 이들을 활용해서 RPN에서 Region을 추출한다 

 

그렇다면 Neck의 효능은 무엇일까? 즉, 왜 성능이 올라가는 것일까?

 

바로 다양한 크기의 객체를 잘 탐지할 수 있기 때문이다

쉽게 말해서 Backbone의 Low-level feature map의 경우 - 낮은 층 -> 선, 점, 기울기 등 작은 객체를 잘 표현하고

Backbone의 High-level feature map의 경우 semantic한 정보와 큰 객체를 잘표현 할 수 있게 된다

즉, 이 모두를 활용할 수 있게 neck이 도와주기 때문에 다양한 크기의 객체를 잘 탐지할 수 있게 되고

성능이 향상되는 것이다

 

그렇다면 여기서 의문이 살짝 생길 수 있다

 

그냥 Backbone의 중간 중간 feature map을 굳이 Neck을 쓰지 않고 바로 여러 RPN으로 수행하면 되지 않을까?

하지만 이러한 방법에는 단점이 있다

바로 앞에서 설명했듯이 Low - level의 경우 semantic 정보가 적기 때문에 오히려 성능이 저하될 수 있다

따라서 상위, 하위 level의 feature map을 섞어 줌으로 여러 객체를 뽑을 수 있는 것이다

 

그렇다면 이제부터 본격적으로 Neck의 모델들을 살펴보자

 


1. Neck

1.1 Feature Pyramid Network - FPN

 

FPN 논문(Feature Pyramid Networks for Object Detection) 리뷰

이번 포스팅에서는 FPN 논문(Feature Pyramid Networks for Object Detection)을 리뷰해보도록 하겠습니다. 이미지 내 존재하는 다양한 크기의 객체를 인식하는 것은 Object dection task의 핵심적인 문제입니다. 모

herbwood.tistory.com

FPN은 Low-level에 High-level의 정보를 전달 해주기 위해서 

Top-down pathway을 추가해주었다

 

즉, 기존 CNN에서 feature map을 추출하는 Bottom-up pathway와 Top-down 방식을 같이 활용해주어서 feature map을 섞어주는 것이다

 

그렇다면 어떻게 High와 low의 faeture map을 섞어 줄 수 있을까?

Bottom up에서 나온 feature map과 Top down에서 나온 feature map의 shape가 다르기 때문에

 lateral connections을 활용해 준다

 

즉, Bottom-up의 경우 위로 갈 수록 feature map의 w,h는 2배씩 작아지고 c는 2배씩 증가한다

반면에 Top-down의 경우 feature map의 w,h는 합쳐질 Bottom-up featuremap에 비해서

w,h가 2배 적은 상태이다

 

따라서 아래 사진에서 확인할 수 있듯이 두개의 feature map을 맞춰 주기 위해서

Top-down은 upsampling을 진행하여서 w,h를 맞춰주고 - 논문에서는 Nearest Neighbor Upsampling을 사용했다

Bottom-up은 1x1 conv를 진행해서 차원수를 맞춰준다음

이를 Element-wise addition을 진행하여서 하나의 feature map을 만들어준 3x3 conv을 통과해 RPN에 들어가 featuremap을 만들어준

 

FPN의 경우 여러 stage에서 Region을 추출하기 때문에 - P

어느 stage에서 Region이 왔는지 Mapping이 필요하다

직관적으로 봤을 때 RoI의 scale이 작아질수록 낮은 pyramid level,

즉 해상도가 높은 feature map에 할당하고 있음을 알 수 있다

 


1.2 PANet

앞에서 살펴본 FPN에서 문제점이 하나 존재한다

바로 Backbone으로 활용하는 CNN의 모델을 보면 Network의 길이가 길다는 문제점이 있다

즉, 이러한 문제점으로 인해서 Low-level의 feature map의 정보가 high-level의 feature map에

제대로 전달 되지 않을 수 있다

 

이러한 문제점을 해결한 모델으 PANet 이다

 

아이디어는 간단하다

Bottom - up을 한번더 수행해주면된다

 

위의 사진에서 확인할 수 있듯이 backbone network의 pooling이나 다양한 연산을 제외한

bottom-up을 추가해줌으로써 다시한번 low 정보를 high에 잘 전달 할 수 있게되는 것이다

 

그리고 이렇게 나온 feature map을 활용해서 RoI를 Pooling하고 예측을 수행해준다

하지만 여기서도 문제점이 하나있는데

Stage의 경계에 위치한 RoI의 경우 

애매한 상황에 놓이게 된다

즉, 별차이 없는 RoI이지만 이를 투영하는 Feature map의 크기는 달라질 수 있게 된다

 

따라서 특정 stage의 feature map에만 투영하는 것이 아니라

모든 stage의 feature map에 투영을 해서 RoI pooling을 수행해주는 Adaptive Feature Pooling을  제안하였다

즉, 모든 feature map에서 RoI projection을 수행해주는 것이 핵심이다


2. After Neck

FPN과 PANet 이후 Neck에 대한 연구들이 증가하였다

지금 부터는 FPN이후의 추가적인 Neck의 구조를 살펴보자

 

 

2.1 DetectoRS

 

DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution

작성자 - 이건희(penguinnom@gmail.com)

www.notion.so

 

핵심 구조

RFP  : Top-down의 Feature map의 결과를 Backbone에 다시 전달해서 backbone을 다시학습하고 이런식으로 반복하는 방법

+) ASPP : FPN의 결과를 다시 backbone에 concat해주는 변환 연산

수용 범위를 늘려주기 위해서

 

ASPP(Atrous Spatial Pyramid Pooling)

gaussian37's blog

gaussian37.github.io

+) Fusion

 


2.2 BiFPN

EfficientDet에서 제안한 방법

 

BiFPN (Bi-directional Feature Pyramid Network) 구조와 코드

gaussian37's blog

gaussian37.github.io

모델 구조를 단순화 하여서 FLOPs를 줄이는 방법

그리고 각 feature map을 더할때 단순합 보다는 

weight sum을 하는 방법을 제안


2.3 NASFPN

nas를 활용해서 FPN의 구조를 탐색

 

NAS-FPN: Learning Scalable Feature Pyramid Architecture for Object Detection

Current state-of-the-art convolutional architectures for object detection are manually designed. Here we aim to learn a better architecture of feature pyramid network for object detection. We adopt Neural Architecture Search and discover a new feature pyra

arxiv.org

하지만 COCO dataset 기준으로만 탐색해서

다른 Dataset에 맞지 않을 수 있어

 


 

2.4 AugFPN

 

AugFPN: Improving Multi-scale Feature Learning for Object Detection

Current state-of-the-art detectors typically exploit feature pyramid to detect objects at different scales. Among them, FPN is one of the representative works that build a feature pyramid by multi-scale features summation. However, the design defects behin

arxiv.org

Residual Feature을 만들어서 M6를 만들고 이를 top-down에 적용

 Adaptive Spatial Fusion을 활용해서 fusion을 해준다

 

'네이버 부스트캠프 🔗 > ⭐주간 학습 정리' 카테고리의 다른 글

EfficientDet  (0) 2023.05.10
1 Stage Detectors  (0) 2023.05.09
2 Stage Detectors  (0) 2023.05.03
mAP - Mean Average Precision  (0) 2023.05.03
[부스트 캠프]Week 8 회고 및 Week 9 목표정리  (0) 2023.05.03