Post

UMUD 챌린지 ⑩ — 최신 분할 백본 실험: 더 좋은 Dice가 더 좋은 측정은 아니다

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-LDINOv2 (Apache-2.0)1, 3, 4패치 14, register 토큰
ConvNeXt-S + UNet++ImageNet-22k (Apache-2.0)41/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.0015224/24
Hiera seed 2−0.0010724/24
Hiera seed 3+0.000276/24
Hiera seed 4−0.0002819/24
Hiera 4시드 묶음 (사전 등록)−0.0006220/24, 불통과
DINOv2 seed 0−0.0012224/24
DINOv2 seed 2−0.0003717/24
SAM 2 고해상도 seed 0 / 1−0.00152 / −0.0015424/24, 24/24
ConvNeXt-S UNet++ seed 0 / 1−0.00020 / +0.0011017/24, 0/24

Hiera 네 시드의 평균은 −0.0007입니다. 대조군보다 조금 나은 정도이고, 첫날 본 −0.0015의 절반도 안 됩니다. 같은 구조라도 구성원 하나의 시드만 바꾸면 관문 Δ가 ±0.001 움직입니다. 9판 묶음에 시드 하나를 더해 10판으로 만들면 Δ가 −0.0019에서 −0.0006으로 바뀌기도 했습니다. 중앙값 앙상블은 판이 하나 늘 때마다 “가운데 값”이 바뀌기 때문입니다.

결국 첫날의 “통과”에는 시드 운이 크게 섞여 있었습니다. 시드 하나만 보고 채택했다면 private에서 그 운을 그대로 돌려줬을 것입니다.

4. Dice와 측정 기여는 따로 논다

Dice vs 관문 가로축은 다발 검증 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에서 얻은 운이 그대로 빚이 되기 때문입니다.

This post is licensed under CC BY 4.0 by the author.