AI 논문 공부

vggNet 논문 리뷰

beomseok99 2022. 11. 30. 01:42
728x90
개략적 설명 : 컨볼루션 네트워크 구조의 깊이에 따른 인식 결과를 설명하는 논문, 더 좋은 정확도를 얻기위해 AlexNet 향상하기 위한 시도의 결과라고 할 수 있다.

목차

0. Abstraction and Introduction

1. ConvNet Configurations

  • Architecture

2. 학습

3. Test

4. Result


0. Abstraction and Introduction

- CNN 모델

 

- 네트워크의 깊이가 모델이 좋은 성능을 보이는 데 중요한 역할을 한다는 것을 보임
- VGGNet의 필터 크기는 3x3
- stride 1, zero padding 1Conv 레이어
- 필터 크기 2x2 (no padding)Max-poolPooling 레이어로 사용

- 매우 많은 메모리를 이용하여 연산한다는 단점

 

1. ConvNet Configurations

- AlexNet8 layer 모델보다 깊이가 2배 이상 깊은 네트워크의 학습에 성공

- AlexNet의 오차율의 절반을 달성

- 16, 19 layer에 달하는 깊은 신경망을 학습할 수 있었던 이유? 모든  conv layer에서 3 x 3 필터를 사용했기 때문

두 네트워크의 차이

1-1. Architecture

- 입력값 : 고정 크기의 224 x 224 x 3 (RGB) 이미지
- 전처리 :pixel에 평균 RGB 빼주기 (보통 평균을 많이 이용한다함)
- 활성화 함수 : ReLU
 

구조

- 하나 또는 복수개의 conv layermax-pooling층이 반복되는 구조 ( 마지막에는 fc layer  softmax 함수 존재)
- 네트워크에서의 깊이의 영향을 확인하고자 3x3 필터 사용
    •   -> 이미지가 빨리 축소되는 것을 방지 = 깊이 증가
    •   -> 또한 ReLU가 더 자주 사용됨 = 학습 잘 됨
    •   -> 파라미터 수 감소 = 학습 속도에 긍정적 영향 (그러나 여전히 FC layer로 인해 파라미터 수는 상당함)

  •   -> 비선형성이 증가하여 더 좋은 feature를 뽑아내어 성능 증가

- B부터 LRN을 사용하지 않은 이유? A A-LRN의 성능 차이가 유의미 하지 않았기 때문

- channel64부터 시작하여 max-pooling 이후 2배씩 증가하여 512 도달

- 1x1 필터를 사용한 이유? 비선형성을 증가 시키기 위해

- conv layerstride=1, padding=1 을 통해 원해상도 유지 (피쳐 맵 사이즈 다운 방지)

- stride = 2 갖는 max-pooling layer 통해 해상도 감소 (1/2씩 감소)

왼쪽 그림과 오른쪽 그림을 비교해보자

- 3x3 필터 2번 사용 = 5x5 필터 1번 사용

- 3x3 필터 3번 사용 = 7x7 필터 1번 사용

- 3x3을 사용함으로써 얻을 수 있는 이점?
  1. ReLu를 더 많이 사용 -> 비선형성 증가 -> 모델의 식별성 증가
  2. 학습 파리미터 수 감소
  3. 출력 피쳐 맵의 한 픽셀이 원본 이미지의 7x7 Receptive Field의 효과를 가짐 = 원본 이미지의 7x7 영역을 수용가능

2. 학습

- AlexNet와 동일한 파라미터로 진행

- 가중치 초기화 진행

-> vgg11의 학습 결과로 나온 가중치들을 이용해 1~4번째 conv layerfc layer 3개에 가중치 초기화

(중간 layer들은 무작위 초기화) (그럼 vgg11의 가중치들은? 정규분포를 따르는 임의의 값으로 초기화)

- 학습 이미지 크기 조절(overfitting 방지)

1. 이미지 rescaling 진행 (single scaling)

  1. input을 256 256으로 고정
  2. 384 384으로 고정(224 224로 학습한 모델에 fine tuning 하는 방식으로 학습)

2. 이미지 rescaling 진행 (multi scaling)

  1. 256 ~ 512 사이 값 선택 -> object가 다양한 규모로 나타나므로 학습에 효과적

scale jittering

-> multi scaling을 하기 위해 384x384의 고정 크기로 미리 학습 시킨 후, training scale을 무작위로 선택하며 fine tuning 함으로써 학습

- Data augmentation 효과

-> AlexNet과 마찬가지로 224x224 랜덤 crop, RGB 성분 변경 실시

-> 특히 앞서 언급한 scale jittering 방식을 주로 활용

 

- 변환된 이미지가 클수록 개체의 특정 부분을 학습에 반영

 
 

- 변환된 이미지가 작을수록 개체의 전체적인 측면 학습 반영

 

3. Test

 

4. Result

1. test set size 고정

- LRN 효과 x (A와 A-LRN 비교)

- 큰 이미지로 학습할 수록 성능 소폭 향상 (이미지 크기와 에러율 비교)
- 깊이가 깊어질 수록 error 감소 파악 (A ~> E)
  • B와 C,D를 보면 추가적인 비선형성이 도움이 됨을 알 수 있지만, 3x3이 성능이 더 좋은 것으로 보아 공간적인 맥락을 파악하는 것이 성능 향상에 더 유리함
  • 1x1로 비선형성 증가 : B-> C 성능 향상
  • 3x3이 더 좋음 : C->D 성능 향상
- multi scalesingle scale보다 성능이 좋음

- depth16,19정도에서 정확도가 수렴하는 것을 확인 (더 큰 데이터셋을 사용하면 성능향상 가능하다고 언급)

2. test set multi scale

- 다양한 scale로 학습한 것이 더 좋은 성능을 냄

3. multi crop

- Dense 사용했을 때 보다 multi-crop을 사용한 평가방법이 미세하게 성능이 더 좋음을 확인할 수 있고, 두 방식을 함께 적용하는 편이 가장 좋음

728x90