주요 용어 기본 개념
Convolution (합성곱)
 |
합성곱 처리 방식 |
- 미리 지정한 필터 및 커널 사이즈에 맞게 원본 이미지의 RGB 수치를 집약하는 과정
- 명칭 그대로 필터 크기에 대응하는 각 (행, 열) 의 값을 element-wise 곱하여 합산
- 위 예시 이미지 기준
- Convolved Feature 가 Convolution Layer 를 통과한 뒤 출력값
- 1x1 + 0x0 + 0x1 + 1x0 + 1x1 + 0x0 + 1x1 + 1x0 + 1x1 = 4
- 이미지의 특징을 추출하기 위한 필연적 과정
Channel (채널)
- 이미지가 가지고 있는 픽셀 수치를 어떠한 방식으로 표현할 것인지 정의
- RGB
- 1개의 픽셀을 3개의 실수로 표현한 3차원 데이터 = 3개 채널
- Red / Green / Blue 가 각각 1개 채널
- 흑백
- 1개의 픽셀을 2개의 실수로 표현한 2차원 데이터 = 1개 채널
- shape 결정
- 너비 = 50 / 높이 = 50 / 컬러 이미지의 경우
- (50, 50, 3)
Filter (필터) w/ Stride
- 커널과 동일한 개념
- 주로 2차원 정사각 행렬로 표현
- 역할순서
- 이미지의 각 채널에 대해 합성곱 진행
- 채널별 합성곱 결과를 합산하여 Feature Map 구성
- 구성된 각 채널별 Feature Map 을 다시 합산
- 최종 1개의 Feature Map 도출
- Stride
- 지정된 간격
- 2 -> 2칸씩 오른쪽으로 이동 / 마지막 이동이면 다음 줄로 넘어가서 반복
- 1개의 Convolution Layer 는 n개의 필터를 가질 수 있음
- 즉, 필터가 n개라면 최종 도출되는 Feature Map 도 n개
Padding (패딩)
 |
패딩 처리 예시 |
- Convolution Layer 를 통과하면 기본적으로 출력 (Feature Map) 크기 < 입력 데이터
- 크기가 감소하는 것을 방지하는 역할
- 통상 줄어든 영역을 0으로 채워 넣음
- 패딩된 영역을 CNN은 이미지의 외각 부분이라고 인식할 수 있게 됨
- 종류
- valid = 패딩 X
- 사이즈가 맞지 않으면 가장 우측 열 및 가장 하단 행 drop
- same = 입력 사이즈에 맞춰 패딩 O
Pooling (풀링)
 |
Pooling 유형에 따른 처리 방식 |
- Convolution Layer 를 거쳐 탄생한 출력 데이터를 다시 입력으로 받음
- 목적
- 크기 조절
- 이미지의 주요 특징을 보다 강조하기 위함
- 통상, stride 크기 = pooling 크기
- 종류
- Max Pooling -> CNN에서는 주로 Max Pooling 선호
- Average Pooling
- Pooling Layer 를 거치면 Convolution Layer 출력 데이터보다 크기가 작아짐
소스 예시
# 1
model.add(Conv2D(32, (3, 3), padding="same", input_shape=X_train.shape[1:], activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
# 2
model.add(Conv2D(64, (3, 3), padding="same", activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
References
댓글
댓글 쓰기