Cnn 알고리즘 종류 | 딥러닝 Cnn, 개념만 이해하기 22473 명이 이 답변을 좋아했습니다

당신은 주제를 찾고 있습니까 “cnn 알고리즘 종류 – 딥러닝 CNN, 개념만 이해하기“? 다음 카테고리의 웹사이트 th.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://th.taphoamini.com/wiki/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 인공지능 개발자 모임 이(가) 작성한 기사에는 조회수 22,178회 및 좋아요 437개 개의 좋아요가 있습니다.

CNN 주요 모델들
  • conv layer, max-pooling layer, dropout layer 5개
  • fully connected layer 3개
  • nonlinearity function : ReLU.
  • batch stochastic gradient descent.

Table of Contents

cnn 알고리즘 종류 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 딥러닝 CNN, 개념만 이해하기 – cnn 알고리즘 종류 주제에 대한 세부정보를 참조하세요

CNN(Convolutional Neural Network)은
이미지를 처리하는 딥러닝 모델입니다.
컨볼루션 신경망이 탄생하게 된 배경과
구체적인 동작방식에 대해 알아봤습니다.
(클로바더빙으로 제작한 AI 보이스입니다.)

[ 인공지능 개발자 모임 ]– https://www.facebook.com/groups/AIDevKr/
– http://aidev.co.kr/

cnn 알고리즘 종류 주제에 대한 자세한 내용은 여기를 참조하세요.

[AI/딥러닝] CNN Network layer 모델들 (AlexNet, GoogLeNet …

CNN 기법은 딥러닝 학습을 위한 인공 신경망 알고리즘의 큰 카테고리 중 하나이며, 이 CNN 이라는 기술을 기반으로 이미지를 분류하는 여러가지 …

+ 여기를 클릭

Source: rubber-tree.tistory.com

Date Published: 6/29/2022

View: 6236

딥러닝 #2 (CNN 구조, CNN 학습 알고리즘)

그 기본적인 구조로부터 파생된 종류는 심층신뢰신경망, 오토인코더, 순환신경망 등 무수히 다양하지만, 이번 포스팅에서는 음성과 이미지 인식에 탁월한 성능을 보이는 …

+ 여기를 클릭

Source: idplab-konkuk.tistory.com

Date Published: 8/26/2022

View: 4520

[머신러닝 / 딥러닝] CNN 주요 모델과 성능 순위 – 블로그

딥러닝 모델의 양대 산맥으로 주목받는 CNN은 기본적으로 얀 르 쿤이 … 필터가 사용되는 것이 일반적이지만 한 계층에도 다양한 종류의 필터나 풀링 …

+ 여기에 자세히 보기

Source: blog.naver.com

Date Published: 2/4/2022

View: 9150

가장 많이 사용되는 딥 러닝 알고리즘 종류 – B.Iog

CNN · LSTM(단기 메모리 네트워크) · RNN(Recurrent Neural Network) · GAN(Generation Attemarical Network) · RBFN(Radial Basis Function Network) · 멀티 …

+ 여기에 자세히 보기

Source: wkdus0608.tistory.com

Date Published: 11/8/2021

View: 1625

CNN 사전학습 모델 – LeNet / AlexNet / VGGNet / InceptionNet …

사전학습 모형(pre-trained model)의 종류와 개념. ✓ CNN … 1998년 LeNet이 제안된 이후 CNN 알고리즘의 뚜렷한 성능 개선이 이루어지지 않았는데, …

+ 여기를 클릭

Source: yeong-jin-data-blog.tistory.com

Date Published: 12/22/2021

View: 6892

[딥러닝] 7-1강. 뇌 벌려! Cnn 들어간다! (Cnn

0:00 – CNN 탄생 …

+ 자세한 내용은 여기를 클릭하십시오

Source: ko.nataviguides.com

Date Published: 8/18/2021

View: 1098

CNN의 흐름? 역사? – 생각정리

CNN의 종류가 너무 많습니다. … 를 해결할 수 없었고, 기존의 알고리즘(HarrCascade, SIFT feature extractor with SVM)이 더 널리 사용되었습니다.

+ 더 읽기

Source: junklee.tistory.com

Date Published: 11/29/2022

View: 9332

【알고리즘】 12강. 딥러닝 3부 – CNN 알고리즘 – 정빈이의 공부방

12강. 딥러닝 3부 – 합성곱 신경망(convolutionanl neural network; CNN) 추천글 : 【알고리즘】 알고리즘 목차 1. 개요 [본문] 2. 구성 [본문] 3.

+ 자세한 내용은 여기를 클릭하십시오

Source: nate9389.tistory.com

Date Published: 6/26/2022

View: 4944

CNN (Convolutional Neural Network) 개념 – Data Science Lab

CNN(Convolutional Neural Network)은 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로 데이터에서 이미지를 직접 학습하고 패턴을 사용해 …

+ 여기를 클릭

Source: sungwookkang.com

Date Published: 6/4/2022

View: 3412

주제와 관련된 이미지 cnn 알고리즘 종류

주제와 관련된 더 많은 사진을 참조하십시오 딥러닝 CNN, 개념만 이해하기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

딥러닝 CNN, 개념만 이해하기
딥러닝 CNN, 개념만 이해하기

주제에 대한 기사 평가 cnn 알고리즘 종류

  • Author: 인공지능 개발자 모임
  • Views: 조회수 22,178회
  • Likes: 좋아요 437개
  • Date Published: 2020. 10. 16.
  • Video Url link: https://www.youtube.com/watch?v=9Cu2UfNO-gw

[AI/딥러닝] CNN Network layer 모델들 (AlexNet, GoogLeNet, ResNet)

이전 포스팅에서는 CNN 기법이 어떠한 원리로 이루어지는 지를 살펴보았다.

2021.07.11 – [SW programming/Computer Vision] – [딥러닝 모델] CNN (Convolutional Neural Network) 설명

CNN 기법은 딥러닝 학습을 위한 인공 신경망 알고리즘의 큰 카테고리 중 하나이며, 이 CNN 이라는 기술을 기반으로 이미지를 분류하는 여러가지 Network layer 들이 존재한다. 보통 CNN 모델들이라고 부르며 그 중 대표적인 3가지에 대해서 알아보고자 한다.

CNN Network layer 모델

Benchmark Analysis of Representative Deep Neural Network Architectures

출처: https://www.researchgate.net/figure/Ball-chart-reporting-the-Top-1-and-Top-5-accuracy-vs-computational-complexity-Top-1-and_fig1_328509150

이번 포스팅에서 다룰 모델은 AlexNet, GoogLeNet, ResNet 이다. 적은 순서대로 점차 기술이 발전했으며 이는 위 그래프를 통해서도 알 수 있다. 그래프는 x축은 Operations. 즉, 연산 처리량을 말하며 y축은 Accuracy로 연산 정확도를 뜻한다. 그리고 원의 크기는 사용되는 메모리의 용량이다.

따라서 우측 상단으로 갈 수록 연산 처리량과 연산 정확도가 높은 더욱 발전된 기술이라고 볼 수 있으며 원의 크기는 작을 수록 좋다.

이러한 관점에서 볼 때 ResNet은 과거 모델에 비해 많이 발전했다고 볼 수 있다.

CNN Network layer 모델의 목적은 다음과 같다.

더 깊은 네트워크를 만들면서(Layer 수를 늘려 정확도를 올림), 성능을 높여간다(파라미터 수를 줄여 처리속도를 낮춤).

AlexNet

기존 문제:

고해상도 이미지에 대규모로 Convolutional Neural Network를 적용하기에는 여전히 많은 연산량이 소모됨.

이와 함께 적은 데이터셋 있으니, 과적합을 막아야 함.

핵심 아이디어:

1) 학습 최적화

– ReLU 활성화 함수 사용

– 2개의 GPU 사용

2) 과적합 방지

– Data Augmentation (적은 연산으로 학습 데이터를 늘리는 법)

– Dropout (일부 Layer를 생략하여 Overfitting 이슈를 해결하는 법)

*Overfitting: Training accuracy는 점점 올라가는데 반해 Test accuracy는 점점 떨어지는 현상

모델 설명:

뉴런: 약 65만개

파라미터 : 약 6200만개

연산량 : 약 6억 3000만개

Convolution layer : 5개

Pooling layer : 3개

Local Response Normalization layer : 2개

Fully-connected layer : 3개

총 Layer : 8개

AlexNet 구조 파라미터 수 계산하는 방법

GoogLeNet

기존 문제:

CNN의 성능을 향상시키기 위해 망의 크기를 늘리자.

즉, 망의 Layer 수(Depth)를 늘리는 것 뿐만 아니라 각 Layer에 있는 unit 수(Width)도 늘리자.

하지만 더 깊고 넓은 네트워크(파라미터 증가)를 형성하면 ​ overfitting, 연산량(연산비용) 증가 등의 문제가 생김.

=> 이를 위해 Inception(1×1 사용) 개념을 적용함.

핵심 아이디어:

1) 향상된 Inception module

기본적인 Inception module은 아래 (a)의 그림 처럼 여러 개의 갈림길을 갖는 것이다. 그럼 다양한 물체의 크기(이미지 크기)에 유동적으로 변화하여 결과 값을 뽑을 수 있다. 즉, 여러 상황에 대비하여 출력값을 얻을 수 있다.

그리고 GoogLeNet에 적용한 향상된 Inception module 은 여기에 1 x 1 convolution layer를 추가한 것이다. 그리고 이를 통해 dimension reduction을 하는 효과를 얻고 있다. (layer를 추가했는데 dimension reduction이 되는 이유는 바로 아래 설명 참조)

Inception module 구조

2) 1 x 1 convolution의 효과

(왼쪽) 기존 방식, (오른쪽) 1×1 convolution layer를 추가했을 때 방식

위 그림을 보면 동일한 단위의 Filter에서 1 x 1 convolution layer를 추가했음에도 불구하고 총 파라미터 갯수는 1440으로 기존보다 더 적어짐을 알 수 있다. 즉, 이를 통해 dimension reduction을 하는 효과를 얻은 것이다.

모델 설명:

파라미터 : 약 500만개

총 Layer : 22개

총 Unit : 약 100개

AlexNet에 비해 파라미터 1/12 수준, 연산 2배 빠름, top5 error 10% 까지 감소

GoogLeNet 구조 (노란 박스는 inception module)

ResNet

기존 문제:

deep 한 네트워크를 위해 layer만 늘린다고 성능이 좋아지지 않는다. 즉 degradation이 발생한다. Training도 잘 되고 Test도 잘 되는데 성능이 잘 안나올 때를 말한다.

Degradation 예시

핵심 아이디어:

1) Residual learning building block

기본 원리는 입력 x가 들어가고 입력 x값에 출력 값을 더해 내보낸다. 이렇게 하기 위해서는 한가지 지켜야하는 약속이 있는데, 입력과 출력의 dimension을 맞춰주어야 한다. 이것이 유일한 제약 조건이다.

Residual learning building block

의미는 다음과 같다. 현재 입력과 출력의 차이에 대해서만 학습을 하겠다.

그냥 모의 실험없이 가정해서 진행한 이론인데 결과는 훌륭하였다. 쉬운 방법으로 최적화가 되는 결과가 나온 것이다.

2) Deeper bottle architecture

여기도 1 x 1 convolution을 추가하고 입력과 출력의 Dimension을 맞춰주어야 하므로 마지막에 1×1, 256 layer를 추가해준다.

Deeper bottle architecture ResNet 구조

모델 설명:

총 Layer : 152개

앞으로의 과제

ResNet에 사용된 기법을 통해 100개 정도의 Layer까지의 학습은 많을 수록 성능이 더 좋아졌다. 하지만 그 이상으로 Layer 수를 늘리면 성능이 또 떨어지는 Degradation이 발생한다.

그 이상의 Layer를 사용할 때 성능을 높이는 기법을 또 다시 연구해야 되는 상황이다.

100 layer vs. 1000 layer 성능 비교

종합 정리용 그래프

참고하면 좋은 글

https://m.blog.naver.com/laonple/220654387455

https://warm-uk.tistory.com/44?category=824848

https://www.edwith.org/deeplearningchoi/lecture/15296?isDesc=false

위 글이 도움이 되셨나면, 아래 하트를 눌러주세요↓

감사합니다 \( ˆoˆ )/​

반응형

딥러닝 #2 (CNN 구조, CNN 학습 알고리즘)

2021/01/31 – [인공지능] – 딥러닝 #1 (작동 구조, 기울기 소멸 문제, 과적합 문제)

저번 글에서 딥러닝의 기본적인 구조와 문제 사항에 대해 논하였다.

그 기본적인 구조로부터 파생된 종류는 심층신뢰신경망, 오토인코더, 순환신경망 등 무수히 다양하지만, 이번 포스팅에서는 음성과 이미지 인식에 탁월한 성능을 보이는 합성곱 신경망(CNN, Convolutional Neural Network)에 대해 논해보겠다.

CNN이란 동물의 시각피질의 구조에서 영감을 받아 만들어진 딥러닝 신경망 모델로 특징을 추출하는 Convloution 층과 정보를 압축하는 Pooling 층의 반복 그리고 후반에 다층 퍼셉트론 층으로 이루어져 있다. 아무래도 좀 생소한 단어들이기에 아래 그림을 통해 이해해 보자.

https://missinglink.ai/guides/convolutional-neural-networks/convolutional-neural-network-tutorial-basic-advance/ *Bird에 해당하는 확률 0.94는 오타로 0.04가 맞다

위 그림은 CNN 모델의 일반적인 작동 구조도를 표현한 것이다.

일반적으로, 보트의 생김새에 대해 알고 있는 사람은 사진을 보자마자 보트 사진이라는 것을 알 수 있다. 하지만 아무런 학습이 이루어지지 않은 인공지능 모델에게 판단을 기대하기란 어려운 문제이다.

“그렇다면 대표적인 모델 학습 방법 머신러닝을 사용하여 학습을 하면 되지 않는가?”

여기서 문제가 발생한다. 머신러닝은 학습용 데이터 프레임의 배열들을(각 Column이 뭘 의미하는지도 구분되어 있는) 입력 값으로 받고 주어진 출력값에 매칭시켜 학습을 하는 방식이지만, 위 보트 사진은 2차원 이미지의 RGB 값들로 이루어져 있다.

다시 말해 보트 사진은 특징이라고는 R, G, B 세 개의 차이만 있고 (가로 픽셀 수) * (세로 픽셀 수) * (R, G, B 3개의 채널) 만큼의 엄청난 양의 데이터를 가지고 있는 것이다. 만약 저 사진 그대로 머신러닝을 할 경우 어마어마한 시간이 걸릴 테고 바다 위에 흰색의 무언가 떠있다면 다 보트라고 대답하게 될 것이다.

“그렇다면 어떻게 해야 하는가?”

저 많은 데이터들의 집합에서 압축된 특징만을 추출한 뒤 학습하는 것이다. 그 과정은 아래와 같다.

“CNN 구조”

1. 컨볼루션 층

특징을 추출하는 층으로 일정 영역의 값들에 대해 가중치를 적용하여 하나의 값을 만드는 연산이 실행된다. 이때 이 가중치 행렬을 컨볼루션 필터(=커널 or 마스크)라 부른다.

또한 가중치 필터 연산 후에 활성화 함수를 적용하여 이후 연산에 넘겨진다. 이때 CNN의 경우 대부분 ReLU 활성화 함수를 사용한다.

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

위 이미지에서는 5×5 행렬의 이미지에 대해 3×3 필터를 1 스트라이드(연산마다 필터가 움직이는 칸 수)로 특징 추출하는 모습이다. 이후 나온 결과 행렬 Convolved Feature Map을 특징지도라고 한다.

1-(1). 패딩

컨볼루션 연산에 있어서 필요할 경우, 결과 값 행렬의 크기를 조정하기 위해 입력 배열의 둘레를 확장하고 0으로 채우는 연산이다.

입력 배열의 둘레를 한칸 확장하고 0으로 채운 뒤 연산 수행

2. 풀링 층

일정 크기의 블록을 통합하여 하나의 대표값으로 대체하는 연산으로 컨볼루션 층에서 출력된 특징 지도를 압축하여 특정 데이터를 강조하는 역할을 한다.

특징지도를 Max Pooling, Average Pooling 할 경우 결과 행렬

풀링 방식에는

블록 내의 원소들 중 최대값을 대표값으로 선택하는 Max Pooling

블록 내의 원소들의 평균값을 대표값으로 선택하는 Average Pooling

블록 내 원소의 크기를 선택 확률로 변환 후 확률에 따라 선택하는 S tochastic P ooling

등 다양한 방법이 있지만 일반적으로 CNN에서는 Max Pooling 기법을 대중적으로 사용한다.

이에 대한 이유는 실제 뉴런이 가장 큰 자극에 반응하듯이 CNN 모델에서도 이 기법을 사용할 경우 노이즈가 줄고 학습 속도가 증가하기 때문이다.

Conv 층과 Pooling 층의 반복된 연산으로 어느덧 입력 이미지 배열은 특징들만을 포함한 하나의 1차원 배열 데이터로 변환된다. 이후 과정은 이전 포스팅에서 언급했던 다층 퍼셉트론 층(Fully Connected Layer)을 통해 연산이 수행되고 회귀 혹은 분류(SoftMax 층 필요)가 이루어진다.

이제 CNN의 구조는 얼추 알겠다. 그렇다면 학습은 어떻게 이루어지는가?

“CNN 학습 방식”

가중치가 학습되는 방식은 저번 포스팅에서 다루었으며 CNN 모델에서도 동일하게 적용된다.

기본적으로 모든 학습 방식, 즉 오차역전파 알고리즘은 경사하강법을 기반으로 발전하였다. 발전을 거듭한 끝에 일반적이고 대중적인 알고리즘이 개발되었지만 그 과정에 있었던 알고리즘에 대해서도 간단히 알아보겠다.

먼저 기본적인 경사하강법 알고리즘은

위 식과 같이 오차함수에 대해 조정할 가중치로 편미분을 한 그래디언트 값을 이용해 수정해 나간다.

Momentum

경사 하강법에 관성(=탄력 Momentum)을 더해주는 알고리즘으로, 직전 학습 단계의 가중치 변화량에 모멘텀율 α (일반적으로 0.9)을 적용 후 그래디언트와의 합벡터로 가중치 조정하는 방식이다.

Momentum 알고리즘

NAG ( Nesterov Accelerated Gradient)

직전 모멘텀 항을 이용하여 조정될 방향을 예측하고 이동 후 계산하는 알고리즘으로, 현재 가중치 w(t)를 직전 모멘텀 항을 사용하여 미리 이동시키고 해당 위치에서 그레디언트를 계산하여 가중치를 조정하는 방식이다.

NAG 알고리즘

AdaGrad (Adaptive Gradient)

매 시점마다 각 가중치에 대해 별도의 학습률을 사용하는 알고리즘으로, 많이 변화한 가중치는 최적값에 근접했을 것이라 보고 학습률이 감소하며 반대로 적게 변화한 가중치는 학습률을 높여 빠르게 오차를 줄여나가는 방식이다.

여기서 입실론은 G_i (t) 값이 0이 될경우 학습률이 0으로 수렴하게되므로 이를 막기 위한 작은 상수이다.

RMSprop

AdaGrad 방식과 마찬가지로 가중치 별로 별도의 학습율을 적용하지만 지수 이동 평균 기법을 적용하여 최근 값의 영향은 더욱 크고, 오래된 값의 영향은 대폭 낮추는 알고리즘이다. AdaGrad 방식에서 학습률이 0으로 수렴하는 현상을 방지하고자 개발되었다.

지수 이동 평균 기법을 표현한 식으로 최근 값에 대한 영향이커질수록 과거 값의 영향은 작아진다. RMSprop 알고리즘 구조로 오차함수에 대해 지수 이동 평균 기법이 적용되어 있다.

Adam (Adaptive Moment Estimation )

Momentum 방식과 RMSprop 방식이 결합된 방법으로 Momentum 항과 학습율 항에 RMSprop 방식과 같이 지수 이동 평균 적용된 알고리즘이다.

여러 데이터셋에 대해 가장 좋은 학습 성능을 보이며 현재 딥러닝 모델에 가장 많이 쓰이는 대중적인 알고리즘이다.

지수 이동 평균 기법을 이용하여 개별적인 학습률이 적용되는 RMSprop 방식과 직전 단계 가중치 변화량에 힘을 실어주는 Momentum 방식이 결합된 Adam 알고리즘

가장 많이 사용되는 딥 러닝 알고리즘 종류

딥러닝은 컴퓨터 분야에서 큰 인기를 끌고 있다. 그리고 딥러닝 알고리즘은 복잡한 문제를 해결해야 하는 산업에서 널리 사용되고 있다. 모든 딥러닝 알고리즘은 특정한 작업을 수행하기 위해 다른 종류의 신경망을 사용하는데 이번 포스팅에서는 딥 러닝 알고리즘 종류에 대해 알아보고자 한다.

딥러닝이란?

딥러닝은 인공신경망을 이용해 대량의 데이터에 대해 정교한 계산을 수행한다. 인간의 두뇌의 구조와 기능을 바탕으로 작동하는 기계학습의 일종이다.

추가적으로 딥러닝에 대해 알고 싶다면 아래의 링크를 클릭하자.

딥러닝에 사용되는 알고리즘 유형

다음은 가장 많이 사용되는 10가지 딥러닝 알고리즘 목록이다.

CNN LSTM(단기 메모리 네트워크) RNN(Recurrent Neural Network) GAN(Generation Attemarical Network) RBFN(Radial Basis Function Network) 멀티레이어 Perceptrons(MLP) SOM(Self Organization Map) DBN(Deep Belief Networks) RBM 오토 인코더

1. CNN

convNets라고도 알려진 CNN은 다중 레이어로 구성되어 있으며 주로 이미지 처리와 객체 탐지에 사용된다. CNN은 위성사진을 식별하고, 의료영상을 처리하며, 이상 징후를 탐지하는 데 널리 사용된다.

2. LSTM(단기 메모리 네트워크)

LSTM은 시계열 예측 외에도 음성 인식, 음악 작곡, 제약 개발 등에 주로 사용된다.

3. RNN(Recurrent Neural Networks)

RNN은 일반적으로 이미지 캡션, 시계열 분석, 자연 언어 처리, 필기 인식 및 기계 번역에 사용된다.

4. GAN(Generation Attemarical Network)

비디오 게임 개발자들은 GANs를 이용하여 영상 훈련을 통해 4K 이상의 해상도로 재생함으로써 구형 비디오 게임에서 저해상도 2D 텍스처를 개량한다. GANs는 사실적인 이미지와 만화 캐릭터를 생성하고, 인간의 얼굴을 찍은 사진을 만들고, 3D 사물을 렌더링 하는 것을 돕는다.

5. RBFN(Radial Basis Function Networks(RBFN)

입력 계층, 숨겨진 계층 및 출력 계층을 가지며, 분류, 회귀 및 시계열 예측에 주로 사용된다.

6. 멀티레이어 Perceptrons(MLP)

MLP는 딥러닝 기술을 입문하는데 좋은 선택지이다. 여러 개의 숨겨진 레이어를 가질 수 있으며 음성 인식, 이미지 인식 및 기계 번역 소프트웨어를 구축하는 데 사용할 수 있다.

7. SOM(Self Organizing Maps)

SOM은 사용자들이 복잡하고 고차원적인 정보를 이해하는데 도움을 주기 위해 만들어졌다.

8. DBN(Deep Belief Networks)

DBN(Deep Belief Networks)은 이미지 인식, 비디오 인식 및 모션 캡처 데이터에 사용된다.

9. RBM

RBM은 차원성 감소, 분류, 협업, 학습 및 모델링에 사용된다.

10. 오토 엔코더

오토 인코더는 의학, 예측, 이미지 처리와 같은 목적으로 사용된다.

딥 러닝 툴 목록

1. 토치:

토치 딥러닝 도구는 오픈소스 프로그램이다. 그래픽 처리 유닛을 지원하며 임베디드가 가능하여 안드로이드, iOS 등과 연동할 수 있다.

2. 뉴럴 디자이너:

뉴럴 디자이너는 신경망을 활용한 데이터 인덱스에서 숨겨진 디자인과 복잡한 연결, 패턴을 예측하는 전문가 애플리케이션이다.

3. Tensor Flow:

Tensor Flow는 여러 종류의 작업에 걸쳐 활용된다. 텐서 플로우는 강화 학습, 자연 언어 처리 및 컴퓨터 비전과 같은 머신러닝을 활용할 수 있게 해 준다.

4. Azure Cognitive Service:

Azure Cognitive Service는 이용하기 쉽고 무료 오픈소스다. 품질, 정확성 및 속도와 함께 뛰어난 확장 능력을 제공한다. 고객이 데이터 학습을 통해 대용량 데이터셋 내부의 지식을 융합할 수 있도록 한다.

5. 파이 토치:

PyTorch는 Python을 위한 오픈소스 머신 러닝 라이브러리이다. Torch를 기반으로 하며, 자연어 처리와 같은 애플리케이션을 위해 사용된다. GPU 사용이 가능하기 때문에 속도가 상당히 빠르다.

6. H20.ai:

H20은 오픈 소스 소프트웨어이다.

7. 케라스:

케라스는 파이썬으로 작성된 오픈 소스 신경망 라이브러리이다. MXNet, Deeplearning4 j, 텐서 플로, Microsoft Cognitive Toolkit 또는 Theano 위에서 수행할 수 있다.

반응형

CNN 사전학습 모델 – LeNet / AlexNet / VGGNet / InceptionNet / ResNet / DenseNet / MobileNet / EfficientNet

📚 사전학습 모형(pre-trained model)의 종류와 개념

✅ CNN 기본 개념

📌 CNN 요약

이미지 데이터는 여러 개의 픽셀로 구성되어 있고, 한 개의 픽셀은 3개의 색상정보를 저장하고 있다. 일반 신경망으로 이미지 데이터를 학습할 경우 3차원 이미지를 1차원으로 변환해서 입력하는 과정에서 정보 손실이 발생한다. 또한 파라미터가 굉장히 많아지기 때문에 과적합 가능성이 증가한다. 따라서 CNN은 필터를 이용해서 이미지의 각 부분의 정보를 추출한다. 필터는 이미지의 각 셀들과 내적 연산을 수행(합성곱)하면서 activation map을 생성한다. 이렇게 생성된 activation map은 또 하나의 이미지로 보고 다시 필터를 통해서 정보를 추출하는 과정을 반복한다. 그리고 최종적으로 1차원 데이터로 변환해서 softmax 함수를 출력층에 사용해서 이미지를 분류한다.

📌 CNN을 사용한 이미지 분류 방법 2가지

구분 설명 1. 사용자가 직접 CNN 생성 – 직접 ConvNet2D를 여러개 쌓아서 신경망 구축

– 단점 : 정교한 모형 구축하는데에 많은 시간 / 데이터 / 컴퓨팅 파워가 필요하다 2. 사전학습 모델 사용 • 사전 학습 모델이란 이미 방대한 양의 학습 데이터를 이용해서 학습을 완료한 모델이다. 해당 모델의 구조와 파라미터 최적값이 학습을 통해서 정해져 있다.

• 성능이 좋은 정교한 모형을 사용할 수 있고, 오랜 시간과 컴퓨팅 파워를 사용해서 대용량 데이터를 학습한 모델을 효율적으로 사용할 수 있다. 2-1. 학습모델 그대로 사용

• 원래 모델을 그대로 사용하는 방식으로, 새로운 task가 사전 학습 모형의 task와 유사한 경우에 적용할 수 있다.

•하지만, 사전학습 모형은 대부분 ImageNet 대회에서 우승한 모델이기 때문에 대부분의 종속변수 클래스가 동물이라는 점을 유의해야 한다.

2-2. 전이학습

(Transfer Learning)

• 사전학습 모델의 파라미터나 구조를 일부 변형해서 사용하는 방법

새로운 학습 데이터가 필요하지만, 완전히 모델을 새로 만드는 것 만큼 많은 데이터가 필요하지는 않다.

CNN을 사용해서 이미지를 분류하는 방식에는 크게 사용사가 직접 CNN 모델을 구축하는 방법과, 사전 학습 모델을 사용하는 방법으로 구분할 수 있다. 사전학습 모델을 사용하는 과정에서는 해당 모델을 그대로 사용할 수도 있고 모델의 일부를 수정하는 전이학습을 사용할 수도 있다.

✅ 주요 사전학습 모델의 출처

주로 ILSVRC 대회(imagenet 경진대회)에서 상위권에 뽑힌 모델을 주로 사전학습 모델로 사용한다.

image Net 대회 Image Net 경진대회에는 총 128만개의 학습 데이터와 5만개의 테스트 데이터를 제공한다. 총 1000개의 종속변수 이미지 클래스가 포함되어 있으며 대부분 동물에 관한 데이터이다.(https://gist.github.com/aaronpolhamus/964a4411c0906315deb9f4a3723aac57)

✅ LeNet

http :// yann.lecun.com / exdb / publis /pdf/ lecun-01a.pdf

LeCun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11), 2278-2324.

LeNet의 구조

• 최근에는 사용되지 않지만, 기본적인 CNN 구조를 가장 처음 제안한 모델이라는 점에서 의의가 있음

• 세 번의 합성곱 필터와 2번의 average pooling을 사용한 구조이며, tanh 활성화 함수와 average pooling을 사용했는데 최근에는 이 방식을 사용하지 않는다.

• 첫 번째 activation map의 depth=6 이므로, 6개의 필터를 적용했다는 것을 알 수 있다.

✅ AlexNet

https :// papers.nips.cc /paper/2012/file/ c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems, 25, 1097-1105.

Alex Net 구조

• 1998년 LeNet이 제안된 이후 CNN 알고리즘의 뚜렷한 성능 개선이 이루어지지 않았는데, 이러한 CNN 침체기를 깨면서 2012년 이미지넷 경진대회에서 우승한 모델이다. 비교적 구조가 간단해서 최근에는 많이 사용되지 않음

• LeNet과 유사하게 여러 개의 합성곱 필터와 풀링 레이어를 가지고 있다는 것은 동일하지만,

활성화 함수로 relu로 사용하고 max pooling을 사용했다. 5개의 합성곱 층과 3번의 풀링을 사용함.

• 11×11크기로 stride=4 인 96개의 필터(커널)을 적용함.

최근에는 3×3 이나 5×5 크기의 필터를 사용하는데 여기서는 11×11로 큰 크기의 필터를 사용했다.

필터의 크기가 큰 경우에는 파라미터의 수가 많아져서 모델이 복잡해지기 때문에 과적합이 자주 발생할 가능성이 높다.

또한 이미지에서 정보를 추출하는 횟수가 적기 때문에, 올바르게 학습이 이루어지지 않을 수도 있다.

하지만 그렇다고 무조건 필터의 크기가 작다고 유리한 것은 아니며, stride와 같은 파라미터에 의해서 달라진다.

✅ VGGNet

https:// arxiv.org/abs/1409.1556

Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.

VGG-16 구조

VGG-16 적용 예시 • 2014년 옥스포드 VGG그룹에서 제안된 모델로 이미지넷 대회에서 준우승한 모델 • 전체적인 구조는 AlexNet과 유사하지만 3×3필터를 stride=1로 설정해서 반복해서 적용한다. pooling layer를 제외하고 총 16개 층이어서 VGG-16이라고 부른다. pooling layer에는 2×2로 max pooling을 stride=2로 해서 적용한다.

• VGG-16 과 VGG-19가 있는데 주로 16 버전이 사용된다. 같은 년도 대회에서 우승 모델은 Inception Net이지만 VGG-16이 비교적 구조가 간단하고 사용이 편리해서 더 많이 사용된다(ResNet 다음으로 많이 사용됨).

✅ InceptionNet ( = Google Net)

https :// arxiv.org /abs/1409.4842

Szegedy et al. (2015). Going deeper with convolutions. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1-9).

• 구글에서 제안한 2014년 이미지넷 경진대회 우승 모델

인셉션 모듈이라는 방식을 사용해서 모델 성능을 개선시킴. 인셉션 모듈은 이후 모델에서 지속적으로 사용되고 있음

📌 Inception Module :

• 일반 CNN 모델은 층마다 ConvNet을 한 번만 수행한다. 따라서 합성곱 필터의 크기와 풀링 레이어의 사용 위치가 모델의 성능을 구분하는 핵심 요소였다. 구글 팀에서는 이전 층에서 입력되는 값에 대해서 합성곱 필터와 풀링 필터를 포함해서 여러개의 필터를 한번에 적용했다. 이 층을 인셉션 모듈이라고 하고, 이 방식을 통해서 각 층에서 더 다양한 정보를 추출하면서 학습 속도를 개선한다.

• 서로 다른 크기의 필터를 적용하기 때문에 return 하는 activation map 의 가로x세로 크기가 다르게 나타난다. 따라서 이 크기를 통일하고 depth-wise로 합치기 위해서 padding을 사용한다.

📌 Inception Module의 차원 감소 : Bottle Neck 구조

Bottle Neck 구조를 통한 파라미터 감소

여러 개의 필터를 한번에 사용하면 파라미터의 수가 증가한다. 이는 모형이 복잡해져서 과적합 문제가 발생할 가능성이 증가한다는 것을 의미한다. 따라서 inceiption Net은 이 문제를 해결하기 위해서 중간에 1×1 필터를 추가하여 차원을 감소시킨다.

좌측 이미지)

depth=32인 이전 단계의 활성맵에 3×3필터를 64개 적용하면 3x3x32x64의 파라미터가 생성된다.

우측 이미지)

3×3필터를 적용하기 전에, 중간 단계에 1x1x32 형태의 필터를 추가한다. 여기서 중간층의 depth=16은 임의로 설정한 것.

중간 층의 depth는 반드시 입력층의 depth(32) 보다 작아야 함

중간층을 거쳐서 최종 deptth=64인 활성맵을 만들면 총 파라미터의 수가 (1x1x32x16) + (3x3x16x64) = 9728로 감소한다.

이러한 구조를 bottle neck 구조라고 한다. (depth의 수가 32 -> 16 -> 64 로 병목처럼 변화하기 때문)

인셉션 넷은 층의 수가 많기 때문에 앞쪽 층의 파라미터 업데이트가 이루어지지 않는 경사소실 문제가 발생할 가능성이 높다.

따라서 이 문제를 해결하기 위해서 인셉션 넷은 추가 분류기를 사용한다. 기본적인 분류 모델은 가장 마지막에 메인 분류기만 사용하는데, 이 경우 앞 층 까지 파라미터 업데이트가 완전히 진행되지 않는다. 따라서, 인셉션 넷은 중간에 추가 분류기를 추가해서 종속변수 예측치를 도출한다. 그리고 이 예측치를 통해서 새로운 비용함수를 계산해서 앞쪽 층의 파라미터 업데이트를 실시한다. 추가 분류기는 학습 과정에서만 사용된다.

따라서 인셉션 넷의 최종 비용함수는 위와 같이 정의된다.

✅ ResNet (Residual Network)

https:// arxiv.org/abs/1512.03385

He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).

• 마이크로소프트에서 제안하고 2015년 이미지넷에서 우승한 모델. 당시 최초로 사람의 분류 성능을 뛰어넘으면서 인공지능에 대한 기대가 증가하게 되는 계기가 되었다. 최근까지 가장 많이 사용되는 사전학습 모델이다.

• 좌측은 VGG-19 모델, 중간은 레이어가 34개로 더 깊어진 구조, 우측이 34개의 레이어를 가진 residual net 구조이다.

📌 층이 많을 경우 문제점과 원인

일반적으로 위의 그림과 같이 신경망이 깊어지면 오히려 오차가 증가한다. 해당 논문에서는 파라미터 증가로 과적합이 발생하는 것은 특정 시점까지이고, 그 이후부터는 성능이 일정하게 유지된다는 것을 실험을 통해 밝혔다. 즉, 위의 우측 그래프에서 볼 수 있듯이 층의 갯수가 많아지는 것은 과적합의 주요 원인이 아니었다.

→ 과적합을 발생시키는 원인은 ‘경사 소실(Gradient Vanishing)’로 인한 파라미터 업데이트가 이루어지지 않는 것이었음.

따라서 ResNet에서는 이러한 경사 손실의 문제를 해결하기 위해서 Skip Connection 이라는 구조를 사용한다.

📌 ResNet의 핵심 아이디어

레이어의 수가 성능 저하의 원인이 아니므로, 레이어가 증가해도 성능이 저하되어서는 안된다고 생각함. 적어도 더 얕은 네트워크(shallower network)만큼의 성능이 나와야 한다는 아이디어 떠올림.

따라서 입력값을 그대로 출력하는 identity mapping을 추가하더라도, 그것을 추가하지 않은 네트워크 만큼의 성능이 나와야 함.

따라서, 다음과 같은 핵심 아이디어를 기반으로 모델 생성한다.

입력값을 이용해서 출력값을 완전히 새로 계산하는 것이 아니라, 입력값과 원래 출력하고자 하는 값의 차이(residual)만을 새롭게 학습하자

x : 입력값

H(x) : 해당 층에서 원래 출력하고자 하는 값.

F(x) = H(x) – x : 잔차

Skip connection 구조에서는 입력값을 바로 출력에 연결하는데 H(x)=F(x)+x 로 표현할 수 있고, F(x)=0(잔차가 0)이 되도록 학습한다. 이렇게 할 경우 미분을 했을 때 0이 되어 F(x)=0으로 소실 되더라도, H(x)=0+x 에서 x의 1이 남아있기 때문에 경사 소실이 해결된다. 또한 이 구조에서는 단순히 더하기만 추가되기 때문에 연산량에서도 부담이 없다.

기존 모델에서는 최적의 H(x)를 찾는 방향으로 학습하면서 weight를 수정한다. 반면 ResNet은 잔차인 F(x)를 감소시키는 방향으로 학습한다.

논문의 실험 결과를 살펴보면 좌측 일반 신경망 구조에서는 레이어 수가 많아질수록 성능이 감소하지만, 우측 그림에서 잔차를 이용한 학습 방식에서는 레이어 수에 따라서 성능이 개선된다는 것을 알 수 있다.

✅ MobileNet

https:// arxiv.org /abs/1704.04861

Howard et al., (2017). Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861.

• 모바일과 같이 컴퓨팅 파워가 부족한 기기에서 이미지 분류를 하기 위해서 개발된 모델

• Depthwise Separable Convolution 구조를 사용함.

depth=5인 activation map 의 채널(depth)별로 depth=1인 필터를 적용한 모델. 그리고 최종적으로 인셉션 넷과 동일하게 마지막에 1×1 필터를 적용하는 보틀넥 구조를 사용함.

• 성능은 크게 감소시키지 않으면서 파라미터 수를 감소시켜서 빠르게 학습이 가능하다.

✅ DenseNet

https:// arxiv.org /abs/1608.06993

Huang, G., Liu, Z., Van Der Maaten, L., & Weinberger, K. Q. (2017). Densely connected convolutional networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4700-4708).

DenseNet 구조

• ResNet의 문제점을 보완. 이 페이퍼에 따르면 identity mapping layer에서 x + F(x) 로 입력값과 출력값을 단순히 더해서 출력하는 것은 정보의 흐름을 방해할 수 있다고 주장함. DenseNet 이 값을 더한게 아니라 depth-wise로 그냥 이어붙이기 한 것.

두 번째 그림의 빨간색 부분의 depth = C, 파란색 부분 depth =4 . 따라서 이 활성맵에 적용되는 필터의 depth=C+4

초록색 부분의 depth=4

✅ Efficient Net

https:// arxiv.org/abs/1905.11946

Tan, M., & Le, Q. (2019, May). Efficientnet : Rethinking model scaling for convolutional neural networks. In International Conference on Machine Learning (pp. 6105-6114). PMLR .

• 2019년 구글에서 제안한 비교적 최신 기법이다. 사전학습 모형으로 많이 사용되지는 않는다.

•compund scaling method를 사용함. Width / Depth / Reolution 등을 고려해야 하는데 컴퓨터의 성능에 따라서 적절하게 선택해야 한다. 따라서 사용자의 환경에 따라서 다르다.

📚 Reference

• 연세대학교 디지털사회과학센터(CDSS) 파이썬을 활용한 딥러닝 기초 워크숍, 이상엽 교수님

• LeCun , Y., Bottou , L., Bengio , Y., & Haffner , P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE , 86 (11), 2278-2324.

• Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems, 25, 1097-1105.

• Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.

•Szegedy et al. (2015). Going deeper with convolutions. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1-9)

• He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).

• Huang, G., Liu, Z., Van Der Maaten , L., & Weinberger, K. Q. (2017). Densely connected convolutional networks. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4700-4708).

• Howard et al., (2017). Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861.

•Tan, M., & Le, Q. (2019, May). Efficientnet: Rethinking model scaling for convolutional neural networks. In International Conference on Machine Learning (pp. 6105-6114). PMLR

[딥러닝] 7-1강. 뇌 벌려! Cnn 들어간다! (Cnn: Convolutional Neural Network) | cnn 알고리즘 종류 오늘 업데이트

We are using cookies to give you the best experience on our website.

You can find out more about which cookies we are using or switch them off in settings.

【알고리즘】 12강. 딥러닝 3부 – CNN 알고리즘

12강. 딥러닝 3부 – 합성곱 신경망(convolutionanl neural network; CNN)

추천글 : 【알고리즘】 알고리즘 목차

1. 개요

⑴ 도입 배경

① fully-connected layer : 보편근사이론에 따르면 CNN이라는 특수한 아키텍처가 없어도 이미지 등의 패턴을 인식 가능

② 다만, fully-connected layer는 파라미터가 너무 많이 필요해 computing burden이 크고 학습시간이 오래 걸림

③ fully-connected layer는 사실상 CNN의 특수한 예에 해당함

⑵ 가정

① 가정 1. spatial locality : 이미지 전체가 아닌 일부분에 국한하여 얻은 패턴들로 빠짐없이 전체 사물의 패턴을 알아낼 수 있는 것

② 가정 2. positional invariance : 위치나 시선각에 따라서 동일한 패턴을 인식할 것이라는 것

⑶ 순서

① augmentation_layer → Input → Conv2D, MaxPooling2D, 기타

② nested conv-layers : low-level features → mid-level features → high-level features → trainable classifier

⑷ 활성화 함수(activation function)

2. 구성

⑴ 구성 1. Input : 입력층

⑵ 구성 2. augmentation_layer

① 정의 : random cropping, random rotation 등의 변형으로 입력을 보다 다양하게 만듦

② 목적 : 이를 통해 모델이 더욱 robust 하게 학습하도록 함

③ 참고 : https://www.tensorflow.org/tutorials/images/data_augmentation

⑶ 구성 3. convolutional_layer : Conv2D 등

model = tf.keras.Sequential([ … layers.Conv2D(filters=96, kernel_size=3, activation=’elu’, strides=2), … ])

① 목적 : local pattern을 식별하기 위함

② 입력 : W × H × C의 입력이 주어짐

○ W : 너비(width)

○ H : 높이(height)

○ C : 입력측의 채널 수 (예 : RGB 채널)

③ 파라미터 : 총 네 개의 hyperparameter가 필요함

○ K : 필터의 개수. 즉 출력측의 채널 수 (예 : RGB 채널). filters라고도 함

○ F : 필터의 크기. kernel_size라고도 함

○ S : stride

○ P : zero padding

○ pooling_layer에 비해 spatial extent가 없는 대신 padding이나 kernel_size가 있음

○ 파라미터의 개수 = 필터에 필요한 파라미터의 수 = K(F2C + 1)

○ CNN 딥러닝 알고리즘에서는 이러한 파라미터를 학습하게 됨

④ 연산 : 매 inner product마다 정규화를 거침

○ 이유 : 각 벡터의 절댓값이 아니라 두 벡터 간 코사인 각이 중요하므로

○ 연산의 예시 : 아래 예시에서 선끼리 연결된 것은 곱이고 선 간에는 합이 적용

Figure. 1. 연산의 예시

(단, 위 그림에서 바이어스가 생략돼 있음을 유의)

⑤ 필터 : 일반적으로 3 × 3 filter를 많이 씀

○ 필터가 크면 맵은 빠르게 작아짐

○ 이미지가 크면 너무 computation이 많이 필요해짐

○ 필터 크기는 대부분 홀수

○ 1 × 1 conv : 채널 간의 차이를 알기 위해 사용함

⑥ 출력 : convolutional layer의 출력 사이즈를 W’ × H’ × K라고 하면,

○ W’ = (W – F + 2P) / S + 1

○ H’ = (H – F + 2P) / S + 1

○ (참고) fully-connected인 경우 총 필요한 파라미터의 수 = (W × H × C + 1) × (W’ × H’ × K)

○ 만일 S = 1, P = (F-1) / 2이면 W’ = W, H’ = H가 됨 : 이 경우 파이썬 상에서 다음과 같이 표시함

model = tf.keras.Sequential([ … layers.Conv2D(filters=96, kernel_size=3, activation=’elu’, strides=1, padding=’same’), … ])

⑦ 출력 예시

Figure. 2. convolutional layer에 의한 CNN 출력 예시

⑷ 구성 4. pooling_layer

model = tf.keras.Sequential([ … layers.MaxPooling2D((2,2), strides=2), … ])

① 목적 : 입력 차원을 줄이기 위함

② 입력 : W × H × C의 입력이 주어짐

○ W : 너비(width)

○ H : 높이(height)

○ C : 입력측의 채널 수 (예 : RGB 채널)

③ 파라미터 : 총 두 개의 hyperparameter가 필요함

○ F : spatial extent

○ S : stride

○ 보통 F = S = 2로 설정

○ convolutional_layer에 비해 padding이나 kernel_size가 없는 대신 spatial extent가 있음

○ 파라미터의 개수 = 0

○ 이유 : averaging 등 학습이 필요하지 않은 단순한 연산이 수행되기 때문

○ 연산의 종류 : max pooling (e.g., MaxPooling2D), average pooling

④ 출력 : pooling layer의 출력 사이즈를 W’ × H’ × K라고 하면,

○ W’ = (W – F) / S + 1

○ H’ = (H – F) / S + 1

⑸ 구성 5. 기타

① BatchNormalization : batch data를 normalize하는 데 효과가 꽤 좋음. 필자는 maxpooling 다음에 씀

② Flatten

③ Dense

④ Dropout

3. 예시

⑴ 예 1. TensorFlow API

tf.keras.layers.Conv2D( filters, kernel_size, strides=(1,1), padding=”valid”, data_format=None, dilation_rate=(1,1), groups=1, activation=None, use_bias=True, kernel_initializer=”glorot_uniform”, bias_initializer=”zeros”, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, **kwargs )

⑵ 예 2. AlexNet

Figure. 3. AlexNet의 구조

① 가장 왼쪽에 있는 네모 박스가 입력층

② 입력층에서부터 오른쪽에 있는 네모 박스를 각각 CONV1, ···, CONV5라고 함

③ maxpooling은 왼쪽부터 POOL1, ···, POOL3라고 함

④ 가장 오른쪽에 있는 maxpooling, dense, dense라고 쓰인 부분의 네트워크를 각각 FC6, FC7, FC8라고 함

⑶ 예 3. DIP(deep image prior)

입력: 2021.12.01 10:50

반응형

CNN (Convolutional Neural Network) 개념

CNN (Convolutional Neural Network) 개념

CNN(Convolutional Neural Network)은 이미지를 분석하기 위해 패턴을 찾는데 유용한 알고리즘으로 데이터에서 이미지를 직접 학습하고 패턴을 사용해 이미지를 분류한다. CNN의 핵심적인 개념은 이미지의 공간정보를 유지하며 학습을 한다. CNN은 필터링 기법을 인공 신경망에 적용함으로써 이미지를 더욱 효과적으로 처리하기 위해 Yann LeCun (https://en.wikipedia.org/wiki/Yann_LeCun)이 제안하였으며 (http://vision.stanford.edu/cs598_spring07/papers/Lecun98.pdf) 현재 딥 러닝에서 이용되고 있는 형태의 CNN이 제안되었다. 기존의 필터링 기법은 고정된 필터를 이용하여 이미지를 처리했다. 아래 그림은 필터의 종류와 기능이다.

이미지 관련 Deep Learning은 CNN이전과 이후의 세상으로 나눌 수 있다. CNN이 나오기 이전 이미지 인식은 2차원으로 이미지(채널까지 포함 3차원)를 1차원 배열로 바꾼 뒤 FNN (Fully- connected multi layered Neural Network) 신경망으로 학습시키는 방법 이었다. FNN의 문제점은 인접 픽셀간의 상관관계가 무시된다는 것이다. FNN은 벡터 형태로 표현된 데이터를 입력 받기 때문에 이미지를 반드시 벡터화 해야 한다. 그러나 이미지 데이터는 일반적으로 인접한 픽셀간의 상관관계가 매우 높기 때문에 이미지를 벡터화 (vectorization)하는 과정에서 정보 손실이 발생한다.

[FNN을 이용하여 이미지 처리를 위한 벡터화]

CNN은 이미지의 형태를 보존하도록 행렬 형태의 데이터를 입력 받기 때문에 이미지를 벡터화 하는 과정에서 발생하는 정보 손실을 방지할 수 있다. 즉 기본 개념은 “행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되게 하자”는 것이다.

일반적인 신경망은 affine로 명시된 fully-connected 연산과 ReLU와 같은 비선형 활성 함수 (nonlinear activation function)의 합성으로 정의된 여러 계층을 쌓은 구조이다. CNN은 Feature를 추출하는Convolution Layer와 추출된Feature를Sub-Sampling하는 Pooling Layer로 구성되어 있다. Convolution Layer는 이미지에 필터링 기법을 적용하고, Pooling Layer는 이미지의 국소적인 부분들을 하나의 대표적인 스칼라 값으로 변환함으로써 이미지 크기를 줄이는 등의 다양한 기능들을 수행한다.

[Convolutional Layer]

Convolution Layer의 정의는 합성곱이다. 현재 위치의 출력 데이터는 인접한 Pixel에 Convolution Filter을 곱해서 얻어진 값이다.

합성곱(合成-, convolution, 콘벌루션)은 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자이다. 출처 : https://ko.wikipedia.org/wiki/%ED%95%A9%EC%84%B1%EA%B3%B1

아래 그림은 단일 채널에 대한 합성곱 계층 동작을 표현한 것이다. 4×4 매트릭은 입력 데이터이고 3X3메트릭은 필터이다. 이 필터가 데이터 적용되어 계산되는데, 필터가 데이터에서 한 칸씩 또는 두 칸씩 이동하면서 계산하는데, 이 값을 Stride라 한다. 이를 통해feature map을 만들 수 있다. 필터(또는 커널)의 구성에 따라 이미지 특징을 뽑을 수 있다.

아래 그림은 멀티 채널 입력 데이터에 필터를 적용한 합성곱을 나타낸다.

합성곱 계층을 거치면서 이미지의 크기는 점점 작아지게 되고 이미지의 가장자리에 위치한 픽셀들의 정보는 점점 사라지게 된다. 이러한 문제점을 해결하기 위해 이용되는것이 패딩 (Padding)이다. 패딩은 이미지의 가장자리에 특정값으로 설정된 픽셀들을 추가함으로써 입력 이미지와 출력이미지의 크기를 같거나 비슷하게 만드는 역할을 수행한다. 아래 그림은 0 값을 갖는 픽셀을 추가하는 zero-padding을 적용한 예이며, CNN에서는 주로 zero-padding이 이용된다.

[Pooling Layer]

Pooling (sub sampling 라고도 부른다.) 레이어는 컨볼루션 레이어의 출력 데이터를 받아서 출력 데이터(Activation Map)의 크기를 줄이거나 특정 데이터를 강조하는 용도로 사용된다. 풀링 레이어를 처리하는 방법으로는 Max Pooling, Min Pooling, Average Pooling 이 있다. 일반적으로 풀링과 stride를 동일한 크기로 설정하여 모든 원소가 한번씩 처리 되도록 한다.

Pooling Layer는 Convolution Layer와 비교하면 아래와 같은 특징이 있다.

· 학습대상 파라미터가 없음

· Pooling 레이어를 통과하면 행렬의 크기 감소

· Pooling 레이어를 통해서 채널 수 변경 없음

[Convolution Layer 출력 크기]

입력 데이터 높이: H

입력 데이터 폭: W

필터 높이: FH

필터 폭: FW

Strid 크기: S

패딩 사이즈: P

[Pooling Layer 출력 크기]

요약하면 CNN은 입력 데이터에 대해서 필터를 통해 이미지의 특징을 추출하고 (Convolution Layer) , 특징을 강화하고 이미지의 크기를 축소(Pooling Layer)한다. 이 과정을 반복하여 처리된 결과를 출력한다.

[참고자료]

· http://taewan.kim/post/cnn/

· https://untitledtblog.tistory.com/150

· https://hamait.tistory.com/535

· https://bcho.tistory.com/1149

· https://m.blog.naver.com/laonple/221193389981

· https://gruuuuu.github.io/machine-learning/cnn-doc/#

· https://crystalcube.co.kr/192

2020-03-06/ Sungwook Kang / http://sungwookkang.com

CNN, Convolutional Neural Network, 이미지 처리, CNN 알고리즘, 컨볼루션, 머신러닝, 딥러닝, Deep learning, AI, FNN 알고리즘

키워드에 대한 정보 cnn 알고리즘 종류

다음은 Bing에서 cnn 알고리즘 종류 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

See also  경찰 체력 시험 기준 | 한체대 출신 운동유튜버의 경찰공무원 체력 실기 도전! 답을 믿으세요
See also  프로 복싱 체급 | 복싱의 체급의 종류 249 개의 새로운 답변이 업데이트되었습니다.

See also  태국 아 고고 | 태국 푸켓 밤문화 아고고바 미녀들 천국에서 문화충격♥ 69 개의 자세한 답변

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 딥러닝 CNN, 개념만 이해하기

  • 딥러닝
  • CNN
  • 컨볼루션 신경망
  • 신경망
  • convolution
  • convolutional neural network
  • 합성곱 신경망
  • 합성곱
  • 딥러닝 CNN
  • 이미지 인식
  • 인공지능
  • 사진 인식
  • 얼굴 인식
  • 이미지 분류

딥러닝 #CNN, #개념만 #이해하기


YouTube에서 cnn 알고리즘 종류 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 딥러닝 CNN, 개념만 이해하기 | cnn 알고리즘 종류, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment