CNN
Convolutional Neural Network
: 이미지 분류에 주로 쓰이고 패턴 인식을 통해 기존 정보를 일반화하여 다른 환경의 이미지에 적용하여 분류함.
Sparse Connectivity(노드간의 연결을 줄임)한 특성이 있음.
CNN 사용 이유
: FC(Fully Connected Layer)로 구성된 인공 신경망의 입력 데이터는 1차원의 형태로 한정이 되기에 3차원으로 구성된 이미지는(컬러 이미지 기준) FC로 학습할 경우에 평면화 작업(Flatten)을 거쳐 공간 정보가 손질이 된다.
이는 이미지의 공간 정보 부족으로 특징 추출 및 학습에 비효율적이고 정확도를 높이는데 한계가 있다. 이미지의 공간 정보를 유지한 상태로 학습을 하기 위해 CNN(Convolutional Neural Network)를 사용한다.
CNN은 FC와 비교하여 차별성을 가진다
- 각 레이어의 입출력 데이터의 형상 유지
- 이미지의 공간 정보를 유지하면서 인접 이미지와의 특징을 효과적으로 인식
- 복수의 필터로 이미지의 특징 추출 및 학습
- 추출한 이미지의 특징을 모으고 강화하는 Pooling 레이어
- 필터를 공유 파라미터로 사용하기 때문에, 일반 인공 신경망과 비교하여 학습 파라미터가 매우 적음
CNN 구조
Convolution Layer와 Pooling Layer(생략 가능)를 반복하여 특징을 추출하고
이미지 분류전 Flatten한뒤 Fully Connected Layer에서 분류함.
Low Level Feature High Level Feature
Input - Conv - ReLU(활성 함수) - Conv - ReLU - Pool - Conv - ReLU - Pool - FC
CNN 용어
1. 합성곱 Convolution
: 2개의 정보가 서로 섞이는 순서가 있는 절차, 합성곱의 처리 결과로부터 Feature Map을 만든다.
이미지 RGB 색상 채널 x Convolution Kernel (Convolution Filter)= Convoluved Feature
2. 채널 Channel
: 이미지 픽셀은 실수로 이루어져 있고 컬러 사진은 천연색을 표현하기 위해 각 픽셀을 RGB로 표현함.
즉 이미지란 각 픽셀을 RGB 각각의 값을 실수로 표현한 3차원 데이터이다(3개의 채널을 가짐).
예를 들어 높이 40, 폭 30 픽셀로 이뤄진 컬러 사진 데이터는 (40, 30, 3)(keras기준)으로 표현된다.
흑백의 이미지라면 RGB값이 의미가 없기에 (40, 30, 1)로 표현됨.
3. 필터 Filter = Kernel
: 이미지의 특징을 찾아내기 위한 공용 피라미터이다. CNN에서의 학습의 대상은 필터 파라미터이다. 입력된 데이터를 지정된 간격으로 순회하며 채널별로 합성곱을 하고 모든 채널의 합성곱의 합을 Feature Map으로 만든다.
stride = 1인 필터가 입력 데이터를 순회하는 예제이다. stride = 2로 설정한다면 필터는 2칸씩 이동하면서 이미지를 stride 함.
하나의 Convolution Layer에 크기가 같은 여러 개의 필터를 적용할 수 있음. 이 경우에는 필터의 개수만큼의 채널이 만들어지고 이를 다 더하면 출력 데이터인 Feature Map이 된다.
Feature Map은 합성곱 계산으로 이뤄진 행렬이며 여기에 활성 함수를 적용한 게 Convolution Layer의 최종 출력 결과인 Activation Map이다.
4. 패딩 Padding
: CNN은 Convolution Layer 과정을 중첩해서 사용하는데, 이 경우 Filter와 Stride의 작용으로 Feature Map의 크기는 입력 데이터보다 작아진다. 패딩은 Convolution Layer의 출력 데이터가 줄어드는 것을 방지하기 위해 하는 방법이고 입력 데이터의 외각에 지정된 픽셀만큼을 특정 값(보통은 0으로 채움)으로 채워 넣어 사용한다.
(4, 4, 1) 데이터의 외각에 1 pixel을 추가하여 (6, 6, 1) 행렬을 만드는 예시이다. Convolution Layer의 출력 데이터 사이즈를 조절하는 기능 외에 외각을 '0'으로 둘러싸는 특징으로 인공 신경망이 이미지의 외각의 인식하는 학습효과도 있다.
5. Pooling Layer
: Pooling Layer는 Filter 범위 내의 픽셀 줄 대푯값을 추출하는 방식으로 특징을 추출한다. Max Pooling, Average Pooling, Min Pooling을 이용하여 대표값을 추출할 수 있다.
Convolution Layer는 Padding을 통해 출력 이미지를 보존할 수 있지만 Pooling Layer는 대푯값을 추출하기 때문에 출력 이미지가 작아진다.
Pooling Layer는 이미지 크기는 적절히 줄이면서 특정 Feature를 강조 할 수 있다. 이는 이미지 품질을 떨어지게 되지만 하나의 픽셀로부터 형태를 분석하기에 수월해지는 장점이 있다.
출처
https://www.slideshare.net/leeseungeun/cnn-vgg-72164295
'Vision' 카테고리의 다른 글
[CNN] CNN의 구조 (0) | 2023.01.25 |
---|---|
[CNN] Convolutions 사용 이유 (0) | 2022.11.28 |
[CNN] LeNet-5 구조 (0) | 2022.10.13 |
[CNN] CNN 풀링 Pooling (0) | 2022.10.11 |
[CNN] 3D CNN (convolution Neural Network) (0) | 2022.09.30 |