study/paper reviews

ALEX Net: ImageNet Classification with Deep Convolutional Neural Network

ys_cs17 2020. 3. 11. 16:09
반응형

ImageNet Classification with Deep Convolutional

Neural Network

(Alex Net)

-Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton-

 

1. Introduction

Alex Net의 원래 이름은 ImageNet Classification with Deep Convolutional Neural Network이고 이 논문의 저자인 Alex Krizhevsky의 이름을 본따 편의상 Alex Net이라고 불린다. 이 네트워크는 CNN의 전성기를 시작했다는 말이 무방할 정도로 아직까지도 많은 논문들의 reference가 되고 있다. Alex net이 유명해진 이유는 2012Image net에서 개최된 ILSVRC라는 이미지 인식 대회에서 우승을 차지하고, 우승 당시 performance가 오차율 15.4% 2위팀과의 격차가 10%이상이 나면서 아주 큰 관심을 받게 되었다. 또한 해당 네트워크는 1989년 얀 르쿤이 제안한 구조를 토대로 제작하였고, 기존 네트워크에서는 볼 수가 없었던 drop out 등 다양한 기법들이 쓰이면서 이 기법들을 표준으로 자리매김한 네트워크라 볼 수 있다.

 

2. Network

Alex net 전체 network 구성

우선 Alex net은 전체적으로 8개의 layer로 구성되어 있다. 또한 상하 총 2개로 layer가 갈라져 있는데 이는 2012년에 나온 네트워크인 만큼 당시 Train 과정에서 GTX580을 사용했지만 성능이 좋지 않아 GPU를 병렬로 처리하여 편의를 위해 이 방법을 택하였다고 한다. 8개의 layer5개의 convolution layer3개의 full-connected layer로 구성되어 있고, 2, 4, 5번째 convolution layer를 자세히 관찰해보면 전 단계의 같은 channelactivation map들과만 연결되어 있고, 3번째 convolution layer만 이전 단계의 2 channel activation map들과 연결되어 있다는 사실을 알 수 있다. 이 논문에서 사용된 input imagesize224*224*3이다. (3RGB 채널을 뜻한다.)

 

1) Layer 1 (convolution layer)

우선 해당 layer에서 사용되는 kernel 96개이고, size11*11*3이다. 또한 stride4로 설정하여 계산을 해보면 54.25가 나오게 되는데 해당 논문에서는 반올림 처리를 하여 총 55*55*96 sizefeature map이 나오게 된다. 그 다음은 ReLu라는 activation function을 사용하여 활성화를 시켜준다. ReLuactivation function에서 사용되는 선형 함수이다. 논문을 보게 되면 설명이 있는데 비선형 함수인 tansigmoid보다는 속도와 성능 측면에서 더 좋아서 ReLu를 사용했다고 한다. Tan 함수보다는 6배 더 빠르다고 한다.

Relu activation function

논문을 보면서 추측한 사실이지만 이전까지는 ReLu가 상용화되지 않았던 것 같다.

아무튼 다시 본론으로 돌아와서 추출된 feature map을 가지고 stride23*3 overlapping max pooling을 진행하게 된다. 여기서 overlapping pooling이란 간단히 말해 stridekernel size보다 작게하여 kernel이 움직이는 영역을 말그대로 overlapping 하는 기법이다. 아래 사진을 보면 한번에 이해가 될 것이다.

 

Overlapping pooling, Non-overlapping pooling

이전에 분석하였던 Le Net-5에서는 Non overlapping을 사용하였다. Overlapping을 사용하는 이유는 pooling 과정에서 error ratio를 약간이나마 줄이는데 효과가 있다고 한다. Overlapping pooling이후에는 수렴 속도를 위해 local response normalization이 진행된다. 이는 feature map의 차원과 크기를 변화시키지 않아 최종적으로는 27*27*96으로 유지된다. 그리고 현재는 local response normalization보다는 batch normalization을 사용하는 추세다.

 

2) Layer2 (convolution layer)

256개의 5*5*48 size kernel을 사용하여 layer1으로부터 나온 feature map들을 convolution 연산을 해준다. 이때 사용된 stride1이고, zero-padding2로 설정한다. 여기서 zero-padding이란 convolution 연산시 feature mapsize는 줄어들게 되는데 이를 방지하고자 feature map 테두리에 0으로 padding을 해준다.

 

zero padding

또한 layer과 마찬가지로 ReLu를 사용하여 활성화를 시켜주고 stride23*3 overlapping pooling을 시행하여 13*13*256 size를 가진 feature map을 얻게 된다. 이후 또 다시 local response normalization을 시행한다.

 

3) layer3 (convolution layer)

384개의 3*3*256 kernel을 사용하여 stride1이고, zero-padding1을 사용하여 이전 layerfeature map들과 convolution 연산을 한다. 연산 후 size13*13*384이다. 그리고 Relu로 활성화를 시켜준다.

 

4) layer4 (convolution)

Layer 3와 동일하다.

 

5) layer5 (convolution)

ReLu까지의 과정은 layer3와 같고 이후 3*3 overlapping max pooling stride 2로 시행한다. 결과적으로 6*6*256sizefeature map을 얻게 된다.

 

6) layer6 (Fully connected layer)

6*6*256flatten(평탄화)해주어 총 9216 차원을 가진 vector로 만들어준다. 그 후 layer64096개의 뉴런과 fully connected 해준다. 그리고 결과 값들을 ReLu함수로 활성화한다.

 

7) layer7 (Fully connected layer)

Layer6의 결과로 총 4096개의 뉴런으로 구성된 결과값들을 또다른 4096개의 뉴런들과 연산해준다. 활성화 과정은 동일하다.

 

8) layer8 (Fully connected layer)

Layer7의 결과인 4096개의 뉴런들을 1000개의 뉴런들과 fully connected하여 결과적으로 나온 1000개의 뉴런의 출력값에 softmax 연산을 통해 각 1000개의 결과 값들을 확률적으로 표현해준다.

 

Alex net에서 사용되는 parameter의 개수는 약 6천만개라고 한다. 이전에 분석했던 Le net -5와 비교를 하면 약 1000배가 증가된 수치다. 하지만 accuracy는 그만큼 좋아지고, 시간이 흘러 GPU의 성능 또한 매우 발전해서 이와 같은 연산들이 가능해지고 있다.

또한 overfitting을 방지하고자 총 3가지의 방법을 사용하였다.

첫번째는 dropout을 사용하였다. 이는 fully connected layer에서 모든 뉴런들을 계산하는 것이 아닌 일정한 비율로 random한 뉴런을 0으로 바꾸어 overfitting을 방지하였다. Dropouttraining 과정시에만 사용된다고 한다.

 

dropout

두번째는 LRN이라는 방법도 사용하였다. 이는 강하게 활성화된 뉴런의 주변 뉴런에 대해 normalize를 실시한다고 한다. 반면 주변 뉴런들도 강하게 활성화되었으면 LRN후에 모든 뉴런들의 값이 작아지게 된다.

마지막 방법은 data augmentation이다. 이는 데이터의 개수를 증진시킨 것이다. 단순하게 다른 데이터를 증가시킨 방법이 아닌 같은 이미지 데이터가 있으면 각도를 다르게 하거나, 이미지를 자르거나 확대하는 방법을 사용하였다고 한다.

 

3. result

역대 Image net 대회 우승 networks

해당 사진은 Image net에서 열린 역대 대회 우승자를 나열한 그래프이다. 오늘 분석한 논문인 alex net을 기점으로 보면 상당히 accuracy가 증가된 것을 볼 수 있다. 또한 alex net 이후 우승한 모든 network를 보면 CNN기반의 네트워크들이다. 이를 통해 Alex net의 시작과 동시에 computer vision분야에서 deep learning 기법들이 활발히 사용된다는 사실을 알 수 있고, 심지어 뒤로 갈수록 SOTA 기준치를 넘어가면서 인간의 눈보다 컴퓨터의 눈이 더 좋아졌다는 사실도 알 수 있다. 하지만 Alex net의 단점은 network 자체가 parameter가 너무 많아 느리고, 새로운 기법들이 많이 나왔다는 점이다. 다음 분석할 논문은 faster R-CNN인데 이 논문을 통해 정확성 보다는 속도에 맞춰 어떻게 computer visionreal time을 따라가게 되었는지를 중점으로 분석할 예정이다.

 

4. reference

https://ratsgo.github.io/deep%20learning/2017/10/09/CNNs/

https://bskyvision.com/421

https://laonple.blog.me/220654387455

https://medium.com/coinmonks/paper-review-of-alexnet-caffenet-winner-in-ilsvrc-2012-image-classification-b93598314160

https://www.learnopencv.com/understanding-alexnet/

https://medium.com/@smallfishbigsea/a-walk-through-of-alexnet-6cbd137a5637

https://curaai00.tistory.com/4

https://laonple.blog.me/220662317927

https://prateekvjoshi.com/2016/04/05/what-is-local-response-normalization-in-convolutional-neural-networks/

논문: ImageNet Classification with Deep Convolutional Neural Networks

반응형