컨벌루션 뉴럴 네트워크란?

반드시 알아야 할 3가지

컨벌루션 뉴럴 네트워크란?

컨벌루션 뉴럴 네트워크(CNN 또는 ConvNet)는 모델이 직접 이미지, 비디오, 텍스트 또는 사운드를 분류하는 머신 러닝의 한 유형인 딥러닝에 가장 많이 사용되는 알고리즘입니다.

CNN은 이미지에서 객체, 얼굴, 장면을 인식하기 위해 패턴을 찾는 데 특히 유용합니다. CNN은 데이터에서 직접 학습하며, 패턴을 사용하여 이미지를 분류하고 특징을 수동으로 추출할 필요가 없습니다.

자율 주행 자동차, 얼굴 인식 애플리케이션과 같이 객체 인식컴퓨터 비전이 필요한 분야에서 CNN을 많이 사용합니다. 응용 분야에 따라 CNN을 처음부터 만들 수도 있고, 데이터셋으로 사전 학습된 모델을 사용할 수도 있습니다.

CNN이 유용한 이유

다음과 같은 세 가지 중요한 요인으로 인해 딥러닝에서 CNN을 사용하는 사례가 급증하게 되었습니다.

  • CNN은 특징을 직접 학습하기 때문에 특징을 수동으로 추출해야 할 필요가 없습니다.
  • CNN은 가장 높은 수준의 인식 결과를 보입니다.
  • 기존 네트워크를 바탕으로 한 새로운 인식 작업을 위해 CNN을 재학습하여 사용하는 것이 가능합니다.

CNN에 이미지가 전달되면 자동으로 특징을 학습하고 객체를 분류합니다.

객체 검출 및 인식 분야를 발전시키는 CNN

CNN은 이미지 인식과 패턴 감지를 위한 최적의 아키텍처를 제공합니다. CNN은 발전을 거듭해 온 GPU와 병렬 컴퓨팅과 함께 활용되어 자율 주행과 얼굴 인식 기술이 새롭게 등장하는 발판을 마련했습니다.

일례로 딥러닝 애플리케이션은 CNN을 통해 수천 개의 병리학 보고서를 분석하여 암세포를 시각적으로 검출합니다. 자율 주행 자동차가 객체를 감지하고 도로 표지판과 보행자의 차이를 구분할 수 있는 것도 바로 CNN 덕분입니다. 

자세히 알아보기

CNN의 작동 방식

컨벌루션 뉴럴 네트워크를 구성하는 수십, 수백 개의 계층이 각각 이미지의 서로 다른 특징을 감지하도록 학습할 수 있습니다. 필터는 각 학습 이미지에 서로 다른 해상도로 적용되고, 필터의 출력은 다음 계층의 입력으로 활용됩니다. 필터는 밝기 및 가장자리 등과 같이 매우 단순한 특징에서 시작하여 객체만의 고유한 특징으로 더 복잡하게 발전할 수 있습니다.

CNN은 이미지, 텍스트, 사운드, 비디오의 특징을 식별하고 분류합니다.

특징 학습, 계층 및 분류

CNN은 다른 신경망과 마찬가지로 입력 계층, 출력 계층 및 두 계층 사이의 여러 은닉 계층으로 구성됩니다.

각 계층은 해당 데이터만이 갖는 특징을 학습하기 위해 데이터를 변경하는 계산을 수행합니다. 가장 자주 사용되는 계층으로는 컨벌루션, 활성화/ReLU, 풀링이 있습니다.

  • 컨벌루션은 각 이미지에서 특정 특징을 활성화하는 컨벌루션 필터 집합에 입력 이미지를 통과시킵니다.
  • ReLU(Rectified Linear Unit)는 음수 값을 0에 매핑하고 양수 값을 유지하여 더 빠르고 효과적인 학습을 가능하게 합니다. 이때 활성화된 특징만 다음 계층으로 전달되기 때문에 이 과정을 활성화라 부르기도 합니다.
  • 풀링은 비선형 다운샘플링을 수행하고 네트워크에서 학습해야 하는 매개 변수 수를 줄여서 출력을 간소화합니다.

이러한 작업이 수십 개 또는 수백 개의 계층에서 반복되어 각 계층이 여러 특징을 검출하는 방법을 학습하게 됩니다.

여러 개의 컨벌루션 계층으로 구성된 네트워크의 예. 필터는 각 학습 이미지에 서로 다른 해상도로 적용되고, 필터의 출력은 다음 계층의 입력으로 활용됩니다.

분류 계층

CNN의 아키텍처는 여러 계층에서 특징을 학습한 다음 분류로 넘어갑니다.

끝에서 두 번째 계층은 K 차원의 벡터를 출력하는 완전 연결 계층입니다. 여기에서 K는 네트워크가 예측할 수 있는 클래스의 수입니다. 이 벡터에는 분류되는 이미지의 각 클래스에 대한 확률이 포함됩니다.

CNN 아키텍처의 마지막 계층에서는 softmax와 같은 분류 계층을 사용하여 분류 출력을 제공합니다. 

GPU를 활용한 하드웨어 가속

컨벌루션 뉴럴 네트워크는 수백, 수천 개, 때로는 수백만 개의 이미지를 학습합니다. 다량의 데이터와 복잡한 네트워크 아키텍처가 사용될 때 GPU를 적용하면 모델을 학습시키기 위한 처리 시간을 대폭 단축할 수 있습니다. CNN 학습이 완료되면 ADAS(고급 운전자 지원 시스템)에서의 보행자 감지 등과 같은 실시간 응용 분야에 활용할 수 있습니다.

MATLAB에서 CNN 사용하기

MATLAB®에서 Neural Network Toolbox™를 사용하면 CNN을 처음부터 학습시킬 수도 있고, 사전 학습된 모델을 사용하여 전이 학습을 수행할 수도 있습니다.

어떤 방법을 사용할지는 사용 가능한 리소스와 만들고자 하는 애플리케이션의 유형에 따라 달라집니다.

네트워크를 처음부터 학습시키기 위해 설계자는 계층 및 필터의 개수와 그 밖의 조정 가능한 매개 변수들을 정의해야 합니다. 모델을 처음부터 학습시켜 정확한 결과를 도출하기 위해서는 다량의 데이터와 수백만 개의 샘플이 필요한데, 여기에는 엄청난 시간이 소요됩니다.

CNN을 처음부터 학습시키는 대신 자주 사용되는 대안은 사전 학습된 모델을 활용하여 새 데이터셋으로부터 특징을 자동으로 추출하는 것입니다.  전이 학습이라고 하는 이 방법을 사용하면 대규모 데이터셋을 준비하고 엄청난 계산 시간과 학습 시간을 확보하지 않아도 딥러닝을 간편하게 적용할 수 있습니다.

처음부터 학습하기

네트워크를 처음부터 만들려면 네트워크 구성을 직접 정의해야 합니다. 이 방법을 사용하면 네트워크를 원하는 대로 설정하고 놀라운 결과를 도출할 수 있지만, 뉴럴 네트워크의 구조와 계층 유형 및 구성의 다양한 옵션을 제대로 이해하고 있어야 합니다.

이렇게 하면 전이 학습 방법을 사용했을 때보다 더 나은 결과가 도출되는 경우도 있지만(아래 참조), 새로운 네트워크가 특징의 다양한 변종을 이해하려면 객체의 샘플이 많이 필요하기 때문에 학습에 훨씬 많은 이미지가 필요합니다. 게다가 학습 시간도 훨씬 많이 소요되고 네트워크 계층의 가능한 조합도 아주 많기 때문에 네트워크를 처음부터 구성하기란 생각만큼 간단하지 않습니다. 네트워크를 설계하고 계층을 구성할 때 다른 네트워크 구성을 참고하여 연구원들에 의해 검증된 결과를 적용하는 것이 좋습니다.

자세히 알아보기

전이 학습을 위해 사전 학습된 모델 사용

전이 학습을 이용하여 사전 학습된 네트워크를 미세 조정하면 처음부터 직접 학습하는 것보다 훨씬 쉽고 빠르게 목적을 달성할 수 있습니다. 필요한 데이터의 양과 계산 리소스도 훨씬 적습니다. 전이 학습은 한 가지 유형의 문제를 통해 알아낸 지식을 적용하여 비슷한 문제를 해결합니다. 이 방법에서는 먼저 사전 학습된 네트워크를 사용하여 새로운 작업을 학습합니다.  전이 학습의 장점은 사전 학습된 네트워크에 기존에 학습된 수많은 특징이 포함되어 있다는 것입니다. 이러한 특징들을 비슷한 특징을 갖는 다양한 작업에 적용할 수 있습니다. 예를 들어, 수백만 개의 이미지를 학습한 네트워크가 있다면, 수백 개의 이미지만 사용하여 새로운 객체 분류를 수행하도록 다시 학습시킬 수 있습니다.

Neural Network Toolbox를 사용하면 GoogLeNet, AlexNet, vgg16, vgg19와 같은 사전 학습된 CNN 모델과 Caffe, TensorFlow-Keras와 같은 모델로 전이 학습을 수행할 수 있습니다.

자세히 알아보기

CNN을 사용하는 응용 분야

객체 감지

객체 감지란 이미지나 비디오에서 객체를 찾아내어 분류하는 프로세스를 가리킵니다. Computer Vision System Toolbox™는 R-CNN(regions with CNN), Fast R-CNN, Faster R-CNN을 사용하여 딥러닝 기반 객체 감지기를 만들 수 있는 학습 프레임워크를 제공합니다.

Statistics and Machine Learning Toolbox™의 머신 러닝 기법과 Computer Vision System Toolbox를 함께 사용하여 객체 인식 시스템을 만들 수 있습니다.

Neural Network Toolbox는 CNN의 설계 및 학습을 위한 함수와 학습된 CNN 모델로 예측을 수행하는 함수를 제공합니다.

딥러닝과 R-CNN (Regions with Convolutional Neural Networks)을 사용해 객체 감지기를 학습하는 방법을 소개합니다.
Faster R-CNN (Regions with Convolutional Neural Networks)이라는 딥러닝 기법을 사용해 객체 감지기를 학습하는 방법을 소개합니다.

CNN에 대해 자세히 알아보는 방법

이미지 분석에 CNN을 사용할 수 있는 제품에는 MATLAB®, Computer Vision System Toolbox™, Statistics and Machine Learning Toolbox™, Neural Network Toolbox™가 있습니다.

컨벌루션 뉴럴 네트워크에는 Neural Network Toolbox가 필요합니다. 계산 기능이 3.0 이상인 CUDA® 지원 GPU에서는 학습과 예측이 지원됩니다. 이때 GPU를 사용하는 것이 권장되며, 이를 위해서는 Parallel Computing Toolbox™가 필요합니다.

소프트웨어 참조

무료 평가판 받기

30일 동안 사용해 보세요.

질문이 있습니까?

딥러닝 전문가와 상의하세요.