CNN 학습 전략과 컴퓨터 비전 응용

학습 목표
  • CNN의 학습 전략 흐름(학습 데이터 성능 → 테스트 데이터 성능)을 이해한다
  • 데이터 증강(Data Augmentation)과 데이터 합성(Data Synthesis)의 차이를 설명할 수 있다
  • 전이 학습(Transfer Learning)의 원리와 활용 방법을 이해하고, 동결 시 학습 파라미터 수를 직접 계산할 수 있다
  • 사전 학습 모델을 쓸 때 맞춰야 할 입력 규격과 학습률을 설명할 수 있다
  • 이미지 분류를 넘어선 CV 응용 — 객체 탐지와 시맨틱 분할의 개념을 설명할 수 있다

뉴럴 네트워크의 학습 전략

성능 진단 흐름

Ch07에서 다양한 CNN 아키텍처를 배웠다. 어떤 아키텍처를 선택하더라도, 학습 후에는 두 가지 질문으로 성능을 진단한다.

학습 데이터에 대한 성능이 좋은가? Yes 테스트 데이터에 대한 성능이 좋은가? Yes 완료! No 더 큰 규모의 아키텍처 No 더 많은 데이터 (증강/합성/전이학습)
  • 학습 데이터 성능이 낮다 → 모델 용량이 부족 = 과소적합 → 더 큰/깊은 아키텍처 사용
  • 학습은 좋지만 테스트 성능이 낮다 → 과적합 → 더 많은 데이터 확보

이 진단은 Ch04에서 배운 것과 정확히 같은 것이다 — 두 번째 상황이 바로 러닝커브에서 훈련·검증 손실의 간격이 벌어지는 그 지점이다. Ch04에서는 조기 종료·모형 축소 같은 대응을 배웠고, 이 장에서는 가장 확실한 대응이었던 “데이터 늘리기”의 구체적인 방법 세 가지를 배운다.

테스트 성능을 높이기 위해 데이터를 늘리는 세 가지 방법을 살펴보자.


데이터 증강 (Data Augmentation)

기본 아이디어

CNN은 이미지에서 특성을 뽑아내는 방법이다. 같은 이미지에 변형을 가하면 모델 입장에서는 다른 데이터처럼 보인다. 변형된 이미지도 원래 이미지의 핵심 특성을 보존하므로, 데이터를 늘리는 효과가 있다.

정의: 데이터 증강 (Data Augmentation)

기존 학습 이미지에 다양한 변형을 적용하여 데이터 수를 인위적으로 늘리는 기법. 이미지의 특성을 포함한 데이터가 많아지므로 모델의 일반화 성능이 향상된다.

증강 방법

변환 유형 설명 예시
이동(Shift) 이미지를 좌/우/상/하로 이동 새가 프레임 왼쪽/오른쪽에 위치
반전(Flip) 좌우 또는 상하 반전 거울에 비친 것처럼
회전(Rotation) 일정 각도로 회전 10°, 20° 기울어진 이미지
색상 변환 밝기, 대비, 채도 등 조정 어두운 조명, 밝은 조명 시뮬레이션
잘라내기(Crop) 이미지의 일부 영역만 사용 확대 효과

원본 1장으로 수십 장의 변형 이미지를 만들 수 있으므로, 적은 데이터로도 효과적인 학습이 가능해진다.

폴더에 변형 이미지를 저장하는 것이 아니다. 실제 구현에서는 학습 중 매 에폭마다 그때그때 무작위 변형을 적용한다(on-the-fly). 저장된 파일 수는 그대로 50장이지만, 모델은 매 에폭 조금씩 다른 50장을 보게 된다.

증강의 두 가지 금지선

① 증강은 훈련 데이터에만 적용한다

검증·테스트 데이터에 증강을 걸면 평가가 오염된다. 측정하려는 것은 “실제로 들어올 사진에서의 성능”인데, 변형된 사진으로 재면 그 수치는 의미가 없다.

Ch04의 데이터 누수와 같은 이야기다 — 평가용 데이터는 손대지 않는다.

② 레이블이 바뀌는 변형은 하면 안 된다

증강의 전제는 “변형해도 정답은 그대로”이다. 이 전제가 깨지면 모델에게 거짓을 가르치는 셈이다.

위험한 경우 무슨 일이 일어나는가
숫자 6을 180° 회전 9가 된다 → 6이라는 레이블이 거짓이 됨
도로 표지판을 좌우 반전 좌회전 표지가 우회전이 됨
문자·간판 이미지를 좌우 반전 글자가 뒤집혀 읽을 수 없게 됨
색으로 구분하는 대상의 색상 변환 빨간 소화기가 파랗게 되면 클래스가 무너짐

증강을 고를 때의 기준은 하나다 — “실제 세상에서 이런 사진이 찍힐 수 있는가?” 고양이는 거꾸로 뒤집힌 채 찍히는 일이 드물지만, 좌우 반전된 고양이는 흔하다. 그래서 고양이 분류에서 좌우 반전은 쓰고, 상하 반전은 잘 쓰지 않는다.

눈치챘겠지만, 증강이 흉내 내는 것이 바로 Ch05의 촬영 난관들(시점, 크기, 조명, 배경)이다. 다만 증강은 진짜 다양성의 보조 수단이지 대체재가 아니다 — 같은 각도에서 찍은 사진 200장을 아무리 회전시켜도 새로운 시점은 생기지 않는다. 팀 프로젝트에서 촬영을 다양하게 해야 하는 이유가 여기서도 확인된다.


데이터 합성 (Data Synthesis)

데이터 증강이 기존 데이터에 노이즈나 변형을 가하는 것이라면, 데이터 합성은 새롭게 합성된 이미지를 만들어 데이터를 생성하는 것이다.

예를 들어, OCR(광학 문자 인식) 학습에서:

  • 실제 데이터: 다양한 간판, 표지 사진에서 촬영한 글자 이미지
  • 합성 데이터: 다양한 폰트, 배경, 노이즈를 조합하여 컴퓨터로 생성한 글자 이미지

합성 데이터는 실제 데이터를 보완하여 학습 데이터의 다양성을 크게 확장할 수 있다.


전이 학습 (Transfer Learning)

사전 학습된 모델 활용

대규모 데이터셋(예: ImageNet 100만 장)으로 학습된 모델은 이미지의 일반적인 특성(에지, 코너, 기본 형태 등)을 이미 잘 파악하고 있다.

정의: 전이 학습 (Transfer Learning)

대규모 데이터로 사전 학습(Pretrained)된 모델의 가중치를 가져와, 내 데이터에 맞게 마지막 분류기만 교체한 뒤 미세 조정(Fine-tuning)하는 학습 방법.

전이 학습 절차

1. 사전 학습 모델 ImageNet 등으로 학습된 CNN 가져오기 (ResNet, VGG 등) 2. 분류기 교체 마지막 FC + Softmax를 내 클래스 수에 맞게 교체 (예: 1000 → 10) 3. 미세 조정 내 (소량의) 데이터로 재학습 Option 1: 출력층만 학습 Option 1: 마지막 층만 학습 (데이터 소량) Option 2: 전체 파라미터 재학습 (데이터 충분)

동결이냐, 전체 미세 조정이냐

정의: 동결 (Freeze)

사전 학습된 층의 파라미터를 학습 대상에서 제외(고정)하는 것. 동결된 층은 역전파에서 그래디언트를 받아도 갱신되지 않는다.

그림의 Option 1이 바로 특성 추출기 동결이다. 학습 파라미터 수를 직접 계산해 보자.

예: ResNet-50(전체 약 2,500만 파라미터)을 가져와 분류기를 5개 클래스로 교체하는 경우. 마지막 층의 입력 특성은 2,048개이므로:

전략 학습되는 파라미터 계산
Option 1: 특성 추출기 동결 10,245개 새 분류기만: \(2{,}048 \times 5 + 5\)
Option 2: 전체 미세 조정 약 2,500만 개 모든 층

동결하면 학습 파라미터가 전체의 0.04%로 줄어든다. Ch04의 원리 그대로 — 학습할 파라미터가 적으면 적은 데이터로도 과적합 없이 학습할 수 있다.

상황 권장 전략
내 데이터 수백 장 Option 1 (동결) — 과적합 위험 최소화
내 데이터 수만 장 이상, 사전학습 도메인과 다름 Option 2 (전체 미세 조정)

✍️ 손으로 따라 계산하기 — 동결하면 몇 개를 학습하나

설정: ResNet-50(전체 약 \(25{,}000{,}000\) 파라미터)의 특성 추출기를 동결하고, 분류기를 7개 클래스용으로 새로 붙인다. GAP(전역 평균 풀링: 마지막 특성 맵의 채널마다 평균 하나를 남기는 풀링) 뒤의 특성 벡터 길이는 \(2{,}048\) 이다.

단계 1 — 새 분류기의 모양을 정한다. 입력 \(2{,}048\) → 출력 \(7\) 인 FC 한 층.

단계 2 — 파라미터를 센다. Ch02의 공식 그대로 \(n_{l-1} \times n_l + n_l\):

\[2{,}048 \times 7 + 7 = 14{,}336 + 7 = \mathbf{14{,}343}\]

단계 3 — 동결된 부분은 몇 개인가.

\[25{,}000{,}000 - 0 = 25{,}000{,}000 \text{ 개가 그대로 고정}\]

(동결 층은 역전파에서 그래디언트를 받아도 갱신되지 않는다.)

단계 4 — 비율을 확인한다.

\[\frac{14{,}343}{25{,}000{,}000 + 14{,}343} \approx 0.00057 = \mathbf{0.057\%}\]

전체의 0.06%도 안 되는 파라미터만 학습한다. Ch04의 원리 그대로 — 학습할 파라미터가 적으면 적은 데이터로도 과적합 없이 학습할 수 있다.

동결한 ResNet-50 위에 \(2{,}048 \to 128 \to 3\) 짜리 분류기(은닉층 1개)를 붙이면 학습되는 파라미터는 몇 개인가?

정답 펼치기

FC1: \(2{,}048 \times 128 + 128 = 262{,}144 + 128 = 262{,}272\)

FC2: \(128 \times 3 + 3 = 384 + 3 = 387\)

합계: \(262{,}272 + 387 = \mathbf{262{,}659}\) 개

앞의 \(14{,}343\) 보다 18배 늘었다. 데이터가 150장뿐이라면 이 은닉층이 오히려 과적합을 부를 수 있다 — 분류기도 작을수록 안전하다.

✍️ 직접 해보기 — 전이 학습 시나리오 판단

각 상황에서 동결(Option 1) 과 전체 미세 조정(Option 2) 중 무엇을 택할지 판단하라. 판단 기준은 두 가지다 — 내 데이터가 얼마나 많은가, 그리고 사전학습 도메인과 얼마나 비슷한가.

A. 직접 찍은 소화기·소화전 사진 150장으로 2class 분류 B. 공장 X-ray 이미지 8만 장으로 내부 결함 분류 C. 캠퍼스 자전거 사진 400장으로 3class 분류 D. 위성 사진 3만 장으로 토지 이용 분류

정답 펼치기
데이터 도메인 유사도 판단 이유
A 150장 (적음) 높음 (일상 사물) Option 1 동결 데이터가 적어 미세 조정하면 과적합. ImageNet이 이미 잘 아는 대상
B 8만 장 (많음) 낮음 (X-ray는 일상 사진과 전혀 다름) Option 2 전체 미세 조정 데이터가 충분하고 도메인이 달라 앞쪽 층까지 다시 배워야 함
C 400장 (적음) 높음 Option 1 동결 A와 같은 이유
D 3만 장 (많음) 중간 (사진이지만 시점이 특이) Option 2, 또는 뒤쪽 층만 부분 해제 데이터가 충분하므로 조정 여지가 있음

규칙으로 정리하면:

도메인 비슷 도메인 다름
데이터 적음 동결 (Option 1) 동결 + 뒤쪽 층 일부만 해제
데이터 많음 뒤쪽 층 미세 조정 전체 미세 조정 (Option 2)

왜 전이 학습이 작동하는가?

CNN의 앞쪽 층들은 이미지의 공통적인 패턴을 학습한다:

층 위치 학습하는 특성
앞쪽 층 (Low-level) 에지(Edge), 밝기 변화
중간 층 (Mid-level) 코너(Corner), 기본 형태
뒤쪽 층 (High-level) 곡선, 복잡한 패턴

이러한 저수준~중수준 특성은 이미지 종류에 관계없이 공통적으로 유용하다. 따라서 대규모 데이터로 학습된 특성 추출기를 재활용하고, 내 데이터에 특화된 분류기만 새로 학습하면 된다.

전이 학습 덕분에 소량의 데이터(수백~수천 장)만으로도 높은 분류 정확도를 달성할 수 있다.

사전 학습 모델에 맞춰야 하는 것 — 조용히 망가지는 지점

전이 학습에서 에러는 안 나는데 성능만 나쁜 상황의 대부분은 여기서 생긴다. 남이 학습해 둔 모델을 쓰려면, 그 모델이 학습할 때 본 것과 같은 형태로 입력을 넣어야 한다.

반드시 맞춰야 할 두 가지

① 입력 크기 — 사전 학습 모델은 대부분 \(224 \times 224\) 로 학습되었다. Ch05에서 배운 리사이즈로 크기를 맞춘다.

② 정규화 통계 — 이것이 놓치기 쉬운 쪽이다. Ch05에서 픽셀을 \(255\) 로 나눠 \(0\sim1\) 로 만들었지만, ImageNet 사전 학습 모델은 거기서 한 단계 더 나아가 채널별 평균을 빼고 표준편차로 나눈 값으로 학습되었다.

\[x'' = \frac{x' - \mu_c}{\sigma_c}, \qquad \boldsymbol{\mu} = (0.485,\, 0.456,\, 0.406), \quad \boldsymbol{\sigma} = (0.229,\, 0.224,\, 0.225)\]

(R, G, B 채널 각각의 값. ImageNet 100만 장에서 계산된 상수다.)

이 전처리를 빼먹어도 코드는 멀쩡히 돌아가고, 정확도만 떨어진다. 사전 학습 모델을 쓸 때는 그 모델이 요구하는 전처리를 문서에서 확인하고 그대로 따르는 것이 원칙이다.

Ch04에서 “표준화의 평균·표준편차는 훈련 데이터에서만 계산한다”고 했다. 전이 학습에서는 그 “훈련 데이터”가 ImageNet이므로, 내 사진으로 평균을 다시 구하는 것이 아니라 ImageNet의 값을 그대로 가져다 쓴다. 원리는 같다 — 모델이 학습한 좌표계에 입력을 맞추는 것이다.

미세 조정의 학습률은 작게

Option 2(전체 미세 조정)를 택했다면 주의할 것이 하나 더 있다.

사전 학습된 가중치는 이미 좋은 자리에 도달해 있다. 여기에 Ch04에서 배운 큰 학습률을 쓰면, 첫 몇 스텝 만에 그 좋은 가중치가 크게 흔들려 망가진다 — 애써 가져온 것을 버리는 셈이다.

\[\eta_{\text{미세 조정}} \;\approx\; \frac{1}{10} \sim \frac{1}{100} \times \eta_{\text{처음부터 학습}}\]

Ch04의 학습률 실험을 떠올리자. 큰 보폭은 최솟값을 뛰어넘는다. 이미 최솟값 근처에 서 있는 전이 학습에서는 그 위험이 훨씬 크다.

성능은 무엇으로 보고할 것인가

Ch04에서 손실과 성능 지표는 다르다고 배웠다. 이미지 분류에서도 마찬가지다 — 학습은 교차 엔트로피로 하고, 보고는 정확도로 한다.

직접 촬영한 데이터는 클래스별 장수가 고르지 않기 쉽다. 소화기 120장, 소화전 30장으로 학습했다면, 전부 “소화기”라고만 답해도 정확도는 80%다.

Ch04의 정확도의 함정 그대로다. 결과를 보고할 때는 클래스별 장수를 먼저 밝히고, 가능하면 클래스별로 몇 개씩 맞혔는지까지 함께 보여야 한다.

HW2 예고 — 내가 찍은 사진 분류

이 절차가 그대로 과제다: 직접 촬영한 사진(클래스 2~3개 × 50장)으로, 사전 학습 모델의 분류기를 교체하고 동결 전략으로 학습한다. 50장이라는 적은 데이터로도 되는 이유를 방금 배웠다. 데이터 증강까지 적용해 성능 변화를 관찰해 보라 — 이 경험이 팀 프로젝트의 예행연습이다.


이미지 분류를 넘어서

지금까지 배운 CNN은 주로 이미지 분류(Image Classification) — 이미지 전체에 하나의 레이블을 부여하는 작업에 초점을 맞추었다. 하지만 컴퓨터 비전에는 분류를 넘어선 다양한 응용이 있다.

객체 탐지 (Object Detection)

7장에서 봤다. 이미지 안의 물체마다 클래스와 박스 \((x_c, y_c, w, h)\), 신뢰도를 함께 내고, 출력 개수는 이미지마다 다르다. IoU·NMS 계산과 라벨링, 사전학습 YOLO의 파인튜닝은 심화 자료 9장에 있다.

시맨틱 분할 (Semantic Segmentation)

정의: 시맨틱 분할 (Semantic Segmentation)

이미지의 모든 픽셀에 클래스 레이블을 부여하는 작업.

  • 입력: \(H \times W \times 3\) 이미지
  • 출력: \(H \times W\) 레이블 맵 (각 픽셀이 어떤 클래스에 속하는지)

시맨틱 분할은 객체의 정확한 경계까지 파악한다.

비교 객체 탐지 시맨틱 분할
출력 단위 바운딩 박스 (사각형) 픽셀 단위
정밀도 대략적 위치 정확한 경계
활용 자율주행 차량 감지 의료 영상에서 종양 경계 추출

CV 응용의 비교

작업 입출력 예시 주요 응용
이미지 분류 이미지 → 클래스 1개 이 사진은 '고양이' 이미지 검색, 필터링
객체 탐지 이미지 → 클래스 + 위치(여러 개) '고양이'(120,80), '개'(300,50) 자율주행, CCTV
시맨틱 분할 이미지 → 픽셀별 클래스 모든 픽셀에 레이블 부여 의료 영상, 위성 사진

의료 영상에서의 시맨틱 분할

시맨틱 분할은 의료 영상 분석(Biomedical Image Analysis)에서 특히 중요하다.

  • 뇌종양 탐지: MRI 영상에서 종양 영역을 픽셀 단위로 분리
  • 말라리아 감염: 현미경 이미지에서 감염된 세포를 분할
  • 병변 경계 추출: CT/X-ray에서 정상 조직과 비정상 조직의 경계 표시

이러한 의료 응용에서 정확한 경계 정보는 진단과 치료 계획 수립에 핵심적이다.


정리

이 챕터에서 학습한 내용을 요약하면:

개념 핵심 내용
학습 전략 학습 성능 진단 → 아키텍처 또는 데이터 조정
데이터 증강 이동, 반전, 회전, 색상 변환 등으로 학습 데이터 확장
증강의 금지선 훈련 데이터에만 적용 / 레이블이 바뀌는 변형은 금지
데이터 합성 컴퓨터로 새로운 합성 이미지를 생성
전이 학습 사전 학습 모델의 특성 추출기를 재활용, 분류기만 재학습
동결 학습 파라미터가 전체의 0.1% 미만 → 적은 데이터로도 과적합 없이 학습
입력 규격 맞추기 크기 224×224 + 사전학습 당시의 정규화 통계 — 틀려도 에러가 안 난다
미세 조정 학습률 처음부터 학습할 때의 1/10 ~ 1/100 — 좋은 가중치를 망가뜨리지 않기 위해
객체 탐지 이미지에서 여러 객체의 클래스 + 위치(바운딩 박스)를 출력
시맨틱 분할 모든 픽셀에 클래스를 부여, 의료 영상 등에 활용

딥러닝과 컴퓨터 비전 파트 정리: Ch05~Ch08에서 이미지 데이터(Ch05) → 콘볼루션 연산(Ch06) → CNN 구조와 아키텍처(Ch07) → 학습 전략과 응용(Ch08)까지, 이미지를 입력으로 받아 자동으로 특성을 추출하고 판단을 내리는 전체 과정을 학습했다.