CNN 구조
- DNN(Deep Neural Network)와 같이 입력 계층, 출력 계층 그리고 두 계층 사이의 여러 개의 은닉 계층으로 구성
- CNN의 은닉 계층은 특징 추출, 분류 분석 2가지로 구성
CNN의 은닉 계층에서 데이터를 분석하는 순서
1. 특징 추출 : 특징 및 위치 정보를 추출
2. 분류 분석 : 1에서 추출된 정보를 이용해 분류
Feature Extraction(특징 추출 계층)
- 입력 데이터의 특징을 위치 정보와 함께 추출하기 위한 계층
- 3D Tensor를 출력
- Convolution : 특징 추출에 사용되는 연산
- Relu : 활성화 함수
- Pooling : 데이터의 사이즈를 줄이기 위한(압축) Sub Sampling 전략
Classification(분류 계층)
- 특징 추출 계층에서 얻은 정보를 이용해 분류를 수행하는 계층
- DNN에서 사용한 FCL(Fully Connected Layer)을 그대로 사용한다
- 입력된 3D Tensor를 FCL에 넣을 수 있게 1D Tensor로 바꿔줘야 한다
- Flatten : 특징 추출 계층의 정보를 FCL에서 처리할 수 있는 형태로 가공
- FCL : 특징 추출 계층의 정보를 처리
- Softmax : 분류 분석을 위한 활성화 함수
CNN의 주요 개념
- 필터(Filter, Kernel)
- 합성곱(Convolution)
- 특성맵(Feature Map)
- 스트라이드(Stride)
- Padding
- Pooling
Filter(필터)
- 입력된 이미지의 특성을 추출하기 위한 일종의 도구(Kernel, mask라고도 불림)
- 입력된 이미지에 Filter를 Convolution 연산을 통해 적용함으로써 패턴 추출
Convolution(합성곱)
- 두 개의 matrix를 동일한 Position 해당 값끼리 곱한 후 더하는 연산
1. Filter는 일반적으로 5*5, 11* 11 등과 같은 정사각 행렬로 정의
2. Filter가 이미지 데이터 행렬을 순회하며 Convolution을 수행
3. 연산 수행의 결과는 Feature Map이라는 새로운 행렬
이미지 분석과 Conv Layer
- 고정된 사이즈의 필터가 input의 전체 영역을 필터의 사이즈만큼씩 sliding하면서 분석
- 하나의 필터로 이미지 내 여러 위치에 존재하는 특성 검출 가능
- 눈을 검출하는 필터로 사람의 얼굴 분석 시, 좌, 우 눈 검출 가능
이미지 분석과 FC Layer
- input 이미지 전체 픽셀에 연결되어 있는 퍼셉트론의 가중치를 이용하여 한번에 분석
- 하나의 퍼셉트론으로는 특정 위치에 존재하는 특성만 검출 가능
- 왼쪽 눈을 검출하는 퍼셉트론은 오른쪽 눈은 검출 불가
Conv Layer의 특성
- Translation Invariance : 함수의 입력이 바뀌어도 출력은 그대로 유지되어 바뀌지 않음을 의미
- ex) 왼쪽눈, 오른쪽눈 모두 눈을 검출하는 필터를 적용 시, 동일한 결과
- Locality of pixel dependencies : 이미지에서 특징들은 좁은 영역에 있는 여러 픽셀들에 걸쳐 나타남을 의미
- 하나의 픽셀 또는 전체 픽셀을 분석할 필요 없이, 3*3, 5*5처럼 작은 사이즈의 픽셀 묶음을 분석할 때 주요한 특징을 찾을 수 있다
Stride
- 과거 하드웨어 성능이 부족해서 연산의 비효율을 줄이기위해 고안됨
- Locality of pixel dependencies로 인해 필터 적용 연산의 비효율 발생
- 입력 이미지의 근접한 영역에 필터 적용 시 유사한 결과 발생
- Stride : Filter가 원본 이미지 데이터의 행렬을 순회할 때 지정하는 간격
Padding
- Convolution 연산과 Stride 적용 시, Feature Map 행렬의 크기는 원본 행렬보다 작아진다
- 행렬 연산은 행렬 간의 크기가 중요함(shape이 맞지 않는 행렬은 연산 불가 또는 누락되는 정보 발생)
- 원활한 행렬 연산을 위해 Padding 기법으로 원본 행렬 크기로 맞춤
- 주로 0으로 채워넣음 : Zero Padding
Pooling
- Feature Map에서 크기를 축소(Sub sampling)
- 고해상도 이미지를 저해상도로 바꾸는 작업과 유사
- ex) Max Pooling, Average Pooling
'프로젝트 > 코드프레소 체험단' 카테고리의 다른 글
이미지 데이터 처리를 위한 CNN 완벽 가이드 - Keras의 CNN API (0) | 2022.03.05 |
---|---|
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 이미지 데이터에 대한 이해 (0) | 2022.03.04 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 이미지 처리와 딥러닝 (0) | 2022.03.04 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - 보스턴 집값 회귀 분석 실습 (0) | 2022.03.03 |
이미지 데이터 처리를 위한 CNN 완벽 가이드 - fashion-mnist 분류 분석 실습 (0) | 2022.02.23 |