Github: https://github.com/XuJiacong/PIDNet
Paper: https://arxiv.org/pdf/2206.02066
주로 도로 환경에서 freespaces, lane, pedestrian 등을 빠르고 정확하게 분리할 때 사용합니다.
PIDNet은 PID 컨트롤러의 개념을 차용해 네트워크를 설계했습니다. PID 컨트롤러는 시스템의 오차를 줄이기 위해 비례(P), 적분(I), 미분(D) 요소를 조합하는데, PIDNet은 이를 딥러닝에 적용해 다음과 같은 문제를 해결합니다:
1. 오버슈트 문제: 기존 2분기 네트워크에서 세부 정보가 문맥에 묻히는 현상을 경계 정보를 추가해 완화
2. 실시간성: 계산 효율성을 높여 빠른 추론 속도를 유지
크게 3가지 Branch로 나누어집니다.
1. P-branch (Parsing)
-
의미 있는 high-level 정보 추출
-
큰 물체나 장면 전반의 컨텍스트를 파악
2. I-branch (Intermediate)
-
P-branch와 D-branch 사이를 연결하는 브리지 역할
-
정보 균형 맞추기 위해 사용
3. D-branch (Detail)
-
edge나 fine-grained boundary 등 정밀한 경계 추출
1. Detail branch가 "경계 중심"으로 학습되게 하기 위함
일반적인 segmentation GT는 object 내부 픽셀도 모두 포함하는데 하지만 D-branch는 전체 object 영역이 아니라, "어디서 object가 끝나고 배경이 시작되는지"를 알아야 합니다. 그래서 GT에서 edge만 추출(Canny) → D-branch의 학습 target으로 사용
즉, D-branch는 object의 윤곽선(edge)을 학습하고, P-branch는 object의 의미(class)를 학습하는 역할 분담이 됩니다.
2. 정보 분산 구조 (Progressive Information Distillation)를 위한 명확한 역할 부여
각 branch가 역할 혼란 없이 자신이 봐야 할 정보에 집중할 수 있도록 도와주는 게 Canny edge 사용의 핵심 목적입니다.