1. Convolution Neural Network (CNN)
- 필터링 기법을 인공신경망에 적용(Convolution 작업)하여 이미지를 효과적으로 처리 할 수 있는 기법
- 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법
2. 심층신경망(DNN), 합성곱신경망(CNN)의 차이
심층 신경망 (DNN)
- 1차원의 데이터로 학습
- 다차원일 경우 flatten 작업을 통해 1차원으로 변경, 이미지의 경우 공간적/지역적 정보가 손실
- 추상화 과정 없이 바로 연산 과정으로 넘어가기 때문에 학습 시간과 효율성이 저하
합성곱 신경망 (CNN)
- 그대로의 데이터로 학습
- 공간적/지역적 정보 유지
- 이미지 전체보다는 부분을 보는 것, 이미지의 한 픽셀과 주변 픽셀들의 연관성을 살리는 것
- 가중치(weight)는 행렬의 숫자를 의미
3. 이미지에 대한 이해
- RGB(Red, Green, Blue) : 색을 표현할 수 있는 색의 정보, 빨간색, 녹색, 파란색으로 구성
- 채널(Channel) : 각각의 색상을 표현하는 정보 (흑백은 채널1개, 컬러는 RGB 각각 1개씩 총 3개)
- 이미지는 3차원의 행렬로 표현 (이미지의 가로 길이, 세로 길이, 채널)
4. CNN의 구성
- Convolution Layer와 Pooling Layer를 반복적으로 수행하여 특징을 추출 (Feature Extraction)
- Flatten 작업을 통해 Fully Connected Layer로 변환
- Fully Connected Layer : 1차원 형태의 행렬, 모든 노드를 하나로 연결한 계층
- Fully Connected Layer에서 Classifier를 통해 학습한 데이터를 기준으로 분류 작업 수행
5. Convolution
- 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 연산
- 필터(Filter)를 이용해 특정 크기 별로 학습을 하고 피쳐 맵(Feature Map)을 만드는 과정
(1) Filter (Kernel, Feature detector)
- 이미지의 특징을 찾아내기 위한 공용 파라미터, 필터로 특징을 학습
- 일반적으로 3x3, 4x4 정의
- 행렬 별로 합성곱 연산을 하고 연산의 합을 Feature Map(=Activation Map)으로 생성
(2) Stride
- 필터가 convolution 연산을 수행 할 때의 이동 간격
- 수치에 따라 행과 열로 N칸씩 이동
(3) Zero-padding
- convolution 연산을 했을 때 이미지 크기를 조절하기 위해 행렬 주변에 0을 채워 넣는 방법
- 합성곱의 필터 처리를 한 데이터는 기존 데이터보다 작아지기 때문에 크기 유지를 위해 사용
- 입력값과 출력값의 크기가 동일. 즉, 이미지 정보 손실을 최소화
- 예시) 패딩을 사용하지 않고 합성곱 연산 수행
- 5x5 크기의 이미지, 3x3 크기의 필터
- 3x3의 Feature Map 생성
- 5x5 크기의 이미지, 3x3 크기의 필터
- 예시) 패딩을 사용하여 합성곱 연산 수행
- 7x7(padding=1) 크기의 이미지, 3x3 크기의 필터
- 5x5의 Feature Map 생성, 처음의 이미지(입력 값)와 크기가 같음
- 7x7(padding=1) 크기의 이미지, 3x3 크기의 필터
- 예시) 패딩을 사용하지 않고 합성곱 연산 수행
(4) convolution 결과로 나오는 feature map 사이즈 계산법
- (I - K + 2P) / S + 1
- I : input image size
- K : kernel(filter) size
- S : stride
- P : zero-padding
6. Pooling (Downsampling)
- Convolution 레이어의 출력 데이터(Feature Map)를 입력으로 받아 크기를 줄이는 작업
- 쓸데없는 파라미터들의 수를 줄이기 때문에 과적합 방지
- 풀링 작업을 통해 특징을 쉽게 확인, 인공지능이 모양을 더 잘 인식 할 수 있음
- 풀링 레이어 통과시 크기 감소
- 즉, 추상화를 통해 이미지의 특징은 그대로 가지고 처리 효율을 높임
- 풀링의 종류
- Max Pooling : 영역 안의 최대값 추출, 일반적으로 사용
- Average Pooling : 영역 안의 평균값 추출
7. Flatten
- 다차원의 행렬을 1차원의 행렬로 변환하는 작업
- Convolution Layer와 Pooling Layer를 반복적으로 수행한 후, Flatten 하여 인공신경망(fully connected layer)에 이어 붙임
'Machine Learning > Deep Learning' 카테고리의 다른 글
Tensorflow - ImageDataGenerator를 이용한 이미지 전처리와 이미지 증강 (0) | 2023.01.01 |
---|---|
Tensorflow - CNN 모델 예제 (0) | 2022.12.31 |
Tensorflow - 레이블인코딩 된 y값을 원핫인코딩으로 바꾸기 (0) | 2022.12.31 |
Tensorflow - model을 파일로 저장하고 불러오는 방법 (0) | 2022.12.30 |
Tensorflow - 이미지를 1차원으로 만드는 방법(Flatten) (0) | 2022.12.30 |