작은 모델이 큰 모델의 장점을 가져오려면,
어떤 정보가 결정적이고, 그걸 어떻게 전달해야 하는가?

여기서 중요한 전제가 있습니다. CACKD의 Teacher는 단순히 segmentation만 잘하는 모델이 아닙니다.
Teacher는 (1) 플레어 영역을 찾고 → (2) 복원하고 → (3) 복원 결과로 세그멘테이션를 수행하는 순차 파이프라인을 갖습니다.
1) Teacher는 “복원+세그멘테이션”인데, Student는 왜 “세그멘테이션만” 하는가?
논문에서 CACKD는 Teacher와 Student 역할을 이렇게 분리합니다.
- Teacher: multi-layer Grad-CAM으로 플레어 영역을 찾고, UNet++로 복원한 뒤, 그 복원 이미지로 세그멘테이션을 수행
- Student: 복원 과정은 생략하지만, KD를 통해 Teacher의 표현을 최대한 “상속”해서 성능 하락을 줄입니다.
이 구조가 꽤 현실적인 이유는 간단합니다.
복원은 계산량도 크고(학습도 오래 걸리고), 추론에서도 부담이 큽니다. 그래서 실전에서는 “ 세그멘테이션만” 빠르게 하고 싶은 순간이 많습니다.
CACKD는 그 현실을 받아들이고, 대신 복원으로 얻는 ‘좋은 표현’을 KD로 옮겨오자는 설계로 갑니다.
2) CACKD의 시작점: multi-layer Grad-CAM은 “마스크를 크게 잡지 말자”에서 출발합니다
1편에서 제가 했던 고민(단일 레이어 CAM은 거칠거나 넓거나 놓치거나)이 논문에서 더 명확히 정리됩니다.
- 얕은 레이어 Grad-CAM: 해상도가 커서 디테일은 좋지만 배경까지 같이 반응하기 쉽고
- 깊은 레이어 Grad-CAM: 전역 의미는 좋지만 디테일이 떨어져 세밀한 플레어를 놓치기 쉽다
그래서 논문은 VGG16 각 블록의 Grad-CAM을 뽑아 결합합니다.
여기서 핵심이 재밌습니다. 결합을 평균(average)이나 가중합(weighted sum)으로 하면, 얕은 레이어의 과활성(배경)이 퍼지거나 파라미터 없는 결합이 불안정해질 수 있습니다.
그래서 pixel-wise minimum을 써서 “여러 레이어에서 공통으로 강하게 찍히는 영역(합의된 손상 영역)”만 남깁니다.

이렇게 하면 마스크가 “필요 이상으로 커지는” 걸 억제하면서도, 얕은 레이어 디테일과 깊은 레이어 의미를 동시에 만족시키는 방향이 됩니다.
3) 복원 단계: “마스크만 주는 게 아니라, 복원용 입력을 3종으로 만든다”

논문은 multi-layer Grad-CAM을 그냥 마스크로만 쓰지 않고, 복원 네트워크 입력을 강화합니다.
- (1) CAM을 곱해 손상 영역을 강조한 입력
- (2) threshold로 이진화한 마스크 M
- (3) 마스크 영역을 1로 덮어 “인페인팅처럼” 채우도록 유도한 입력
그리고 복원 네트워크는 UNet++ 기반으로, 원본 3채널 + 보조입력 3종을 채널 결합해 총 10채널 입력을 받습니다.
게다가 복원 품질을 위해 PatchGAN 기반 adversarial도 같이 둡니다.
4) 그럼 Student에게 무엇을 증류할까

CACKD의 KD는 로짓만이 아니라, 총 4종 증류로 설계됩니다.
- Logits distillation
- Attention map distillation (CCAM의 attention feature map)
- Class correlation distillation (클래스 간 상관)
- Channel correlation summation distillation (인코더 여러 블록의 채널 상관을 합산)
즉, “복원으로 얻은 좋은 표현”을 Student가 직접 복원 없이도 쓰게 만드는 장치가 KD의 역할입니다.
5) 각 KD 항목은 “어떤 지식”을 옮기는가
5.1 Logits distillation: 결과 경계(결정경계)의 큰 윤곽을 따라가게 한다

논문은 전통적인 KL-div 대신 L1 loss로 로짓을 맞춥니다.
이유는 KL이 스케일/배치 변화에 민감해 불안정할 수 있고, L1이 더 안정적으로 학습될 수 있다는 설명입니다.
5.2 Attention map distillation: “Teacher가 중요하다고 본 곳을 그대로 배우게 한다”

논문에서는 Teacher/Student 사이에 복원 여부로 인한 feature gap이 크기 때문에, CCAM에서 나온 attention map 자체를 L1로 맞춰서 “주의 분포”를 전달합니다.
이게 중요한 이유는, Student가 복원을 하지 않아도
Teacher가 복원 과정에서 확보한 “중요 영역에 대한 시각적 단서”를 간접적으로 따라가게 만들기 때문입니다.
5.3 Class correlation distillation: “클래스 간 헷갈림 구조”를 배운다

여기서는 세그멘테이션 출력 로짓으로부터 클래스 간 상관 행렬을 만들고(정규화 + 코사인 유사도), Teacher/Student 행렬을 맞춥니다.
직관적으로는:
- “도로/인도/건물”처럼 함께 등장하는 클래스는 어떤 상관 패턴이 있고
- “표지판/기둥/사람”처럼 헷갈리기 쉬운 클래스는 어떤 혼동 패턴이 있는데
Teacher가 가진 그 구조를 Student에게 넘기는 느낌입니다.
5.4 CCSM: “여러 레벨(인코더 블록)의 상관 정보를 하나로 합쳐서” 전달한다

논문은 인코더 블록별 feature map에서 상관 행렬을 만들고, 학습 가능한 계수로 가중합해 전체 상관을 만들며 이를 KD로 씁니다. 한 레이어의 상관은 편향될 수 있으니, 여러 해상도/레벨의 상관을 모아 ‘요약 상관’을 만들고 그걸 전달합니다.
'Research > CACKD' 카테고리의 다른 글
| 7. Training (0) | 2026.02.03 |
|---|---|
| 5. CCAM (0) | 2026.02.03 |
| 3. Knowledge Distillation (0) | 2026.01.27 |
| 2. 복원-세그멘테이션 스테이지 설계 (0) | 2026.01.26 |
| 1. CAM-FRN & Multi-layer Grad-CAM (0) | 2026.01.26 |