Neck

J. Hwang·2024년 10월 4일

2 stage detctor 모델은 크게 backbone, neck, head로 구성된다. neck은 backbone에서 추출된 feature map을 가공하여 head로 전달하는 역할을 하는데, 이번 포스팅에서는 neck에 대해 집중적으로 알아보도록 하자.

neck 구조가 도입되기 전의 object detection 모델은, backbone의 마지막 layer에서 추출된 featurea map만 Region Proposal Network (RPN) 에 연결되어 물체의 위치와 클래스를 학습했다.

그러나 객체의 크기가 저마다 다르기 때문에 다양한 크기의 객체를 잘 탐지하기 위해서 backbone의 마지막 layer에서 추출된 feature map 뿐만 아니라 중간 단계의 layer에서 추출된 feature map까지 사용하여 RPN에 연결하는 것이 neck의 역할이다. 단순히 여러 단계의 feature map을 사용하는 것보다는, 하위 level의 feature는 semantic 정보가 적으므로 semantic 정보를 잘 포함하고 있는 상위 level의 feature와 잘 합치는 것이 중요하다.

★ 주의 (아래 FPN 그림 참고)
상위 level → 저해상도, semantic (의미), 패턴
하위 level → 고해상도, 세부 구조


Feature Pyramid Network

이를 구현한 것이 neck의 한 종류인 Feature Pyramid Network (FPN) 이다.

Image Credit (표기 변형)

위 이미지에서 볼 수 있듯이 CNN을 통과하면서 여러 수준의 feature map이 생긴다. 상위 level에서 하위 level로 semantic 정보를 전달하기 위해서, FPN에서는 top-down pathway를 추가했다. 상위 level에서 하위 level로 Nearest Neighbor Upsampling을 통해 해상도를 점차적으로 높인다. upsampling된 상위 level의 feature map은 하위 level의 feature map과 lateral connection을 통해 결합된다. 이를 통해 상위 level의 semantic 정보와 하위 level의 세부 정보가 결합되어 더 좋은 feature map을 생성할 수 있다. 그렇게 만들어진 여러 feature map들에서 클래스 score와 bbox가 계산된다.

그러나 FPN은 top-down pathway만을 사용하기 때문에 하위 level의 세부 정보를 상위 level로 전달하지는 못한다. 특히, backbone이 깊을수록 그 정보가 전달되기 어려워진다.


Path Aggregation Network (PANet)

이를 보완하기 위해 고안된 것이 PANet이다. PANet에서는 top-down pathway에 더하여 bottom-up 경로도 추가해서 정보를 양방향으로 전달하도록 했다. 따라서 상위 level도 세부 정보와 semantic 정보를 동시에 가지게 되어 더 정밀한 feature map을 생성할 수 있다.

여기에 adaptive feature pooling도 도입하여 각 객체의 크기에 더 적합한 피라미드 레벨에서 특징을 pooling할 수 있도록 했다. FPN에서는 고정된 해상도의 피라미드 레벨에서만 객체를 처리할 수 있었지만, adaptive feature pooling 덕에 PANet에서는 객체의 크기에 따라 더 유연한 대응이 가능하다.


DetectoRS

DetectoRS에서는 top-down pathway와 bottom-up pathway이 한 번 만 이루어지던 PANet과 달리 이 과정이 반복되어 상위 level과 하위 level의 feature map이 정보를 더 많이 교환하여 더 풍부한 feature map을 만들 수 있도록 했다. 이를 Recurvisve Feature Pyramid라 한다.
이 때 Switchable Atrous Convolution (SAC)를 이용하여 다양한 스케일의 객체 탐지를 잘 할 수 있도록 했다. SAC는 연속적인 픽셀이 아니라, 한 픽셀 건너 한 픽셀로 kernel의 간격을 늘려 더 넓은 receptive field를 얻는 합성곱을 활용하는 것이다. 이때 다른 dilation rate (팽창률; 간격)을 동시에 적용하여 각기 다른 스케일의 정보를 추출한다.

Image Credit


Bi-directional Feature Pyramid (BiFPN)

BiFPN은 EfficientDet 모델에서 도입된 object detection 네트워크 구조이다. PANet처럼 top-down pathway와 bottom-up pathway를 모두 사용했는데, 이 과정에서 상대적으로 불필요한 연결을 제거하여 feature map 간의 경로가 덜 복잡하면서도 중요한 정보는 적절히 결합할 수 있도록 구성되었다.

Image Credit

그리고 BiFPN에서는 중요한 feature map에 더 큰 가중치를 주고, 덜 중요한 feature map에는 작은 가중치를 주면서 결합할 수 있도록 했다.


NAS-FPN

NAS-FPN (Neural Architecture Search for Feature Pyramid Networks)은 FPN의 피라미드 구조를 어떻게 쌓고 연결할지 NAS를 통해 자동으로 학습하여 최적화된 구조를 찾는 모델이다. NAS는 성능이 뛰어난 모델 구조를 자동으로 탐색하여 딥러닝의 최적의 아키텍처를 찾는다.

다만 해당 논문에서 COCO dataset과 ResNet 기준으로 architecture을 찾았기 때문에 범용적이지 못하고, 가장 좋은 성능을 찾는 architecture를 찾기 위한 search 비용이 따로 든다는 단점이 있다.


Augmented Feature Pyramid Network

Augmented Feature Pyramid Network (AugFPN)은 FPN의 한계점을 보완하기 위해 여러 기법을 결합한 모델이다. 먼저 bottom-up path augmentation을 통해 하위 level의 feature를 상위 level로 전달했다.

residual feature augmentation을 도입하여, 다양한 scale의 feature map을 생성하고 동일한 size로 upsampling을 한 뒤 이 feature map들에 가중치를 두어 summation을 한다.

soft RoI selection을 적용하여 모든 scale의 feature에서 RoI projection을 한 뒤 RoI pooling을 한 후, channel-wise 가중치를 계산 후 summation을 한다.

profile
Let it code

0개의 댓글