We-Co

[We-Co] CNN의 풀링, 컨볼루션 - Tensorflow 본문

Python/Tensorflow

[We-Co] CNN의 풀링, 컨볼루션 - Tensorflow

위기의코딩맨 2021. 10. 4. 00:43
반응형

안녕하세요. 위기의코딩맨입니다.

오늘은 CNN의 필수 과정인 Convolution Layer, Pooling Layer을 알아보도록 하겠습니다. 

CNN은 이미지의 특징을 추출해 학습하는 과정을 의미합니다.

 

CNN의 구조

 

[ Convolution Layer ]

CNN을 풀어서보면 Convolusion Neural Networks를 의미합니다.

CNN에서 Convolusion은 아주 중요한 역할을합니다.

Convolusion층에서 컨볼루션 연산을 통해서 입력된 이미지의 특징을 추출하는 역할을 진행합니다.

합성곱의 의미를 갖고있는 컨본루션은 커널(Kernel)이나 필터(Filter)로 칭하는

Window Size만큼 X * X의 행렬을 Y*Y 크기의 이미지 행열의 X*X크기 부분과 곱해서 합을 구하는 연산자입니다.

Convolution 연산

이런 작업을 이미지 행렬의 가장 왼쪽 시작점 부터 오른쪽 아래부분까지

순차적으로 연산을 진행하는 동작을 의미합니다.

-1,0,1,-2,0,2,-1,0,1의 조합으로 되어있는 행렬은 커널,필터로 칭하는 Window Size로 생각하시면 됩니다.

 

이러한 작업을 진행하면 커널의 종류에 따라 입력된 이미지의 특징을 추출할수 있습니다.

[출처:http://datahacker.rs/edge-detection/]   Edge Detection Kernel

Edge detection Kernel을 이용하여 경계선을 추출하는 이미지를 가져올수 있으며,

Sharpen Kernel을 이용하여 원본보다 뚜렷한 이미지를 얻을 수 있습니다.

 

이러한 결과로 나오는 특징 맵은 사용한 Kernel을 통해서 명확히 드러나지 않은 특징들을 가져와

최종판단을 내리기 위해 쉬운 형태로 만드는 작업입니다.

 

연산

Win은 원본 이미지의 가로의 길이를 의미하고,

Convolution을 거친 출력의 이미지 가로 길이를 Wout를 의미합니다. 

F는 Filter의 크기, S는 스트라이드, P는 제로패딩을 의미합니다.

 

 

여기서 스트라이드는 원래 Convolution작업을 1픽셀, 1칸씩 증가를 하는데

이러한 작업에서 작업을 건너뛰는 것을 의미합니다. 

 

P는 제로패딩으로, 이미지 차원이 정수로 나누어 떨지지지 않을때, 

입력된 이미지의 상,하,좌,우 모서리에 P만큼 0의 값을 채워주는 작업을 의미합니다.

밑에 이미지는 제로패딩 1을 적용한 모습이고, 2를 적용하면 0의 값의 줄이 한 줄 더 생기게 됩니다.

Zero-Padding

 

마찬가지로 세로의 길이도 가로의 작업과 마찬가지로 같은 작업을 진행합니다.

연산2

마지막으로 필터 개수 K의 결과 값도 포함되는데 

컨볼루션층의 출력 결과는 [ Wout, Hout, K ]의 결과로 차원이 출력됩니다.

 

 

[ Pooling ]

간단하게 정의하면 이미지의 차원을 축소하는 작업을 의미하고, SubSampling

대량의 연산량을 감소시키는 장점과,  이미지의 강한 특징만 추출하는 장점이 있습니다.

작업에는 대표적으로 Max Pooling, Min Pooling, Average Pooling 3가지 종류가 있습니다.

 

Pooling의 종류

Max Pooling은 행렬의 가장 큰 값,

Min Pooling은 가장 작은 값,

Average Pooling은 평균 값의 결과를 나타냅니다.

 

 

 

오늘은 간단하게 CNN구조에 핵심 기능인 Convolution, Pooling에 대해 간단하게 알아보았습니다.

해당 개념은 이미지, 영상 데이터를 처리할 때 필수적인 개념!

반응형