본 프스팅은 2022-11-16(수), 국민대학교 김장호교수님의 컴퓨터 비전 수업을 통해 배운내용을 정리하기 위한 게시글입니다.
# 시작하며
이번 단원에서는 1*1 Conv와 Pooling, batch normalization에 대해서 배운다.
# 1*1 Convolution
인공지능에서 CNN의 모델을 공부할때, VGCNet에 대해서 공부했었다. VGCNet에서는 1*1 Convolution에 대한 개념을 제시했고, 이후 GoogLeNet에서 1*1 Convolution에 대해서 도입했다고 배웠었다.
1*1 Convolution은 말 그래도 1*1의 필터(커널)을 가진 Convolution을 도입하는 것이다. Conv-layer를 구성할때는 (필터의 총 갯수) * ( input의 채널 갯수) * (커널 Height) * (커널 Width)로 구성했다. 여기서 필터의 총 갯수가 해당 레이어의 output을 결정한다. 이걸 조절해준다면 차원을 축소, 증대를 해줄 수 있다는 것이고, Fully Connected와 동일한 효과를 누릴 수 있다.
1*1 Convolution의 장점 섞는데 최적화 되고, MLP와 같은 효과를 누린다는 것이다. 커널이 입력값의 모든 채널을 보고 합한 것이 하나의 output이 되기 때문이다.
# Convolution Summary - 공식 정리
- (H-K + 2P) / s + 1의 무적 공식을 기억해 놓자!
# Pooling Layer
Pooling에 대해서도 인공지능 시간에 배웠다. 요즘에는 잘 쓰지 않는다고 했지만, down-sampling을 해주는 역할을 할 수 있다. max, min, mean등의 풀링 방법을 이용할 수 있다.
참고로 down-sampling을 해주는데는 두가지 방법이 있다.
- 필터의 Stride를 조절함
- pooling을 사용하여 조절 함
위 그림과 같이, Max-pooling을 사용한다면, 위 그림과 같이 잘라보게 된다. 2*2 와 stride가 2일때의 상황이다.
(H-K) / S + 1로 다음 아웃풋을 결정한다. 특히 풀링의 장점은 따로 학습할 파라메타가 없다는 것이다. 그냥 max,min,mean과 같은 방법으로 결정하기 때문이다.
# LeNet-5예제로 Output Size와 Wieght Size 계산
결국 Input이 어떻게 되는지, 인풋의 채널과 커널의 크기를 알아야 한다. 그 다음 층의 Conv를 알아보자
이런식으로 유연하게 커널의 크기를 이용해 Weight Size를 알 수 있다.
# Batch Normalization
일반적으로 mini-Batch를 사용하지 않는다면 모든 데이터들을 본 후에 가중치를 갱신한다. 그렇기 때문에 batch라는 개념을 도입하여, 데이터 셋을 배치단위로 나누고 해당 배치를 돌면 가중치를 갱신해주도록 했다.
이렇게 하면서 문제점이 발생했는데, batch마다 데이터들이 존재하기 때문에 분포가 상이했다. 그래서 Internal covariate shift의 문제점이 발생 했다.
그래서 각 배치별로 평균과 분산을 이용해 정규화를 하게 된다. 위 참고 블로그에 아주 자세한 설명이 돼 있다.
'•Compter Science > Computer Vision' 카테고리의 다른 글
[컴퓨터비전#16/11-28] CNN모델 알아보기 AlexNet,VGG,GoogLenet,ResNet (1) | 2022.11.29 |
---|---|
[컴퓨터비전#15/11-21] 행렬(텐서)or벡터의 역전파 과정, 자코비안,Local Gradient Slice, Batch Normalization (2) | 2022.11.22 |
[컴퓨터비전#13/11-14] Convolution Layer- 필터(Feature-map,padding,stride) (1) | 2022.11.16 |
[컴퓨터비전#12/11-07] 오류역전파방법, 모듈로 사고의 확장, dropout, earlystop (0) | 2022.11.08 |
[컴퓨터비전#11/10-31] L1놈과 L2놈을 이용한 Regularization(정규화) (0) | 2022.10.31 |