필라멘트 ① — 같은 함정에 세 번 빠졌다: 지표가 아닌 자로 고른 날
태양 Hα 영상에서 필라멘트를 인스턴스 분할하는 대회를 붙잡고 있습니다. 하루를 꼬박 써서 교차검증 점수를 0.4454 → 0.4674로 올렸고, 공개 리더보드는 여섯 번 연속 0.36이었습니다.
대회 진행 중이라 코드와 대회 이미지는 싣지 않습니다. ‘실측’은 다른 조건을 그대로 두고 한 가지만 바꾼 비교로 확인한 값입니다.
점수가 안 움직인 이야기를 쓰는 이유는, 그 과정에서 같은 종류의 실수를 세 번 반복했다는 것을 알아냈기 때문입니다. 셋 다 “무엇으로 고를 것인가”의 문제였습니다.
1. 지표의 생김새가 전부를 정한다
이 대회의 지표는 Panoptic Quality입니다.
\[\mathrm{PQ} = \frac{\sum_{\text{TP}} \mathrm{IoU}}{\mathrm{TP} + 0.5\,\mathrm{FP} + 0.5\,\mathrm{FN}}\]예측 하나를 더 내보낼지 말지를 이 식에서 직접 유도할 수 있습니다. 어떤 후보를 내보내면 분자는 매칭 IoU $\mu$만큼, 분모는 $0.5$만큼 늘고, 안 내보내면 둘 다 0입니다. 그래서 매칭 확률 $p$인 후보는
\[p \cdot \mu > 0.5 \cdot \mathrm{PQ}\]일 때만 이득입니다. 점수가 낮을수록 더 과감하게 내보내야 한다는 뜻이고, 실제로 이 규칙으로 후보 거르는 기준을 면적에서 학습된 확률로 바꾼 것이 이 대회에서 가장 크게 들은 변경이었습니다.
중요한 건 이 식이 면적도, 모양의 그럴듯함도, 모델의 확신도 아닌 것을 센다는 점입니다. 그런데 저는 하루 동안 세 번, 이 식이 아닌 다른 자로 선택을 했습니다.
2. 첫 번째 — AUC로 점수기를 골랐다
후보를 거를 때 쓰는 분류기를 개선하면서 당연히 AUC를 봤습니다. 그런데 이미지 안에서의 상대적 위치를 특징으로 더했더니 이런 일이 일어났습니다.
| 점수기 AUC | 공식 PQ | |
|---|---|---|
| 기존 특징 | 0.8573 | 0.4458 |
| + 상대 특징 | 0.8508 | 0.4469 |
AUC는 내려갔는데 PQ는 올랐습니다. 이유는 간단합니다. AUC는 모든 이미지의 후보를 한 줄로 세워 순위를 매긴 값이고, 실제로 하는 일은 이미지마다 따로 자르는 것입니다. 이미지마다 필라멘트 수와 영상 품질이 다르니, 어떤 이미지에서 확률 0.6은 최고이고 다른 이미지에서는 꼴찌입니다. 상대 특징은 전역 순위를 흐리는 대신 이미지별 결정을 낫게 합니다.
같은 어긋남이 뒤에 두 번 더 나왔습니다. CNN 가지를 더했을 때 AUC +0.0024에 PQ +0.0027, 학습 목표를 바꿨을 때는 AUC +0.0045인데 PQ -0.0017이었습니다.
3. 두 번째 — 오라클 천장으로 학습 목표를 골랐다
이 데이터는 한 영상을 여러 사람이 따로 주석했습니다. 707장 중 296장이 두 명 이상이고, 세 명인 것이 21.4%입니다. 학습 목표를 만들려면 이 사람들의 주석을 하나로 합쳐야 합니다.
지금까지는 합집합을 썼습니다. 그런데 세 명이면 “과반이 칠한 픽셀”이 합집합과 다른 마스크가 됩니다. 재봤습니다.
| 목표 구성 | 오라클 PQ (두 명 이상) | 주석자 세 명 |
|---|---|---|
| 합집합 | 0.6579 | 0.6078 |
| 과반 | 0.6735 | 0.6324 |
| 전원 교집합 | 0.6375 | 0.5834 |
과반이 분명히 높습니다. 인스턴스 개수는 셋 다 같고 오른 것은 전부 SQ입니다 — 합집합은 세 사람 어느 쪽과도 덜 닮은 마스크가 되니까요. 천장이 +0.0156 올랐으니 당연히 실제 성능도 오를 줄 알았습니다.
5-fold를 전부 다시 학습해서 같은 공식 채점으로 맞댄 결과는 -0.0017이었습니다.
과반 마스크는 각 주석자와 더 닮았지만, 그 경계가 주석자들의 투표로 정해집니다. 영상의 밝기 변화와 일치하지 않는 선입니다. 맞히기 더 어려운 목표를 만든 겁니다. 천장은 필요조건이지 충분조건이 아닙니다.
4. 세 번째 — 중간 산출물로 진단했다
점수의 천장이 어디에 있는지 분해했더니, 후보 풀이 목표의 37.9%를 아예 못 만들고 있었습니다. 그 37.9%가 무엇인지 갈라봤습니다.
| 가장 가까운 후보와의 IoU | 비율 |
|---|---|
| 0 (신호 없음) | 9.7% |
| 0.1~0.3 (분할 어긋남) | 7.4% |
| 0.3~0.5 (아슬아슬) | 20.1% |
| 0.5 이상 (덮음) | 62.3% |
모델이 못 보는 게 아니었습니다. 놓친 목표 영역의 평균 확률이 중앙값 0.499, 상위 10%는 0.925입니다. 신호는 있고 모양이 모자랐습니다. 그리고 재현율 0.495에 정밀도 0.796 — 후보가 목표의 절반만 덮고 있었습니다.
그래서 두 가지를 처방했습니다. 후처리로 키우기(씨앗은 높은 임계, 성장은 낮은 임계로 꼬리를 되살리는 이력 임계)와 학습으로 키우기(FN을 FP보다 비싸게 매기는 Tversky 손실). 둘 다 실패했습니다. 이력 임계는 재현율을 0.700에서 0.770으로 올렸는데 PQ는 0.4953에서 0.4835로 떨어뜨렸고, Tversky는 두 fold 모두 -0.034였습니다.
처방 두 개를 태우고 나서야 진단을 다시 봤습니다. 저는 후보를 학습 목표와 비교했는데, 채점은 원본 주석자 각각과 맞댑니다. 목표는 여러 사람을 합쳐 만든 것이니 어느 한 사람보다 큽니다.
| 기준 | 재현율 | 정밀도 | 진단 |
|---|---|---|---|
| 학습 목표 대비 | 0.718 | 0.851 | 작다 |
| 주석자 각각 대비 | 0.808 | 0.788 | 크기가 맞다 |
덮인 71.6%는 이미 크기가 균형입니다. 이미 맞는 것을 키웠으니 망가진 게 당연합니다.
5. 그래서 무엇이 들었나
세 번의 착오를 정리하고 나서 실제로 들은 것은 넷이었고, 전부 “지표가 보는 것”에 맞춘 것이었습니다.
- 앙상블 멤버 추가 (+0.0051). 흥미롭게도 과반 목표 모델은 단독으로는 -0.0017인데 앙상블 멤버로는 +0.0051입니다. 단독 성능과 앙상블 기여는 다른 양입니다.
- 후보를 CNN으로 다시 보기 (+0.0082). 손으로 만든 특징은 “이 모양이 진짜 필라멘트처럼 생겼는가”를 담지 못합니다. 후보 주변을 잘라 작은 분류기에 보여주고 그 확률을 특징 하나로 더했습니다. 영상과 마스크만 주면 AUC 0.808인데 확률 지도를 채널로 더하면 0.870입니다. 백본을 키우거나 더 오래 학습하면 오히려 내려가고, 서로 다른 백본 둘을 섞을 때만 오릅니다 — 이득은 다양성에서 옵니다.
- 정제 창 키우기 (+0.0023). 마스크를 다시 그리는 창이 256px 고정이었는데, 긴 필라멘트는 창이 600px가 되어 2.3배 축소됩니다. 폭 10px짜리 구조가 4px로 뭉개진 채 경계를 그리고 있었습니다. 384로 키우니 이득이 +0.0090에서 +0.0113으로 늘었고 거의 전부가 SQ입니다. 512는 IoU가 가장 높은데 PQ는 뒤집힙니다 — 여기서도 IoU로 고르면 안 됩니다.
- 학습과 추론의 구성 맞추기 (+0.0014). 정제기의 입력 채널 하나가 전경 확률인데, 추론은 10개 모델 평균을 쓰고 학습은 5개 평균으로 돼 있었습니다. 같은 종류의 어긋남이 이 대회에서 세 번 비쌌습니다.
6. 그런데 리더보드는 안 움직였다
교차검증 +0.022에 리더보드는 여섯 번 연속 0.36입니다. 공개 점수가 소수점 둘째 자리까지만 나오니 반올림에 묻혔는지 전이가 안 되는지 구분할 수가 없습니다.
더 중요한 건 산술입니다. 지금 후보 풀에서 매칭되는 것만 완벽히 골라내도 0.4893이고, 리더보드로 환산하면 0.39입니다. 정직한 상위권인 0.41에 닿으려면 후보 풀 자체가 좋아져야 하는데, 그 시도는 지금까지 열일곱 개가 전부 평지였습니다.
7. 남는 것
점수가 안 오른 하루였지만, 세 번 반복한 실수의 모양은 또렷합니다.
고를 때는 지표로 고른다. AUC도, 오라클 천장도, 정제기의 IoU도 지표가 아닙니다. 전부 지표와 상관이 높지만 부호가 갈리는 지점이 있고, 하필 개선의 마지막 구간이 그 지점입니다.
진단은 지표가 보는 대상 위에서 한다. 중간 산출물 대비로 잰 재현율·정밀도는 그럴듯하게 틀립니다. 틀린 자 위의 진단은 처방을 태웁니다 — 저는 두 개를 태웠습니다.
천장과 성능은 다른 양이다. 맞히기 쉬운 목표를 맞히는 것과, 이상적인 목표를 세우는 것은 같은 일이 아닙니다.