[Computer Vision] CNN (Convolutional Neural Network)

2023. 11. 9. 11:02ML&DL/CV

1. 합성곱 신경망 (CNN, Convolutional Neural Network)

- 주로 이미지 인식 및 처리에 많이 사용되는 알고리즘

- 합성곱 계층(Convolution Layer) 풀링 계층(Pooling Layer)로 이루어져있음

- 공간적인 위치 정보를 유지하여 위치별 특징을 추출함

- 합성곱 계층은 이미지 특징을 찾아내어 새로운 feature map을 생성하고 풀링 계층은 feature map 의 사이즈를 축소하는 역할을 함

 

 

2. 채널(Channel)

- 영상 처리에서 이미지는 3차원 텐서를 가짐 (높이, 너비, 채널)

-> 높이 : 이미지 세로 방향 픽셀 수 , 너비 : 이미지 가로 방향 픽셀 수, 채널 : 색성분

 

 

 

- 흑백 이미지라면 채널 수가 1이고, RGB로 이루어진 컬러 이미지는 채널 수가 3

 ex) (28X28X1) : 흑백 / (28X28X3) : 컬러

 

 

3. 합성곱 계층(Convolution Layer)

- 합성곱 계층은 이미지의 특징을 추출하는 역할을 함

3-1. 커널(kernel)

- 커널 (or 필터 or 마스크 (다 같은 의미임))의 크기 만큼 이미지를 스캔함.

- 3x3 또는 5x5 사용

- 스캔하면서 이미지의 특징을 찾고 새로운 feature map을 생성함

 

3-2. 패딩(padding)

- 합성곱 연산의 결과로 얻은 feature map은 입력 이미지보다 크기가 작아진다는 특성이 있음

=> 계층이 깊으면 feature map이 매우 작아진다는 문제점이 있음
- 입력 이미지의 크기를 유지하기 위해서 패딩을 사용함

 

 

- 5x5에 3x3 필터를 씌우면 3x3 크기가 나옴

- 패딩을 추가해준 뒤 3x3 필터를 씌우면 입력 크ㅁ기와 동일한 5x5 가 나옴

 

 

 

- 패딩은 입력의 테두리에 지정된 개수만큼 행과 열을 추가해주는 것

- 주로 0을 채우는 제로 패딩(Zero Padding) 방법 사용 

 

3-3. 스트라이드(stride)

- 필터를 얼만큼의 간격으로 이동할 것인가 (얼마나 촘촘하게 이동할 것인지)

- 3x3 필터를 스트라이드 2로 설정한다면 더 작은 사이즈의 결과가 나옴

 

3-4.  특징 맵(feature map)

- 컨볼루션 연산의 결과물, 말 그대로 이미지의 특징을 추출한 결과

 

- Low Level -> Middle Level -> High Level 순으로 점차 고수준의 feature map을 생성함

- 입력 층과 가까운 컨볼루션 초기에는 저수준의 feature map이 생성되고, 출력층에 가까울 수록 고수준의 피처맵이 생성

 

 

4. 풀링 계층(Pooling Layer)

- 컨볼루션의 결과로 나온 feature map의 사이즈를 줄이는 역할을 함

- max pooling 과 Average Pooling 일반적으로 사용

- 학습해야 할 매개변수가 없음, 채널 수가 변하지 않음

 

- max pooling 은 최대값 추출

 

- Average pooling은 평균값 추출

 

 

- max pooling의 성능이 좋아 일반적으로 사용함 (의미있는 정보를 강조해서 잘 추출)

- average pooling은 이미지를 smoothing 시키는 경향이 있음

- min pooling은 이미지의 의미있는 정보를 추출하기 어려움

 

 

5. 완전 연결층(Fully-Connected layer)

- 특징 추출 (Feature extraction) 결과를 바탕으로 이미지를 분류하는 층

-  평탄화(flatten) 작업으로 shape을 1차원으로 만든 뒤에 fully connected 수행해야함

 

- 이전 레이어의 모든 처리 결과를 하나로 연결

-> 이미지를 분류하기 위해서는 특정 영역이 아닌 전체 영역을 고려해야하기 때문

ex) 배경이 바다라면 고양이가 아닐 확률이 높다.