앞서 CNN에서 배웠듯이, 일반적으로 CNN모델의 깊이가 깊어질수록 Receptive Field의 크기가 커진다.
이것을 참고하여 Faster R-CNN을 보면, Backbone모델의 가장 마지막단만 활용하여 RPN의 입력으로 주어진다는 점을 확인할 수 있다.
즉, Faster R-CNN은 큰 Receptive Field를 갖는 Feature Map을 전달해주기 때문에, 큰 물체들에 대해서는 Bounding Box를 잘 찾지만, 비교적 작은 물체에 대해서는 Bounding Box를 잘 찾지 못하게 된다고 해석할 수 있다.
이 문제를 해결하기 위해 나온 개념이 바로 Neck이다.
Neck은 RPN의 입력으로 Feature Map을 주기 전에 Backbone의 중간에 존재하는 여러 Feature Map을 뽑아내서,
RPN에서 여러 크기의 Receptive Field 고려할 수 있도록 섞어주는 역할을 하게 된다.
여기서 Neck을 사용하지 않고 바로 RPN과 Backbone의 각 Feature Map을 결하면 어떨까 라는 생각을 할 수 있다.
하지만 위의 생각처럼 바로 연결할 경우 low level Feature Map에는 sementic 정보가 부족하게 되고 High Level Feature Map에는 Localize 정보가 부족하기 때문에 정보 전달이 제대로 되지 않는다고 한다.
결론: Neck은 다양한 크기의 객체를 탐지하기 위해 등장하였다.
Faster R-CNN등장 이후에 나온 모델들은 FPN을 시작으로 거의 모두 중간에 Neck을 활용한 Layer를 추가로 활용해 Bounding Box를 예측하게 되었다.
여기서는 이 Neck의 구조를 변경해 가며 모델의 성능을 개선시킨 모델들을 알아보도록 하자.
동작과정 순으로 천천히 살펴보자
1. Bottom up : ResNet
![]()
먼저 이미지를 Input으로 받았을 때, BackBone Model을 통과 시켜 Feature Map을 뽑아내야 한다.
이때, Faster R-CNN과 다른점은 BackBone Model통과 시 각 Layer에서 나온 Feature Map을 모두 뽑아내야 한다는 점이다.
본 논문에서는 BackBone Model로 ResNet을 사용하였고, ResNet에서 Pooling을 통해 Feature Map이 줄어드는 구간을 기준으로 총 4개의 Feature Map을 뽑아주었다.
2. Top Down : Neck
![]()
Top Down에서는 Bottom Up과정에서 나온 Feature Map과 UpSampling과정중 나오는 Feature Map을 합쳐주는 과정을 거친다.
이때, 두 Feature Map은 위의 그림과 같이 Channel과 크기가 서로 다르기 때문에 이에 대한 조절이 필요하다.
본 논문에서는
Bottom Up Feature Map에 대해서는1x1 Conv
를 통해Channel
을 조절해 주고,
Top Down Feature Map에 대해서는Nearest Neighbor UpSampling
을 통해Width와 Height
를 조절해 주어 더해주도록 해 주었다.이 과정을 Lateral Connections라고 한다.
3. RPN
![]()
Top Down과정에서 구한 모든 Feature Map에 대해 RPN을 적용하여 ROI 후보들을 모두 구한다.
참고로 RPN의 Output은 다음과 같았다. (단, k는 Anchor의 총 개수)
- 2k 개의 Cls Layer : 배경여부 판별
- 4k 개의 Reg Layer : Bound Box의 위치 미세조절
그리고 Faster R-CNN과 마찬가지로 이 ROI 후보들에 대해 NMS를 수행하여 정해진 개수의 ROI를 구한다.
4. ROI Projection
위의 RPN의 Output으로 Boundbox의
X
,Y
, 그리고Width
와Height
를 구할 수 있었다.이때
Width
와Height
를 위의 식에 대입하면, 해당 Boundbox가 몇번째 Feature Map에서 나온 것인지 알 수 있다.따라서 먼저 위의 식을 통해 K를 구한 후 이를 활용해 해당 Feature Map에 ROI Projection을 수행하도록 한다.
5. ROI Pooling
![]()
Projection을 통해 구한 Feature Map의 ROI에 대해 ROI Pooling을 수행한다.
(ROI Pooling은1-level
, `77 Target bins`인 SPP와 동일하다.)*그리고 이 ROI Pooling을 통해 구한 Output Feature로 Fully Connected Layer이후 Softmax Classifier와 Bounding Box Regression을 진행한다.
Cascade R-CNN에서 영감을 받아 나온 모델구조로 Bound Box의 위치를 여러번 확인하여 예측하면 더 좋은 성능을 가져올 것이라는 생각에서 시작된 모델이다.
기본적인 모델의 구조는 FPN과 같지만, Neck부분이 Recursive하게 동작한다는 부분이 다르다.
1. Recursive Feature Pyramid(RFP)
![]()
먼저 기존의 FPN모델을 살펴보자.
: 번째 BackBone Feature Map은
번째 Feature Map에 BackBone연산을 수행한 것과 같다.
: 번째 FPN Feature Map은
번째 BackBone Feature Map과 번째 FPN Feature Map을 합친후에 FPN연산을 수행한 것과 같다.
이제 RFP 모델의 수식을 살펴보면 다음과 같이 에 대한 정의가 달라지는 것을 확인할 수 있다.
: 번째 BackBone Feature Map은
번째 Feature Map과 에 Atrous Spatial Pyramid Pooling을 한것을 합친 후, 이것에 BackBone연산을 수행한 것과 같다.
(Atrous Spatial Pyramid Pooling은 뒤에서 설명)
: 번째 FPN Feature Map은
번째 BackBone Feature Map과 번째 FPN Feature Map을 합친후에 FPN연산을 수행한 것과 같다.
2. Atrous Convolution
![]()
위와 같이 일반적인 Convolution에서 dilation rate를 추가로 설정해 주어 Receptive Field를 강제로 키우는 Convolution방법을 말한다.
(참고)
3. Atrous Spatial Pyramid Pooling (ASPP)
![]()
ASPP는 이전 FPN에서 받아온 Feature Map을 Atrous Convolution을 활용해 다양한 Receptive Field을 가지도록 Feature Map들을 계산하고, 이 Feature Map을 Concat하도록 하는 Layer를 의미한다.
이때 서로 다른 dilation rate와 kernel size를 사용하기 때문에 각각 다른 크기의 Feature Map을 생성하게 되는데, 보통 해당 Feature Map들에 Bi-Linear Interpolate를 통한 Upsampling을 적용해 크기를 맞춰 준 후에 Concatenate해주게 된다.
이후로는 FPN과 동일하게 작동한다.
BiFPN은 EfficientDet에서 제안된 모델 구조로 그림과 같이 PANet의 Neck부분에서 연산이 이루어지지 않는 Feature Map을 제거하고, 새롭게 연결해 준 구조를 의미한다.
(EfficientDet: One Stage Detection모델로 추후 설명)
(PANet: 그림과 같은 Neck구조를 갖는 Segmentation모델로 추후 설명)
1. Weighted Feature Fusion
![]()
일반 FPN에서는 Lateral Connection시 단순히 크기만 조절하여 더해주었다.
하지만 본 논문에서는 단순히 더하는 점 때문에 특정 Feature Map에 집중하지 못해 문제가 발생한다고 생각하여 위의 그림과 같이 Feature Map별로 가중치를 부여한 후에 더하도록 해 주었다.
NAS를 사용해 FPN의 Neck의 구조를 찾은 시도를 한 논문이다.
본 논문에서는 COCO Dataset과 ResNet을 BackBone Model로 하여 찾았다고 한다.
때문에 다른 Dataset을 사용하거나 BackBone Model을 바꾸자 할 경우 새롭게 구조를 찾아야 한다.
즉, 범용적이지 못하고, Search Cost가 매우 높다는 단점이 존재한다.
AugFPN은 FPN에서 다음과 같은 문제를 제기한 후에 이를 보완하는 방식으로 성능향상을 의도하였다.
1. FPN의 문제
- 서로 다른 level의 feature간에는 semantic정보에 대한 차이가 여전히 존재하기 때문에 Multi Scale 특성이 미약하다.
- Highest Feature Map에서는 따로 Lateral Connection이 없기 때문에 정보손실이 발생한다.
- 하나의 Feature Map만을 고려하여 ROI를 생성한다.
2. Consistent Supervision
3. Residual Feature Augmentation
4. Soft ROI Selction
33