본문 바로가기

Python/Data Analysis

Data Analysis / DL / CNN

< 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