CNN이란?
Convolutional Neural Network 의 앞 문자를 따서 부르는 것으로 '합성곱 신경망'이라고 한다.
이미지 처리와 같은 공간 데이터 분석에 특화된 딥러닝 모델이다.
CNN 구조는 합성곱과 풀링을 통해 입력 이미지를 처리하고, 최종적으로 완전 연결층을 통해 클래스(숫자 0~9)를 예측한다.
이 과정은 특징 추출(feature extraction)과 분류(classification)의 두 단계로 구성되어 있다.
1. 입력층(Input Layer)
- 크기: 32x32 픽셀의 이미지 입력.
- 위 사진의 손글씨 숫자 3.
2. 특징 추출(Feature Extraction)
1) 첫 번째 합성곱층 (C₁: Convolution Layer)
- 필터 크기: 5x5 크기의 합성곱 필터 적용.
- 출력 크기: 28x28의 특징 맵(feature map) 생성.
- 기능: 가장 기본적인 특징(에지, 선, 모서리 등) 추출.
2) 첫 번째 서브샘플링층 (S₁: Subsampling Layer)
- 풀링 방식: 2x2 크기의 서브샘플링(또는 풀링) 적용.
- 출력 크기: 14x14로 축소.
- 기능: 차원 축소 및 특징 보존. 계산량 감소와 과적합 방지.
3) 두 번째 합성곱층 (C₂: Convolution Layer)
- 필터 크기: 5x5 합성곱 필터 적용.
- 출력 크기: 10x10의 새로운 특징 맵 생성.
- 기능: 더 복잡한 특징(패턴, 곡선 등) 추출.
4) 두 번째 서브샘플링층 (S₂: Subsampling Layer)
- 풀링 방식: 2x2 서브샘플링 적용.
- 출력 크기: 5x5로 축소.
- 기능: 추가적인 차원 축소 및 특징 요약.
3. 분류(Classification)
1) 완전 연결층(Fully Connected Layer)
- 특징 맵을 1차원 벡터(flatten)로 변환.
- 뉴런 연결: 완전히 연결된 신경망 층(Fully Connected Layer).
- 기능: 이미지의 패턴을 기반으로 클래스 예측.
2) 출력층(Output Layer)
- 출력 노드: 10개의 노드(0~9까지의 숫자 클래스).
- 활성화 함수:
- 시그모이드(sigmoid) 또는 소프트맥스(softmax) 사용.
- 각 클래스의 확률값을 계산.
4. 손실 함수(Loss Function)
- 이진 분류: Binary Cross Entropy (BCE).
- 다중 클래스 분류: Cross Entropy Loss.
- 모델이 예측한 확률과 실제 레이블 간의 오차를 계산하여 학습을 최적화.
Convolution이란?
이미지 처리 및 딥러닝에서 중요한 연산으로, 합성곱이라고도 한다.
주로 CNN(Convolutional Neural Network)에서 이미지의 특징(feature)을 추출하기 위해 사용한다.
컨볼루션은 작은 필터(또는 커널)을 사용하여 입력 이미지의 특정 영역을 반복적으로 스캔하면서 연산을 수행한다.
주로 다음과 같은 목적을 가지고 컨볼루션을 진행한다.
- 엣지 검출(Edge Detection) : 이미지의 윤곽선을 찾아내는 데 활용됩니다.
- 패턴 인식 : 얼굴 인식, 사물 인식 등에서 특정 패턴을 추출합니다.
- 영상 분류 및 검출 : 이미지 내 특정 객체나 사람을 구분하는 작업에 사용됩니다.
연산 방법은 다음과 같으며 입력 이미지와 필터는 예시이다.
ex) 입력 이미지 (5X5)
1 1 1 0 0
0 1 1 1 0
0 0 1 1 1
0 0 1 1 0
0 1 1 0 0
ex) 필터 (3X3)
1 0 1
0 1 0
1 0 1
연산 과정 (Stride = 1)
- 첫 번째 위치 (좌상단)
- 3x3 부분 추출:
필터와 곱셈
(1*1) + (1*0) + (1*1) +
(0*0) + (1*1) + (1*0) +
(0*1) + (0*0) + (1*1)
결과 : 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 1 = 4
.
.
.
이렇게 연산을 반복하다보면 총 9번을 하게 되고
최종 출력 결과는 3X3 행렬로
4 3 3
2 4 3
2 3 4
다음과 같이 출력된다.
https://youtu.be/LgFNRIFxuUo?si=wKO25BtnZozQMkbf
'💻 본업(컴공생) 이야기 > 파이토치 공부 이야기' 카테고리의 다른 글
[파이토치 (PyTorch)] 9. Softmax Classifier (2) | 2025.01.08 |
---|---|
[파이토치 (PyTorch)] 8. PyTorch DataLoader (0) | 2025.01.08 |
[파이토치 (PyTorch)] 7. Wide and Deep (4) | 2025.01.08 |
[파이토치 (PyTorch)] 6. Logistic Regression (로지스틱 회귀) (1) | 2025.01.08 |
[파이토치 (PyTorch)] 5. Linear Regression in PyTorch way (0) | 2025.01.07 |