본문 바로가기

etc/FastCampus 챌린지

[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 23 회차

728x90
반응형

CNN 이 이해가 안되서 한번 더 재수강 한다

pooling layer 에 대한 명확한 개념정리가 필요해보임

Pooling Layers

- CNN을 구성하는데 필요한 중간, 최종 레이어에 대해 알아보자.

 

- Pooling layer 라 부르는 이 레이어는 주로 콘볼루션 레이어를 input으로 받아들인다.

- 콘볼루션 레이어는 각 필터당 하나의 feature map이 형성되고, 그 feature map을 스택처럼 쌓아둔 것이다.

- 많은 object 카테고리가 존재하는 복잡한 데이터셋을 가지고 CNN을 구현해 내는경우 

- 매우 많은 수의 필터를 필요로 하는데, 각각은 이미지의 패턴을 찾아내는데에 사용된다.

 

 

 

- 필터가 많다는 얘기는 그만큼 feature map들이 쌓이게 된다는것이고 이것은

- 우리가 구현할 CNN의 차원이 매우 크다는 얘기이기도 하다.

- 고차원(Higher dimensionality)을 구현하려면 그에 상응하는 더 많은수의 파라미터들을 필요로 하고,

- 그렇게 되면 over-fitting을 초래할 수 있다.

- 따라서 차원을 감소시킬 방법을 필요로한다.

- 이런 역할을 CNN에서 해 주는 레이어가 pooling layer다.

 

 

 

- pooling layer에는 두가지 타입이 있다.

- 첫째로 Max pooling layer 인데, max pooling layer는 feature map들이 쌓여있는 스택을 input으로 받는다.

- 이전 콘볼루션 레이어에서와 마찬가지로 max pooling layer 또한 window size와 stride를 필요로 한다.

- 위 경우에선 window size : 2 by 2 / stride : 2 가 되고, 좌측 상단부터 window를 시작한다.

- max pooling layer에서 뽑아내는 노드의 값은 window상에서 포함하고있는 픽셀들 중 최대값을 뽑아낸다.

- 맨 첫번째 window상의 최대값은 9 가 된다.

 

 

 

- max pooling layer의 output은 feature map의 개수와 동일한 개수의 컬렉션을 리턴하는데,

- 당연히 그 리턴된 output의 feature map은 이전 input보다 너비와 높이가 감소된다.

- 위 경우에선 높이와 너비가 이전보다 반으로 줄게 되었다.

 

 

 

- 둘째로 Global average pooling layer이다.

- global average pooling layer는 window size나 stride를 지정해주지 않는다.

- 이 pooling layer는 더 급격한 방식으로 CNN의 차원을 줄이는데, 

- 각 feature map 상의 노드값들의 평균을 뽑아낸다.

- 첫번째 파랑 feature map의 총합은 80이 되고, 노드 전체 개수인 16으로 나눠주면 평균은 5가 된다.

 

 

 

- 따라서 global average pooling layer의 최종 output은 single value로 크기가 감소된 feature map이 된다.

- 이런 방식으로 global average pooling layer는 3D array를 input으로 하여 벡터를 리턴한다.

- 위에선 세가지 엔트리를 갖고있는 벡터가 이 pooling layer의 output이 된다.

 

 

 

 

 

- 팬케익에 비유해서 pooling layer를 요약해보면, 두 pooling layer 모두 input의 차원을 줄여준다.

- Max pooling layer의 경우 적절하게(지정해준 window와 stride의 값에 상당한) 차원을 줄여준다.

- Global pooling layer의 경우 output의 차원을 single value로 급격하게 줄여준다.

- 그 외 다른 pooling layer에 대한 설명은 여기

 

컨볼루션 신경망: CNN 

▪ 컨볼루션 신경망(CNN: Convolutional Neural Network) 
• 영상 인식 등을 위한 딥러닝에 특화된 네트워크 구조 
• 일반적 구성: 컨볼루션(convolution) + 풀링(pooling) + … + 완전 연결 레이어(FC)

▪ 컨볼루션 레이어(Convolution Layer) 
• 2차원 영상에서 유효한 특징(feature)를 찾아내는 역할 
• 유용한 필터 마스크가 학습에 의해 결정됨
• 보통 ReLU 활성화 함수를 함께 사용함

▪ 풀링 레이어(Pooling Layer) 
• 유용한 정보는 유지하면서 입력 크기를 줄임으로써 과적합(overfitting)을 예방하고 계산량을 감소시키는 효과 
• 최대 풀링(max pooling) 또는 평균 풀링(average pooling) 사용 
• 학습이 필요 없음

▪ 완전 연결 레이어(Fully Connected Layer) 
• 3차원 구조의 activation map(H  W  C)의 모든 값을 일렬로 이어 붙임 • 인식의 경우, 소프트맥스(softmax) 레이어를 추가하여 각 클래스에 대한 확률 값을 결과로 얻음

 

▪ 학습된 컨볼루션 레이어 필터의 예

 

▪ 필기체 숫자 인식을 위한 LeNet-5 (LeCun et al., 1998) 
• CNN 원조 • 28x28 필기체 숫자 영상을 32x32로 확장하여 만든 입력 데이터를 사용 
• 전체 7개 레이어: Conv-Pool-Conv-Pool-FC-FC-FC

▪ AlexNet (Krizhevsky et al., 2012) 
• 2012년 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 영상 인식 분야 1위 

▪ 1000개의 카테고리, 120만개의 훈련 영상, 15만개의 테스트 영상 
• Top-5 Error: 15.4% (다른 컴퓨터 비전 기반 방법들 > 25%) 
• 하드웨어의 제약으로 2개의 GPU 사용

 

▪ VGG16 (Simonyan and Zisserman, 2014) 
• 2014년 ILSVRC(ImageNet Large Scale Visual Recognition Competition) 영상 인식 분야 2위 
• Top-5 Error: 7.3% 
• 컨볼루션 레이어에서 3x3 필터만 사용
• 총 16개 레이어로 구성

▪ GoogLeNet (Szegedy et al., 2014) 
• 2014년 ILSVRC(ImageNet Large Scale Visual Recognition Competition) 영상 인식 분야 1위 
• Top-5 Error: 6.7% (사람: 5.1%) 
• 총 22개의 레이어로 구성 
• Inception 모듈

728x90
반응형