비전딥러닝/cs231n

Lecture 9. CNN Architectures

아무 말하는 감자 2022. 9. 18. 16:08

가지 주요 architectures

 

1.       AlexNet

: LeNet-5(산업에 아주 성공적으로 적용된 최초의 conv Net) / 이미지를 입력으로 받아서 stride=1 5X5 필터를 거치고 개의 conv layer pooling layer 거친다.

그리고 단에 FC Layer 붙음

    AlexNet 2012년에 발표된 획기적인 최초의 large scale CNN으로서, ImageNet classification 아주 수행한다. 기본적으로 conv-pool-normalization 구조가 반복된다.

 

Q1. 레이어의 출력 사이즈?

->Input: 227X227X3 images, First layer (CONV1): 96개의 11X11 filters stride 4

 출력값의 차원: (227-11)/4+1 = 55. 따라서 출력 사이즈는 55X55X96이다.

Q2. 레이어의 전체 파라미터 개수?

->96X11X11X3이다.

Second layer (POOL1): 3X3 filters stride 2

Q3. 출력값 사이즈는?

->출력값의 차원: (55-3)/2+1 = 27, 따라서 출력 사이즈는 27X27X96이다. (96=입력의 depth,출력의 depth)

Q4. 레이어의 전체 파라미터 개수?

->pooling layer에는 파라미터가 없다. 파라미터는 우리가 학습시키는 가중치로, Conv layer에는 학습할 있는 가중치가 있지만, pooling 경우에는 가중치가 없고 그저 특정 지역에서 값을 뽑아내는 역할만 수행.

(Pooling layer 위치한 필터 안의 데이터 특정값을 골라서 데이터사이즈만 변환시키기 때문에, 따로 가중치가 없다.)

 

1) 전체 layer 구조

(CONV1-MAX Pooling1) -  (CONV2-MAX Pooling2) - CONV3 - CONV4 - CONV5 - MAX Pooling3 - FC 6,7,8

마지막 Fully Connected layer Softmax함수를 거쳐 1000개의 ImageNet classes 최종분류된다.

 

2) AlexNet 특징

1. 비선형함수로 ReLU 사용

2. regularization

  Data augmentation(regularization 일환으로 train data 변형을 주는 ) 많이 했다.

     : flipping, jittering, clipping, color normalization 모두 적용

  Dropout 0.5

3. batch size 128

4. SGD Momentum 방식 Optimization

5. Learning rate 1e-2 에서 시작해 val accuracy 더이상 올라가지 않는 학습지점부터 서서히 1e-10으로 내림

6.  weight decay : L2

7. ensemble 기법 사용

    CNN 기반 모델의 발전과정

 

AlexNet 2012년에 ImageNet 대회에서 처음으로 CNN 기반으로 모델의 우승을 거머쥐었고, 이를 시작으로 CNN 발전하면서 앞서 배운 transfer learning 기반 모델로도 많이 사용되었다.

2013년도의 우승자였던 ZFNet AlexNet 파라미터값만 바꿔서 출전했는데도 우승을 했다.

그리고 2014년도의 GoogleNet VGG 나왔는데, 확실히 layer 깊어지면서 성능도 우수해졌다.

 

2.       VGG

VGGNet AlexNet과 가장 큰 차이점

layer 깊어졌다 (8에서 16~19layers)

3x3 , stride 1, pad1 CONV필터와 2x2 stride 2 MAX POOL 필터만 사용

layer 깊어지는만큼 non-linearity 증가하니 자세히 특징을 잡아낼 수가 있다.

3X3 필터만 쓰는데, 이렇게 작은 필터를 쓰는 이유:

 필터의 크기 = 파라미터의 수

  큰 필터에 비해 레이어를 조금 더 많이 쌓을 수 있음 => depth를 더 키울 수 있음

   7X7 필터와 실질적인 receptive field가 같으면서도 더 깊은 레이어를 쌓을 수 있게 된다.

   -> Non-linearity를 더 추가할 수 있고 파라미터 수도 더 적어지게 된다.

 

3.       GoogLeNet

깊어진 layer

Inception module 사용

FC layer 사라짐 => 파라미터 개수가 집중돼있는 layer 없애 파라미터 개수를 효과적으로 줄였다.

    Inception module

네트워크와 네트워크 사이에 있는 네트워크들의 네트워크,,,

내부에는 동일한 입력을 받는 서로 다른 다양한 필터들이 병렬 존재

Input depth(256) 결국 output depth(529k) 굉장히 커진다.

=>solution: “bottleneck”

 

계산량을 줄이고 depth 줄이기 위해 1X1 필터층인 일명 bottle neck layer 추가한다.

파란 박스: 보조 분류기의 loss 전체 loss 더하고 평균을 계산.

          네트워크가 깊을수록(레이어의 개수) gradient 신호, 결국에는 0 수렴할 있기에 보조 분류기를 이용해서 추가적인 gradient 신호를 주기 위함

 

- FC layer 대신 global average pooling layer(첫번째보라색) 깔았는데, 기존 FC layer feature map 1차원벡터로 펼쳐서 Relu 같은 활성화함수를 거친뒤 Softmax 분류하게 되었는데, Global Average Pooling 직전층에서 산출된 feature map 각각 (그림에서는 depth방향으로 1024) 평균내는 방식의 Pooling layer라고 생각하면 된다.

 

4.       ResNet

ResNet 이름은 Residual network, layer 깊어질 생기는 graidnet vanishing문제를 residual block이라는 방식을 통해 해결하고자 데에서 착안한 이름