상세 컨텐츠

본문 제목

컨볼루션 신경망(CNN)을 위한 포괄적인 가이드

IT/AI

by 심장과영혼 2021. 5. 6. 01:35

본문

728x90
반응형

A Comprehensive Guide to Convolutional Neural Networks

인공지능은 인간과 기계의 능력 사이의 격차를 해소하는 데 있어 엄청난 성장을 목격해 왔다. 연구원들과 열성가들 모두, 놀라운 일들이 일어나도록 하기 위해 이 분야의 다양한 측면에 대해 연구하고 있습니다. 그러한 많은 분야들 중 하나는 컴퓨터 비전의 영역이다.

이 분야의 안건은 기계가 인간처럼 세상을 보고, 비슷한 방식으로 인지하며, 심지어 이미지 및 비디오 인식, 이미지 분석 및 분류, 미디어 레크리에이션, 추천 시스템, 자연어 처리 등과 같은 다양한 작업에 지식을 사용할 수 있도록 하는 것이다. Deep Learning이 포함된 Computer Vision의 발전은 주로 한 가지 특정 알고리즘인 컨볼루션 신경망을 통해 시간이 지남에 따라 구축되고 완성되었다.

Introduction

A CNN sequence to classify handwritten digits

ConvNet/CNN(ConvNet/CNN)은 입력 이미지를 받아들이고, 이미지의 다양한 측면/객체에 중요성(학습 가능한 가중치와 편견)을 할당하고, 하나를 다른 것과 구별할 수 있는 딥러닝 알고리즘이다. ConvNet에 필요한 전처리는 다른 분류 알고리즘에 비해 훨씬 낮다. 원시적인 방법에서 필터는 수작업으로 설계되며 충분한 교육을 통해 ConvNet은 이러한 필터/특성을 학습할 수 있다.

ConvNet의 구조는 인간 두뇌에 있는 뉴런의 연결 패턴과 유사하며 시각 피질의 조직에서 영감을 받았습니다. 개별 뉴런은 수용 영역이라고 알려진 시각적 영역의 제한된 영역에서만 자극에 반응합니다. 이러한 필드 집합이 전체 시각적 영역을 포함하도록 겹칩니다.

Why ConvNets over Feed-Forward Neural Nets?

Flattening of a 3x3 image matrix into a 9x1 vector

이미지는 단지 픽셀 값의 매트릭스에 불과하죠, 그렇죠? 그렇다면 이미지(예: 3x3 이미지 매트릭스를 9x1 벡터로)를 평평하게 하고 분류를 위해 다중 수준 인식기에 영상을 공급하는 것은 어떨까요? 어.. 그렇진 않아요.

극히 기본적인 이진 이미지의 경우, 클래스 예측을 수행하는 동안 평균 정밀도 점수를 나타낼 수 있지만 전체적으로 픽셀 종속성을 갖는 복잡한 이미지에 대해서는 정확도가 거의 없거나 거의 없다.

ConvNet은 관련 필터의 적용을 통해 이미지의 공간 및 시간 종속성을 성공적으로 캡처할 수 있습니다. 아키텍처는 관련된 파라미터의 수와 가중치의 재사용 가능성으로 인해 이미지 데이터 세트에 더 잘 맞습니다. 다시 말해, 네트워크는 이미지의 정교함을 더 잘 이해하도록 훈련될 수 있다.

Input Image

4x4x3 RGB Image

그림에서 RGB 이미지는 빨간색, 녹색 및 파란색의 세 가지 색상 평면으로 구분됩니다. 이러한 색 공간에는 그레이스케일, RGB, HSV, CMYK 등 여러 가지 이미지가 존재합니다.

이미지가 크기에 도달하면 8K(7680×4320)와 같이 계산 집약적인 결과를 얻을 수 있습니다. ConvNet의 역할은 양호한 예측을 위해 중요한 기능을 잃지 않고 이미지를 보다 쉽게 처리할 수 있는 형태로 축소하는 것입니다. 이는 학습 기능뿐만 아니라 대규모 데이터셋으로 확장 가능한 아키텍처를 설계할 때 중요합니다.

Convolution Layer — The Kernel

Convoluting a 5x5x1 image with a 3x3x1 kernel to get a 3x3x1 convolved feature

이미지 치수 = 5(높이) x 5(폭) x 1(채널 수, 예: RGB)

위의 설명에서 녹색 섹션은 5x5x1 입력 이미지 I과 유사합니다. 컨볼루션 레이어의 첫 부분에서 컨볼루션 연산을 수행하는 것과 관련된 요소를 노란색으로 표시된 커널/필터, K라고 한다. 3x3x1 매트릭스로 K를 선택했습니다.

커널은 Stroped Length × 1 (Non-Strided) 때문에 9번 이동하며, 매번 커널이 맴돌고 있는 이미지의 K와 P 부분 사이의 행렬 곱셈 연산을 수행한다.

Movement of the Kernel

필터가 전체 너비를 구문 분석할 때까지 특정 Stroad Value를 사용하여 오른쪽으로 이동합니다. 다음으로, 동일한 Strop(보폭) 값으로 영상의 처음(왼쪽)으로 점프하고 전체 이미지가 통과될 때까지 프로세스를 반복합니다.

Convolution operation on a MxNx3 image matrix with a 3x3x3 Kernel

다중 채널(예: RGB)이 있는 이미지의 경우 커널은 입력 이미지의 깊이와 동일한 깊이를 가집니다. 행렬 곱셈은 Kn과 In 스택([K1, I1]; [K2, I2]; [K3, I3]) 사이에서 수행되며, 모든 결과는 바이어스로 요약되어 스쿼시된 1차원 채널 Convolutional Feature Output을 제공합니다.

Convolution Operation with Stride Length = 2

Convolution Operation의 목적은 입력 영상에서 엣지(edge)와 같은 높은 수준의 기능을 추출하는 것입니다. ConvNets는 하나의 컨볼루션 레이어로만 제한될 필요는 없다. 일반적으로 첫 번째 ConvLayer는 가장자리, 색상, 구배 방향 등과 같은 로우 레벨 기능을 캡처하는 역할을 합니다. 계층이 추가됨에 따라 아키텍처도 하이 레벨 기능에 적응하여 데이터셋의 이미지에 대한 건전한 이해를 제공하는 네트워크를 제공합니다.

작동에는 두 가지 유형의 결과가 있습니다. 하나는 입력에 비해 컨볼루션 형상이 감소하며 다른 하나는 치수가 증가하거나 동일하게 유지되는 것입니다. 이것은 전자의 경우 유효한 패딩을 적용하거나 후자의 경우 동일한 패딩을 적용하면 됩니다.

SAME padding: 5x5x1 image is padded with 0s to create a 6x6x1 image

우리가 5x5x1 이미지를 6x6x1 이미지로 증강하고 그 위에 3x3x1 커널을 적용했을 때, 우리는 컨볼루션 매트릭스가 5x5x1 치수라는 것을 알게 된다. 따라서 이름이 같은 패딩입니다.

반면에 패딩 없이 동일한 작업을 수행하면 커널(3x3x1) 자체의 치수를 갖는 행렬이 나타납니다. 유효한 패딩입니다.

다음 리포지토리에는 패딩과 보폭 길이가 어떻게 함께 작용하여 우리의 요구와 관련된 결과를 달성하는지를 더 잘 이해하는 데 도움이 되는 많은 GIF가 포함되어 있습니다.

Pooling Layer

3x3 pooling over 5x5 convolved feature

컨볼루션 레이어와 유사하게, 풀링 레이어는 컨볼루션 형상의 공간 크기를 줄이는 역할을 한다. 이것은 치수 축소를 통해 데이터를 처리하는 데 필요한 계산 능력을 감소시키기 위한 것이다. 더욱이, 그것은 회전 및 위치 불변인 지배적 특징을 추출하여 모델의 효과적인 훈련 과정을 유지하는 데 유용하다.

풀링에는 최대 풀링과 평균 풀링의 두 가지 유형이 있습니다. Max Pooling(최대 풀링)은 커널에서 다루는 이미지 부분의 최대값을 반환합니다. 반면에 평균 풀링은 커널이 적용되는 이미지의 부분에서 모든 값의 평균을 반환합니다.

최대 풀링은 노이즈 억제제 역할도 합니다. 소음이 심한 작동은 완전히 무시하고 치수 감소와 함께 노이즈 제거도 수행합니다. 반면에, 평균 풀링은 단순히 소음 억제 메커니즘으로서 치수 감소를 수행한다. 따라서, 우리는 Max Pooling이 평균 풀링보다 훨씬 더 좋은 성능을 발휘한다고 말할 수 있다.

Types of Pooling

컨볼루션 레이어와 풀링 레이어는 함께 컨볼루션 신경 네트워크의 i번째 레이어를 형성한다. 이미지의 복잡성에 따라 낮은 수준의 세부 정보를 캡처하기 위해 이러한 계층의 수가 더 늘어날 수 있지만 더 많은 계산 능력을 희생합니다.

위의 프로세스를 거친 후 모델이 기능을 이해할 수 있도록 했습니다. 다음으로, 최종 출력을 평평하게 하고 분류를 위해 일반 신경 네트워크에 공급할 것입니다.

Classification — Fully Connected Layer (FC Layer)

완전 연결 레이어를 추가하는 것은 (보통) 컨볼루션 레이어의 출력으로 대표되는 높은 수준의 기능의 비선형 조합을 학습하는 저렴한 방법이다. 완전 연결 계층은 해당 공간에서 가능한 비선형 함수를 학습하고 있습니다.

이제 입력 이미지를 Multi-Level Perceptron 에 적합한 형태로 변환했으므로 이미지를 열 벡터로 평탄화해야 합니다. 평탄한 출력은 모든 훈련 반복에 적용되는 피드포워드 신경망과 후방 전파(back propagation)에 공급된다. 일련의 에포시(epochs)에 걸쳐 모델은 이미지에서 지배적인 특징과 특정 낮은 수준의 특징을 구별하고 소프트맥스(Softmax) 분류 기법을 사용하여 그것들을 분류할 수 있다.

예측 가능한 미래에 전체적으로 AI에 전력을 공급하고 전력을 공급해야 하는 알고리즘을 구축하는 데 핵심적인 CNN의 다양한 아키텍처가 있다. 이들 중 일부는 아래에 나열되어 있습니다.

LeNet

AlexNet

VGGNet

GoogLeNet

ResNet

ZFNet


본 자료는 아래 사이트에 대하여 한글로 번역한 내용입니다. 도움이 되셨기를 바랍니다.

https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53

A Comprehensive Guide to Convolutional Neural Networks — the ELI5 way

Artificial Intelligence has been witnessing a monumental growth in bridging the gap between the capabilities of humans and machines…

towardsdatascience.com

728x90
반응형

관련글 더보기