기존 2 stage는 주어진 input 데이터를 backbone을 통해 나온 마지막 feature map을 가지고 region proposal을 한다.
Concept: 마지막 feature map만 사용하지 말고 중간중간 만들어지는 feature map들도 사용하면 더 좋지 않을까 -> 다양한 크기의 resolution에 대응하고 feature map을 사용하면 큰 객체뿐만 아니라 작은 객체들도 잘 포착할 수 있을 것이다.
Neck을 사용하지 않고 각 feature map에서 region을 뽑을 수도 있지만(SSD idea.) 각 level의 feature map들을 적절히 섞어주면 각 level의 feature를 풍부하게 만들어 줄 것이다.
일반적인 two stage process 에서 backbone과 RPN 사이에 Neck 구조를 추가하였다.
이전 연구로 이미지자체의 크기를 조절하여 피라미드처럼 쌓아서 특징을 추출하는 연구가 있었다.
high level에서 low level로 semantic 정보를 전달하기 위해 Top-Down path way를 추가했다.
전체적인 구조로는 Bottom-up과 Top-Down 구조로 구성
정보 전달은 Lateral connection을 활용하는데 top-down과정은 upsampling, bottom-up 과정에서는 1x1 Conv를 사용한다.
각 stage에서 lateral connection을 거친 P2 ~ P5 feature map들이 각각 RPN을 통과하여 나오는 전체 roi들로부터 NMS를 적용하여 1000개를 select한다. 여기서 select된 roi 대상으로 roi projection을 진행해줘야 하는데 대상이 되는 stage의 feature map을 찾기 위한 방법이 이미지 오른쪽 하단에 수식과 같다. default로 이기 때문에 4번째 stage가 base가 되고 수식을 통해 최종 stage를 찾는다.
정리하면 FPN은 여러 scale의 물체를 탐지하기 위해 여러 크기의 feature를 사용하도록 설계되었으며 이때 Bottom-up에서 다양한 feature map을 추출하고 Top-down 방식으로 feature map들의 semantic을 교환한다.
PANet이 제안된 배경으로 FPN의 몇 가지 특징이 있다.
다음과 같은 특징을 보완하기 위해 PANet에서는 단순한 Bottom-Up path way를 추가하고 Adaptive Feature Pooling을 제안한다. Adaptive Feature Pooling은 각 stage의 모든 feature map에서 roi projection을 진행하고 roi pooling 후 fc layer를 만든다. 이후 channel-wise로 max pooling을 해서 하나의 fc layer를 만들어 사용한다.
DetectoRS에서는 RPN과 Cascade R-CNN에서 영감을 얻어 Recursive Feature Pyramid(RFP)와 Switchable Atrous Convolution(SAC)를 제안하였다.
RFP는 FPN을 반복하는 구조를 사용해 high level feature를 low level feature에 전달하는 장점이 있지만 반복횟수 만큼 FLOPS가 증가해 학습 시간이 오래 걸리게 된다.
Atrous Convolution은 Dilated Convolution으로도 불리는데 Standard Convolution보다 Receptive filed를 키우는 효과를 가진다. 이후 생성되는 feature map들을 concatenation하여 사용한다.
BiFPN은 PANet 구조에서 파라미터와 FLOPS를 줄이기 위해(효율성을 위해) 한 방향에서만 오는 Node들을 제거하고 각 path way과정에서 lateral connection을 진행할 때 가중치를 사용해 feature map을 summation하는 구조를 제안한다.
NASFPN에서는 Hurisitic하게 진행되았던 이전 Neck 구조 연구와 다르개 NAS을 사용해 FPN 구조를 찾도록 제안되었다.
NASFPN을 통해 이전 연구들보다 성능이 높은 구조를 찾을 수 있었지만 dataset과 backbone에 범용적이지 못하고 high search cost를 가지는 단점이 있다.
AugFPN에서는 FPN의 몇 가지 문제를 보완하고자 한다.
이에 AugFPN에서는 Consistent Supervision, Residual Feature Augmentation, Soft Roi Selection 구조를 사용한다.
여기서 Residual Feature Augmentation를 살펴보면 highest feature map에서 발생하는 정보 손실 문제를 보완하고자 추가 stage인 M6을 만든다.
M6을 사용해 P5에 전달해주어 C5에 정보를 보강하고 PANet과 같이 모든 Feature map에서 roi project을 진행하고 roi pooling을 통해 고정된 vector로 만든다. 이후 max pooling을 사용하지 않고 channel-wise하게 가중치를 계산해 각 channel 별로 sigmoid를 사용한 결과를 각 feature map에 곱한 뒤 summation하는 soft roi selection을 사용한다.