CV - 1. AlexNet

최창우·2022년 11월 8일
0
post-thumbnail

📌목차

1. AlexNet 개요
2. AlexNet 구조
3. AlexNet 이해

📕 AlexNet 개요

AlexNet은 2012년에 개최된 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대회의 우승을 차지한 컨볼루션 신경망(CNN) 구조이다. CNN의 부흥에 아주 큰 역할을 한 구조라고 말할 수 있다.

📕 AlexNet 구조

AlexNet은 총 8개의 층으로 구성되어 있다.

  • 첫 5개 층 : Convolution
  • 뒤 3개 층 : Fully-Connected

각각의 층들은 하나의 이미지에 대해 독립적으로 특징을 추출하여(Feature Extraction) 가중치를 조정함으로써 필터를 학습시킨다.

들어가기전 컨볼루션 사이즈 변화 계산

  • 입력데이터 : W(가로) x H(세로) x D(채널 또는 깊이)
  • Convolution Filter (Kernel) 의 하이퍼파라미터
    - 필터의 수 : K
    - 필터의 크기 : F (정방)
    - 스트라이드 : S
    - 패딩 : P
  • 출력데이터
    - W' = (W-F+2P)/S + 1
    - H' = (H-F+2P)/S + 1
    - D' = K
  • 가중치 수
    - F^2 x D x K + Bias(Filter 수)

들어가기전 Pooling 사이즈 변화 계산

  • 입력데이터 : W(가로) x H(세로) x D(채널 또는 깊이)
  • Pooling layer의 하이퍼파라미터
    - 필터의 크기 : F (정방)
    • 스트라이드 : S
    • 풀링은 패딩이 없으므로 Convolution 의 사이즈 변환식에서 P만 빼면 됨
  • 출력데이터
    - W' = (W-F)/S + 1
    • H' = (H-F)/S + 1
    • D' = D

입력

  • 224 x 224 x 3(RGB) 이미지
  • 실제로는 227 x 227 x 3 이라한다.

결과적으로 55 x 55 x 96 특성맵(96장의 55 x 55 사이즈 특성맵들)이 산출된다. 그 다음에 ReLU 함수로 활성화해준다. 이어서 3 x 3 overlapping max pooling이 stride 2로 시행된다. 그 결과 27 x 27 x 96 특성맵을 갖게 된다. 그 다음에는 수렴 속도를 높이기 위해 local response normalization이 시행된다. local response normalization은 특성맵의 차원을 변화시키지 않으므로, 특성맵의 크기는 27 x 27 x 96으로 유지된다.

첫번째 레이어 (Convolution)

  • 컨볼루션 > ReLU > max pooling > LRN
  • 참고로 여기서 max pooling 은 overlapping max-pooling 이며
    LRN은 Local response Normalization 이다. 아래 AlexNet 이해에서 설명예정
  1. 컨볼루션
  • Kernel : (11,11,3) x 48x2
  • stride : 4
  • padding : 0
  • output shape : (55,55,48x2)
    - (224-11) / 4 + 1 = 55
  1. ReLU
  2. max-pooling
  • Size : (3,3)
  • stride : 2
  • output shape : (27,27,48x2)
    - (55-3) / 2 + 1 = 27
  1. LRN

두번째 레이어 (Convolution)

  • 컨볼루션 > ReLU > max pooling > LRN
  1. 컨볼루션
  • Kernel : (5,5,48x2) x 128x2
  • stride : 1
  • padding : 2
  • output shape : (27,27,128x2)
    - (27-5+2*2) / 1 + 1 = 27
  1. ReLU
  2. max-pooling
  • Size : (3,3)
  • stride : 2
  • output shape : (13,13,128x2)
    - (27-3) / 2 + 1 = 13
  1. LRN

세번째 레이어 (Convolution)

  • 컨볼루션 > ReLU
  1. 컨볼루션
  • Kernel : (3,3,128x2) x 192x2
  • stride : 1
  • padding : 1
  • output shape : (13,13,192x2)
    - (13-3+2*1) / 1 + 1 = 13
  1. ReLU

네번째 레이어 (Convolution)

  • 컨볼루션 > ReLU
  1. 컨볼루션
  • Kernel : (3,3,192x2) x 192x2
  • stride : 1
  • padding : 1
  • output shape : (13,13,192x2)
    - (13-3+2*1) / 1 + 1 = 13
  1. ReLU

다섯번째 레이어 (Convolution)

  • 컨볼루션 > ReLU
  1. 컨볼루션
  • Kernel : (3,3,192x2) x 128x2
  • stride : 1
  • padding : 1
  • output shape : (13,13,192x2)
    - (13-3+2*1) / 1 + 1 = 13
  1. ReLU
  2. max-pooling
  • Size : (3,3)
  • stride : 2
  • output shape : (6,6,128x2)
    - (13-3) / 2 + 1 = 6

여섯번째 레이어 (Fully connected layer)
1. Flatten

  • 입력 : (6,6,128x2)
  • 출력 : 9216
  1. Fully Connected
  • 입력 : 9216
  • 출력 : 4096
  1. ReLU

일곱번째 레이어
1. Fully Connected

  • 입력 : 4096
  • 출력 : 4096
  1. ReLU

여덟번째 레이어
1. Fully Connected

  • 입력 4096
  • 출력 1000
  1. Softmax
  • 1000개 클래스 각각에 속할 확률을 나타냄

총, 약 6천만개의 파라미터가 훈련되어야 한다. LeNet-5에서 6만개의 파라미터가 훈련되야했던 것과 비교하면 천배나 많아졌다. 하지만 그만큼 컴퓨팅 기술도 좋아졌고, 훈련시간을 줄이기 위한 방법들도 사용되었기 때문에 훈련이 가능했다. 예전 기술 같으면 상상도 못할 연산량이다.

📕 AlexNet 이해

📖 ReLU 사용

활성화 함수로는 LeNet-5에서 사용되었던 Tanh 함수 대신에 ReLU 함수가 사용되었다. ReLU는 rectified linear unit의 약자이다. 같은 정확도를 유지하면서 Tanh을 사용하는 것보다 6배나 빠르다(아래그림)고 한다. AlexNet 이후에는 활성화함수로 ReLU 함수를 사용하는 것이 선호되고 있다.

📖 ovelapping pooling

CNN에서 pooling의 역할은 컨볼루션을 통해 얻은 특성맵의 크기를 줄이기 위함이다. LeNet-5의 경우 평균 풀링(average pooling)이 사용된 반면, AlexNet에서는 최대 풀링(max pooling)이 사용되었다.

또한 AlexNet은 풀링 커널이 움직이는 보폭인 stride를 커널 사이즈보다 작게 하는 overlapping pooling을 적용했다. 따라서 정확히 말하면 LeNet-5는 non-overlapping 평균 풀링을 사용한 것이고, AlexNet은 overlapping 최대 풀링을 사용한 것이다.

overlapping 풀링과 non-overlapping 풀링을 비교한 그림은 아래와 같다. 편의를 위해 최대 풀링인 경우로 설명했다.

📖 local response normalization (LRN)

신경생물학에는 lateral inhibition(측면 억제)이라고 불리는 개념이 있다.

  • 활성화된 뉴런이 주변 이웃 뉴런들을 억누르는 현상을 의미한다.
  • 강한 자극이 주변의 약한 자극을 전달하는 것을 막는 효과를 의미

위 그림은 측면 억제의 유명한 그림인 헤르만 격자이다. 검은 사각형안에 흰색의 선이 지나가고있다. 신기한 것은 흰색의 선에 집중하지 않을 때 회색의 점이 보이는데 이러한 현상은 측면 억제에 의해 발생하는 것이다. 이는 흰색으로 둘러싸인 측면에서 억제를 발생시키기 때문에 흰색이 더 반감되어 보인다.

lateral inhibition 현상을 모델링한 것이 바로 local response normalization이다. 강하게 활성화된 뉴런의 주변 이웃들에 대해서 normalization을 실행한다. 주변에 비해 어떤 뉴런이 비교적 강하게 활성화되어 있다면, 그 뉴런의 반응은 더욱더 돋보이게 될 것이다. 반면 강하게 활성화된 뉴런 주변도 모두 강하게 활성화되어 있다면, local response normalization 이후에는 모두 값이 작아질 것이다.

하지만 현재는 CNN 계열에 Batch Normalization을 주로 쓴다.

📖 그 외 특징점

  1. Multi GPU로 네트워크를 두개로 나누어 병렬적으로 수행
  2. 데이터증강
  3. Dropout

📚 Reference

https://bskyvision.com/421
https://www.datamaker.io/posts/34/
https://deep-learning-study.tistory.com/376

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글