소개
AlexNet은 2012년도 ILSVRC(ImageNet Large Sclae Visual Recognition Challenge)에서 우승한 CNN 네크워크입니다.
당시 대세인 여러 알고리즘들과 기술들을 통한 객체 인식을 제치고 딥러닝 기술이 최고 성능을 낼 수 있음을 증명한 네트워크로, AlexNet 이후로 GPU 구현과 Dropout 적용이 보편화 되었습니다.
AlexNet의 논문 이름은 "ImageNet Classification with Deep Convolutional Neural Networks"로, 논문의 저자가 Alex Khrizevsky의 이름을 따서 AlexNet이라고 부릅니다.
특징
논문에서 Alexnet은 이전에 사용된 딥러닝 CNN 네트워크인 LeNet-5와 비교하며 설명합니다. 그럼으로 LeNet-5와 다르게 사용된 기술들을 설명합니다.
ReLU 함수
- ReLU는 Rectifield Linear Unit의 약자입니다.
- 특정 조건을 만족하면 활성화 되었다는 신호를 전달합니다. (신경학적으로 뉴런 발사 과정에 해당합니다.)
- AlexNet 이전에 사용되던 TanH 함수와 정확도는 비슷하면서도 속도가 약 6배 빠르다는 장점이 있습니다.
Dropout
- Dropout은 과적합(Over Fitting)을 막기 위한 기술입니다.
- Fully Connected Layer의 뉴런 중 일부를 생략하면서 학습을 진행합니다.
- Dropout은 훈련 때에만 적용되고, 테스트 때는 모든 뉴런을 사용합니다.
Overlapping Pooling
- Overlapping Pooling은 Pooling의 보폭(stride)를 커널 사이즈보다 작게 설정한 것입니다.
- Non Overlapping Pooling보다 에러율을 줄이는데 효과가 있습니다.
Local Respongse Normalization
- 활성화된 뉴런이 주변 이웃 뉴런들을 억누르는 현상인 Lateral Inhibition을 모델링한 것입니다.
- 강하게 활성화된 뉴련 주변도 모두 강하게 활성화되어 있다면 모두 값을 낮춰줍니다.
- AlexNet 이후 CNN은 Local Response Normalization 대신, Batch Normaliztion을 사용합니다.
Data Augmentation
- Data Augmentation은 과적합(Over Fitting)을 막기 위한 기술입니다.
- 학습 데이터 양을 늘리기 위해 하나의 이미지를 여러 장의 비슷한 이미지로 만들어 냅니다.
- 이미지를 반전시키거나 277 x 277 x 3 이상의 이미지를 조금씩 다른 위치를 기준으로 277 x 277 x 3 으로 자릅니다.
구조
AlexNet은 5개의 Convolution Layer와 3개의 Fully Connected Layer로 구성되어 있습니다.
그림에 유의할 점 2가지가 있습니다. 첫번째는 Input은 224 x 224 x 3의 이미지가 아닌 227 x 227 x 3의 이미지입니다. 상단의 그림은 정식 이미지이지만, 실수가 있던 것으로 판단됩니다. 두번째는 Input에서 2개로 나눠지는 부분은 병렬연산을 위한 분할을 나타낸 것으로, 아래에서 설명할 각 Layer들은 분할을 생략하겠습니다.
Input Image
- 227 x 227 x 3 이미지를 입력으로 받습니다.
First Layer (Convolution Layer)
- 96개의 11 x 11 x 3 필터로 입력 영상을 Convolution 해줍니다. 보폭(Stride)을 4로 설정하고, Padding은 사용하지 않습니다. Output으로 96장의 55 x 55 Feature Map을 얻게 됩니다.
- ReLU 함수로 활성화해줍니다.
- 3 x 3 Overlapping Max Pooling을 보폭(stride) 2로 설정하면 96장의 27 x 27 Feature Map이 나옵니다.
- 다음 수렴 속도를 높이기 위해 Local Response Normalization을 합니다. Local Response Normalization은 특성맵의 차원을 변화시키지 않기 때문에, 96장의 Feature Map은 27 x 27 으로 유지됩니다.
Second Layer(Convolution Layer)
- 256개의 5 x 5 x 48 필터를 사용하여 이전 단계의 Feature Map을 Convolution 해줍니다. 보폭(stride)는 1로 설정하고, Zero Padding을 2로 설정합니다. Output으로 27 x 27 x 256 Feature Map을 얻게 됩니다.
- First Layer와 마찬가지로 ReLU 함수로 활성화해줍니다.
- 그리고 3 x 3 Overlapping Max Pooling을 보폭(stride) 2로 설정하면 13 x 13 x 256 Feature Map이 나옵니다.
- 그 후 Local Response Normalization이 시행되면, Feature Map이 13 x 13 x 256 으로 유지됩니다.
Third Layer(Convolution Layer)
- 384개의 3 x 3 x 256 필터를 사용하여 이전 단계의 Feature Map을 Convolution 해줍니다. 보폭(stride)와 Zero Padding 모두 1로 설정합니다. Output으로 13 x 13 x 384 Feature Map을 얻게 됩니다.
- ReLU 함수로 활성화합니다.
- Third Layer는 First Layer와 Second Layer와 다르게, Overlapping Max Pooling과 Local Response Normalization을 하지 않습니다.
Fourth Layer(Convolution Layer)
- 384개의 3 x 3 x 384 필터를 사용하여 이전 단계의 Feature Map을 Convolution 해줍니다. 보폭(stride)와 Zero Padding 모두 1로 설정합니다. Output으로 13 x 13 x 384 Feature Map을 얻게 됩니다.
- ReLU 함수로 활성화합니다.
- Fourth Layer도 Overlapping Max Pooling과 Local Response Normalization을 하지 않습니다.
Fifth Layer(Convolution Layer)
- 256개의 3 x 3 x 384 필터를 사용하여 이전 단계의 Feature Map을 Convolution 해줍니다. 보폭(stride)와 Zero Padding 모두 1로 설정합니다. Output으로 13 x 13 x 384 Feature Map을 얻게 됩니다.
- ReLU 함수로 활성화합니다.
- 3 x 3 Overlapping Max Pooling을 보폭(stride) 2로 설정하면 6 x 6 x 256 Feature Map이 나옵니다.
- 단, Local Response Normalization은 하지 않습니다.
Sixth Layer(Fully Connected Layer)
- 6 x 6 x 256 Feature Map을 flatten해주어 6 x 6 x 256 = 9216차원의 벡터로 만들어줍니다.
- 9216차원의 벡터를 4096개의 뉴런과 Fully Connected 해줍니다.
- ReLU 함수로 활성화합니다.
Seventh Layer(Fully Connected Layer)
- 이전 단계의 4096개 뉴런과 다른 4096개 뉴런으로 fully connected 해줍니다.
- ReLU 함수로 활성화합니다.
Eighth Layer(Fully Connected Layer)
- 이전 단계의 4096개 뉴런과 다른 1000개 뉴런으로 fully connected 해줍니다.
- ReLU 함수로 활성화합니다.
- 1000개 뉴런 출력값에 Softmax 함수를 적용하여 1000개 클래스 각각에 속할 확률을 나타냅니다.
출처
[1] AlexNet: https://bskyvision.com/421
[2] AlexNet: https://ctkim.tistory.com/120?category=880317
[3] AlexNet: https://wiserloner.tistory.com/1126
[4] Fully Connected Layer: https://wiserloner.tistory.com/1126
'University > Vehicle Intelligence Foundation' 카테고리의 다른 글
[CNN] ResNet18 (0) | 2021.04.19 |
---|---|
[CNN] VGG16 (0) | 2021.04.19 |
[실습] YOLO - Object Detection (0) | 2021.04.07 |
[Perception Open Source] Point Cloud Library (0) | 2021.04.06 |
[Perception Data set] KITTI (1) | 2021.04.04 |