git : https://github.com/hdjang/Feature-Selective-Anchor-Free-Module-for-Single-Shot-Object-Detection
해당 논문은 anchor-base 방식(SSD, YOLO, RetinaNet…)에 FPN과 anchor-free 모듈을 이용합니다. anchor-free 모듈을 통해 box regression과 classification에 최적화된 pyramid feature를 선택하여 성능을 향상시키는 방법을 제안합니다.
저자는 기존 anchor-base들은 Figure 2.의 그림처럼 각 pyramid feature들은 사전에 크기가 정해진 물체에 최적화되어지기 때문에 정의되지 않은 크기를 가진 물체에서는 비효율적인 한계가 있다고 합니다.(1. heuristic-guided feature selection) 또한 overlap-base 이기에 겹쳐진 물체들에 건너뛰기 때문에 한계(2. overlap-based anchor sampling)가 있다고 이야기합니다. 해당 논문은 위의 두 한계를 극복하고자 1) anchor-free branches, 2) online feature selection strategy를 이용하였습니다.
또한 anchor-free 방식은 기존 anchor-base에서 잘 찾지 못하는 물체들(겹치거나 작은 물체)을 잘 찾아 내었고, 하지만 비교적 anchor-base에 비해 성능이 떨어지는 면이 있습니다. 저자는 anchor-free와 anchor-base를 같이 사용함으로써 높은 성능을 가진 Detector를 만들 수 있다고 주장합니다. (Table 2. 참고)
Feature-Selective-Anchor-Free(이하, FSAF) 는 기존의 anchor-base의 detector 구조에 몇개의 layer로 구성된 FSAF module을 쉽게 플러그 인 할 수 있다고 말합니다. Figure 3.은 FSAF의 전반적인 모델 구조 입니다. 기존 FPN을 이용하는 모델 구조를 그대로 이용하여 layer 별로 predict을 합니다.(SSD와 비슷한 구조로) 앞서 설명한 모델을 base line으로 FSAF 모듈을 플러그 인을 하게 됩니다.
기존 anchor-based branch에 들어간 feature들은 anchor-free branch로 빠져나오며, 이 값들을 통해 얻은 loss를 이용하여 Online Feature Selection을 진행합니다.
Feature Selective Anchor-Free Module
Network Architecture
FSAF에서 가장 재밌는 부분은 정말 간단한 구조를 가졌다는 것입니다. 기존 SSD의 class, box의 fully conv layer(subnets)의 중간 feature를 3×3 conv2D를 걸치면 끝이라는 것입니다. Figure 4. 를 보면 점선으로된 박스 육면체들이 추가로 생선된 feature map입니다. 여기서 상단의 K는 num of class, 하단의 4는 SSD와 동일한 {cx, cy, w, h}입니다.
Ground-truth and Loss
Classification OutPut
bounding box coordinates b = \left[ x, y, w, h \right], x = cx, y = cy 를 feature pyramid P_{l}, 에 맞게 사영하여
projected box b_{p}^{l} = \left[ x_{p}^{l}, y_{p}^{l} , w_{p}^{l} , h_{p}^{l} \right], b_{p}^{l} = b/2^l 만든다.
만들어진 위의 박스를 아래의 수식을 통해 box를 만든다.
x_{e}^{l} = x_{i}^{l} = x_{p}^{l}
y_{e}^{l} = y_{i}^{l} = y_{p}^{l}
w_{e}^{l} = \epsilon_{e}w_{p}^{l}, w_{i}^{l} = \epsilon_{i}w_{p}^{l}
h_{e}^{l} = \epsilon_{e} h_{p}^{l}, h_{i}^{l} = \epsilon_{i} h_{e}^{l}
constant scale factor \epsilon_{e} = 0.2, \epsilon_{i} = 0.5
effective box b_{e}^{l} = \left[ x_{e}^{l}, y_{e}^{l}, w_{e}^{l}, h_{e}^{l} \right] 는 Figure 5. 에서 하얀 영역에 속하며 instance가 존재하는 영역입니다. Positive value로 채워져 있으며, 직접적으로 학습에 영향을 줍니다. 만약 한 레벨에서 겹치게 된다면 작은 면적을 가진 것이 우선순위를 가집니다.
ignoring box b_{i}^{l} = \left[ x_{i}^{l}, y_{i}^{l}, w_{i}^{l}, h_{i}^{l} \right] 는 Figure 5. 에서 회색 영역입니다. Ignoring bounding box에서 위의 흰색 영역을 제외한 b_{i}^{l} - b_{e}^{l} 영역이며, gradient를 back propagation을 시키지 않습니다.
Influence of Ignoring Region on Adjacent. ignoring box가 앞 뒤 feature 영역에서도 영향을 끼칩니다. Adjacent feature level b_i^{l-1}, b_i^{l+1} 들도 또한 ignoring region이 됩니다.
Rest Region. instance가 존재하지 않는 공간은 zero-fill이 됩니다.
Focal Loss. 실험적인 결과로 얻은 hyperparameters \alpha = 0.25, \gamma = 2.0 을 이용했으며, 각 level은 summation하고 effective box regions의 총 픽셀 수로 normalization을 진행합니다.
Box Regression Output
Distance between the current pixel location (i, j) \left[ d_{t _{i, j} }^{l}, d_{l _{i, j} }^{l}, d_{b _{i, j} }^{l}, d_{r _{i, j} }^{l} \right], (i, j) \in b_{e}^{l}
IoU loss를 이용하며, Normalization d_{i, j}^{l } / S, S = 0.4 합니다. Box Regression Module 역시 Ignore Region과 Effective Region이 있으며, Ignore Region은 Back Propagation하지 않습니다.
Online Feature Selection
Figure 6. 과 같이 아키텍처에서 FPN에서 각 Layer 별로 Feature Map이 나오게됩니다. 이때 각 Layer에서 Anchor-Free Branch로 들어간 Feature Map은 focal loss와 IoU loss를 return 하게 됩니다. 이때 feature map에서 나온 각 Instance에 대한 loss를 Summation하여 minimize하는 pyramid를 찾습니다. 이때 찾은 가장 작은 pyramid가 Instance로써 학습됩니다.
Benchmark – coco test-dev
anchor-base와 anchor-free를 결합하는 방식이 신선한 것 같습니다. Benchmark에서 AP_{L} 결과에 대해서 기존 논문에 비해 성능이 떨어지는 점에 대해서 논문에서는 별다른 분석 설명이 없나요?