Wasserstein 거리로 클래스별 domain gap 진단하기 | Ridgeline Synthetic
Sim2Real domain gap을 막연히 '크다/작다'로 말하는 대신, 클래스별로 정량 측정하는 방법. Wasserstein(W1) 거리, 픽셀 통계, JSD·MMD 비교와 실제 진단 사례를 정리합니다.
“합성 데이터와 실데이터의 차이가 크다”는 말은 그 자체로는 아무 행동도 만들지 못합니다. 어느 클래스의, 어떤 통계가, 얼마나 다른지를 수치로 잡아야 비로소 어디를 고칠지 결정할 수 있습니다. 이 글에서는 클래스별 domain gap을 정량 진단하는 실용적인 방법을 정리합니다.
왜 ‘클래스별’인가
전체 이미지 분포를 한 번에 비교하면, 정작 문제가 되는 소수 클래스의 갭이 다수 클래스의 평균 뒤에 숨습니다. semantic segmentation처럼 클래스별 마스크가 있는 과제에서는 각 클래스의 픽셀 집합을 따로 떼어 분포를 비교하는 것이 훨씬 진단력이 높습니다. 예를 들어 지면(Soil)과 흙더미(Dump)는 시각적으로 인접하지만, 둘의 domain gap 크기는 완전히 다를 수 있습니다.
1. 픽셀 통계 — 가장 싸고 직관적인 첫 진단
가장 먼저 보는 것은 클래스별 픽셀 표준편차입니다. 합성 텍스처가 실환경보다 균일하게 렌더링되는 경향이 흔하기 때문입니다.
| 항목 | Sim | Real |
|---|---|---|
| Soil 픽셀 Std (R,G,B avg) | ~20 | ~34 |
이 표 하나만으로도 “합성 Soil이 너무 균일하다”는 가설을 세울 수 있습니다. 평균(mean)은 비슷해도 분산(variance)이 어긋나면 모델은 분산을 단서로 잘못된 결정 경계를 학습합니다.
2. Wasserstein(W1) 거리 — 분포 간 ‘이동 비용’
픽셀 통계는 1·2차 모멘트만 봅니다. 분포의 전체 형태 차이를 보려면 분포 간 거리를 직접 계산합니다. 자주 쓰는 세 가지는 다음과 같습니다.
- Wasserstein W1 (Earth Mover’s Distance): 한 분포를 다른 분포로 바꾸는 데 드는 최소 ‘이동 비용’. 분포가 겹치지 않아도 의미 있는 값을 주고, 크기 해석이 직관적입니다.
- JSD (Jensen-Shannon Divergence): 대칭화된 KL. 0~1로 bounded되어 비교가 쉽지만, 분포가 거의 겹치지 않으면 포화됩니다.
- MMD (Maximum Mean Discrepancy): 커널 기반. 고차원 feature 분포 비교에 적합하고 미분 가능해 학습 손실로도 쓸 수 있습니다.
실무에서는 픽셀/저차원 통계에는 W1을, deep feature 분포에는 MMD를 함께 쓰는 조합이 안정적입니다.
위 굴착기 사례에서 클래스별 W1을 측정한 결과는 다음과 같았습니다.
| 비교 | W1 | 해석 |
|---|---|---|
| Sim Soil ↔ Real Soil | 0.0768 | 큼 |
| Sim Dump ↔ Real Dump | 0.1506 | 매우 큼 |
이 수치는 “Soil과 Dump 둘 다 갭이 있지만 Dump가 더 심하다”는 우선순위를 분명히 보여줍니다.
3. 진단을 해소로 — 그리고 다시 측정
진단의 가치는 해소 후 같은 지표로 재측정할 때 완성됩니다. Soil에 한정한 style transfer(Soil-selective FDA)를 적용한 뒤 W1을 다시 쟀습니다.

Soil 갭은 0.0768 → 0.0322로 −58% 줄었고, 픽셀 Std도 20 → 34로 실환경 수준에 맞춰졌습니다. 반면 Dump 갭은 거의 변하지 않았습니다(0.1506 → 0.1565). 이 “변하지 않음”도 중요한 진단 결과입니다 — Soil만 건드렸으니 Dump가 그대로인 것은 일관성 있는 결과이고, 동시에 Dump-selective 보강이 다음 과제임을 명확히 합니다.
진단이 모델 성능으로 이어졌는가
분포 거리를 줄이는 것 자체가 목적은 아닙니다. 최종 확인은 downstream 성능입니다. 위 교정 후 rare class Dump IoU가 +11.14pp, 안전 핵심 Human Recall이 +6.27pp 올랐고 전체 mIoU도 +3.96% 개선되어 Pareto PASS를 만족했습니다. 분포 진단 → 표적 해소 → 성능 개선이 한 줄로 연결된 셈입니다.
전체 측정 프로토콜(sequence-disjoint validation 포함)과 backbone-agnostic 검증은 굴착기 케이스 스터디에 정리돼 있습니다.
실무 체크리스트
- 클래스별로 픽셀 마스크를 분리해 통계를 따로 본다
- mean뿐 아니라 variance·분포 형태를 본다 (W1/JSD/MMD)
- 가장 갭이 큰 클래스부터 표적 해소한다
- 해소 후 같은 지표로 재측정하고, downstream 성능까지 확인한다
- 해소되지 않은 갭은 숨기지 말고 후속 과제로 명시한다
domain gap을 측정 가능한 대상으로 다루면, 합성 데이터는 “느낌”이 아니라 “공학”이 됩니다. 의뢰자 도메인의 클래스별 갭 진단이 필요하면 문의로 연락 주세요.