LeNet-5 구조는 아마도 가장 널리 알려진 CNN 구조일 것이다.
<AlexNet>
이 구조는 더 크고 깊을 뿐 LeNet-5와 비슷하며, 처음으로 합성곱 층 위에 풀링 층을 쌓지 않고 바로 합성곱 층끼리 쌓았다.
과대 적합을 줄이기 위해 두 가지 규제 기법을 사용했다. 첫 번째는 훈련하는 동안 F9와 F10의 출력에 드롭아웃을 50%비율로 적용했다. 두 번째는 훈련 이미지를 랜덤하기 여러 간격으로 이동하거나 수평으로 뒤집고 조명을 바꾸는 식으로 데이터 증식(data augmentation)을 수행했다.
AlexNet은 또 C1과 C3 층의 ReLU 단계 후에 바로 LRN(local response normalization) 이라 부르는 경쟁적인 정규화 단계를 사용했다. 가장 강하게 활성화된 뉴런이 다른 특성 맵에 있는 같은 위치의 뉴런을 억제한다. 이는 특성 맵을 각기 특별하게 다른 것과 구분되게 하고, 더 넓은 시각에서 특징을 탐색하도록 만들어 결국 일반화 성능을 향상시킨다.
예를 들어 r=2이고 한 뉴런이 강하게 활성화되었다면 자신의 위와 아래의 특성 맵에 위치한 뉴런의 활성화를 억제할 것이다. AlexNet에서 하이퍼파라미터는 r=2, a=0.00002, b=0.75, k=1 로 설정되어있다. 이 단계는 tf.nn.local_response_normalization() 연산을 사용하여 구현할 수 있다 ( 이 함수를 케라스 모델에 사용하고 싶다면 Lambda 층으로 감싼다).
<GoogLeNet>
이 네트워크는 이전 CNN보다 훨씬 더 깊다. 인셉션 모듈(inception moudle)이라는 서브 네트워크를 가지고 있어서 GoogLeNet은 AlexNet보다 10배나 적은 파라미터를 가진다. 다음 그림은 인셉션 모듈의 구조를 보여준다. '3x3 +1(s)' 표시는 3x3 커널, 스트라이드 1, 'same'패딩을 사용한다는 뜻이다. 처음에 입력 신호가 복사되어 네 개의 다른 층에 주입된다. 모든 합성곱 층은 ReLU 활성화 함수를 사용한다. 두 번째 합성곱 층은 각기 다른 커널 크기(1x1, 3x3, 5x5)를 사용하여 다른 크기의 패턴을 잡는다. 모든 층은(최대 풀링 층조차도) 스트라이드 1과 'same' 패딩을 사용하므로 출력의 높이와 너비가 모두 입력과 같다. 이렇게 하면 모든 출력을 깊이 연결 층(depth concatenation layer)에서 깊이방향으로 연결할 수 있다.(즉, 위 쪽 네 개의 합성곱 층에서 만든 특성 맵을 쌓는다). 이 연결 층은 텐서플로의 axis=3(3은 깊이방향 축이다) 매개변수로 tf.concat() 연산을 사용하여 구현할 수 있다.
'Computer Vision > Deep learning' 카테고리의 다른 글
23. 케라스를 사용해 ResNet-34 CNN 구현 (0) | 2021.06.13 |
---|---|
22. ResNet, Xception (0) | 2021.06.12 |
20. CNN 구조 (0) | 2021.06.12 |
19. 풀링 층 (0) | 2021.06.12 |
18. 합성곱 신경망을 사용한 컴퓨터 비전 - 합성곱 층 (0) | 2021.06.12 |