logo

VGG-16 | CNN 모델

CNN(Convolutional Neural Network) 아키텍처는 이미지와 같은 구조화된 격자형 데이터를 처리하도록 설계된 딥 러닝 모델입니다. 컨벌루션, 풀링 및 완전 연결 레이어를 포함한 여러 레이어로 구성됩니다. CNN은 계층적 특징 추출 기능으로 인해 이미지 분류, 객체 감지, 이미지 분할과 같은 작업에 매우 효과적입니다.

VGG-16

VGG-16 모델은 옥스포드 대학의 VGG(Visual Geometry Group)가 제안한 CNN(Convolutional Neural Network) 아키텍처입니다. Convolutional Layer 13개, Fully Connected Layer 3개 등 총 16개의 Layer로 구성된 깊이가 특징입니다. VGG-16은 단순성과 효율성뿐만 아니라 이미지 분류 및 객체 인식을 포함한 다양한 컴퓨터 비전 작업에서 강력한 성능을 달성하는 능력으로도 유명합니다. 모델의 아키텍처는 컨볼루셔널 레이어 스택과 그 뒤를 잇는 최대 풀링 레이어를 특징으로 하며 깊이가 점차 증가합니다. 이 설계를 통해 모델은 시각적 특징의 복잡한 계층적 표현을 학습하여 강력하고 정확한 예측을 할 수 있습니다. 최신 아키텍처에 비해 단순함에도 불구하고 VGG-16은 다용성과 탁월한 성능으로 인해 많은 딥 러닝 애플리케이션에서 여전히 인기 있는 선택입니다.



ILSVRC(ImageNet Large Scale Visual Recognition Challenge)는 팀이 객체 위치 파악 및 이미지 분류를 포함한 작업을 다루는 컴퓨터 비전 분야의 연례 대회입니다. 2014년 Karen Simonyan과 Andrew Zisserman이 제안한 VGG16은 200개의 클래스에서 객체를 감지하고 이미지를 1000개의 카테고리로 분류하여 두 작업 모두에서 최고 순위를 달성했습니다.


C++ 세트

VGG-16 아키텍처



이 모델은 92.7% 상위 5위 다음을 포함하는 ImageNet 데이터 세트의 정확도 테스트 14 1000개의 클래스에 속하는 백만 개의 이미지.

VGG-16 모델 목표:

ImageNet 데이터세트에는 고정된 크기의 이미지가 포함되어 있습니다. 224*224 그리고 RGB 채널이 있습니다. 따라서 우리는 다음과 같은 텐서를 가지고 있습니다. (224, 224, 3) 우리의 입력으로. 이 모델은 입력 이미지를 처리하고 1000 값:

hat{y} =egin{bmatrix} hat{y_0} hat{y_1} hat{y_2} . . . hat{y}_{999} end{bmatrix}



이 벡터는 해당 클래스의 분류 확률을 나타냅니다. 이미지가 확률적으로 클래스 0에 속한다고 예측하는 모델이 있다고 가정합니다. 1 , 1급 확률적으로 0.05 , 2급 확률적으로 0.05 , 수업 확률적으로 0.03 , 클래스 780 확률적으로 0.72 , 수업 999 확률적으로 0.05 그리고 다른 모든 수업은 0 .

따라서 이에 대한 분류 벡터는 다음과 같습니다.

hat{y}=egin{bmatrix} hat{y_{0}}=0.1 0.05 0.05 0.03 . . . hat{y_{780}} = 0.72 . . hat{y_{999}} = 0.05 end{bmatrix}

이러한 확률이 추가되는지 확인하려면 1 , 우리는 Softmax 함수를 사용합니다.

이 소프트맥스 함수는 다음과 같이 정의됩니다.

hat{y}_i = frac{e^{z_i}}{sum_{j=1}^{n} e^{z_j}}

자바 문자열 cmp

그런 다음 가장 가능성이 높은 5개의 후보를 벡터에 넣습니다.

C =egin{bmatrix} 780 0 1 2 999 end{bmatrix}

우리의 Ground Truth 벡터는 다음과 같이 정의됩니다.

G = egin{bmatrix} G_{0} G_{1} G_{2} end{bmatrix}=egin{bmatrix} 780 2 999 end{bmatrix}

그런 다음 Error 함수를 다음과 같이 정의합니다.

E = frac{1}{n}sum_{k}min_{i}d(c_{i}, G_{k})

해시셋 대 해시맵

각 실측 클래스와 예측 후보 사이의 최소 거리를 계산합니다. 여기서 거리 함수 d는 다음과 같이 정의됩니다.

  • d=0인 경우c_i=G_k
  • 그렇지 않으면 d=1

따라서 이 예의 손실 함수는 다음과 같습니다.

egin{aligned} E &=frac{1}{3}left ( min_{i}d(c_{i}, G_{1}) +min_{i}d(c_{i}, G_{2})+min_{i}d(c_{i}, G_{3}) ight ) &= frac{1}{3}(0 + 0 +0) &=0 end{aligned}

Ground Truth의 모든 범주는 예측된 상위 5개 행렬에 있으므로 손실은 0이 됩니다.

VGG 건축학:

VGG-16 아키텍처는 이미지 분류 작업을 위해 설계된 심층 합성곱 신경망(CNN)입니다. 옥스포드 대학의 시각 기하학 그룹(Visual Geometry Group)에 의해 소개되었습니다. VGG-16은 단순성과 균일한 아키텍처가 특징이므로 이해하고 구현하기 쉽습니다.

맘타 쿨카르니

VGG-16 구성은 일반적으로 13개의 컨벌루션 레이어와 3개의 완전 연결 레이어를 포함하여 16개의 레이어로 구성됩니다. 이러한 레이어는 블록으로 구성되며, 각 블록에는 여러 컨볼루셔널 레이어와 다운샘플링을 위한 최대 풀링 레이어가 포함됩니다.

VGG-16 아키텍처 맵

제공된 세부 정보를 기반으로 한 VGG-16 아키텍처의 분석은 다음과 같습니다.

  1. 입력 레이어:
    1. 입력 차원: (224, 224, 3)
  2. 컨벌루션 레이어(64개 필터, 3×3 필터, 동일한 패딩):
    • 각각 64개의 필터와 3×3의 필터 크기를 갖는 두 개의 연속적인 컨벌루션 레이어.
    • 공간적 차원을 유지하기 위해 동일한 패딩이 적용됩니다.
  3. 최대 풀링 계층(2×2, 스트라이드 2):
    • 풀 크기가 2×2이고 스트라이드가 2인 맥스 풀링 레이어입니다.
  4. 컨벌루션 레이어(128개 필터, 3×3 필터, 동일한 패딩):
    • 각각 128개의 필터와 3×3의 필터 크기를 갖는 두 개의 연속적인 컨벌루션 레이어.
  5. 최대 풀링 계층(2×2, 스트라이드 2):
    • 풀 크기가 2×2이고 스트라이드가 2인 맥스 풀링 레이어입니다.
  6. 컨벌루션 레이어(256개 필터, 3×3 필터, 동일한 패딩):
    • 각각 256개의 필터와 3×3의 필터 크기를 갖는 두 개의 연속 컨벌루션 레이어.
  7. 컨벌루션 레이어(512개 필터, 3×3 필터, 동일한 패딩):
    • 각각 512개의 필터와 3×3의 필터 크기를 갖는 3개의 연속 컨벌루션 레이어로 구성된 두 세트.
  8. 최대 풀링 계층(2×2, 스트라이드 2):
    • 풀 크기가 2×2이고 스트라이드가 2인 맥스 풀링 레이어입니다.
  9. 컨벌루션 레이어 스택 및 최대 풀링:
    • 이전 스택 뒤에 두 개의 추가 컨벌루션 레이어가 있습니다.
    • 필터 크기: 3×3.
  10. 편평화:
    • 출력 특징 맵(7x7x512)을 크기 25088의 벡터로 평면화합니다.
  11. 완전히 연결된 레이어:
    • ReLU가 활성화된 3개의 완전히 연결된 레이어.
    • 입력 크기가 25088이고 출력 크기가 4096인 첫 번째 레이어입니다.
    • 입력 크기가 4096이고 출력 크기가 4096인 두 번째 레이어입니다.
    • 입력 크기가 4096이고 출력 크기가 1000인 세 번째 레이어는 ILSVRC 챌린지의 1000개 클래스에 해당합니다.
    • 분류를 위해 세 번째 완전 연결 계층의 출력에 Softmax 활성화가 적용됩니다.

이 아키텍처는 ReLU 활성화 함수 사용 및 소프트맥스 활성화를 사용하여 1000개 클래스에 대한 최종 완전 연결 계층 출력 확률을 포함하여 제공된 사양을 따릅니다.

VGG-16 구성:

VGG-16 구성 C와 D의 주요 차이점은 일부 컨볼루셔널 레이어에서 필터 크기를 사용한다는 점입니다. 두 버전 모두 주로 3×3 필터를 사용하지만, 버전 D에서는 대신 1×1 필터를 사용하는 경우가 있습니다. 이러한 약간의 변화로 인해 매개변수 수가 달라지며 버전 D는 버전 C에 비해 매개변수 수가 약간 더 높습니다. 그러나 두 버전 모두 VGG-16 모델의 전체 아키텍처와 원리를 유지합니다.

다른 VGG 구성

이미지의 객체 현지화:

현지화를 수행하려면 클래스 점수를 경계 상자 위치 좌표로 바꿔야 합니다. 경계 상자 위치는 4차원 벡터(중심 좌표(x,y), 높이, 너비)로 표시됩니다. 현지화 아키텍처에는 두 가지 버전이 있습니다. 하나는 경계 상자가 여러 후보 간에 공유되는 것입니다(출력은 4 매개변수 벡터), 다른 하나는 클래스별 경계 상자입니다(출력은 다음과 같습니다). 4000 매개변수 벡터). 이 논문에서는 VGG -16(D) 아키텍처에 대한 두 가지 접근 방식을 모두 실험했습니다. 여기서도 손실을 분류 손실에서 회귀 손실 함수로 변경해야 합니다(예: MSE ) 이는 실제 실제값에서 예측된 손실의 편차에 페널티를 적용합니다.

결과: VGG-16은 2014년 ILSVRC 챌린지에서 가장 성능이 뛰어난 아키텍처 중 하나였습니다. 분류 작업에서 상위 5개 분류 오류로 2위를 차지했습니다. 7.32% (분류 오류가 있는 GoogLeNet 뒤에만 6.66% ). 또한 국산화 과제에서도 우승을 차지했습니다. 25.32% 현지화 오류.

VGG 16의 한계:

  • 훈련 속도가 매우 느립니다(원래 VGG 모델은 Nvidia Titan GPU에서 2~3주 동안 훈련되었습니다).
  • VGG-16 훈련된 imageNet 가중치의 크기는 다음과 같습니다. 528 MB. 따라서 디스크 공간과 대역폭이 많이 필요하므로 비효율적입니다.
  • 1억 3,800만 개의 매개변수로 인해 경사도 폭발 문제가 발생합니다.

추가 개선 사항: VGG-16에서 발생한 폭발적인 경사 문제를 방지하기 위해 Resnet이 도입되었습니다.