3-2/인공지능

합성곱 신경망

chchae01 2022. 8. 17. 12:25

Limitation of DNN

  • DNN

- 2D 데이터를 1D로 평탄화하여 DNN 적용 가능

- 위치에 상관없이 동일한 수준의 중요도를 가짐

 ==> 전체 글자가 2픽셀 이동만 하더라도 새로운 학습 데이터로 처리

 ==> translation invariance 특성이 보장 X

 ==> scale, ratation, dictortion invariance 특성 보장 X

- DNN = Multi-layer Perceptron = Feedforward NN = Fully Connected Layer (FC)

 

  • Summary of Limitation

1) 학습시간

==> 크기, 회전, 이동 등 모든 데이터를 학습해야함

2) DNN 모델의 크기

3) 변수의 개수

==> 입력 영상이 커지고 Layer가 깊어지면 모델의 크기가 커지고 파라미터 수도 많아짐

Convolutional Neural Networks (CNN)

  • CNN

- 합성곱 신경망(Convolutional neural network, CNN)은 시각적 이미지를 분석하는 데 사용되는 깊은 인공신경망의 한 종류

- CNN은 변환 불변성 특성에 기초하며, 이미지 및 비디오 인식, 추천 시스템, 이미지 분류, 의료 이미지 분석에 응용됨

==> DNN의 한계인 scale, rotation, distortion에 대한 특성 보장!!

- CNN은 다른 이미지 분류 알고리즘에 비해 상대적으로 전처리를 거의 사용하지 않음

  = 네트워크가 기존 알고리즘에서 수작업으로 제작된 여러 필터 역할을 스스로 학습함.

 

  • Convolution + Neural Network

- CNN =>  Convolution 특성을 살린 신경망 연산

- 2번 이상의 CNN : 입력영상뿐만 아니라 중간 Feature map에도 Convolution 적용

 

  ** 영상처리 or 컴퓨터비전에서의 Convolution이란?

   ==> 주로 filter연산에서 사용되며, 영상으로부터 특정 feature를 추출하고 싶을 때 사용

 

  • Receptive Field(수용영역)란?

- 출력 레이어의 뉴런 하나에 영향을 미치는 입력 뉴런들의 공간 크기

- 외부 자극이 전체 영향을 끼치는게 아니라 특정 영역에만 영향을 미친다.

- 영상에서 특정 위치에 있는 픽셀들은 그 주변에 있는 일부 픽셀들과만 correlation이 높을 뿐이며, 거리가 멀어질 수록 그 영향은 감소하게 된다.

- kernel

 

  • Advantage of CNN

- Conv layer는 형상을 유지한다

  ==> 평탄화 필요x

- 즉! 입/출력 모두 3차원 데이터로 처리하기 때문에 공간적 정보를 유지할 수 있다.

  • example

32 x 32 x 3 image => 5 x 5 x 3 filters 6개 => 28 x 28 activation maps 6개

=> stack these up => get a new image of size 28 x 28 x 6

 

- stride == 1 : 필터가 1칸씩 이동

ex) 7 x 7 input(spatially) assume 3 x 3 filter => 5 x 5 output

output size : (N-F)/stride + 1

 

- pad : (F-1)/2

 ==> pad 이용해서 영상 사이즈를 유지할 수 있음

 

  • Summary

- Accepts a volume of size W1 x H1 x D1

- requires four hyperparameters:

   1) Number of filters : K

   2) their spatial extent : F

   3) the stride S

   4) the amount of zero padding P

- Produces a volume of size W2 x H2 x D2

   1) W2 = (W1 - F + 2P) / S + 1

   2) H2 = (H1 - F + 2P) / S + 1

   3) D2 = K 

 

Pooling

: Feature Map을 resizing 하는 것

==> 더 높은 정확도를 위해서는 필터가 많아야 하지만, 필터가 늘어날수록 feature map이 늘어남. 이는 딥러닝 모델의 dimension이 늘어난다는 것이고, high dimension 모델은 그만큼 파라미터의 수 또한 늘어남. 이는 overffing의 문제점 뿐만 아니라, 모델의 사이즈와 레이턴시에도 큰 영향을 미침

==> 따라서 차원을 감소시켜야한다!!

ex. max pooling, average pooling

 

  • Max pooling

- Filter 내에서 가장 큰 값을 선택

   => average pooling은 spatial structure를 보존하되 이미지가 smooth해짐

   => max pooling은 더 강한 특징만 남기는 방식

- depth를 줄이지 않고 spatially하게만 줄임(height & width)

   32 x 32 x 3 → 16 x 16 x 3

 

  1. Convolution layers : 데이터를 특성을 살림
  2. visualization of activation map(feature map) : 입력 영상이 convolution layer를 지났을 때 결과물
  3. pooling layer(sampling) : resize feature map
  4. fully connected layer(FC layer) : 각 라벨에 대한 최종확률을 제공

CNN 영상 분류기

MNIST 데이터 셋에 대해 LeNet이 가장 높은 성능을 보임

  • LeNet5

LeNet5

 ==> ConvolutionSubsampling 과정을 반복적으로 거치면서, 마지막에 Fully-connected Multi-layered Neural Network로 분류를 수행

 

  • Lenet5 단계

- C1 : 5x5 convolution을 연산하여 28x28 사이즈의 6개의 feature map을 생성

         자유파라미터 수 : 5*5(convolution kernel) + 1(bias) = 26

* bias는 필터를 적용한 후에 더해주게됨(feature map의 전체 밝기를 조절하는 것으로 볼 수 있음)

 

- S2 : subsampling을 하여 feature map의 크기를 14x14로 줄임

         자유파라미터 수 : {1(weight) + 1(bias)}*6(feature map) = 12 <= 각각의 feature map마다  average pooling을 수행

 

- C3 : 5x5 convolution을 연산하여 10x10사이즈의 16개의 feature map을 생성.

         이 때! 6개의 feature map을 모든 출력에 연결하지 않고, 아래 표와 같이 선택적으로 입력 영상을 골라 출력 영상과 연결.

         => 연결의 symmetry를 깨줌으로써, 처음 concolution으로부터 얻은 6개의 low-level feature가 서로 다른 조합으로 섞이면서 global feature로 나타나기를 기대하기 때문

         자유파라미터 수 : 25(kernel)x50(s2와 c3의 연결 개수) + 16(bias)

 

- S4 : subsampling을 하여 feature map의 크기를 5x5로 줄임

         자유파라미터 수 : {1(weight) + 1(bias)}*16(feature map) = 32 <= 각각의 feature map마다  average pooling을 수행

 

- C5 : 5x5 convolution을 연산하여 1x1사이즈의 120개의 feature map을 생성

        자유파라미터 수 : 25(kernel)x16(s4feature map )x120(c5feature map ) + 120(bias) = 48120 <= S4의 모든 feature map이 c5의 모든 feature map과 연결

 

- F6 : Fully-connected neural network로 c5의 결과를 84개의 unit에 연결

        자유파라미터 수 : 120(c5)x84(f6)x84(bias)=10164

입력 영상에 대한 각각의 단계 별 그림

  • 전이 학습(Transfer learning)

- 이미 학습된 신경망의 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것

- 높은 정확도를 비교적 짧은 시간 내에 달성할 수 있기 때문에 컴퓨터 비전 분야에서 유명한 방법론에 해당함

- 컴퓨터 비전에서 말하는 전이 학습은 주로 사전 학습된 모델을 이용하는 것을 뜻함

 

  • 사전 학습된 모델(Pretrained Model)

- 내가 풀고자 하는 문제와 비슷하면서 사이즈가 큰 데이터로 이미 학습이 되어 있는 모델

- 네트워크가 이미지를 분류하는데 있어서 주요한 특징들을 학습하기 위해서는 대량의 데이터셋이 필요

ex. ImageNet

- 큰 데이터로 모델을 학습시키는 것은 오랜 시간과 연산량이 필요하므로, 관례적으로는 이미 공개 되어있는 모델들을 그저 import해서 사용

- ex

Keras에서 제공하는 사전 학습된 모델 예시

 

영상 분류 데이터 셋