본문 바로가기
딥러닝(Deep Learning)/D&A Deep Session

[D&A Deep Session] 5차시 - 8. CNN 심화

by rahites 2022. 4. 12.

 

# LeNet, AlexNet, VGG

 

1. LeNet

: 1998년 개발된 CNN 알고리즘으로 LeNet-5가 가장 대표적인 모델이다. 이는 흑백 이미지에서 학습된 7 layer CNN으로 Input - Conv(C1) = Subsampling1(S2) - Conv(C3) - Subsampling(S4) - Conv(C5) - FC6 - FC7(output) 으로 구성된다.

 

output size = (input size - filter size + (2 x Padding)) / stride + 1

 

Input size : ( 1, 32, 32 )

[ convolution, filter size : 5x5, filter 개수 : 6, stride : 1 ]

C1 layer : (6, 28, 28) 

[ subsampling, pooling size = 2x2 ] # average pooling 기능

S2 layer : (6, 14, 14)

[ convolution, filter size : 5x5, filter 개수 : 16, stride : 1 ]

C3 layer : (16, 10, 10)

 

- C3 layer을 만드는 과정 

1. 연속된 3장을 모아 convolution -> 6장의 10x10 feature map 생성

2. 연속된 4장을 모아 convolution -> 6장의 10x10 feature map 생성

3. 불연속한 4장을 모아 convolution -> 3장의 10x10 feature map 생성

4. 6장 모두 convolution -> 1장의 10x10 feature map 생성

===> 총 16장의 10x10 feature map생성

 

[ subsampling, pooling size = 2x2 ] # average pooling 기능

S4 layer : (16, 5, 5)

[ convolution, filter size : 5x5, filter 개수 : 120, stride : 1 ]

C5 layer : (120, 1, 1)

[ fully connected, tanh 활성화함수 ]

F6 layer : (84)

[ fully connected, Euclidean Radial Basis Function ]

F7 layer : (10)

 

 

2. Alexnet

: ILSVRC ( ImageNet Large-Scale Visual Recognition Challenge )의 2012년 대회에서 1위를 한 CNN 모델이다.

-  ILSVRC대회는 대용량의 이미지 데이터셋을 주고 이미지 분류 알고리즘의 성능을 평가하는 이미지 인식 경진대회이다.

 

* 특징 :

- 2개의 GPU로 병렬연산을 수행하기 위해 병렬적인 구조로 설계되었다.

- 활성화 함수로 ReLU를 이용한다.

- 드롭아웃을 이용한다.

Input – Conv1 – MaxPool1 – Norm1 – Conv2 – MaxPool2 – Norm2 – Conv3 – Conv4 – Conv5 – MaxPool5 – FC6- FC7- FC8(output)

 

Input size : ( 3, 277, 277 )

[ convolution, filter size : 11x11, filter 개수 : 96, stride : 4 ]

Conv1 : ( 48, 55, 55 )

[ maxpooling, pooling size : 3x3, stride : 2 ]

MaxPool1 : ( 48, 27, 27 )

 

# LeNet-5과 일반적으로 다른 모델들은 주로 non-overlapping pooling을 사용하는데 Alexnet은 overlapping maxpooling을 사용했다.

# Normalization 방법으로는 LRN ( local response normalization )을 시행하였다. Alexnet에서 처음 도입한 방법으로 인접 화소들을 억제시키고 특징을 부각시키기 위한 방법이다. 신경 생물학에서 원리를 가져온 방법으로 예를 들면 강한 자극인 검은색을 집중해서 볼 때 상대적으로 약한 자극인 흰색의 인식을 막기 때문에 발생하는 '측면 억제'현상이 있다. 이와 같이 지역적인 현상을 약화하고 학습을 일반화하기 위해 고안된 방법이다. ( 헤르만 격자 )

 

Norm1 : ( 48, 27, 27 )

[ convolution, filter size : 5x5, filter 개수 : 256, stride : 1, padding : 2 ]

Conv2 : ( 128, 27, 27 )

[ maxpooling, pooling size : 3x3, stride : 2 ]

MaxPool2 : ( 128, 13, 13 )

Norm2 : ( 128, 13, 13 )

[ convolution, filter size : 3x3, filter 개수 : 384, stride : 1, padding : 1 ]

Conv3 : ( 192, 13, 13 )

[ convolution, filter size : 3x3, filter 개수 : 384, stride : 1, padding : 1 ]

Conv4 : ( 192, 13, 13 )

[ convolution, filter size : 3x3, filter 개수 : 256, stride : 1, padding : 1 ]

Conv5 : ( 128, 13, 13 )

[ maxpooling, pooling size : 3x3, stride : 2 ]

MaxPool5 : ( 128, 6, 6 )

[ fully connected, ReLU ]

FC6 layer : (2048)

[ fully connected, ReLU ]

FC7 layer : (2048)

[ fully connected, softmax ]

FC8 output : (1000)

 

- fully connected layer에서 ReLU 함수를 사용하는 이유는 tanh을 사용하는 것보다 같은 정확도를 유지하면서 연산속도가 6배나 빠르기 때문이다.

- Alexnet에서는 Overfitting을 막기 위해 Data Augmentation과 Dropout 방법을 사용한다.

 

3. VGG

: ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)의 2014년 대회에서 2위를 한 CNN 모델이다. VGG 부터 네트워크가 매우 깊어지기 시작했다. ( VGG16 : 16개층, VGG19 : 19개층 )

[Input – C1 – C2 – MaxPool2 – C3 – C4 – MaxPool4 – C5 – C6 – C7 – MaxPool7 – C8 – C9 – C10 – MaxPool10 – C11 – C12 – C13 – MaxPool13 – FC14 – FC15 – FC16(Output)]

 

* 특징

- 3x3의 작은 필터를 계속하여 사용하였다. 

- 합성곱 계층을 연속해서 사용하고 Pooling 처리를 하였다.

 

Input size : ( 3, 224, 224 )

[ convolution, filter size : 3x3, filter 개수 : 64, stride : 1, padding : 1 ]

Conv1 : ( 64, 224, 224 )

[ convolution, filter size : 3x3, filter 개수 : 64, stride : 1, padding : 1 ]

Conv2 : ( 64, 224, 224 )

[ maxpooling, pooling size : 2x2, stride : 2 ]

MaxPool2 : ( 64, 112, 112 )

[ convolution, filter size : 3x3, filter 개수 : 128, stride : 1, padding : 1 ]

Conv3 : ( 128, 112, 112 )

[ convolution, filter size : 3x3, filter 개수 : 128, stride : 1, padding : 1 ]

Conv4 : ( 128, 112, 112 )

[ maxpooling, pooling size : 2x2, stride : 2 ]

MaxPool4 : ( 64, 112, 112 )

[ convolution, filter size : 3x3, filter 개수 : 256, stride : 1, padding : 1 ]

Conv5 : ( 256, 56, 56 )

[ convolution, filter size : 3x3, filter 개수 : 256, stride : 1, padding : 1 ]

Conv6 : ( 256, 56, 56 )

[ convolution, filter size : 3x3, filter 개수 : 256, stride : 1, padding : 1 ]

Conv7 : ( 256, 56, 56 )

[ maxpooling, pooling size : 2x2, stride : 2 ]

MaxPool7 : ( 256, 28, 28 )

.

.

.

.

반복..

MaxPool13 : ( 512, 7, 7 )

[ fully connected, ReLU ]

FC14 layer : ( 4096, 1, 1 )

[ fully connected, ReLU ]

FC15 layer : ( 4096, 1, 1 )

[ fully connected, softmax ]

FC16 layer : ( 1000, 1, 1 ) 

# 1000개의 클래스로 분리하도록 설계된 모델이라는 의미이다.

 

 

 

# 다른 유명한 신경망에는 GoogLeNet과 ResNet이 있다.

댓글