< CNN >
▷ 이미지 처리에 DNN을 사용하게 되면 공간정보가 유실된다. (데이터를 1차원으로 바꾸기 때문)
▷ Convolution & Pooling 과정을 통해서 이미지의 특징을 뽑아내고, 그 후에 DNN을 적용하면 공간정보가 소실되지 않고 학습할 수 있다는 개념
1. Convolution (합성곱) 연산
▷ 배열에서 같은 위치에 있는 것들끼리 곱해서 합치는 연산
2. Channel
▷ 이미지에서는 2차원 데이터가 중첩된 갯수로 정의
▷ 컬러사진의 경우, 각 pixel은 R,G,B 3개로 구성되므로 channel은 3
▷ 흑백사진의 경우, channel은 1
3. Filter & Stride
▷ Filter : 이미지의 특징을 추출하기 위해 사용하는 공용 parameter로 일반적으로 정방형을 사용
▷ Filter는 지정된 간격을 이용하면서 이미지 데이터와 convolution 연산을 수행하여 최종적으로 Feature map을 생성
▷ 여기서 지정된 간격을 Stride라고 한다. (default 값은 1)
4. Convolution Layer
▷ 여러개의 filter를 사용할 수 있고, feature map에는 filter의 개수 만큼 channel이 생긴다. (모든 filter의 size는 동일)
▷ 이렇게 만들어진 feature map(3차원)에 활성화 함수(ReLU)를 적용해서 만든 결과가 activation map이다.
5. Padding
▷ filter의 size가 커지면 Feature map의 크기는 작아진다.
▷ 결국 convolution layer를 통과할수록 데이터가 작아지므로 이를 방지하기 위해 padding이 등장
▷ 입력 데이터 외곽에 지정한 pixel만큼 특정값으로 채워넣는 작업
▷ 코드에서는 두가지 option 제공
- valid : padding 수행 안함 / size가 줄어듬
- same : padding 수행 / 입력크기와 출력크기가 동일하도록 padding
6. Pooling layer
▷ filter를 여러개 사용하다 보면 실제 데이터의 크기가 상당히 증가하게 된다.
▷ 데이터량을 줄이기 위해 수행하는 작업이 pooling이다.
▷ Max pooling : 각 kernel 마다 가장 큰 값을 추출해내는 방법
< CNN 실습 >
1. 이미지 처리
2. Convolution & Pooling
'Python > Data Analysis' 카테고리의 다른 글
Data Analysis / ML / SVM (0) | 2020.10.21 |
---|---|
Data Analysis / DL / Basic(2) (0) | 2020.10.16 |
Data Analysis / DL / Basic (0) | 2020.10.16 |
Data Analysis / ML / Tensorflow 2.x(2) (0) | 2020.10.15 |
Data Analysis / ML / Tensorflow 2.x(1) (0) | 2020.10.15 |