본문 바로가기
AI/CNN

딥러닝) CNN 구조 , 합성곱 계층 , padding , stride , 배치 처리

by 채채씨 2021. 4. 4.
728x90
반응형

이번 포스팅에서 다룰 합성곱 신경망(Convolutional neural network , CNN)은 이미지 및 음성 인식에서 주로 사용된다.

 

 

1. CNN 구조

이전 포스팅까지 다루었던 기본 신경망은 인접하는 Layer의 모든 neuron들이 서로 연결되어 있다. 이처럼 모든 neuron이 연결된 것을 완전연결(Fully connected)라 하며, Affine계층으로 구현했다.

 

 

Fully connected Layer로 이루어진 네트워크 예시

 

 

 

 

오늘 다룰 합성곱 신경망(Convolutional neural network , CNN)은 기본 신경망의 Affine-ReLU부분은 Conv-ReLU-(Pooling)로 바뀌고, 기본 신경망과 마찬가지로 출력층 근처의 Layer에서는 Affine-ReLU을, 출력층에서는 Affine-Softmax를 사용한다.

 

 

CNN으로 이루어진 네트워크 예시 (합성곱 계층과 풀링 계층 추가됨)

 

 

 

 

 

2. Fully connected 신경망을 사용하지 않는 이유

이미지 데이터의 경우 가로*세로*채널(색상)으로 구성된 3차원 데이터이다. Fully connected layer에 데이터를 input하기 위해서는 1차원으로 데이터를 평탄화(flatten)해야한다. 그러나 이미지같은 3차원 형상에서는 인접한 픽셀 값이 유사하고 먼 픽셀 값은 연관이 없거나, RGB 각 채널이 관련되어 있는 등 3차원 데이터가 가지는 패턴이 있을 것인데, 이를 평탄화할 경우 그 정보들을 이용할 수 없게된다. 

 

반면, CNN은 3차원 데이터로 Input하고, 다음 layer에도 3차원 데이터로 전달하므로 3차원 이미지를 더 잘 이해할 가능성이 높다.

 

CNN에서의 입출력 데이터를 특징 맵(feature map)이라고도 한다. input feature map는 입력 데이터를, output feature map는 출력 데이터를 의미한다

 

 

 

 

 

 

3. 합성곱 연산 (Conv 계층)

합성곱 연산은 Conv-ReLU 중 Conv계층에서 일어나는 연산으로 이미지 처리에서 말하는 필터 연산에 해당된다.

합성곱은 입력 데이터에 필터를 일정한 간격으로 이동하며 단일 곱셈-누산을 한다. 필터는 커널이라 부르기도 하며, 가중치에 해당된다. (먼저 2차원 데이터를 예시로 설명하고 마지막에 3차원 형상의 합성곱 연산에 대해 설명할 예정)

 

 

 

 

 

필터 연산이 끝나면 1x1크기의 편향이 모든 원소에 더해진다. 편향의 크기는 항상 1x1이다.

 

 

 

 

 

 

 

 

 

4. 패딩(padding)

패딩은 합성곱 연산 전에 입력 데이터 주변에 특정 값을 채우는 것을 말한다. 1폭짜리 패딩이란 데이터 사방에 1픽셀을 특정 값으로 채운다는 의미이다.

 

 

합성곱 연산의 padding 처리 (안에 0은 생략)

 

 

패딩은 주로 출력 데이터의 크기를 조정할 목적으로 사용한다. 예를 들어 (4, 4)크기의 입력 데이터에 (3, 3)크기의 필터를 적용하면 (2, 2)크기의 출력 데이터를 얻게된다. 이를 반복할 경우, 출력 크기가 1이되어 합성곱 연산을 할 수 없게 된다.따라서 패딩을 사용하여 데이터 크기를 유지한 채로 다음 layer에 데이터를 전달하려는 것이다.

 

 

 

 

 

 

5. 스트라이드(stride)

스트라이드(stride)는 보폭이란 의미로 필터를 적용하는 간격을 정한다.

패딩을 크게하면 출력 데이터의 크기가 커지는 반면 스트라이드를 크게하면 출력 데이터의 크기는 작아진다.

 

 

stride=2인 합성곱 연산

 

 

 

참고로 입력 데이터 크기와 패딩, 스트라이드를 고려하여 출력 데이터의 크기를 계산하는 수식은 아래와 같다.

 

 

 

 

6. 3차원 형상의 합성곱 연산

3차원 데이터는 앞서 본 2차원 데이터와 달리 채널 feature map이 늘어난다. 입력 데이터와 필터의 합성곱 연산을 채널마다 수행한 후 그 결과를 더하여 하나의 출력값을 얻는 방식으로 연산한다.

 

 

3차원 데이터의 합성곱 연산 과정

 

 

3차원 데이터의 합성곱 연산에서 주의할 점은 입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다는 것이다. 필터 크기는 무관하다.

 

 

합성곱 연산의 출력을 다음 layer에 3차원 형상의 데이터로 전달하기 위해서는 출력 데이터의 채널도 여러개가 필요하다. 출력 데이터가 다수의 채널을 갖도록 하려면 필터를 여러개 사용하면 된다.

 

 

 

 

 

편향을 더한 합성곱 연산의 흐름은 아래와 같다.

 

 

 

 

 

 

 

 

7. 배치 처리

Fully connected 신경망에서 미니배치를 사용하여 입력 데이터를 묶어서 처리했듯 합성곱 연산도 배치 처리를 할 수 있다. 3차원 데이터에 차원을 늘려 4차원 데이터로 저장한다.

 

 

 

 

3차원의 데이터 N개로 구성된 4차원 형상을 가진 데이터를 input하여 한 번에 N개에 대한 합성곱 연산을 수행한다. 

 

 

 

여기까지 CNN의 구조와 합성곱 계층에 대해 알아보았다. 다음 포스팅에서는 풀링 계층에 대해 다룰 것이다.

 

 


출처: 사이토 고키『밑바닥부터 시작하는 딥러닝』, 한빛미디어(2017), p227-239.

728x90
반응형

'AI > CNN' 카테고리의 다른 글

딥러닝) im2col 으로 효율적인 합성곱 연산  (0) 2021.04.11
딥러닝) CNN 풀링 계층  (0) 2021.04.05

댓글