Mingxing Tan, Ruoming Pang, Quoc V. Le
1.
EfficientDet 은 “EfficientNet : Improbing Accuracy and Efficiency through AutoML and Model Scaling” 의 저자들이 속한 Google Brain 팀에서 쓴 논문이다.
여기서 BiFPN(bi-directional feature pyramid network)을 제안하였다. 이는 기존 FPN에서 레이어마다 가중치를 주어 좀 더 각각의 층에 대한 해상도 정보가 잘 들어갈 수 있도록 하는 트릭이다. 본 논문이 가지는 차별점은 다음과 같다.
- Efficient multi-scale feature fusion
- 본 논문에서는 기존 FPN을 사용하는 선행 연구들이 모두 서로 다른 input feature 들을 합칠 때 구분없이 단순히 더하는 방식을 사용하고 있음을 지적하였다. ->내가 이번 PD challenge에서 사용한 방식 하지만 나는 서로 같은 해상도일 때만 더해줌
- 서로 다른 input feature 들은 해상도가 다르기 때문에 output feature 에 기여하는 정도를 다르게 가져가야함을 주장하였다. 단순히 더하기만 한다면 같은 weight 로 기여하기 때문이다.->해상도가 다른 이미지 끼리도 서로 더해주는 과정을 추가했음
- 그래서 간단하지만 효과적인 weighted bi-directional FPN(BiFPN) 구조를 제안한다.
- Model scaling
- EfficientNet 에서 제안한 Compound Scaling 기법은 모델의 크기와 연산량을 결정하는 요소들인 width, depth, resolution 을 동시에 고려하여 모델의 사이즈를 증가시키는 방법을 의미한다. 이러한 아이디어를 EfficientDet의 backbone, feature network, box/class prediction network 등 모든 곳에 적용하였다.
FPN 을 이용한 방법들을 모아둔 그림은 위와 같다.
(a) 전통적인 FPN 구조 (같은 scale 에만 connection 이 존재)
(b) PANet 은 추가로 bottom-up pathway 를 FPN에 추가한 방법 (같은 scale 에만 connection 이 존재)
(c) AutoML의 Neural Architecture Search 를 FPN에 적용시킨 방법 (scale 이 다른 경우에도 connection 이 존재하는 Cross-Scalse Connection 적용)
(d) 와 (e) 는 본 논문에서 추가로 제안하고 실험한 방식
(f) 본 논문에서 제안하는 BiFPN 구조
2.Weighted Feature Fusion
기존 FPN 에서는 서로 다른 resolution 의 input feature 들을 합칠 때, 같은 해상도가 되도록 resize 를 시킨 뒤 합치는 방식을 사용한다. 본 논문에서는 이러한 점을 개선하기 위해 input feature 에 가중치를 주고, 학습을 통해 가중치를 배울 수 있는 방식을 제안하였다.
weight 아래와 같이 세 가지 방식으로 줄 수 있다.
- scalar ( = per-feature)
- vector ( = per-channel)
- multi-dimensional tensor ( = per-pixel)
본 논문에서는 scalar 를 사용하는 것이 정확도와 연산량 측면에서 효율적임을 실험을 통해서 밝혔고, scalar weight 를 사용하였다고 한다. input feature 에 가중치를 주는 Weighted Feature Fusion 방법은 아래와 같이 세가지로 나뉜다.
- Unbounded Feature Fusion
이는 unbound 되어있기 때문에 학습에 불안정성을 유발할 수 있어서 weight normalization 을 사용하였다고 한다. ( However, since the scalar weight is unbounded, it could potentially cause training instability )
- SoftMax-based Feature Fusion
Softmax 를 사용한 것인데 이는 GPU 하드웨어에서 slowdown 을 유발한다고 한다.
- Fast normalized Feature Fusion
weight 들은 ReLU를 거치기 때문에 non-zero 임이 보장되고, 분모가 0이 되는 것을 막기 위해 0.0001 크기의 입실론을 넣어준다. weight 값이 0~1 사이로 nomalize 가 되는 것인 Softmax 와 유사하며 ablation study 를 통해 softmax-based fusion 방식보다 좋은 성능임을 보여주고 있다고 한다.
위 BiFPN 을 기반으로 EfficientDet 이라는 One-stage Detector 구조를 제안하였다.
기존 Compound Scaling 처럼 input 의 resolution 과 backbone network 의 크기를 키워주었으며, BiFPN 과 Box/class network 도 동시에 키워 다음과 같이 실험결과를 내뱉었다.
출처:
전부터 볼려고 하고 못보던 논문인데, 요약해주셔서 감사합니다. BiFPN(bi-directional feature pyramid network)이 중요한 내용 같네요. ‘레이어마다 가중치를 주어 좀 더 각각의 층에 대한 해상도 정보가 잘 들어갈 수 있도록 하는 트릭’이라고 말씀하셨는데, 이게 Fig 2.의 BiFPN 구조와 연결되어 이해가 되지를 않네요. BiFPN를 중심으로 설명 부탁드립니다
기존 FPN구조에서는 두 방향으로부터 정보를 얻습니다.첫째는 top->bottom으로 내려오는 방향에서 하나를 얻고 그리고 둘째 skip connection 즉 동일한 스케일의 feature(backbone network을 통해 형성된 )에서 또 하나를 얻는 구조입니다.
하지만 이렇게만 한다면 동일 스케일에서의 skip connection만 이루어지기 때문에 비교적 여러 해상도 정보가 들어가지 않습니다.따라서 bi FPN에서는 그림에서 보이다 싶이 다른 레벨이여도 skip connection이 이루어지는 것을 볼 수 있습니다.하지만 여기서 다른 레벨이라는 것은 해상도가 다른 feature들 이기때문에 더할 때 그냥 동등하게 더해선 안될것입니다.따라서 가중치를 주어 어떻게 더해야 할지 학습하는 것이고 이것이 묻고 계신 ‘레이어마다 가중치를 주어 좀 더 각각의 층에 대한 해상도 정보가 잘 들어갈 수 있도록 하는 트릭’에 답이 될 수 있을것입니다.
BiFPN 을 설계할 때 작은 scale의 노드와 합쳐주고 해당 입력 노드를 다시 합친 다음 작은 scale의 노드와 합치게 설계한 이유가 따로 나와 있나요?