- FPEM은 Feature Pyramid Enhancement Module의 약자이다.
- 해당 모듈은 PAN++모델의 neck부분에 나오는 모듈로, 4개의 서로 다른 해상도를 가진 Featuremap을 잘 섞어주는 역할을 한다.

- 4개의 featuremap들의 표현력을 잘 유지한 채로 값을 합치는 게 목표다.
- 그림처럼 Up-Scale 단계에서는 해상도가 낮은 featuremap을 해상도가 높은 featuremap과 합치기 위해서, 낮은 해상도를 2배로 증강시키고(upsample) element-wise 더하기 연산을 한다. 그리고 Up-Scale 단계에서 생긴 결과값들을 Down-Scale단계에서 한번 더 upsample하여 더해준다. 그리고 각 결괏값은 depthwise convolution과 보통 convolution, 그리고 batch normalization을 거친다. (depthwise convolution은 단일 채널에 대해서만 적용되는 conv filter를 사용하기 때문에, 각 채널 고유의 표현력이 유지되는 장점이 있다. pytorch에서는
groups
인자를 통해 사용가능하다.)
- Up-scale과 Down-scale로 이루어진 FPEM의 피라미드 구조는 ResNet의 residual layer나 UNet의 contracting path결괏값을 expanding path에 더해주는 것처럼, 신경망층이 깊어지면서 표현력이 희미해지지 않도록 유지하기 위한 장치라고 보면 된다.
- PAN++에는 FPEM의 구조를 FPEM1과 FPEM2로 구분해놓았는데, 그 둘의 차이점은 아래와 같다.
- FPEM1과 FPEM2의 차이점

fpem1

fpem2 : Residual block 처럼 FPEM을 거친 후, 각각의 초기값들(f1,f2,f3,f4)을 한번씩 다시 더해준다.