본문 바로가기
Visual Intelligence/Image Deep Learning

[시각 지능] CNN (Convolutional Neural Network)

by goatlab 2022. 8. 6.
728x90
반응형
SMALL

CNN (Convolutional Neural Network)

 

cnn architecture

 

합성곱 신경망 (콘볼루션 신경망, Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용되는 다층의 feed-forward인 인공신경망의 한 종류이다. 필터링 기법을 인공신경망에 적용하여 이미지를 효과적으로 처리할 수 있는 심층 신경망 기법으로 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법이다.

 

합성곱 신경망은 정규화 된 버전의 다층 퍼셉트론이다. 다층 퍼셉트론은 일반적으로 완전히 연결된 네트워크, 즉 한 계층의 각 뉴런이 다음 계층의 모든 뉴런에 연결되는 신경망 구조이다. 이와 같이 네트워크가 완전 연결된 경우 주어진 데이터에 과적합 되는 경향이 있다. 일반적인 정규화를 위해 최적화 함수에 특정 척도를 추가하는 방법이 흔히 쓰이지만, CNN은 정규화를 위한 다른 접근 방식을 취한다. 데이터에서 계층적 패턴을 활용하고 더 작고 간단한 패턴을 사용하여 더 복잡한 패턴을 표현함으로써 정규화와 같은 효과를 내는 것이다. 따라서 합성곱 신경망의 연결 구조의 복잡성은 유사한 기능의 다층 퍼셉트론에 비해 극단적으로 낮다.

 

conv

 

입력 데이터와 가중치들의 집합체인 다양한 필터 (filter)와의 컨볼루션 연산을 통해 입력데이터의 특징 (feature)을 추출하는 역할을 수행한다. 이미지 데이터는 같이 (너비, 높이, 채널)의 3차원 텐서 (tensor)로 표현될 수 있다. 만약, 이미지의 색상이 RGB 코드로 표현되었다면, 채널의 크기는 3이 되며 각각의 채널에는 R, G, B 값이 저장된다.

 

pooling

 

 

입력 정보를 최대값, 최소값, 평균값 등으로 압축하여 데이터 연산량을 줄여주는 역할을 수행한다. 이미지의 크기를 계속 유지한 채 Fully Connected layer로 가게 된다면 연산량이 기하급수적으로 늘 것이다. Pooling은 크기를 줄이고, 특정 feature를 강조하는 역할을 한다.

 

Feature Map

 

https://insightsimaging.springeropen.com/articles/10.1007/s13244-018-0639-9

 

합성곱 계층의 입출력 데이터를 필터로부터 얻어낸 결과를 Feature Map (activation map)이라고 한다. Feature Map은 합성곱 계산으로 만들어진 행렬이다.

 

padding

 

 

패딩 (padding) 이란 컨볼루션 연산을 수행하기 전에 입력 데이터 주변을 특정 값 (ex: 0)으로 채우는 것을 말하며, 컨볼루션 연산에서 자주 이용되는 방법이다. 컨볼루션 연산을 수행하면 데이터 크기 (shape)이 줄어드는 단점을 방지하기 위해 사용한다. CNN을 구현할 때 합성곱 계층의 스트라이드는 주로 1로 설정된다.

 

결론적으로 CNN은 Convolution과 Pooling을 반복적으로 사용하면서 불변하는 특징을 찾고, 그 특징을 입력 데이터로 Fully-connected 신경망에 보내 어떤 데이터 인지 Classification을 수행한다.

728x90
반응형
LIST