이전 YOLOv10의 Architecture에 대해 공부하다가 해당 이미지에 대해 PAN이 하는 역할에 대해 조사하던 중 추가적으로 정리할만한 가치가 있다 판단하였다.
Regression Head : 회귀 헤드라고 불리며 Bounding Box를 계산하는데 사용된다.
YOLO에서는 Onjectness Score(객체가 존재할 확률)를 Regression Head에 포함하여 쓰이는 경우가 대부분이며 YOLOv8에서는 Anchor를 사용하여 계산하고 Anchor를 사용하지 않는 YOLOv10의 경우에는 객체의 중심 좌표와 크기를 one-to-one Head에서 출력된 정보와 비교하며 Bounding Box를 계산한다.
Classification Head : 분류 헤드라고 불리며 해당 객체에 대한 Class를 예측하고 학습하는 Head이다.
Detection 작업에서는 예측된 Bounding Box 내에 어떤 Class가 포함되어있는지를 하습하며 클래스에 대한 신뢰도 점수를 기반으로 예측한다.
두 헤드는 각각의 예측과 오류값을 기반으로 동시에 학습된다.
PAN은 Path Aggregation Network의 약자로 본래는 Instant Segmentation모델에 대해 제작되었지만 성능이 좋아 여러 AI모델에서 기용하고 있다.
YOLOv3와 yolov8의 모델 구조는 다음과 같다.


해당 두 Architecture에서 자잘한 레이어들에 대한 차이점은 물론 존재하지만 직접적으로 보이는 가장 큰 차이점은 Neck영역으로 구성되는 파트이다.
YOLOv3의 경우 FPN(Feature Pyramid Networks)를 사용하고 있고 YOLOv8의 경우 FPN을 개량한 PAN(Path Aggregation Network)을 사용하고 있다.
FPN은 Top-Down을 기반으로 상위 계층에서 하위 계층으로 Conv레이어를 거치며 레이어가 합쳐지고 PAN은 기존의 FPN구조에 Bottom-Up을 기반으로 하는 구조가 합쳐저서 구성되어 있다.
설명 이전에 Backbone에서 Bottom-Up과정이 수행되지만 각 특정 레이어(Yolov8의 예시에서 4, 6, 9 layer)에서 특징맵을 가져오기 때문에 해당 특징들에 대한 조합이 이루어지지 않는다. 해당 과정을 Neck에서 수행해준다.

두 구조에 대한 차이점을 직관적으로 이야기하면 Head가 받는 특징맵 정보의 질의 차이이다.
FPN을 사용하는 YOLOv3의 경우 Backbone에서 출력된 레이어에 대해 한번의 Conv과정을 통해 low-level feature(edge, color)을 조합한 high-level feature을 학습하게 되된다.
PAN을 사용하는 YOLOv8의 경우 SPPF에서 출력된(YOLOv3를 예시로 들면 하늘색 영역의 Neck) 특징맵이 한번 FPN구조를 따라간 다음 다시 Bottom-Up구조를 거치며 low-level feature를 받게되어 high-level의 특징맵을 가진 2020512*w사이즈를 받는 Head에 대해서도 강한 low-level feature의 정보를 가지게 된다.
예시를 들게 된다면 FPN은 문제집 하나를 푸는 것과 같고 PAN은 문제집 하나를 풀고 여러 유형을 결합한 문제집를 다시 한번 푸는 것과 같다.
PANet( Path Aggregation Network for Instance Segmentation )
신경망의 정보를 Head로 전달하는 과정을 개선하기 위한 논문.

PAN을 설명하기 위한 구조로 (a)영역에 대해 FPN Backbone으로 칭하고 (b)영역에 대해 Bottom-up path augmentaion작업을 수행한다.
FPN에서 바로 Head로 연결되면 low-level featrue의 정보를 Big object에서 직접적으로 활용하기 힘들기 때문에 각 특징의 특성을 직접 연결하는 방식으로 여러 해상도에 대해서 low-level feature과 high-level feature을 사용할 수 있게 한다.
해당 논문에서는 FPN에서 생성한 레이어들의 해상도(P5, P4, P3, P2)에 맞춰 같은 크기의 해상도를 가지는 특징맵(N5, N4, N3, N2)들을 구성한다. P2와 N2는 동일한 특징맵이다.

N_n 특징맵들은 3*3_Conv작업을 거치며 해상도가 낮아진 다음 P(n+1) 특징맵들과 Concat레이어를 통해 합쳐지며 새로운 특징맵 N(n+1)을 생성한다. 해당 과정을 반복하며 최종적으로 N5특징 맵을 가지게 된다.