BiFPN은 특징의 중요도를 어떻게 학습하나
크기만 맞춘 특징 맵을 그대로 더하면 모든 입력이 같은 비중을 가진다. 그러나 낮은 해상도의 의미 정보와 높은 해상도의 위치 정보가 결과에 기여하는 정도는 같지 않을 수 있다. BiFPN은 각 입력에 학습 가능한 가중치를 붙인다.
가장 직접적인 방법은 가중합이다.
\[O = \sum_i w_i I_i\]
softmax로 가중치를 0과 1 사이에 정규화할 수도 있다.
\[O = \sum_i \frac{e^{w_i}}{\sum_j e^{w_j}} I_i\]
논문은 softmax 계산을 피하기 위해 다음의 fast normalized fusion을 사용한다.
\[O = \sum_i \frac{w_i}{\epsilon + \sum_j w_j} I_i\]
여기서 ReLU로 \(w_i \ge 0\)을 만들고, \(\epsilon=0.0001\)을 더해 분모가 0이 되는 상황을 피한다. 논문에서는 softmax 방식과 비슷한 정확도를 보이면서 GPU에서 최대 30% 빠른 결과를 보고했다.
예를 들어 레벨 6의 하향식 특징은 다음처럼 합쳐진다.
\[P^{td}_6 = Conv\left(\frac{w_1P^{in}_6 + w_2Resize(P^{in}_7)}{w_1+w_2+\epsilon}\right)\]
실제 구조는 여기에 depthwise separable convolution, batch normalization, activation을 사용해 비용을 더 줄인다. 중요한 해석은 “가중치가 곧 사람에게 설명 가능한 중요도”라는 뜻이 아니라, 탐지 손실을 줄이도록 학습된 융합 계수라는 점이다.