코딩하는 해맑은 거북이

[컴퓨터비전] Object Detection - Neck 본문

AI

[컴퓨터비전] Object Detection - Neck

#CJE 2023. 5. 3.
본 게시물의 내용은 '부스트캠프 AI Tech - Object Det(송원호)' 강의를 듣고 작성하였다.
해당 글은 아래의 2가지를 다룬다.
📌 Neck
  🔷 Neck 의 배경
  🔷 Neck 이 필요한 이유
  🔷 Feature Pyramid Network (FPN) 
  🔷 Path Aggregation Network (PANet)
📌 After FPN
  🔷 DetectoRS
  🔷 Bi-directional Feature Pyramid (BiFPN)
  🔷 NASFPN
  🔷 AugFPN

📌 Neck

🔷 Neck 의 배경

Detection의 2 Stage detector의 경우에 Backbone의 마지막 출력인 feature map만을 이용해서 RPN과 Prediction을 수행했다.

2 Stage detector

 

여기서 Backbone의 중간의 feature map도 활용하자에서 Neck이 등장하였다.

즉, Neck은 Backbone의 중간 단계의 feature map을 모두 활용해서 다양한 크기의 객체를 탐지할 수 있도록 한다.

 

🔷 Neck 이 필요한 이유

1) 다양한 크기의 객체를 더 잘 탐지하기 위해서

2) 하위 level의 feature는 semantic이 약하므로 상대적으로 semantic이 강한 상위 feature와의 교환이 필요

 

 

🔷 Feature Pyramid Network (FPN) → Neck에 대한 최초의 논문

FPN은 high level에서 low level로 semantic 정보를 전달하기 위해 Bottom-up만 존재하던 Pyramidal feature hierarchy에 top-down path way를 추가한 방법 제안하였다.

즉, Pyramid 구조를 통해서 high level 정보를 low level에 순차적으로 전달하여, high level의 feature map을 low level의 feature map과 합쳐서 예측하는 방식이다.

 

Q. high level과 low level의 feature map의 shape는 서로 동일하지 않은데 합칠 수 있나요?

서로 동일하지 않기 때문에, 이를 위한 connection으로 Lateral Connection이 존재한다.

 

- Lateral Connection

high level의 feature map에는 Up-sampling을 통해 H, W를 늘리고,

low level의 feature map에는 1x1 conv를 적용하여 C을 늘리는 방법이다.

여기서 Up-sampling 방법은 Nearest Neighbor Upsampling을 사용하였다.

Nearest Neighbor Upsampling

 

- FPN의 구조

Backbone : ResNet

4-stage feature map들이 다른 RPN에 전달되고, 각각 제안된 RoI 후보들이 score가 가장 높은 N개의 RoI들만 선택된다.

해당 N개의 RoI들에 NMS를 적용하여 최종 1000개의 RoI 만이 Prediction 모듈에 전달된다.

 

 

🔷 Path Aggregation Network (PANet)

FPN에서 high level feature가 low level feature에 전달해주는데, 이때 low level feature를 high level feature에는 전달하지않는다는 문제가 있다. 이를 위해 PANet은 high level feature에도 low level feature가 충분히 포함될 수 있도록 하기 위해 Bottom-up path augmentation을 수행한다.

 

또한, Adaptive Feature Pooling을 수행한다. 이는 RoI에 대응하는 하나의 feature map만 고르지 않고, 모든 단계의 feature map에 대해 RoI Projection을 수행한다. 그리고 각 feature map을 channel-wise max pooling을 하여 하나의 feature map을 만드는 것이다.

 

 

📌 After FPN

🔷 DetectoRS

- Motivation

Looking and Thinking twice! 반복하자!

 

- 주요 구성

1) Recursive Feature Pyramid (RFP)

FPN을 N번 반복한 것을 의미한다.

여기서 FPN의 feature map이 다시 backbone의 feature map과 합쳐질 때, ASPP(Atrous Spatial Pyramid Pooling)를 사용하여 합친다. ASPP는 더 큰 receptive field에서 일반적인 정보를 뽑아내는데 도움을 준다.

 

 

2) Switchable Atrous Convolution (SAC)

 

 

 

🔷 Bi-directional Feature Pyramid (BiFPN)

PAFPN 구조에서 불필요한 연결을 끊고, Residual Connection을 추가한 형태이다.

또한, 불필요한 연산이 줄었으므로 repeated blocks 구조를 반복하여 Neck을 설계하였다.

그리고, FPN과 같이 단순 summation을 하는 것이 아니라 각 feature별로 가중치를 부여한 뒤 summation하는 Weighted Feature Fusion을 수행한다. 해당 feature별 가중치를 통해 중요한 feature를 강조하여 성능을 상승시켰다.

여기서 모델 사이즈의 증가는 거의 없다.

Weighted Feature Fusion

 

 

🔷 NASFPN

FPN 아키텍처를 NAS (Neural architecture search)를 통해서 찾는 motivation에서 등장하였다.

해당 모델은 coco dataset과 resnet을 기준으로 찾은 architecture로 해당 데이터셋과 backbone에서 가장 좋은 성능을 보여준다. 다른 데이터셋과 backbone을 사용하면 좋은 성능을 보이지 못한다는 단점이 있다. 즉, 범용적이지 못하다.

다른 데이터셋이나 backbone에서 가장 좋은 성능을 내는 architecture를 찾기 위해 새로운 search 비용이 든다. 

 

 

🔷 AugFPN

- FPN의 문제

  • 서로 다른 level의 feature간의 semantic차이
  • Highest feature map의 정보 손실
  • 1개의 feature map에서 RoI 생성

- 주요 구성

1) Consistent Supervision

2) Residual Feature Augmentation

highest layer에도 추가적인 정보(residual feature)를 받아서 더 나은 예측이 가능하도록 한다.

마지막 high level feature map인 C5에 Ratio-invariant Adaptive Pooling을 적용하여 다양한 scale의 feature map을 생성한다. 해당 feature map들을 Adaptive Spatial Fusion을 이용해서 M6 feature map을 만들어낸다.

 


3) Soft RoI Selection

PANet과 유사하게 모든 단계의 feature map을 활용한다.

단, channel-wise max pooling을 사용한 PANet와 달리 정보 손실 가능성 때문에 Soft RoI Selection을 수행한다.

Soft RoI Selection은 모든 scale의 feature에서 RoI projection 진행 후 RoI pooling을 하고, Channel-wise 가중치 계산 후 max pooling 대신 가중 합을 사용하는 것이다.

 

 

 

Comments