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