학습 목표
•
CNN과 VGG를 활용하여 CIFAR-10 이미지 분류 모델을 구현한다.
학습 순서
1.
이해하기: CNN 구조 이해
2.
데이터 전처리: 증강 및 정규화
3.
CNN으로 이미지 분류하기: 기본 CNN 모델 구성 및 학습
4.
전이 학습(VGG): 사전 학습된 모델 활용
세부 단계
•
데이터 증강
•
이미지 정규화
•
모델 정의
•
사전 학습된 모델 불러오기
•
학습 루프 정의
•
모델 학습
•
모델 성능 평가
핵심 용어 요약
1.
합성곱(Convolution) – 필터를 사용하여 이미지 특징을 추출하는 연산
2.
CNN – 합성곱층을 반복적으로 쌓아 구성한 신경망
3.
특징 맵(Feature Map) – 합성곱 연산의 결과로 생성된 이미지
4.
데이터 증강(Data Augmentation) – 회전, 자르기 등을 통해 데이터를 다양하게 만드는 기법
5.
데이터 전처리(Data Preprocessing) – 학습 전 데이터를 수정하고 준비하는 과정
6.
이미지 정규화(Normalization) – 채널별 픽셀 값의 분포를 균일하게 조정하는 기법
7.
패딩(Padding) – 이미지 외곽을 0으로 채워 크기를 유지하는 기법
8.
크롭핑(Cropping) – 이미지의 일부를 잘라내는 기법
9.
최대 풀링(Max Pooling) – 커널 내 최댓값을 선택하여 특징 맵 크기를 축소하는 연산
10.
전이 학습(Transfer Learning) – 사전 학습된 모델의 파라미터를 활용하는 학습 방법
CNN이 왜 중요할까? 고해상도 이미지(예: 4K UHD)는 약 840만 개의 픽셀로 구성됩니다. 일반 신경망으로 이를 처리하면 각 층마다 매우 많은 가중치가 필요해 연산량이 기하급수적으로 증가합니다. 이러한 문제를 해결하기 위해 합성곱(convolution) 연산이 도입되었습니다. 합성곱은 작은 크기의 필터를 이용해 이미지의 중요한 특징을 효율적으로 추출하는 기법입니다.
이해를 돕기 위한 비유: 색깔이 있는 투명 필름을 통해 특정 색상의 글자만 걸러내듯이, CNN은 이미지에서 중요한 패턴과 특징만을 선택적으로 추출합니다. 불필요한 정보는 제거하고 분류에 필요한 핵심 특징만 남기는 것입니다.
CNN은 이러한 방식으로 이미지 판별에 유용한 특징을 자동으로 학습합니다. 여기서 특징 추출에 사용되는 작은 필터를 커널(kernel)이라고 합니다.
기존 모델은 모든 픽셀에 대해 가중치를 갖고 있습니다. 이미지 전체를 특징으로 이용하기 때문에 학습에 사용된 데이터에 관해서는 완벽에 가까울 정도로 특징을 잡아낼 수 있는데, 특징 위치가 바뀌게 되면 무용지물이 됩니다. 반대로 합성곱은 커널을 이미지 안에서 이리저리 움직이며 특징을 추출합니다. 볼 수 있는 시야는 좁아지는 대신, 위치와 무관하게 특징을 잡아낼 수 있습니다. 또 하나의 장점이 있습니다. 이미지 전체에 가중치를 두는 모델은 이미지 크기가 커지면 학습해야 하는 가중치 개수도 늘어나는데, CNN 커널 크기는 변화가 없습니다. 즉 커널을 사용하면 이미지 크기와 무관하게 학습해야 하는 가중치 개수가 같습니다. 학습할 가중치도 줄어들고, 특징의 위치에 대해 어느 정도 자유로워졌으니 두 마리 토끼를 다 잡은 셈이죠.
CNN 이해하기
CNN은 합성곱을 사용하는 신경망입니다. 합성곱 신경망, 콘불루션 신경망 다양하게 불리고 있습니다. 이미지에 특징이 하나만 있는게 아니라서 CNN은여러 층의 필터를 사용하여 이미지를 분류합니다. 그래서 셀로판지 필터와 달리 CNN의 필터는 여러층의 색, 모양을 제거 할 수 있습니다. 과거에는 CNN필터를 사람이 직접 설계 했지만 최근에는 딥러닝을 이용하여 만들고 있습니다. CNN은 딥러닝을 이용해 합성곱 필터를 학습하는 신경망 입니다.
합성곱(Convolution): 특징을 추출하는 과정
•
원본 이미지 (Input Image): 우리가 분석하고 싶은 사진입니다.
•
커널 (Kernel): '특징 돋보기'나 '필터'라고 생각하면 쉽습니다. 이 커널은 '수직선', '수평선', '특정 색상' 등 이미지의 아주 기본적인 특징을 찾아내는 역할을 합니다. 커널 안에는 학습을 통해 얻어진 **가중치(weights)**라는 숫자들이 들어있습니다.
•
연산 방식:
1.
커널을 원본 이미지의 왼쪽 맨 위부터 올려놓습니다.
2.
이미지에서 커널과 겹치는 부분의 각 픽셀 값을 커널의 해당 위치 값과 서로 곱합니다. (요소별 곱셈)
3.
곱해진 모든 값들을 전부 더해서 하나의 숫자를 만듭니다. 이 숫자가 바로 해당 위치에서 커널이 찾으려는 특징이 얼마나 강하게 나타나는지를 의미합니다.
4.
정해진 간격(stride)만큼 커널을 옆으로 옮겨가며 이 과정을 반복합니다.
즉 이렇게 추출한 특징들을 조합해 어떤 이미지인지 예측한다고 생각하면 됩니다.
자주 사용하는 CNN 모델
VGG (Visual Geometry Group)
•
핵심 아이디어: 작고 깊게! 
•
특징: VGG 이전의 모델들은 5x5나 7x7 같은 큰 사이즈의 '특징 돋보기'(커널)를 사용했습니다. 하지만 VGG는 3x3 크기의 작은 커널을 여러 층으로 깊게 쌓는 방식을 제안했습니다.
•
장점: 이렇게 작은 커널을 여러 번 사용하면, 큰 커널을 한 번 사용하는 것과 비슷한 효과(넓은 영역을 보는 효과)를 내면서도 학습해야 할 파라미터(가중치) 수를 크게 줄일 수 있습니다. 이는 모델을 더 효율적으로 만들었습니다.
ResNet (Residual Network)
•
핵심 아이디어: 지름길(Shortcut)을 만들자! 
•
특징: 신경망이 VGG처럼 매우 깊어지면, 학습 과정에서 기울기가 점점 사라지는 **'기울기 소실 문제(Vanishing Gradient Problem)'**가 발생해 오히려 성능이 떨어지기도 합니다. ResNet은 이 문제를 해결하기 위해 **'스킵 연결(Skip Connection)'**이라는 획기적인 구조를 도입했습니다. 이는 몇 개의 층을 건너뛰어 입력 데이터를 출력에 바로 더해주는 '지름길'과 같습니다.
•
장점: 이 지름길 덕분에 기울기가 뒤쪽까지 잘 전달되어, VGG보다 훨씬 더 깊은 네트워크(수백, 수천 개 층)를 효과적으로 학습시킬 수 있게 되었습니다. 현재도 가장 널리 쓰이는 기본 모델 중 하나입니다.
Inception (GoogLeNet)
•
핵심 아이디어: 다양한 크기의 돋보기를 동시에 쓰자! 
•
특징: 이미지 속 객체는 크기가 제각각이라, 어떤 크기의 커널이 가장 효과적일지 알기 어렵습니다. Inception 모델은 하나의 층 안에서 1x1, 3x3, 5x5 등 다양한 크기의 커널을 동시에 적용하고 그 결과들을 합치는 **'인셉션 모듈'**을 사용합니다.
•
장점: 이를 통해 모델이 다양한 스케일의 특징을 한 번에 잡아낼 수 있어 성능을 높였습니다. 또한, 3x3 커널을 여러 층 쌓아 큰 커널을 근사하는 등 VGG의 아이디어를 활용해 파라미터 수를 효율적으로 관리했습니다. VGG보다 **"넓은 시야(receptive field)"**를 효율적으로 확보한 셈입니다.







