리뷰할 논문은 Very Deep Convolutional Networks For Large-Scale Image Recognition입니다.
공부를 위하여 작성한 글인 만큼, 틀린 부분이 있을 수 있다는 점을 감안하여 읽어주시길 바랍니다.
1. Introduction
이 논문은 ConvNet architecture의 중요한 요소 중 하나인 depth에 대하여 전달하였다. ConvNet architecture의 parameter들을 수정하고, convolutional layer들을 추가함으로써 network depth을 증가시킨다. (참고로 이것이 가능했던 이유는, 모든 layer에서 small convolution layer ( 3 * 3 )을 사용했기 때문이다.)
2. ConvNet Configurations
2.1 Architecture - Generic layout of the ConvNet configurations
Training을 할 때, ConvNet의 input으로 224 * 224 RGB image를 사용하였다. Preprocessing은 각각의 pixel에서 mean RGB value를 빼는 작업만을 수행하였다. Input이 된 image가 stack of convolutional layer들을 통과하는데, 이 stack에서는 small receptive field (3 * 3)을 가진 filter들을 사용한다.
Spatial pooling은 5개의 max-pooling layer들을 통하여 실행이 되어지고, max-pooling은 stride 2 (filter를 2 pixels at a time으로 이동시킨다는 의미이다)를 가지고 2 * 2 pixel window에서 실행이 되어진다.
Stack of Convolutional Layers 뒤에는 three Fully-Connected Layer들이 존재한다. 첫 두개의 layer들은 4096 channel들을 가지고 있고, 세 번째 layer는 1000-way ILSVRC classification을 수행하기 때문에 하나의 클래스에 1000 channel들을 가지고 있다. 마지막 layer는 soft-max layer이다.
모든 hidden layer는 ReLU 로 구성되어 있고, 사용한 network에서 하나를 제외하고 나머지에서는 LRN normalization을 사용하지 않았다. LRN은 dataset의 performance를 향상시키지 못하고, memory consumption과 computation time를 증가시킨다.
2.2 Configurations - Specific configurations used in the evaluation
2.3 Discussions
해당 논문은 첫번째 Conv. layer들에 large receptive fields를 사용하지 않고, 굉장히 작은 3 * 3 receptive field들을 net 전반적으로 사용했다. 이 3 * 3 receptive field들은 모든 pixel들의 input에서 convolve된다.
참고로, 3개의 3 * 3 conv. layer를 사용하면 한 개의 7 * 7 layer를 사용하는 것과 동일하다. 이렇게 사용하는 데 장점이 무엇이 있을까?
1. 3개의 non-linear rectification layer를 사용하기 때문에 decision function이 더욱 discriminative하다.
2. parameter의 개수를 줄일 수 있다. (7 * 7 conv. layer의 parameter는 3개의 3 * 3 conv. layer의 parameter보다 약 81% 더 많다.)
1 * 1 conv. layer의 적용은 conv. layer들의 receptive field들에게 영향을 주지 않으면서 decision function의 non-linearity를 증가시킬 수 있는 방법이다. (논문에서 사용된 1 * 1 convolution은 linear projection이지만, rectification function을 통하여 추가적인 non-linearity를 주었다.)
3. Classification Framework
3.1 Training
Training은 mini-batch gradient descent (with momentum)으로 진행했고, batch size: 256, momentum: 0.9, weight decay:
Bad initialisation은 deep net들에 있는 gradient들을 불안정하게 만들어 학습을 지연시킬 수 있기 때문에, Network weight을 initialize하는 것이 중요하다. 따라서, 무작위 초기화로 학습이 될 수 있는 얇은 모델을 학습시키고, 학습된 이후의 값으로 더 깊은 모델의 특정한 layer들을 초기화시켰다. 추가적으로, Mean이 0이고, 분산이 0.01인 normal distribution을 사용하여 random initialization을 진행하였다.
참고로, 해당 논문을 제출한 이후에, 위의 과정들을 하지 않으면서 parameter를 초기화할 수 있는 방법을 찾았다고 한다.
224 * 224의 고정된 이미지를 얻기 위해서, rescaled image에서 무작위로 잘라내었고, AlexNet에서 사용한 random horizontal flipping과 random RGB color shift를 사용하였다.
Training image size
왜곡없이 rescale이 된 training image의 smallest side를 S라고 하자. 이때, S는 최소 224이다. 사용한 학습은 두 가지인데, 먼저, 고정된 S 값을 사용하는 single-scale training이 있고, 두 번째로, 여러 개의 S 값을 사용하는 multi-scale training이다.
- Single-scale training은 S = 256, S = 384로 rescale해서 training시켰다. S = 384 network의 속도를 향상시키기 위해서, S = 256로 pre training이 된 weight들로 초기화시켰고, learning rate는 10^-3으로 사용하였다.
- Multi-scale training은 [256, 512] 사이에서 무작위로 sampling한 S값으로 rescale시켰는데, 이를 scale jittering이라고 한다. 학습 속도를 높이기 위해서 선학습된 S = 384 configuration을 사용하였다.
3.2 Testing
미리 정의한 Q값에 따라서 image들을 왜곡없이 rescale을 시키고, 이 이미지들을 densely하게 network에 적용한다. Fully Connected Layer들은 convolutional layer들으로 먼저 변환되고, 남아있는 fully-convolutional net은 uncropped image에 적용이 된다. 최종적으로, class의 수와 같은 채널 수를 갖고, 입력에 따라 다른 spatial resoultion을 가진 class score map을 얻는다. 이때, horizontal flipping of the image들을 사용한다.
Fully-Convolutional network는 전체 이미지에 적용이 되기 때문에, multiple crop들을 sample할 필요가 없지만 각각의 crop을 위하여 network re-computation을 해야 하기 때문에 비효율적이라고 볼 수 있다. Large crop set을 사용하여 accuracy의 향상시킬 수 있다. 정리하자면, multi-crop evaluation이 dense evaluation을 보완하기 때문에, 둘 다 사용하는 것이 좋다.
3.3 Implementation Details
학습을 위하여 multi-GPU를 사용하였는데, 이는 single GPU를 사용했을 때보다 3.75배 빨랐다.
4. Classification Experiments
Dataset
ILSVRC-2012 dataset에 대한 image classification 결과를 정리한 섹션이다. Dataset에 1000개의 class에 대한 image를 포함하고 있다. 이 이미지들은 3개의 set으로 나뉘어진다.
1. Training (1.3M images)
2. Validation (50K images)
3. Testing (100K images with held-out class labels)
Classification performace는 top-1 error와 top-5 error를 사용하여 평가하였다. Top-1 error는 multi-class classification error로, 잘못 분류한 이미지의 비율을 나타내었고, top-5 error는 예측 class에 답이 없는 이미지의 비율을 나타내었다.
4.1 Single Scale Evaluation
Single Scale Evaluation에서는 fixed S로 Q = S를 사용하였고, Scale Jittering (S ∈ [Smin, Smax]) 의 경우에는 Q = 0.5(Smin + Smax)를 사용하였다.
1. A-LRN network는 normalization layer없이는 효과가 없다. Deeper Architecture에서는 normalisation을 사용하지 않는다.
2. Non-linearity의 추가로 성능을 향상시켰다. (B, C)
3. B의 3 * 3 layer 두 개를 모두 5 * 5로 바꾸어서 비교를 했을 때, 작은 filter를 가진 deeper network가 큰 filter를 가진 shallow network보다 성능이 뛰어났다.
4. Training을 할 때, Scale jittering이 고정된 S를 사용했을 때보다 더 좋은 result가 나왔다.
4.2 Multi-Scale Evaluation
The discrepancy between training and testing scale은 Performace 저하를 일으킨다. 따라서, fixed S일 때, Q = {S − 32, S, S + 32}를 사용하였고, Scale Jittering일 때에는 Q = {Smin, 0.5(Smin + Smax), Smax}를 사용하였다.
Scale Jittering at test time이 더 좋은 performance를 이끌어내었다.
4.3 Multi-Crop Evaluation
Multiple crops를 사용하는 것이 dense evaluation보다 효과가 살짝 더 좋았고, 둘 다 사용하는 것이 효과가 제일 좋았다.
4.4 ConvNet Fusion
몇 개의 model들의 softmax class posterior들을 평균내어 output을 합쳤는데, 이렇게 함으로써 성능을 향상시킬 수 있었다. 논문 제출 이후에 가장 성능이 좋았던 multi-scale model들의 ensemble한 것으로 실험하였었는데, 이것이 가장 성능이 좋았다.
4.5 Comparison with the State of The Art
논문의 deep ConvNet들은 이전 세대의 model들보다 훨씬 성능이 좋았다고 한다.
5. Conclusion
Representation Depth는 Classification Accuracy에 효과적이다. 또한, 논문은 increased depth로 만든 ConvNet architecture를 사용하여 ImageNet Challenge dataset에 뛰어난 수행 결과를 가지고 올 수 있었다고 말한다.
결론적으로, 논문의 결과는 visual representation에서의 depth의 중요성을 다시 확인시켰다.
A. Localisation
A.1 Localisation ConvNet
Object Localisation을 수행하기 위해서, very deep ConvNet을 사용한다. 마지막 Fully Connected Layer는 bounding box location을 예측하는데, bounding box는 center coordinate들과 width, height를 가진 4-D vector로 대표되어진다.
출력은 둘 중 하나로 선택할 수 있는데, 첫번째는 Single Class Regression으로 하나의 class만을 예측하거나, 두번째는 Per-Class Regression으로 전체 Class를 예측하는 것이다. 두번째 경우에서는 출력이 4000-D로 바뀐다.
Training
Model은 Classification과 유사한데, 가장 큰 차이점은 logistic regression objective를 Euclidean loss로 바꾼다는 것이다. S = 256, S = 384의 single scale model을 학습시켰고, 마지막 full-connected layer를 제외하고는 모두 fine-tuning을 하였다.
Testing
두 개의 testing protocol이 있다. 첫번째는 Bounding Box Prediction for the ground truth class만을 고려하여 가장 좋은 locolisation 성능을 가진 모델을 찾는 것이고, 두번째는 Classification task와 유사하게 testing하는 것인데, Classification과는 다르게 마지막 Fully Connected Layer가 bounding box prediction이므로, Greedy Merging Procedure를 거쳐야 한다.
A.2 Localisation Experiments
Settings Comparison
PCR는 SCR보다 성능이 좋았고, Fully-Connected Layer들만을 fine-tuning하는 것보다, 모든 Layer들을 fine-tuning하는 것이 더 좋은 결과를 내놓았다. S = 256과 S = 384는 비슷한 결과물을 보였기 때문에, S = 384만을 표에 나타내었다.
Fully-Fledged Evaluation
앞서 결정한 최적의 localisation setting인 PCR과 fine-tuning for all layer를 사용하여 fully-fledged evaluation을 진행한다.
Localisation Convnet을 전체 image에 적용하는 것이 center crop을 사용하는 것보다 결과를 향상시킨다는 것을 확인할 수 있다. 또한, Classification과 비슷하게, 여러개의 scale에서 testing을 하고, 여러 개의 network의 예측 결과를 합치는 것이 performace 향상에 도움이 된다.
Comparison with the state of the art
B. Generalisation of Very Deep Features
VGG Net이 다른 dataset에도 효과적으로 적용이 된다는 것을 확인할 수 있다. 마지막 Fully Connected Layer를 목적에 맞게 변형을 시키고, 다른 layer들의 weight을 고정시킨 채로 학습을 시키면 된다.
'AI 논문 정리 > Computer Vision 논문' 카테고리의 다른 글
[Paper Review 2] Network In Network (0) | 2021.04.04 |
---|---|
[Paper Review 1] ImageNet Classification with Deep Convolutional Neural Networks (0) | 2021.04.04 |