UMUD 챌린지 ⑩ — 최신 분할 백본 실험: 더 좋은 Dice가 더 좋은 측정은 아니다
⑨편에서는 보정 쪽 축을 거의 다 썼다고 정리했습니다. 남은 축은 분할 모델 자체입니다. 그래서 이틀 동안 서버 네 대에 서로 다른 최신 백본을 나눠 학습시켰습니다. 결과를 한 줄로 요약하면 이렇습니다. 분할 Dice가 높다고 측정 점수가 좋아지지는 않았습니다. 그리고 시드 한 개짜리 “통과”는 믿으면 안 됩니다.
대회 진행 중이라 코드와 대회 이미지는 싣지 않습니다. 그림은 모두 학습 로그와 판정 기록의 숫자로 직접 그린 차트입니다.
1. 무엇을 학습했나
지금 파이프라인은 분할 모델 네 종류의 측정값을 영상마다 중앙값으로 묶습니다. 그중 ResNet-34 U-Net 계열(아래 “mt”)은 시드가 다른 6판을 씁니다. 실험 질문은 하나였습니다. 이 6판에 구조가 전혀 다른 7번째 판을 넣으면 측정이 좋아지는가?
| 백본 | 사전학습 | 서버 | 비고 |
|---|---|---|---|
| SAM 2 Hiera-B+ | SAM 2 (Apache-2.0) | 1, 4 | 인코더 학습률 ×0.2 |
| SAM 2 Hiera-B+ 고해상도판 | 같음 | 2 | 영상을 2배로 키워 넣고 원해상도 skip 추가 |
| DINOv2 ViT-B / ViT-L | DINOv2 (Apache-2.0) | 1, 3, 4 | 패치 14, register 토큰 |
| ConvNeXt-S + UNet++ | ImageNet-22k (Apache-2.0) | 4 | 1/2 해상도 연결을 작은 conv로 채움 |
대회 규정상 상업 사용이 가능한 OSI 라이선스만 쓸 수 있습니다. 그래서 MedSAM2(가중치 research-only), BiomedParse·ConvNeXt-V2 FCMAE(비상업), SAM 3(비 OSI)는 후보에서 뺐습니다. 의료 특화 모델 상당수가 이 조건에 걸립니다.
2. 학습 곡선
검증 Dice. 회색 굵은 선이 기존 ResNet-34 기준판이다
곡선에서 읽히는 것은 세 가지입니다.
- 근막은 모두 0.80~0.83에서 포화합니다. 근막은 두껍고 밝은 띠라서 백본 차이가 거의 드러나지 않습니다. ConvNeXt가 가장 빨리 올라가지만 최종값은 비슷합니다.
- 근섬유 다발은 모두 0.15~0.22에 머뭅니다. 다발은 몇 픽셀 두께의 가는 선이라 Dice 자체가 낮게 나옵니다. 측정에 필요한 것은 픽셀 일치가 아니라 선의 방향과 위치입니다.
- 사전학습 백본은 다발 Dice가 25~35 epoch에서 정점을 찍고 내려갑니다. 반면 ResNet-34는 끝까지 오릅니다. DINOv2는 하락이 가장 큽니다. 패치 14 크기 특징으로 가는 선을 그리기 어려운 것으로 보입니다(추정).
3. 판정: 관문 하나로 본다
새 구성원을 넣을지는 ⑨편에서 만든 관문으로 정합니다. 기존 제출판에 후보를 넣었을 때, public 영상별 오차 모형 3개 × 설정 8가지 = 24가지 평가에서 모두 점수가 내려가야(Δ<0) 통과입니다. 로컬 세트(외부 전문가 35장, 다른 장비 NeuAge)는 참고만 합니다. 로컬과 public이 반대로 움직인 사례가 여러 번 있었기 때문입니다.
비교 기준도 하나 두었습니다. 같은 ResNet-34를 시드만 바꿔 7번째 판으로 넣는 대조군입니다. 판 수가 늘어서 생기는 효과는 이 대조군 범위 안에 들어와야 합니다.
점 하나가 시드 하나다. 회색 띠는 r34 대조군 범위, 빨간 점선은 제출 채택 문턱
첫날의 착각
첫날 server1에서 나온 결과는 이랬습니다.
- SAM 2 Hiera-B+ seed 0: −0.00152, 24/24 통과
- DINOv2 ViT-B seed 0: −0.00122, 24/24 통과
- 대조군 r34 4판: −0.0004~+0.0002, 모두 불통과
둘 다 대조군 범위를 확실히 벗어났습니다. “구조 다양성이 이득을 준다”는 그럴듯한 이야기도 바로 떠올랐습니다. 그래서 다음 날 제출 큐에 Hiera와 DINOv2를 함께 넣은 판을 올렸습니다.
시드를 늘리자 줄어든 효과
그래도 시드를 늘려 확인했습니다. 결과를 보기 전에 판정 기준도 정했습니다. Hiera 4시드를 모두 넣은 판이 통과해야 채택한다.
| 판 | 관문 Δ | 통과 |
|---|---|---|
| Hiera seed 0 | −0.00152 | 24/24 |
| Hiera seed 2 | −0.00107 | 24/24 |
| Hiera seed 3 | +0.00027 | 6/24 |
| Hiera seed 4 | −0.00028 | 19/24 |
| Hiera 4시드 묶음 (사전 등록) | −0.00062 | 20/24, 불통과 |
| DINOv2 seed 0 | −0.00122 | 24/24 |
| DINOv2 seed 2 | −0.00037 | 17/24 |
| SAM 2 고해상도 seed 0 / 1 | −0.00152 / −0.00154 | 24/24, 24/24 |
| ConvNeXt-S UNet++ seed 0 / 1 | −0.00020 / +0.00110 | 17/24, 0/24 |
Hiera 네 시드의 평균은 −0.0007입니다. 대조군보다 조금 나은 정도이고, 첫날 본 −0.0015의 절반도 안 됩니다. 같은 구조라도 구성원 하나의 시드만 바꾸면 관문 Δ가 ±0.001 움직입니다. 9판 묶음에 시드 하나를 더해 10판으로 만들면 Δ가 −0.0019에서 −0.0006으로 바뀌기도 했습니다. 중앙값 앙상블은 판이 하나 늘 때마다 “가운데 값”이 바뀌기 때문입니다.
결국 첫날의 “통과”에는 시드 운이 크게 섞여 있었습니다. 시드 하나만 보고 채택했다면 private에서 그 운을 그대로 돌려줬을 것입니다.
4. Dice와 측정 기여는 따로 논다
ConvNeXt UNet++는 다발 Dice가 가장 높습니다(0.221). 그런데 측정 기여는 가장 나쁩니다. DINOv2는 Dice가 가장 낮은데 seed 0은 크게 통과했습니다. ⑨편 무렵에 한 비교에서도 분할이 가장 나쁜 nnU-Net이 다른 장비(NeuAge)에서는 가장 많이 기여했습니다.
이유는 측정 방식에 있다고 봅니다. 각도(PA)와 길이(FL)는 분할 맵 전체가 아니라 다발 몇 가닥의 기울기와 근막 두 줄의 위치로 계산합니다. Dice는 선 굵기와 끊김에 민감하지만 측정은 그렇지 않습니다. 또 중앙값 앙상블에서는 평균 정확도보다 다른 구성원과 다르게 틀리는 정도가 더 중요합니다. 같은 CNN 계열인 ConvNeXt는 Dice는 올렸지만 틀리는 방식이 기존 r34와 비슷했습니다. 그래서 시드끼리 측정이 크게 흔들려도 앙상블에는 보탬이 되지 않은 것으로 봅니다(추정).
5. 정리
- 최신 분할 백본 4종, 13판을 학습했습니다. 사전 등록 기준으로 채택된 판은 아직 0개입니다.
- Hiera(SAM 2) 계열 평균 효과는 약 −0.0007입니다. 대조군보다는 낫지만 제출 채택 문턱(−0.002)에는 한참 못 미칩니다.
- SAM 2 고해상도판은 두 시드 모두 −0.0015로 가장 안정적입니다. 지금 시드 두 개를 더 학습하고 있습니다. 판정 기준(4시드 묶음)은 미리 정해 두었습니다.
- 오늘 아침 제출에는 첫날 큐에 올린 Hiera+DINOv2 판이 그대로 들어갑니다. 결과를 보기 전에 정한 후보라서 바꾸지 않고, public 실측으로 확인합니다.
이번 실험에서 얻은 가장 큰 것은 백본이 아니라 판정 규칙이었습니다. 앙상블에 무언가를 넣는 판정은 시드 하나로 하지 않습니다. 묶음 기준은 결과를 보기 전에 정합니다. private 점수로 순위가 정해지는 대회에서는 public에서 얻은 운이 그대로 빚이 되기 때문입니다.
