Abstract
큰 convolutional network model은 최근에 imagenet benchmark에서 classification 성능이 좋았는데 왜 모델이 잘 돌아가는지 또는 어떻게 성능이 좋은지 몰랐음.
그래서 이 논문에서 두가지 문제를 다루고 새로운 visualization 기술을 소개한다.
Introduction
모델 향상에 도움되는 몇가지 요인
- 큰 training set의 활용
- 좋은 GPU
- 더 나은 모델 정규화 전략(Dropout)
이 논문에서 제안한 visualization 기술은 muti-layered Deconvolutional network를 사용하고 input pixel 공간에 feature activation을 투영하는 것이다.
scene의 부분이 classification에 중요한 것을 나타내는 input image의 부분을 가림으로써 분류층 output의 분석을 한다.
이 논문에서 softmax 분류층 top을 재학습해서 다른 dataset에 model의 일반화 능력을 찾는다.(supervised pretraining)
Approach
이 논문에서는 일반적인 fully supervised convnet model을 사용.
이 model은 다른 class인 C에 있는 확률 벡터 $ \hat{y}_i $ 로 일련의 layer를 통해서 color 2D input image인 $ x_i $를 찾아냄.
Each layer 구성
- 학습된 filter의 set을 가진 이전 layer output의 convolution
- relu(rectified linear function)를 통해 response를 통과
- local neighborhood에 있는 max pooling
- feature map으로 reponse를 normalize하는 local contrast operation.
network의 top layer 일부는 전통적인 fully connected network이고 마지막 layer는 softmax classifier.
image classification에 적합한 cross entropy loss function은 $ \hat{y}_i $ 와 $ y_i $를 비교.
network의 parameter는 sgd로 parameter를 update하는 것과 network에 있는 parameter에 대한 loss의 미분을 역전파함으로써 학습.
- Visualization with a Deconvnet
1.input image는 convent에 제공되고 feature은 layer에 연산된다.
2. convnet activation을 조사하기 위해 layer에서 다른 모든 activation을 0으로 설정하고 attached deconvnet layer가 feature map을 통과한다.
3. Unpooling:
convnet에서는 max pooling 연산은 비가역적이다.
deconvnet에서는 unpooling 연산은 감각기관을 보존하는 적절한 위치에 있는 layer로부터 재구성하기 위해 switch를 사용한다.
4. Rectification:
convnet은 비선형인 relu를 사용한다.
5. Filtering:
convnet은 이전 layer로부터 feature map을 convolve하기 위해 학습된 filter를 사용한다.
deconvnet은 같은 filter들의 transposed version을 사용한다.(각 filter를 수직과 수평적으로 뒤집음)
Training Details
image classification model과 차이점: layer 3,4,5번째에 sparse connection $ \rightarrow $ dense connection
- model hyperparameter
- Data: imagenet 2012 training set
- preprocess: 각 RGB 256으로 resize, center를 256x256으로 crop, 각 pixel의 평균을 뻄, 10가지 다른 sub crop의 224x224 사이즈 사용
- optimizer: sgd(momentum 0.9)
- batch size: 128
- learning rate: $ 10^-2 $
- dropout: fc layer(layer 6,7)에 0.5로 사용
- All weights: $ 10^-2 $으로 초기화
- bias: 0
- early stop: 70 epoch
- data augmentation: crop, filp
validation error plateaus가 있을 때 학습하는 동안에 learning rate을 조절하여 최적값을 찾는다.
학습하는동안 첫번째 layer filter의 visualization가 약간 우세한 것이 나타나면서 convolutional layer에 있는 각 filter를 renormalize했다.
모델의 첫번째 layer는 input image가 -128 ~ 128 사이에 있는 것이 중요하다.
GPU: single GTX580(약 12일동안 학습)
Convnet Visualization
- Feature Visualization
각 layer에서 투영은 network에서 feature의 상속적인 본성을 보여준다.
- Layer2: 다른 edge/color 결합과 corner를 보인다.
- Layer3: 더 복잡한 invariance를 가진다.
- Layer4: 중요한 variation을 보여준다.(더 구체적인 class)
- Layer5: 중요한 포즈 varation을 가진 전체 object를 보여준다.
- Feature Evolution during Training
model의 lower layer는 적은 epoch에도 수렴했다. 그러나 upper layer는 상당히 많은 epoch(40~50)이 지난 후에 수렴했다.
- Feature Invariance
작은 transformation은 translation과 scaling에 선에 가까운 top feature layer에 적은 영향을 주고 network output도 translation과 scaling으로부터 안정적이다. 일반적으로 output은 회전 대칭을 가진 물체를 제외하고 회전에는 invariant하지 않는다.
- Architecture Selection
(b)와 (c)의 첫번째 layer filter는 중간 빈도의 작은 수렴을 가진 아주 높고 낮은 빈도 정보의 혼합이다.
추가적으로, 두번째 layer visualization은 첫번째 layer convolution에서 4 stride 때문에 aliasing artifact 발생
To remedy aliasing artifact
- 첫번째 layer filter size 11x11 $ \rightarrow $ 7x7
- convolution stride 4보다 2를 사용
- Occlusion Sensitivity
image classification 모델이 실제로 주변맥락을 사용하거나 image에서 object의 위치를 확인하는중인지 아닌지 궁금하다.
분류층의 output을 모니터링하는 것과 grey square으로 input image의 다른 부분을 가림으로써 답을 해준다.
object가 가려졌을 때 맞는 class의 확률이 상당히 떨어지므로, model이 scene에서 object의 위치를 알아내는 중인 것으로 보인다.
가리개 부분의 기능으로 이 map에서 activity를 더하여 top convolution layer의 강력한 feature map으로부터 visualization을 보여준다.
가리개가 visualization에서 나타나는 image 구역을 덮을 때, feature map에서 activity를 강력하게 떨어트린다.
visualization이 feature map을 자극하는 image 구조와 동일하다는 것을 보여준다.
- Correspondence Analysis
deep model은 다른 image에서 구체적은 object 부분 사이에서 관련성을 수립하기 위해 분명하지 않은 방법이 많은 recognition 접근법과 다르다.
deep model이 함축적으로 연산하는 것을 분석하기 위해서 각 이미지의 얼굴같은 부분을 가리고 정면 pose를 가진 무작위 5개의 dog image를 가지고 각 image에서 얼굴의 같은 부분을 mask out한다.
- 각 이미지 i에 대해 $ \epsilon^l_i = x^l_i - \tilde{x}^l_i $를 계산하고 각 image를 가렸다.($ x^l_i $와 $ \tilde{x}^l_i $은 원본에 대한 layer $ l $에 feature vector이다)
- 모두 관련된 image pair $ (i, j): \Delta_l = \sum_{i,j=1,i{\neq}j}^{5}H(sign(\epsilon^l_i),sign(\epsilon^l_j))$사이에서 다른 벡터 $ \epsilon $의 일관성을 측정한다.($ H $는 Hamming distance이다)
더 낮은 값은 masking 연산으로 인한 변화에서 더 좋은 일관성을 나타낸다. 이런 이유로 다른 image에서 같은 object 부분 간의 대응이 더 엄격해집니다.
위의 표에서 layer 5와 layer 7로부터 feature를 사용하는 object의 무작위 부분에서 얼굴의 세부분에 대한 $ \Delta $ score를 비교합니다.
layer5 feature에 대한 무작위 object 영역에 관련된 이 부분에 대한 낮은 점수는 model이 관련성의 정도를 설정한다는 것을 보여준다.
Discussion
우리는 여러가지 방법에서 image classification을 위해 학습된 큰 cnn model을 조사했다.
먼저, 우리는 모델에 있는 activity를 시각화하는 새로운 방법을 제시했다. 새로운 방법은 무작위이고 해석할 수 없는 패턴으로부터 거리가 먼 feature를 찾았고 오히려, layer를 늘릴수록 구성성, 증가하는 invariance 그리고 class 차별과 같은 직관적으로 바람직한 속성을 많이 보여준다. 우리는 이 시각화가 krizhevsky의 인상적인 imagenet 2012 결과에서 향상을 예시로 가장 나은 결과를 얻는 model을 가지고 문제를 debug하기 위해 어떻게 사용하는지 보여준다.
분류에 대해 학습되는 동안 model은 image에서 일부 구조에 아주 민감하고 광범위한 scene context만 사용하는 것이 아니라는 것을 일련의 occusion experiment를 통해 입증했다.
모델에서 ablation study는 개인적인 부분보다는 network에 최소 깊이를 가지는 것이 모델의 성능에 중요하다는 것을 알았다.
마침내, 우리는 imagenet으로 학습된 model이 다른 dataset에 어떻게 잘 일반화될지 보여줬다.
caltech 101과 caltech 256의 경우는 dataset이 충분히 유사해서 후자 케이스에서 최고의 결과를 상당한 차이로 이길 수 있었다. 이 결과는 training set가 작은 benchmark의 유용성에 의문을 가진다. 우리의 convnet model은 pascal data에 덜 일반화돼서 아마 dataset 편향에 고통받는다. task가 바뀌지않음에도 불구하고 여전히 최고의 결과인 3.2%이다.
예를 들어, 만약에 다른 loss function이 image당 허용되는 multiple object를 사용한다면 성능이 향상될지도 모른다.
그리고 network가 object detecetion을 다룰 수 있게 한다.
'computer vision > image classification' 카테고리의 다른 글
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (0) | 2024.01.25 |
---|---|
Deep Residual Learning for Image Recognition (2) | 2023.12.04 |
Very Deep Convolutional Networks For Large-Scale Image Recognition (1) | 2023.10.17 |
Going deeper with convolutions (0) | 2023.08.22 |
ImageNet Classification with Deep Convolutional Neural Networks (1) | 2023.05.09 |