스터디/ML, DL

[CV] CNN, 합성곱 연산, 패딩, 풀링

sollllllll 2020. 2. 1. 11:54

CNN 이란?

합성곱 신경망(Convolutional Neural Network, CNN)은

시각적 이미지를 분석하는 데 사용되는 깊고 피드-포워드적인 인공신경망의 한 종류이다.

이미지 및 비디오 인식, 추천 시스템, 이미지 분류, 의료 이미지 분석 및 자연어 처리에 응용되어 사용된다.

CNN의 정규화 방법은 일반적인 방법과 조금 다른데, 일반적인 정규화 방법은 손실 함수에 가중치 측정을 추가하지만 CNN은 데이터에서 계층적 패턴을 활용하고 작고 간단한 패턴을 사용해 복잡한 패턴을 조립한다.

이런 특징 때문에 일반적인 경우에는 이미지 인식 시에 사용하는 이미지의 해상도가 높아지면 입력값과 가중치의 수가 커지기 때문에 연결성과 복잡성이 증가하지만, CNN은 연결성과 복잡성이 훨씬 낮다.

CNN의 구조는 아래의 그림과 같이 합성곱층(covolutional layer) 풀링층(pooling layer)으로 구성되어 있다.

 

 

 

 

합성곱층은 입력데이터의 형상을 유지한다.

이미지는 높이X너비X채널의 3차원으로 표현될 수 있는데 이것을 텐서(tensor)라고 한다.

채널은 색상코드의 수를 의미한다. 예를 들어, 이미지의 색상 코드가 RGB라면 채널의 크기는 3이 된다.

CNN의 합성곱층에서는 3차원의 이미지 그대로를 입력창에 받고, 3차원의 데이터로 출력해서 다음 계층으로 전달한다.

 

이미지 데이터

 

합성곱층(Convolutional Layer)의 뉴런은 아래 그림처럼 입력 이미지의 모든 픽셀에 연결되는 것이 아니라

합성곱층 뉴런의 수용영역(receptive field)안에 있는 픽셀에만 연결되기 때문에, 앞의 합성곱층에서는 저수준 특성에 집중하고 그 다음 합성곱층에서는 고수준 특성으로 조합해 나가도록 한다.

하나의 합성곱 계층에는 입력되는 이미지의 채널 개수만큼 필터가 존재하며,

각 채널에 할당된 필터를 적용해 합성곱 연산(*)을 수행하고, 그 결과로 합성곱 계층의 출력 이미지가 생성된다.

예를 들어, 높이X너비X채널이 4X4X1인 입력 이미지에 대해 3X3 크기의 필터를 적용하는 합성곱 계층에서는

아래 그림과 같이 이미지와 필터에 대한 합성곱 연산을 통해 2X2X1 형태의 이미지가 생성된다.

이런 연산을 통해 이미지에서 모서리를 감지할 수 있다. 최근 딥러닝에서는 임의의 숫자로 필터를 만든 다음 역전파를 통해 학습시켜서 문제에 적합한 필터를 만드는 방법을 사용한다.

 

합성곱 연산

 

하지만 이것에는 두 가지의 단점이 있는데, 첫 번째는 합성곱 연산을 계속 수행하면 이미지가 계속 작아진다는 것이고
두 번째는 가장자리의 픽셀은 한 번만 사용되므로 이미지의 윤곽 정보를 덜 사용하게 된다는 것이다.

이를 해결하기 위한 방법으로 패딩(Padding)이 있는데, 패딩이란 이미지 주위에 추가로 하나의 경계를 덧대는 것이다. 

합성곱 계층의 출력이 입력 데이터의 공간적 크기와 동일하게 맞춰주기 위해 사용한다.

계를 덧대는 데에 사용하는 숫자로는 보통 0을 사용한다.

 

패딩

 

 

 

 

 

합성곱 신경망에서는 합성곱층 말고도 풀링층(Pooling Layer)

 

 

 

 

'스터디 > ML, DL' 카테고리의 다른 글

[LLM] LangChain이란?  (0) 2025.01.27
[ML] 로지스틱 회귀  (0) 2022.03.19
[ML] 회귀 알고리즘 : 선형 회귀 (2) - 다중 회귀  (0) 2022.03.14
[ML] 회귀 알고리즘 : 선형 회귀 (1)  (0) 2022.03.03
[CV] 퍼셉트론, 신경망  (0) 2020.01.11