합성곱 신경망(Convolutional Neural Network)은 이미지를 식별 및 분류하고 이미지 내의 사물을 인식하는 데 주로 사용되는 일종의 딥 러닝 네트워크입니다.
합성곱 신경망(Convolutional Neural Network)은 이미지를 식별 및 분류하고 이미지 내의 사물을 인식하는 데 주로 사용되는 일종의 딥 러닝 네트워크입니다.
인공 신경망은 인간의 뇌에서 뉴런이 작동하는 방식을 본떠 만든 하드웨어 및/또는 소프트웨어 시스템입니다. 일반적으로 합성곱 신경망은 완전히 연결 또는 풀링된 여러 합성곱층에서 다양한 다층 퍼셉트론(시각적 입력을 분류하는 알고리즘)을 적용합니다.
CNN은 사람처럼 학습합니다. 사람은 고양이나 새가 어떻게 생겼는지 모른 채 태어납니다. 나이가 들면서 집합적으로 한 가지 요소를 구성하는 여러 요소의 특정 모양과 색상을 배우게 됩니다. 발과 부리가 어떻게 생겼는지 알게 되면 고양이와 새를 더 잘 구분할 수 있습니다.
신경망은 기본적으로 같은 방식으로 작동합니다. 머신은 레이블이 지정된 이미지로 구성된 훈련 세트를 처리함으로써 이미지 내 사물의 특징인 요소를 식별하는 방법을 학습할 수 있습니다.
CNN은 가장 많이 사용되는 딥 러닝 알고리즘 유형 중 하나입니다. 합성곱은 간단히 입력에 필터를 적용하여 숫자 값으로 표현되는 활성화를 생성합니다. 그리고 동일한 필터를 이미지에 반복적으로 적용하면 특징 맵이라는 활성화 맵이 생성됩니다. 특징 맵은 감지된 특징의 위치와 강도를 나타냅니다.
합성곱은 가중치 세트에 입력값을 곱하여 필터라는 2차원 가중치 배열을 생성하는 선형 연산입니다. 필터가 입력에서 특정 유형의 특징을 감지하도록 조정된 경우 전체 입력 이미지에 해당 필터를 반복적으로 사용하면 이미지의 모든 위치에서 해당 특징을 발견할 수 있습니다.
예를 들어, 첫 번째 필터는 특정한 곡선 모양을 감지하도록 설계하고 두 번째 필터는 수직선을 감지하도록 설계하고 세 번째 필터는 수평선을 감지하도록 설계할 수 있습니다. 색상, 가장자리 및 빛의 강도를 감지하도록 다른 필터를 설계할 수도 있습니다. 여러 필터의 출력을 연결하면 훈련 데이터에서 접한 요소와 일치하는 복잡한 모양이 나타날 수 있습니다.
CNN은 일반적으로 1) 입력층, 2) 출력층, 3) 여러 합성곱층을 포함하는 은닉층, 이렇게 세 개의 층으로 구성됩니다. 은닉층 내에는 풀링층, 완전연결층 및 정규화층이 있습니다.
첫 번째 층은 일반적으로 가장자리, 색상, 기울기, 기본 기하학적 모양 등의 기본적인 특징을 캡처하는 데 사용됩니다. 층이 추가됨에 따라 모델은 상위 수준의 특징을 채워가면서 점진적으로 큰 갈색 덩어리가 먼저 차량임을 인식하고 뒤이어 승용차와 Buick 브랜드 승용차라는 사실을 차례로 확인합니다.
풀링층은 표현의 공간 크기를 점차 줄여 더 효율적으로 연산을 수행할 수 있습니다. 이 층은 각 특징 맵에서 독립적으로 작동합니다. 풀링에 사용되는 일반적인 접근 방식은 배열의 최댓값이 캡처되는 맥스 풀링으로, 계산에 필요한 값의 수가 줄어듭니다. 합성곱층을 쌓으면 입력을 기본 요소로 분해할 수 있습니다.
정규화층은 데이터를 규칙화하여 신경망의 성능과 안정성을 개선합니다. 정규화는 모든 입력을 평균 0, 분산 1로 변환하므로 각 층의 입력을 더 쉽게 관리할 수 있습니다.
완전연결층은 한 층의 모든 뉴런을 다른 층의 모든 뉴런에 연결하는 데 사용됩니다.
신경망에는 다음과 같은 세 가지 기본 유형이 있습니다.
CNN은 얼굴 인식, 필기 인식, 텍스트 디지털화와 같은 다양한 딥 러닝 기반 최첨단 컴퓨터 비전 응용 사례에 광범위하게 채택되는 주요 모델이 되었습니다. 추천 시스템에도 적용될 수 있습니다. 전환점은 2012년 토론토 대학교 대학원생이었던 Alex Krizhevsky가 CNN 모델을 사용하여 분류 오차 기록을 26%에서 15%로 줄이고 그해의 ImageNet 대회에서 우승을 차지하며 발생했습니다. 당시에 이는 놀라운 성과였습니다.
이미지 처리와 관련된 응용 분야에서 CNN 모델은 최상의 결과를 제공하고 연산 효율을 극대화하는 것으로 나타났습니다. CNN이 이 분야에 적합한 유일한 딥 러닝 모델은 아니지만, 합의된 선택지이며 향후 지속적인 혁신의 중심에 있게 될 것입니다.
주요 사용 사례
머신이 사물을 식별하는 데 사용되는 이미지 처리 수단인 CNN은 이제 자율주행차, 석유 탐사, 융합 에너지 등의 연구에서 눈의 역할을 하고 있습니다. 또한 의료 영상에서 더 빨리 질병을 발견하여 생명을 구하는 데 도움이 될 수 있습니다.
CNN과 RNN 덕분에 사람의 것과 같은 눈을 갖출 수 있게 됨에 따라 유형을 막론하고 AI 기반 머신의 성능이 향상되고 있습니다. 이러한 AI 응용 사례의 대부분은 수십 년에 걸친 심층 신경망의 발전과 GPU 기반 고성능 컴퓨팅(HPC)의 진전으로 대규모 데이터를 처리할 수 있게 되며 비로소 가능했습니다.
데이터 사이언스 팀
이미지 인식은 응용 분야가 광범위하며 많은 데이터 사이언스 팀의 핵심 역량이어야 합니다. CNN은 확립된 표준으로, 데이터 사이언스 팀이 현재와 미래의 이미지 처리 요구를 해결하기 위해 배우고 습득할 수 있는 기술의 기준을 제시합니다.
데이터 엔지니어링 팀
CNN 처리에 필요한 훈련 데이터를 이해하는 엔지니어는 조직의 요구 사항을 지원하는 데 있어 한 걸음 앞서 있습니다. 데이터 세트는 정해진 형식을 따르며 엔지니어가 학습할 수 있도록 수많은 데이터 세트가 공개되어 있습니다. 이를 통해 딥 러닝 알고리즘을 프로덕션에 적용하는 프로세스를 간소화할 수 있습니다.
최첨단 신경망에는 역전파를 통해 조정해야 하는 수백만 개에서 10억 개 이상의 매개변수가 있을 수 있습니다. 또한 이러한 신경망에는 높은 정확도를 달성하기 위해 많은 양의 훈련 데이터가 필요합니다. 즉, 수십만에서 수백만 개에 이르는 입력 샘플을 순전파 및 역전파로 실행해야 합니다. 신경망은 수많은 동일 뉴런에서 생성되므로 본질적으로 병렬성이 매우 높습니다. 이러한 병렬성은 자연스럽게 GPU로 매핑됩니다. 즉, CPU만 사용하는 훈련에 비해 월등히 높은 연산 속도를 제공합니다.
딥 러닝 프레임워크를 사용하면 연구자가 합성곱 신경망(CNN)과 기타 심층 신경망(DNN)을 쉽게 생성하고 탐색할 수 있을 뿐만 아니라 실험 및 산업 배포 모두에 필요한 높은 속도를 확보할 수 있습니다. NVIDIA 딥 러닝 SDK는 Caffe, CNTK, 텐서플로, 테아노, 토치 등 널리 사용되는 딥 러닝 프레임워크뿐만 아니라 다른 많은 머신 러닝 애플리케이션도 가속화합니다. 딥 러닝 프레임워크는 GPU에서 더 빠르게 실행되고 단일 노드 내에서 여러 GPU에 걸쳐 확장됩니다. 합성곱 신경망 훈련 및 추론 프로세스에 GPU 기반 프레임워크를 사용할 수 있도록 NVIDIA는 cuDNN과 TensorRT™를 각각 제공합니다. cuDNN과 TensorRT는 합성곱층, 풀링층, 정규화층, 활성화층과 같은 표준 루틴을 위해 고도로 튜닝된 구현을 제공합니다.
단계별 설치 및 사용 가이드를 보려면 여기를 클릭하세요. 여기에서 합성곱 신경망의 빠른 C++/NVIDIA® CUDA® 구현을 찾을 수도 있습니다.
NVIDIA는 비전 모델을 바로 개발하고 배포할 수 있도록 비전 AI 개발자용 DeepStream SDK를 제공할 뿐만 아니라, 컴퓨터 비전 분야에서 정확하고 효율적인 AI 모델을 생성할 수 있도록 전이 학습 툴킷(TLT)을 제공하고 있습니다.