1. AlexNet
그 당시, 처음으로 Dropout, weight Decay를 적용했던 획기적인 방법이었다. 또한 Activation를 relu로 첫 적용한 모델이다.
2. VGGNet(2014)
VGGNet은 모델이 가벼우면서 성능까지 갖추고 있기 때문에 backbone으로도 활용을 하고있다.
학계에서는 커널사이즈가 커야 고도의 추상화를 추출할수 있다는 분위기가 있었다. AlexNet의 커널이 11*11,5*5 처럼 말이다. 하지만 단점은 커널 사이즈가 크기 때문에 이미지의 사이즈가 급격하게 축소가 된다는 점이다. 34*34 원본이미지를 일부러 크게 만들어야 하는데, 이 과정 또한 컴퓨팅 자원이 소모되므로 현 시점에서 큰 커널 사이즈는 잘 사용하지 않고 있다. 본론으로 돌아와서 VGG는 3*3의 커널사이즈로 통일 시켰다.
1*1 Convolution
주로 FM에 적용되는데, 비선형성을 보다 더 강화 시킬 수 있다. 예를들어 6*6*64 FM이 있을 때 1*1의 채널 수를 줄여서 1*1*32로 convolution한다(padding=’same’). 그러면 6*6*32라는 중간 FM이 출력되는데 여기에 3*3*64를 convolution해준다.(1*1 -> relu -> 3*3) 중간 FM에 Conv를 해주면 비선형성이 강조된다(conv가 2번 계산됨에 따라). 그래서 보통 1*1 단독이 아닌 3*3이 붙는다.
1*1*32의 N개 필터를 Conv하는데, 이때의 N개는 32보다 훨씬 적은 수이다. 그래서 FM필터를 축소하는 역할을 하게 되고. 6*6*N개에 대해서 3*3을 Conv하여 비선형성을 강조 시킨다.
1*1 Conv 적용 전/후 비교를 해보자. 위에 5*5*200인 필터가 64개로 총 320000의 파라미터가 존재하는 반면, 1*1*200인 필터가 16개이므로 30*30*16인 FM이 계산되고, 해당 FM에 5*5*16인 필터 64개를 적용하면 25600개의 파라미터가 생긴다. 따라서 1*1 Conv 적용 전후 파리미터의 수가 확연하게 줄어듦을 확인할수 있다. 또한 1*1Conv 후 나오는 FM은 비록 위에 있는 필터수 64개 보다 한참 적은 16개라서 정보 손실이 발생할수 있겠지만 Relu를 적용하여 보다 더 비선형성에 중점을 두었다. 1*1 Conv를 적용하는 layer를 Bottleneck Layer라고도 한다.
연산량을 계산해 본다면, 먼저 위에 내용은 5*5*200*30*30*64의 연산량이 발생한다.
30*30*200인 FM에서 padding을 적용했기 때문에 5*5 커널사이즈가 오른쪽으로 30번, 아래로 30번 이동할 것이다. 그래서 5*5*200*30*30인 필터가 총 64개가 있다. 아래 1*1Conv 적용한 연산량은 1*1*200*30*30*16 + 5*5*16*30*30*64로 계산된다. 후자인 연산량이 훨씬 적다.
3. GoogLeNet(2014, 1위)
구글넷을 대표하는 것은 Inception module이라고 생각하면 된다. 그래서 구글넷은 추후 Inception으로 이름이 변경된다. 빨간박스를 Inception module 이라 한다. 즉, Inceptoin module들이(9개) 연결이 된 모습을 보인다. 상세하게 Inception module을 살펴 보도록 해보자
'Data Diary' 카테고리의 다른 글
211127_자연어 입문편(Auto Encoder, Feature Vector) (0) | 2021.11.27 |
---|---|
2021-11-15(CNN_Resnet) (0) | 2021.11.15 |
2021-10-15(CNN_Augmentation) (0) | 2021.10.15 |
2021-10-14(따릉이 프로젝트 완성하기 12) (0) | 2021.10.15 |
202-10-12,13(CNN_Pretained & Keras Generator의 이해) (0) | 2021.10.12 |