피부암은 10년 묵은 CNN이 더 잘 본다, 이미지 인식이 손으로 짠 규칙이던 시절부터 보자
생검까지 끝난 피부 병변 200장으로 시험을 봤더니 2015년에 나온 CNN이 2026년 10월 기준 최상위 LLM 둘을 눌렀다. 이상한 일이 아니다. 둘은 이미지를 보는 법을 배운 방식부터 다르다.
- 파인튜닝에 20분 걸린 Inception v3가 정답 125개(62%), LLM 둘은 84개와 85개(42%)를 맞혔다.
- 이미지 인식은 원래 사람이 특징을 손으로 설계하던 일이었다. CNN은 그 설계를 데이터가 대신하게 만든 기술이다.
- LLM이 못났다는 얘기가 아니다. 자기가 안 배운 일을 시켰더니 못한 것이다.
컴퓨터가 사진을 못 보던 시절
컴퓨터에게 사진은 숫자가 빽빽한 표다. 픽셀 하나가 0에서 255 사이 숫자고, 사진 한 장은 그 숫자를 수십만 개 늘어놓은 것이다. 이 숫자 더미에서 “이건 점이고 이건 암이다”를 뽑아내는 규칙을 아무도 몰랐다.
그래서 사람이 규칙을 직접 짰다. 피부과에는 원래 육안 감별 규칙이 있다. 모양이 비대칭인가, 경계가 울퉁불퉁한가, 색이 여러 개인가, 크기가 큰가를 보는 식이다. 엔지니어들은 이걸 코드로 옮겼다. 병변 영역을 잘라내고, 경계선의 들쭉날쭉한 정도를 계산하고, 색 분포를 세어서 숫자 몇 개로 줄였다.
그다음에 그 숫자 몇 개를 SVM이나 결정 트리 같은 분류기에 넣었다. 분류기는 숫자 묶음을 받아 판정만 한다. 사진에서 무엇을 볼지는 전부 사람이 정했다.
그럼 왜 그냥 픽셀을 분류기에 통째로 넣지 않았냐는 의문이 들 것이다. 해봤는데 안 된다. 같은 병변도 사진을 조금 옮기거나 밝기를 바꾸면 숫자 수십만 개가 전부 달라진다. 분류기 입장에서는 완전히 다른 입력이다. 그래서 위치와 밝기가 바뀌어도 변하지 않는 값을 사람이 따로 뽑아줘야 했다.
필터를 손으로 깎아보기
그때 쓰던 핵심 도구가 필터다. 3x3 같은 작은 숫자 판을 사진 위에 올려 한 칸씩 밀면서 곱해서 더한다. 판의 숫자를 어떻게 정하느냐에 따라 세로 경계선이 잡히기도 하고 가로 경계선이 잡히기도 한다. 아래는 표준 라이브러리만 쓴 Python 3 코드다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Python 3, 표준 라이브러리만 사용
img = [[0, 0, 9, 9, 9] for _ in range(5)] # 왼쪽은 어둡고 오른쪽은 밝은 5x5 사진
kernel = [[-1, 0, 1],
[-1, 0, 1],
[-1, 0, 1]] # 사람이 손으로 정한 세로 경계선 필터
def conv2d(img, k):
kh, kw = len(k), len(k[0])
out = []
for y in range(len(img) - kh + 1):
row = []
for x in range(len(img[0]) - kw + 1):
s = 0
for j in range(kh):
for i in range(kw):
s += img[y + j][x + i] * k[j][i]
row.append(s)
out.append(row)
return out
for row in conv2d(img, kernel):
print(row)
# [27, 27, 0]
# [27, 27, 0]
# [27, 27, 0]
어두운 영역과 밝은 영역이 만나는 곳에서 큰 값(27)이 나온다. 평평한 곳은 0이다. 경계선을 찾은 것이다. 이런 필터를 수십 개 만들어 모서리, 질감, 색 얼룩을 뽑고, 그 결과를 요약해 분류기에 넣는 것이 당시 정석이었다.
여기서 아픈 지점은 이렇다.
- 필터의 숫자를 사람이 정한다. 피부암에 뭐가 중요한지는 피부과 의사 머릿속에 있고, 그걸 숫자 판으로 옮기는 건 엔지니어 몫이라 중간에 정보가 샌다.
- 병변 종류가 늘 때마다 새 규칙이 필요하다. 흑색종용 필터를 만들어도 지루성 각화증에는 소용이 없을 수 있다.
- 촬영 조명이나 카메라가 바뀌면 손으로 맞춘 임계값이 같이 무너진다.
규칙 짜는 일을 기계에게 넘긴 과정
흐름을 먼저 보자. 단계마다 불편이 쌓였고 해법이 나왔고 새 문제가 생겼다.
flowchart LR
A["손으로 짠 특징 + 분류기"] --> B["필터를 학습하는 작은 CNN"]
B --> C["GPU로 키운 깊은 CNN"]
C --> D["이미지넷 선행학습 + 파인튜닝"]
D --> E["트랜스포머와 멀티모달 LLM"]
읽는 법: 왼쪽에서 오른쪽으로 갈수록 사람이 하던 설계를 데이터와 연산이 대신한다.
첫 번째 불편은 “필터 숫자를 왜 내가 정하냐”였다. 해법은 필터 숫자를 정답과 비교하면서 자동으로 고치는 것이었다. 틀리면 숫자를 조금 바꾸고, 이걸 수없이 반복한다. 90년대에 이미 LeNet 같은 작은 CNN이 우편물 숫자 인식에 쓰였다. 새로 생긴 문제는 연산량과 데이터였다. 당시 컴퓨터로는 큰 모델을 돌릴 수 없었고 학습용 사진도 모자랐다.
두 번째 불편은 “깊게 쌓으면 좋아질 것 같은데 돌릴 수가 없다”였다. 2012년 AlexNet이 이미지넷 대회에서 기존 방식을 크게 앞서면서 판이 뒤집혔다. 핵심은 GPU로 큰 CNN을 현실적인 시간에 학습시킨 것이다. 새 문제는 이 모델이 사진을 수백만 장 먹어야 한다는 점이었다. 병원 데이터는 그만큼 모이지 않는다.
세 번째 불편은 “내 분야는 사진이 몇만 장뿐인데”였다. 해법이 선행학습이다. 일상 사진으로 먼저 “선, 질감, 모양”을 읽는 눈을 길러놓고, 그 눈을 가져와 피부 사진으로 마저 학습한다. 기초 소양을 갖춘 사람에게 전공을 가르치는 것과 같다. 오늘 글의 Inception v3가 정확히 이 경로다. 일상 사진으로 선행학습한 모델을 사진 6만 8천 장으로 파인튜닝했고, H100 한 장으로 20분 걸렸다.
네 번째로 트랜스포머 계열이 이미지에도 들어왔다. 2020년 전후에 이미지를 조각내 글자처럼 다루는 방식이 나왔고, 이어서 이미지와 글을 한 모델이 같이 다루는 멀티모달 LLM이 나왔다. 새로 생긴 문제는 “다 되는 모델이 한 가지를 가장 잘하는 건 아니다”라는 점이다.
| 시대 | 방식 | 장점 | 한계 |
|---|---|---|---|
| 90년대~2000년대 | 손으로 짠 특징 + 분류기 | 작고 설명하기 쉽다 | 규칙을 사람이 짜야 하고 환경이 바뀌면 깨진다 |
| 2012년 전후 | 깊은 CNN | 특징을 데이터가 학습한다 | 큰 데이터와 GPU가 필요하다 |
| 2010년대 중반 | 선행학습 + 파인튜닝 | 적은 데이터로 전문 모델을 만든다 | 분야마다 따로 학습해야 한다 |
| 2020년대 | 멀티모달 LLM | 질문 하나로 뭐든 시킬 수 있다 | 특정 분야의 눈은 전문 모델보다 얕을 수 있다 |
그래서 LLM이 졌다는 게 뭐냐
두 방식이 서 있는 자리를 그림으로 그려보면 이렇다.
읽는 법: 왼쪽은 좁고 깊게, 오른쪽은 넓고 얕게 배운 모델이다. 개념도(실제 수치 아님).
숫자를 다시 보자. 6개 중 정답을 맞힌 건 CNN이 62%, LLM 둘이 42%다. 2순위까지 허용하면 173개 대 134개와 138개로 벌어진다. 틀리는 방향도 달랐다. GPT-6 Astra는 25개뿐인 기저세포암을 75개나 찍었고, Claude Fable 5.1은 20개뿐인 광선각화증을 53개 찍었다. 모델마다 애착 답안이 있었던 것이다.
그럼 LLM이 쓸모없냐고 물을 수 있는데, 그렇지 않다. HN 댓글에도 나왔지만 이런 전문 모델을 만드는 비용을 LLM이 거의 0으로 낮춰놨다. 이 글의 분석 코드도 LLM이 거들었다. 일을 맡길 도구와 그 일을 직접 하는 도구는 다르다.
반대로 CNN 쪽도 과하게 믿으면 안 된다. 200장은 순위를 가르기엔 적은 표본이고, 흑색종은 30개뿐이라 오차가 크다. 이 CNN은 일부러 최신이 아닌 기준선 모델이다. 데이터가 이미 공개된 지 오래라 LLM이 학습 중에 봤을 가능성이 있다는 점은 오히려 LLM에게 유리한 조건이었다. 파인튜닝 모델은 학습 데이터와 다른 병원 장비나 인종 구성에서 약해질 수 있다는 댓글 지적도 맞는 말이다.
선택지는 이렇게 나뉜다. 한 가지 일을 대량으로 정확하게 해야 하면 특화 모델을 만든다. 일이 매번 바뀌거나 설명이 필요하면 LLM을 쓴다. 둘을 붙이는 구성도 가능하다. 돌리는 비용은 작은 CNN이 압도적으로 싸다. 이 모델은 폰 브라우저 안에서 WebGPU로 돌아갈 만큼 작다.
결국 모델이 얼마나 큰지는 별로 중요하지 않았다. 그 일을 하려고 배웠는지가 갈랐다.
원문: A 10-year-old CNN outperforms frontier LLMs for skin cancer diagnosis (via hn)
