728x90
반응형
나의 정리
- 네트워크의 깊이가 모델의 좋은 성능을 보이는데 중요한 역할을 한다는 것을 보여줌
- 3x3, stride 1, zero padding 1의 filter를 3겹을 사용하여 7x7 필터와 같은 receptive field를 가진다.
max-pooling도 사용. - 작은 사이즈 필터를 여러 번 나눠 적용하면 conv layer를 거칠 때마다 ReLU도 더 많이 통과하게 되어 non-linear 한 의사 결정을 더 잘하게 된다.
- FC layer가 있어서 파라미터가 매우 많아 연산량이 매우 크다는 단점이 있다.
서론
- large-scale image recognition에서 ConvNets의 깊이가 정확도에 끼치는 영향에 대한 논문
- 3x3 매우 작은 필터를 사용하여 깊이가 깊은 네트워크를 평가한다.
소개
- ConvNet 구조 디자인에서 깊이의 다른 중요한 측면을 언급한다.
- 마지막에 구조의 파라미터를 고치고 꾸준하게 Conv layer를 추가하여 깊이를 늘려나간다.
- 매우 간단한 파이프 라인을 가지고 좋은 성능을 낸다.
ConvNet configurations (환경)
ConvNet 깊이로 개선한 부분을 측정하기 위해 다른 layer(AlexNet, Ciresan) config와 동일하게 세팅을 해준다.
Architecture
더보기
input : 224x224x3 (RGB)
preprocessing : subtracting mean RGB value (data를 원점으로 이동)
filter size : 3x3 (매우 작음), 1x1 stride : 1, padding : spatial padding 1
pooling : max pooling 2x2, stride : 2
FC layers : 총 3개, 1,2 번째 4096채널, 세 번째는 1000 채널(dataset class 개수) 세 번째 FC layer는 softmax layer 모든 히든 layer는 ReLU를 포함, 어떤 네트워크도 LRN(local response normalization)을 포함하지 않는다.
- Configurations
- A~E 까지A~E까지 깊이가 다른 모델들이 있다. 처음 layer에서는 64부터 마지막 layer는 512까지 Channel을 늘린다.

- A~E 까지 깊이가 다른 모델들이 있다. 처음 layer에서는 64부터 마지막 layer는 512까지 Channel을 늘린다.
- Discussion2개의 3x3이 5x5의 효과를 낸다.
- 왜 single 7x7이나 5x5를 쓰지 않고 stack of three 3x3을 쓸까?
- 3개의 non-linear rectification layer를 사용함으로써 decision function이 더 식별을 잘하게 한다.
- 파라미터의 개수를 줄이기 위해.
- 왜 single 7x7이나 5x5를 쓰지 않고 stack of three 3x3을 쓸까?
- receptive field가 7x7, 11x11과 같이 크지 않고 매우 작은 3x3으로 사용한다.
Classification Framework
- Traininginitialization이 중요한데, A를 임의로 initialize 하여 학습하고, 더 깊은 구조를 학습할 때 처음 4개 Conv layer와 마지막 3개의 FC layer를 A의 layer로 초기화해준다.
임의로 초기화 할 때는 평균 0, 분산 10^-2의 정규 분포에서 정하고, bias는 0으로 초기화한다.
논문 제출 후 pre-training 없이 가중치 초기화가 가능한 것을 알았다.
rescale parameter S 정하는 법- fix S → 256, 384 2가지로 고정 384로 할 때 시간 절약을 위해서 256으로 pretrained 된 가중치로 초기화를 해주고 작은 initial learning rate를 설정한다.
- multi-scale training → 각 train 마다 randomly sampling 해서 S를 정한다.
주로 Smin = 256, Smax = 512로 한다. → scale jittering 같은 augmentation 효과를 가져온다.
성능 개선을 위해 fix S=384로 pretrained 된 모델을 사용한다.
- 224x224 input image를 rescaled해 random crop 한 뒤 augmentation으로 horizontal flip, random RGB color shift를 해준다.
- Training procedure는 일반적으로 AlexNet을 따라한다.
(multi-scale crop input sampling 빼고) multinomial logistic regression, mini-batch gradient descent with momentum batch size : 256
momentum : 0.9
regularization : weight decay(L2), dropout(처음부터 두 개의 FC layer에서 p=0.5)
learning rate : initially set 10^-2, val accuracy가 개선이 안되면 10배 줄인다.
learning rate는 총 3번 줄어든다.
implicit regularization과 특정 layer의 pre-initialization 때문에 적은 epoch으로 학습이 가능할 것이라고 추측한다. - Testing
- input image를 사전 정의된 Q(test scale)로 등방성 rescale을 해준다. (Q는 S와 같을 필요 없다.)
- 첫 번째 FC layer는 7x7 Conv layer로 나머지 두 개의 FC layer는 1x1 Conv Layer로 변환된다.
- Fully-convolutional net이 이미지에 적용된다.
- 결과
- Channel 수가 class 수와 같으며 입력 이미지 크기에 따라 가변 공간 해상도를 갖는 클래스 점수 맵이 생긴다.
- 이미지에 대한 고정된 크기 벡터를의 클래스 점수를 얻기 위해 스코어 맵을 공간적으로 평균화한다. (sum-pool)
- horizontal flip을 해준 이미지와 원본 이미지의 소프트 맥스 클래스 포스터는 최종 점수를 얻기 위해서 평균화된다.
- Implementation Details
Classification Experiments
- Single Scale Evaluation
- 로컬 응답 정규화 (A-LRN)를 사용하는 것이 표준화 계층이 없는 모델 A에서 개선되지 않는다.
- ConvNet 깊이가 증가함에 따라 분류 오류가 감소한다.
- Training에 jittering을 사용하는 것이 더 좋은 성능을 발휘한다. (scale jittering)
- 1x1 convolution filter를 사용하는 이유
- Filter 수 조절
- 연산량 감소 → bottle neck 구조
- Non-linearity 증가
- Multi-Scale Evaluation
- scale jittering을 사용하는 것이 Single scale보다 좋은 성능이 나옴
- Multi-Crop Evaluation
- multi-crop이 dense 평가를 사용하는 것보다 조금 더 좋은 성능을 보인다.
- ConvNet Fusion
- comparison with the state of the art
Conclusion
- Large scale image classification에서 매우 깊은 CNN을 통한 학습에 성공했다.
728x90
반응형