일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- edge detection
- BFS
- opencv
- overfitting
- object detection
- image processing
- clustering
- 딥러닝
- sklearn
- canny edge detection
- Mask Processing
- C++
- dfs
- deep learning
- 백준
- Python
- dynamic programming
- exists
- machine learning
- TD
- 머신러닝
- 그래프 이론
- dropout
- DP
- AlexNet
- SIFT
- Reinforcement Learning
- MinHeap
- MySQL
- 강화학습
- Today
- Total
JINWOOJUNG
ImageNet Classification with Deep Convolutional Neural Networks...(1) 본문
ImageNet Classification with Deep Convolutional Neural Networks...(1)
Jinu_01 2025. 1. 4. 22:30Introduction
Object Detection Task는 Machine Learning이 필수적으로 요구된다. 모델의 성능 향상을 위해선 더 큰 데이터 셋(Large Dataset), 더 강인한 모델의 학습(More Powerful Model), 과적합(Preventing Overfitting)을 막기 위한 기술의 사용이 요구된다.
- Large Dataset
이전까지는 Label을 유지한 Augmentation을 사용하면, 데이터 셋의 크기가 작아도 충분히 좋은 성능을 보였다. 하지만, 현실에서의 객체 인식 문제의 차원은 크고 다양한다. 즉, Occlusion, 조명, 변형 등 현실 세계에서의 다양성과 복잡성을 작은 데이터 셋은 충분히 반영하지 않고 있다. 또한, 작은 데이터 셋은 모델의 Overfitting을 발생시켜 데이터 셋에 특화되어 좋은 성능을 가지지만, 새로운 데이터에 대해서는 일반화 하지 못한다.
최근에는 LabelMe, ImageNet 등 더 많은 데이터와 클래스를 가진 데이터 셋이 등장하였다.
- More Powerful Model
Large Dataset을 충분히 학습하기 위해서는 큰 표현력(Capacity)를 가지는 모델이 요구된다. 하지만, 객체 인식의 복잡성은 Large Datset 만으론 충분히 설명할 수 없다. 따라서 Model은 부족한 데이터를 보완하기 위한 많은 사전 지식을 가져야 한다.
복잡하고 다양한 객체 인식 문제는 Large Datset 만으로 표현하지 못하는 더 복잡하고 더 다양하게 발생한다. 이러한 모든 경우를 Dataset으로 만들기는 불가능하기 때문에, 이를 보완하는 사전 지식을 가지는 모델이 요구된다.
여기서 말하는 사전 지식은 결국 CNN 모델의 강점인 Stationarity of statistics, Locality of pixel dependency를 고려한 Weight를 고려하는 Convolutional Filter와 Convolution 연산을 의미한다.
Convolutional Neural Network(CNN)의 Capacity는 depth와 breadth(너비)를 조절하여 변경할 수 있다. 또한 이미지의 특성에 대한 강력하고 올바른 가정을 한다.
- Stationarity of statistics(통계적 정적성)
이미지를 구성하는 엣지, 코너, 패턴 등은 이미지 내에서의 위치와 관계없이 동일한 통계적 성질을 가진다. 이는 CNN이 동일한 특징을 다양한 위치에서 반복적으로 탐색할 수 있도록 Convlutional Kernel의 가중치 공유를 사용하며, 이는 Learnable Parameter의 수를 줄이는 이점을 가지게 한다.
- Locality of pixel dependencies(픽셀 종속성의 국소성)
이미지 내에서의 경계, 패턴, 특징 등 중요한 정보는 인접한 픽셀들 간의 관계에 의해 결정된다. 즉, 특정한 픽셀은 인접한 픽셀들 간의 상관관계를 가진다. 이는 CNN이 Convolution 연산을 통해 국소적인 특징(Local Feature)을 효과적으로 추출하여 복잡한 시각적 정보를 구성함을 의미한다.
CNN은 유사한 크기의 Layer를 가지는 Feedforward neural networks(FCNN)에 비해 더 적은 Parameter로 약간의 최고 성능 차이를 보이며, 학습에 용이하다.
하지만, CNN은 매우 높은 Cost로 잘 사용되지 않았는데, GPU와 최적화 된 2D Convolution의 구현은 Large Datset을 기반으로 대규모의 CNN을 학습시키기에 충분하다.
본 논문에서 기여하는 바는 다음과 같다.
- ILSVRC-2010, ISVRC-2012에서 ImageNet의 Subset을 활용하여 가장 큰 CNN을 학습시켰으며, 가장 뛰어난 결과를 내었다.
- 고도로 최적화 된 GPU를 바탕으로 2D Convolution과 CNN 학습을 위한 operation을 제공한다.
- Network의 성능을 향상시키고 학습 시간을 줄이기 위한 새로운 방법을 사용하였다.
- Large Datset에도 불구하고 큰 CNN Model의 Overfitting을 방지하기 위한 가법을 사용하였다.
- 5개의 Conv Layer와 3개의 FC Layer로 구성되어 있으며, 하나라도 제거하는 성능이 저하된다.
- 모델이 데이터의 복잡한 특징을 충분히 학습하기 위해서는 충분한 깊이가 요구된다.
Dataset
ImageNet은 약 22,000개의 클래스로 구성된 1,500만 개 이상의 고해상도 Labled 이미지 데이터 셋이다. 기존 데이터 셋 보다 더 많은 클래스와 더 많은 양의 데이터를 가지마, 하나의 클래스에 대해서도 서로 다른 강도를 가지는 데이터가 다양하게 존재한다.
ILSVRC는 1,000개의 클래스로 구성된 120만 개의 학습 이미지, 5만 개의 검증 이미지, 15만 개의 테스트 이미지를 가지는 ImageNet의 Subset을 활용한다.
ILSVRC의 모델 성능 평가 지표는 Top-1 Error, Top-5 Error를 사용한다. 이때, Top-5 Error는 모델이 예측한 상위 5개의 클래스 중 정답 클래스를 가지지 않은 테스트 이미지의 비율을 의미한다.
ImageNet은 서로 다른 해상도를 가지는 이미지를 가지기에, 입력 이미지의 크기를 동일하기 위해 256x256로 Downsampling을 진행한다. 더 짧은 쪽의 길이가 256이 되도록 Re-scale 한 뒤, 해당 이미지의 가운데 256x256 Patch를 잘라낸다. 해당 이미지의 Pre-processing은 Centeralized 즉, 훈련 데이터 셋의 평균 픽셀 값을 각 픽셀에서 빼는 것만 진행한다.
Architecture
네트워크의 구조는 Figure 2와 같으며, 5개의 Conv Layer, 3개의 FC Layer로 총 8개의 Learnable Layer로 구성되어 있다.
ReLU Nonlinearity
뉴런의 출력 $f$를 입력 $x$의 함수로 모델링하는 표준 방식은 다음과 같은 saturating nonlinearities를 사용한다. 이때, saturating nonlinearities는 입력 $x$가 무한대로 갈 때 출력이 어떤 범위 내에서만 움직이는 것을 의미한다.
- $f(x) = tanh(x)$
- $f(x) = \frac{1}{1+e^{-x}}$
하지만, 경사 하강법 기반의 학습 속도 차이는 saturating nonlinearity를 사용하는 것 보다, non-saturating nonlinearity를 사용하는 것이 학습 속도 측면에서 훨씬 빠르다. 이러한 Nonlinearity를 가진 뉴런을 Rectified Linear Unit(ReLU)라 한다. 이때, non-saturating nonlinearity는 입력 $x$가 무한대로 가면 출력 역시 무한대로 가는 것을 의미한다.
- $f(x) = max(0, x)
동일한 4개의 층을 가지는 CNN에 대하여 CIFAR-10 Dataset에 대한 25%의 Training Error Rate를 가지는 학습 속도를 비교한 결과, Figure 4와 같이 ReLU를 사용한 것이 tanh를 사용한 것보다 학습 속도가 매우 빠른 것(6배)을 확인할 수 있다. 이때, 실선이 ReLU, 점선이 tanh를 Activation Function으로 사용한 경우이다.
이러한 빠른 학습 속도는 대규모 모델, 데이터 셋에 대한 현실적인 학습을 가능하게 하며, Loss Function이 빠르게 수렴하여 적은 Iteration으로 높은 성능을 가능하게 한다. 또한, Overfitting 측면에서 학습 속도가 느리면 모델이 충분한 Iteration을 거치기 전에 특정 데이터 패턴에 Overfit 되어 일반화 성능이 떨어진다.
Training on Multiple GPUs
GPU의 메모리 크기는 학습가능한 네트워크의 최대 크기를 제한한다. 즉, 120만개의 이미지 데이터는 단일 GPI를 기반으로 모델이 학습하기에는 너무 많은 양이다.
본 논문에서는 GPU 병렬화를 통해 서로 다른 메모리를 직접적으로 읽고 씀으로써 해당 문제를 해결한다.
Local Response Normalization
ReLU를 사용하게 되면, Input이 양수인 경우 뉴런이 학습을 진행하게 되지만, $[0, \infty)$의 범위를 가지기에 하나의 매우 큰 값에의해 ReLU를 거친 이후 Pooling, Convolution 과정에서 영향을 줄 수 있다. 본 논문에서는 Local Response Normalization(LRN)을 통해 Normalize를 진행하며, 이는 동일한 위치의 서로 다른 Activation Map(Activated Value)끼리 정규화 하는 방법이다. 이를 통해 하나의 매우 큰 값이 인접한 작은 값들에 주는 영향을 줄여준다.
$$b^i_{x, y} = a^i_{x, y} \ / \ \left ( k + \alpha \sum_{j=max(0, i-n/2)}^{min(N-1, i+n/2)} \right )$$
- $b^i_{x, y}$ : $i$ 번째 Activation Map의 $(x,y)$ 위치의 LRN 결과
- $a^i_{x, y}$ : $i$ 번째 Activation Map의 $(x,y)$ 위치의 Input Value
- $i$ : Kernel(Activation Map) Index
- $n$ : $N$개 중 Normalization 할 개수
- $N$: 전체 Kernel(Activation Map) 개수
- $k, n, \alpha, \beta$ : Validation Dataset을 통해 결정되는 Hyperparameter
- 논문에서는 $k$ = 2, $n$ = 5, $\alpha$= $10^{-4}$, $\beta$ = 0.75
LRN을 적용한 결과 top-1, top-5 error rate는 각각 1.4%, 1.2% 감소하였으며, CIFAR-10 Dataset을 이용한 4개의 층을 가지는 CNN의 경우 LRN 결과 13%에서 11%로 test error가 감소하였다.
최근에는 LRN이 아닌 Batch Normalization이 이를 대신한다.
Overlapping Pooling
Pooling Layer는 같은 Kernel Map(Activation Map)에서 인접한 뉴런들의 출력을 요약하는 과정이다. 즉, 더 작은 크기로 중요한 특징은 유지하는 방법이다. 일반적으로 Stride Size $s$와 Filter size $z$라 하면, $s=z$로 하여 겹치는 부분 없이 Pooling을 진행한다. 만약 $s < z$인 경우 Figure 5와 같이 Pooling 되는 부분이 겹치는 Overlapping Pooling이 발생한다.
본 논문에서는 $s$ = 2, $z$ = 3으로 하여 Overlapping Pooling을 진행한다. 그 결과 $s=z=2$ 보다 top-1, top-5 error rate가 각각 0.4%, 0.3% 감소하는 것을 확인하였으며, 실제로 모델이 Overfitting 되지 않음을 확인하였다.
Overlapping Pooling을 통해 Overfitting이 줄어든 이유는 2가지 정도 생각할 수 있는데,
- Pooling Region 일부가 겹침으로써 특징 손실 방지
- Local Infro(이미지의 부드러움)이 감소하기 때문에 이미지에서 인접한 픽셀과 연관된 특징을 유지
Overall Architecture
네트워크의 구조를 다시 한번 살펴보면 다음과 같다.
- 8개의 학습 가능한 Layer
- 처음 5개의 Conv Layer
- 마지막 3개의 FC Layer
마지막 Output은 해당 Dataset이 1,000개의 클래스를 가지기에, softmax를 거친 각 클래스의 확률이 반환된다. 따라서 해당 네트워크는 학습 데이터 셋에 대하여 정답 클래스에 대한 로그 확률의 평균을 최대화하는 다항 로지스틱 회귀 목표를 최대화 하는 것을 목표로 한다.
본 논문에서 2개의 GPU를 병렬처리했다고 하였는데, 2,4,5번째 Conv Layer의 경우 같은 이전 층의 GPU만 연결 되지만, 3번째 Layer의 경우 2번째 층의 모든 GPU와 연결 됨을 확인할 수 있다.
LRN의 경우 첫번째, 두번째 Conv Layer에 적용되며, Max Pooling 역시 첫번째, 두번째 그리고 다섯번째 Layer에 적용된다. ReLU의 경우 모든 Conv Layer 및 FC Layer에 적용된다.
Input은 227x227x3의 크기를 가지며, 본 논문의 저자가 Figure 2.의 Input Size가 잘못됨을 추후 인정하였다. 각 층을 지나면서 연산되는 과정과 Parameter의 수는 아래 포스팅으로 대신한다. 내용은 본 포스팅이 더 완벽하나, 단순한 계산은 이전 포스팅으로 대체 할 것이다.
https://jinwoo-jung.tistory.com/4
Reference
1. https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html
'딥러닝 > 논문' 카테고리의 다른 글
ImageNet Classification with Deep Convolutional Neural Networks...(2) (0) | 2025.01.06 |
---|---|
Dropout Reduces Underfitting...(2) (0) | 2024.12.31 |
Dropout Reduces Underfitting...(1) (0) | 2024.12.30 |
[ Image Classification ] AlexNet / ImageNet Classification with Deep ConvolutionalNeural Networks (2) | 2023.12.18 |
딥러닝 논문 가이드 (0) | 2023.12.18 |