UMUD 챌린지 ⑥ — 5등에서 3등으로: 측정 규칙 두 개, 그리고 잘 안 된 것들
⑤편을 쓴 뒤 사흘 동안 public LB가 0.2636(5등) → 0.2548(3등)으로 내려갔습니다. 이번 개선은 모델을 바꿔서 얻은 게 아닙니다. 모델이 그려 준 근막과 다발에서 숫자를 어떻게 읽느냐를 두 군데 고친 결과입니다. 이 글은 그 두 규칙이 무엇이고 왜 맞았는지, 그리고 같은 기간에 시도했다가 버린 것들을 정리합니다.
대회 진행 중이라 코드와 대회 이미지는 싣지 않습니다. 그림은 모두 직접 그린 도식과 수치 차트입니다. ‘실측’은 한 가지만 바꾼 제출 쌍으로 확인한 값이고, 나머지는 ‘추정’입니다.
0. 지금까지 내려온 길
가로축의 각 칸은 직전 제출에서 규칙 하나만 바꾼 것이다
점수 식은 그대로입니다. 근섬유다발 각도(PA), 길이(FL), 근육 두께(MT)의 MAE를 각각 6°, 12mm, 3mm로 나눠 평균합니다.
\[S = \tfrac{1}{3}\left(\tfrac{\mathrm{MAE}_{PA}}{6^\circ} + \tfrac{\mathrm{MAE}_{FL}}{12\,\mathrm{mm}} + \tfrac{\mathrm{MAE}_{MT}}{3\,\mathrm{mm}}\right)\]큰 폭으로 내려간 지점은 대부분 측정 관례를 바로잡은 곳입니다. 화면 축척을 평가자가 본 좌표계로 맞춘 것(0.414 → 0.350, 0.302 → 0.271)이 대표적입니다. 이번 두 규칙도 같은 종류입니다.
1. 바꾼 규칙 두 개
왼쪽: MT를 재는 위치. 오른쪽: PA를 FL·MT와의 기하 관계 쪽으로 당기는 정도(개념도)
① MT를 스캔 영역 기준 세 곳에서 잰다
주최측 프로토콜은 MT를 “영상의 왼쪽·가운데·오른쪽 세 세로선에서 잰다”고 설명합니다. 이전 규칙은 두 근막이 함께 보이는 가로 구간을 셋으로 나눴습니다. 심층 근막이 화면 일부에서 끊기면 세 열이 한쪽으로 몰렸습니다.
새 규칙은 근막을 직선으로 연장한 뒤 스캔 영역 전체의 1/6·1/2·5/6 위치에서 잽니다.
| 벤치35 | 깨끗10 | NeuAge | |
|---|---|---|---|
| 로컬 Δ | −0.0013 | −0.0010 | −0.0044 |
효과는 작습니다. 테스트에서 이 규칙이 바꿀 수 있는 최대 LB 폭도 0.007 정도로 계산됩니다. 그래도 프로토콜 문구와 맞고, 세 세트 모두 같은 방향이라 넣었습니다.
② PA를 ‘FL·sinPA ≈ 1.07·MT’ 쪽으로 조금 당긴다
다발 하나가 두 근막 사이를 비스듬히 가로지른다면 기하적으로 FL·sin(PA) ≈ MT입니다. 근막이 평행하지 않아서 실제로는 1보다 조금 큰 비율이 나옵니다. 전문가 정답 세트에서 잰 값은 약 1.07입니다.
우리 예측에서 이 비율 $r$을 계산하면 영상마다 1에서 벗어납니다. 세 값 중 무엇이 틀렸는지는 모르지만, 로컬에서 FL 쪽을 고치면 세 세트 모두 나빠졌고 PA 쪽만 고치면 좋아졌습니다. 그래서 PA만 아래처럼 조금 움직입니다.
\[\sin \mathrm{PA}' = \sin \mathrm{PA} \cdot r^{-\lambda},\qquad r = \frac{\mathrm{FL}\,\sin \mathrm{PA}}{1.07\,\mathrm{MT}},\qquad \lambda = 0.2\]λ는 벤치에서 고르고 NeuAge에서 확인했습니다. ①과 합친 로컬 결과는 −0.0029 / −0.0042 / −0.0068이었고, NeuAge를 넷으로 나눈 부분 집합에서도 모두 개선이었습니다.
LB에서 확인한 것
| 제출 (모두 같은 기준 위에 한 가지씩) | LB | 기준 대비 |
|---|---|---|
| 기준: PA +0.36° | 0.26361 | — |
| PA +0.6° (균일하게 더 올림) | 0.26041 | −0.0032 |
| ① + ② (MT 3열 + PA 당김 λ0.2) | 0.25482 | −0.0088 |
재미있는 건 ②가 PA를 올리는 방식입니다. 테스트에서 PA를 올린 평균 폭은 +0.18°로, 균일하게 +0.24°를 올린 제출보다 작습니다. 그런데 효과는 거의 세 배였습니다. ②는 긴 화면 장비(TEL1088 +0.34°, TEL1200 +0.21°)에서 주로 PA를 올립니다. 우리 예측의 PA 과소 추정이 그 화면들에 몰려 있다는 뜻으로 읽었습니다.
2. 미리 정한 기준으로만 고른다
public LB는 약 102장으로 계산됩니다. 같은 제출을 두고 잡음만으로 ±0.005 정도는 흔들릴 수 있다고 봅니다. 그래서 제출 전에 “기준 대비 −0.005 이하면 채택, ±0.005 안이면 로컬 근거대로, +0.005 이상이면 기각”을 적어 두고 그대로 따랐습니다.
10/5 제출이 이 규칙을 시험했습니다.
| 제출 | LB | 기준(0.25482) 대비 | 판정 |
|---|---|---|---|
| PA 당김 λ 0.3 | 0.25209 | −0.0027 | 문턱 안 → 0.2 유지 |
| PA +0.6° | 0.25307 | −0.0018 | 문턱 안 → 유지 |
| MT −0.1mm | 0.25347 | −0.0014 | 문턱 안 → 채택 안 함 |
| 안정성 후보(여러 학습 실행의 중앙값) | 0.25734 | +0.0025 | 최종 후보로 보류 |
| PA 가로 추세 읽기 | 0.26212 | +0.0073 | 기각 |
리더보드에는 최고 제출인 0.25209가 표시됩니다. 하지만 기준 파이프라인은 바꾸지 않았습니다. 세 변경이 모두 같은 방향이라 합치고 싶은 유혹이 있습니다. 그러나 문턱 안의 차이를 모아 합치는 건 public 102장에 맞추는 일이고, private 207장에서 그대로 갈 거라는 보장이 없습니다.
3. 남은 오차는 어디에 있나
왼쪽: 점수의 세 항 중 FL이 절반. 오른쪽: 영상마다 가장 큰 오차 원인을 하나씩 붙였을 때의 몫
기준 구성을 로컬 세 세트에서 쪼개 봤습니다.
- FL이 점수의 48~50%입니다. PA는 25~35%, MT는 15~25%입니다.
- FL 오차의 가장 큰 원인은 화면 밖 외삽입니다(35~38%). 다발이 화면보다 길어서 양 끝을 근막까지 연장해야 하는 경우입니다.
- 그다음은 다발 방향입니다. PA 자체 오차와, PA가 틀려서 FL까지 번진 몫을 합치면 36~44%입니다.
- PA 오차를 더 쪼개 보니 앙상블 4개 모델이 함께 틀리는 몫이 대부분이었습니다. 영상마다 가장 잘 맞은 모델 하나를 고를 수 있다면 PA MAE가 0.76° → 0.50°까지 내려갑니다. 하지만 어느 모델이 맞을지 미리 알려 주는 신호는 찾지 못했습니다. 모델의 자신감과 오차 사이의 상관이 0에 가까웠습니다.
4. 해 봤지만 버린 것
| 시도 | 결과 | 이유 |
|---|---|---|
| 학습 crop 폭 640 → 1024 | 기각 | NeuAge 단독 +0.13~+0.15 (두 짝 모두 3 SE 이상 악화) |
| 조각 각도의 가로 추세를 화면 가운데에서 읽기 | LB +0.0073, 기각 | 로컬 NeuAge는 좋았지만 TEL1088에서 PA를 내림 |
| FL 외삽 규칙 6종(근막 곡선 연장, 조각 선택 등) | 모두 기각·보류 | 벤치와 NeuAge가 원하는 FL 방향이 반대 |
| 근막선 맞춤 방식 4종 | 기각 | 대회 검증 영상에서 모두 악화 |
| 4개 모델 FL 합치기 규칙 | 기각 | 벤치 근거 없음, 부분 집합끼리 엇갈림 |
모델 쪽 변경은 이번에도 하나도 통과하지 못했습니다. 지금까지 추가 데이터, 스캔 영역 잘라내기, 넓은 crop, 다른 백본을 시도했고, 모두 장비가 다른 NeuAge에서 크게 나빠지는 같은 패턴이었습니다.
5. 검증 세트를 의심하게 된 이야기
FL 오차를 파다가 이상한 걸 발견했습니다. NeuAge에서는 우리 근막선이 평가자 선보다 영상마다 평균 +0.6°(표준편차 1.3°) 기울어 있었습니다. 이 기울기만 평가자 값으로 바꿔도 FL 오차의 흩어짐이 10.1 → 7.0으로 줄었습니다.
그래서 같은 검사를 대회 학습 데이터에서 떼어 둔 검증 영상 205장에 해 봤습니다. 이 데이터는 테스트와 주석 방식이 같습니다. 결과는 기울기 차이 +0.01~0.02° (표준편차 0.3°)로, 사실상 없었습니다.
정리하면 NeuAge의 근막 기울기 차이는 우리 측정의 결함이 아니라 NeuAge 쪽의 특성입니다. 원인 후보는 장비 차이나 평가자의 선 긋는 방식인데, 이 부분은 검증하지 않았습니다. 결과적으로 NeuAge의 FL 판정은 테스트를 대신하는 근거로 약합니다.
이 결과로 검증 세트별 역할을 다시 정했습니다.
| 세트 | 장점 | 약점 | 이제 쓰는 곳 |
|---|---|---|---|
| 벤치35 (전문가 7명) | 테스트와 같은 측정 관례 | 25장이 학습 데이터와 거의 같은 영상 | 모든 판정의 기본 |
| 깨끗10 | 학습 데이터와 겹치지 않음 | 10장뿐 | 벤치 확인용 |
| NeuAge 247장 | 많다 | 장비·주석 관례가 다름 | PA·모델 일반화 확인. FL 판정에는 무게를 덜 둠 |
| 대회 검증 영상 | 테스트와 같은 주석 | 숫자 정답이 없어 MT만 대리 채점 가능 | MT 관례 확인 |
마지막 줄의 대리 채점이 하나를 정리해 줬습니다. 벤치에서는 우리 MT가 0.1~0.2mm 길게 나와서 ‘MT −0.1mm’ 보정이 좋아 보였습니다. 그런데 대회 라벨 기준으로는 우리 MT의 치우침이 0이었습니다. 이 차이는 벤치 평가자들의 측정 습관이었던 셈입니다. LB에서도 −0.0014로 문턱 안이었으니 서로 맞는 결과입니다.
6. 다음
- 1위(0.2407)와 차이는 약 0.011입니다. 측정 규칙으로 얻을 수 있는 큰 개선은 거의 다 쓴 것 같습니다.
- 남은 큰 덩어리는 4개 모델이 함께 틀리는 다발 방향입니다. 규칙이 아니라 분할 모델이 다발을 더 정확히 그려야 줄어드는 몫입니다.
- 다만 모델 변경은 지금까지 장비가 다른 데이터에서 계속 무너졌습니다. 그래서 다음 실험은 같은 증강 난수로 짝을 지어 학습하고, 대회 검증 영상과 벤치를 함께 보는 방식으로만 판정할 생각입니다.