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 모듈
'etc > FastCampus 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 25 회차 (0) | 2020.11.12 |
---|---|
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 24 회차 (0) | 2020.11.11 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 22 회차 (0) | 2020.11.09 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 21 회차 (0) | 2020.11.08 |
[패스트캠퍼스 수강 후기] 컴퓨터비전인강 100% 환급 챌린지 20 회차 (0) | 2020.11.07 |