CNN
- 1x1 컨볼루션은 채널방향의 dimention reduction이다.
ILSVRC에서 우승한 모델들을 살펴봤다.
- AlexNet(12)
- VGGNet(14)
- GoogleNet(15)
- ResNet(15)
당연히 가장 나중에 나온 ResNet이 우수
AlexNet
- ReLU
gradient vanishing 문제에 도움이 된다.
gradient descent를 옵티마이즈하기 쉽다.
generalize가 잘된다.
- 2개의 GPU
- data augmentation
- dropout
- Local response normalization, Overlapping pooling
VGGNet
- 3x3 커널 사용해서 파라미터수를 줄이면서 더욱 깊게
- 1x1 커널 사용
- dropout(p=0.5)
GoogLeNet
- inception block
- 1x1 커널 사용
ResNet
- skip connection
다음 레이어에 f(x)+x 를 전달
이전에 학습된 모델(레이어들)의 출력과 추가된 레이어의 출력의 차이값인 나머지(residual)만 학습하면 되기에 연산이 간단해지고, error값 크기의 측면에서 학습이 더 쉽다는 것입니다.ㅊ참고
DensNet
- concat해서 뒤로 갈수록 채널이 커지는건 1x1 conv, avgpooling으로 해결
총정리
- VGG: 3x3 blocks 여러개 배치
- GoogLeNet: 1x1 conv
- ResNet: skip-connection
- DenseNet: concat
질문
- recepive field 와 feature map의 차이
receptive field는 커널 1개가 적용되는 부분. 위의 사진의 receptive field의 size는 5 x 5 x 3
feature map은 여러 receptive field로부터 생성된 결과물들이 모인 컨볼루션 결과물
참고자료
-
bottle neck 구조가 무엇인가?
1x1 convolution으로 좁아졌다가, 3x3 convolution(원래 하고자 했던 연산)을 하고, 1x1 convolution으로 다시 차원의 깊이도 깊게만드는 block을 bottleneck 이라고 부른다. 실제로 하는 일은 비용이 많이 드는 3x3, 5x5 convolution을 하기 전에, 1x1 convolution을 하여 차원을 감소시킨 후에 3x3, 5x5 convolution을 수행하는 것이다. inception 모델에서 활용되어 파라미터의 수는 줄이고 레이어를 깊게 하였으며, 특히 ResNet에서 엄청난 효과를 나타내었다. 참고
ResNet에서 bottle neck + skip connection 구조 사용됌
-
skip connection이 뭐지?
semantic segmentation, detection
semantic segmentation
fully convolutional network
linear layer와 fully convolutional network의 파라미터수는 같다. 하지만 장점은 커널이 피쳐맵 크기와 같은 크기로 적용되기 때문에 히트맵을 얻을 수 있다는 것!
detection
R-CNN
- 가장 초기 모델.
- 바운딩박스 후보군 여러개 생성
- 바운딩박스영역 CNN 통과
- 그 결과를 SVM으로 해당 객체가 맞는지 분류
문제점: 모든 바운딩박스영역 이미지를 컨볼루션하니까 시간많이든다.
SPPNet
- 이미지 전체 conv 해놓고 바운딩 박스만큼 떼어다가 쓴다
Fast R-cnn
- 이미지 전체 conv 해둔다.
- ROI pooling 사용
Faster R-cnn
- 바운딩박스 뽑는 것을 network를 통해 학습
Region proposal Network
YOLO
- 빠르다
- 바운딩 박스 예측, 클래스 분류 동시에 한다.
- 아웃풋 크기는 S : 격자개수, B : 바운딩박스 개수, C : 클래스개수 일때
SS(B+5+C)