[논문리뷰] VGGNet(2014)

My_oyster_house·2024년 10월 27일

용어 정리

  • 3×3 합성곱 (3x3 Convolution)

    • 3×3 크기의 작은 필터를 사용하는 합성곱 연산
    • 넓은 수용 영역을 적은 파라미터로 얻을 수 있어 깊은 네트워크 구현 가능
  • 1×1 합성곱 (1x1 Convolution)

    • 수용 영역 크기 변경 없이 채널 간 상호작용 가능
    • ReLU와 결합해 비선형성 추가, VGGNet 구성 C에 사용
  • 수용 영역 (Receptive Field)

    • 네트워크 뉴런이 입력에서 볼 수 있는 영역의 크기
    • 여러 층의 작은 필터를 쌓아 넓은 수용 영역 확보 가능
  • 유효 수용 영역 (Effective Receptive Field)

    • 작은 필터를 여러 층에 쌓아 넓은 영역을 커버
    • 예: 3×3 필터 두 개로 5×5 수용 영역 확보 가능
  • 완전 연결 층 (Fully-Connected Layer)

    • 모든 뉴런이 이전 층의 모든 뉴런과 연결된 층
    • 분류기의 마지막 부분에서 사용되며, 각 층이 4096 채널 가짐
  • ReLU (Rectified Linear Unit)

    • 비선형 활성화 함수로 양수는 그대로, 음수는 0으로 변환
    • 경사 소실 문제를 줄이며, VGGNet의 모든 hidden layer에 적용
  • Dense Application (촘촘한 적용)

    • ConvNet을 전체 이미지에 걸쳐 연속적으로 적용
    • 이미지 전체에 클래스 점수 맵 생성해 각 위치에서 클래스 예측
  • Scale Jittering (스케일 다양화)

    • 학습 중 이미지 크기를 무작위로 설정해 다양한 크기의 객체 학습 가능
    • 강력한 일반화 성능 확보 가능
  • Multi-Scale Evaluation (다중 크기 평가)

    • 테스트에서 여러 크기의 이미지로 성능 평가
    • 다양한 크기의 객체 인식에 강건한 성능 제공
  • Multi-Crop Evaluation (다중 크롭 평가)

    • 이미지 여러 부분을 잘라내어 네트워크에 적용
    • 세밀한 위치 정보 학습에 기여
  • ConvNet Fusion (네트워크 결합)

    • 여러 ConvNet 모델의 결과를 결합해 성능 향상
    • 각 모델의 softmax 클래스 확률 평균내어 결과 보완
  • Local Response Normalization (LRN)

    • 입력 값이 큰 부분을 정규화해 주변 픽셀과 비교해 강하게 만드는 정규화 기법
    • VGGNet에서는 성능 개선 효과가 없어 대부분의 모델에서 제외
  • Max Pooling (맥스 풀링)

    • 공간 차원을 줄이면서 중요한 정보를 유지하는 다운샘플링 기법
    • VGGNet에서는 2×2 크기의 필터와 스트라이드 2를 사용해 공간 해상도를 절반으로 축소
  • Dropout (드롭아웃)

    • 학습 시 일부 뉴런을 무작위로 비활성화해 과적합 방지
    • VGGNet에서 fully-connected 층에 0.5 비율로 적용
  • Softmax Layer (소프트맥스 층)

    • 모델의 최종 출력에서 각 클래스에 대한 확률을 계산하는 층
    • VGGNet에서는 1000개의 클래스 분류를 위해 최종적으로 적용
  • Class Score Map (클래스 점수 맵)

    • 이미지 각 위치에 대해 특정 클래스에 속할 가능성을 계산한 맵
    • Dense Application 방식으로 생성
  • Fine-Tuning (파인 튜닝)

    • 사전 학습된 모델을 새로운 데이터셋에 맞게 조정하는 기법
    • VGGNet 연구에서는 파인 튜닝 없이 선형 SVM 분류기를 사용해 성능 평가
  • Weight Initialization (가중치 초기화)

    • 학습을 안정화하기 위해 네트워크의 가중치를 초기화하는 방식
    • VGGNet에서는 얕은 구성(A)에서 학습된 가중치를 사용해 더 깊은 모델 초기화
  • Parameter Sharing (파라미터 공유)

    • 동일한 가중치를 여러 위치에 적용해 파라미터 수 감소
    • VGGNet에서 3×3 필터를 반복 사용해 효과적으로 깊이 증가
  • Caffe (카페)

    • 딥러닝 모델 구현과 학습에 사용하는 프레임워크로, VGGNet 연구에서 사용
    • 여러 GPU 사용 가능, 학습 속도 개선에 기여
  • Mini-Batch Gradient Descent (미니 배치 경사 하강법)

    • 전체 데이터셋 대신 일부 데이터를 사용해 경사 하강법 진행
    • VGGNet에서 한 번에 256개 이미지로 학습
  • Momentum (모멘텀)

    • 학습 속도를 높이고 진동을 줄이기 위해 사용되는 최적화 기술
    • VGGNet에서는 모멘텀을 0.9로 설정해 학습 안정성 증가
  • Effective Depth (유효 깊이)

    • 여러 작은 층을 쌓아 실질적으로 더 깊은 구조와 유사한 효과를 얻는 것
    • VGGNet은 깊은 네트워크 구조를 통해 더 높은 인식 성능 달성

Abstract

  • 대규모 이미지 인식에서 CNN 깊이가 정확도에 미치는 영향 조사
  • 3×3 크기의 필터 사용, 네트워크 깊이를 16~19층까지 늘려 성능 향상 확인
  • ImageNet Challenge 2014에서 1위(로컬라이제이션)와 2위(분류) 기록
  • 다른 데이터셋에서도 최첨단 성능을 보이며 두 개의 ConvNet 모델 공개

1. Introduction

  • CNN은 대규모 이미지, 영상 인식에서 주요 성과
  • ImageNet과 고성능 컴퓨팅 발전으로 CNN 사용 증가
  • Krizhevsky의 CNN 아키텍처 기반으로 정확도 개선 시도 증가
  • 본 연구에서는 CNN 깊이에 중점, 모든 층에 3×3 필터 사용하여 깊이 점진적 증가

2. ConvNet 구성

  • 성능 평가 위해 모든 ConvNet 구성 동일 설계 원칙 유지
  • 네트워크 깊이 증가에 따라 A~E로 구성 (표 1 참고)

2.1 Architecture

  • ConvNet 입력: 고정 크기 224×224 RGB 이미지
  • 전처리: RGB 평균 값 빼기
  • 3×3 필터 사용, 합성곱 층은 스트라이드 1
  • 각 층에서 공간 패딩으로 해상도 유지

2.2 Configuration

  • 네트워크 A는 11개, 네트워크 E는 19개의 가중치 층으로 구성
  • 표 2에서 각 구성의 파라미터 수 제시

2.3 Discussion

  • 기존 상위 모델과 차별화: 작은 3×3 수용 영역 사용
  • 두 개의 3×3 필터 스택 사용하여 넓은 수용 영역과 유사한 효과
  • 큰 필터 대신 작은 필터 다층 사용의 효과 입증

3. Training

  • 미니 배치 경사 하강법 사용, 배치 크기 256
  • 모멘텀 0.9 사용, L2 정규화 및 드롭아웃 적용
  • 초기 학습률 0.01, 성능 향상 멈출 때마다 학습률 10분의 1로 감소
  • 학습 이미지 크기 S를 다양하게 설정, 작은 조각으로 무작위 추출

3.2 Testing

  • 테스트 시, 학습 완료된 ConvNet 사용하여 이미지 분류 수행
  • 테스트 이미지 크기 Q로 맞추기 위해 동일 비율로 축소 (Isotropic Rescaling)
    • Q 값을 다양하게 설정하여 성능 확인
    • 예: 이미지 크기 조정해 다양한 크기의 객체 인식 가능
  • Dense Application: 이미지 전체를 촘촘하게 ConvNet에 넣어 분석
    • FC 층을 Conv 층으로 변환하여 전체 이미지에 걸쳐 분석
    • 클래스 점수 맵 생성, 각 클래스의 점수를 이미지 내 위치별로 계산
  • 클래스 점수 벡터 생성: 클래스 점수 맵을 평균해 각 클래스에 대한 확률 계산
  • 이미지 뒤집기: 테스트 정확도 향상 위해 좌우로 뒤집기, 결과 평균화
  • 다중 크롭 방식: 여러 크기의 조각을 생성하여 세밀히 분석해 정확도 개선

3.3 Implementation Details

  • C++ 기반 Caffe 도구 사용, 다중 GPU 확장 적용
  • Multi-GPU Training: GPU 병렬 처리로 학습 속도 증대
    • 각 GPU가 이미지 배치 처리, 기울기 통합하여 학습
    • NVIDIA Titan Black GPU 4개로 약 2~3주간 학습 완료
  • 효율성 향상 기법으로 단일 GPU 대비 3.75배 속도 달성

4. Classification Experiments

  • 실험 데이터셋: ILSVRC-2012 (1000 클래스 이미지 포함)
    • 훈련 세트 130만, 검증 세트 5만, 테스트 세트 10만 이미지
    • Top-1, Top-5 에러 기준으로 평가
  • 주로 검증 세트를 테스트용으로 사용하였으며 일부는 공식 서버 제출

4.1 Single Scale Evaluation

  • ConvNet 모델 개별 단일 크기로 테스트
  • Local Response Normalisation (LRN): LRN 사용 시 성능 향상 없음
  • 깊이와 성능 관계: 깊을수록 분류 에러 감소
    • 11층에서 19층으로 갈수록 에러 감소, 깊이 있는 네트워크 성능 우수

4.2 Multi-Scale Evaluation

  • 다양한 크기 (scale jittering) 사용하여 테스트 시 성능 확인
    • 학습 크기 S에 따라 Q 설정: {S−32, S, S+32} 혹은 {Smin, 0.5(Smin+Smax), Smax}
  • 결과: 다양한 크기에서 테스트 시 단일 크기보다 성능 향상, 깊은 네트워크 우수

4.3 Multi-Crop Evaluation

  • 촘촘하게 분석 방식 vs. 다중 크롭 방식 비교
    • 두 방식 결합 시 더 높은 성능, 보완적 관계 확인
    • 이미지 가장자리 처리 방식의 차이가 성능에 영향

4.4 ConvNet Fusion

  • 여러 ConvNet 모델의 softmax 확률 평균 결합으로 성능 향상
  • ILSVRC-2014 제출 시, 단일 크기 모델과 다중 크기 모델 D 7개 결합하여 7.3% 테스트 에러 기록
  • 다중 크기 모델 D와 E 결합으로 테스트 에러 7.0% 감소, 최종 6.8% 에러 달성

4.5 Comparison with the State of the Art

  • ILSVRC-2014 결과: VGG 팀 7.3% 테스트 에러로 2위 차지
    • 다중 모델 결합으로 6.8% 에러 달성
  • 단일 모델 성능 면에서는 GoogLeNet보다 0.9% 우수한 7.0% 기록
  • 기존 아키텍처를 유지하며 깊이 증가를 통해 성능 개선 확인

5. Conclusion

  • 깊이 있는 ConvNet (최대 19층)을 대규모 이미지 분류에 적용
    • 네트워크 깊이 증가가 분류 정확도에 크게 기여
  • 다양한 데이터셋에서 최첨단 성능 달성
  • 깊이의 중요성 재확인하며, CNN 기반 복잡한 인식 파이프라인을 뛰어넘는 성능 확인
  • 두 개의 우수 모델 공개로 후속 연구 촉진
profile
kwonhs.alice@gmail.com

0개의 댓글