CNN 모델과 Convolution 기법 정리

Memo 2021. 6. 8. 22:59

GoogLeNet: Bottleneck과 Inception Module을 적용한 CNN

Bottlenect

- 계수의 개수와 계산량을 줄이기 위해 Convolution 층을 분리(Decomposition)

- 분리된 층 사이에는 ReLU와 같이 비선형 함수가 있음

Inception Module: 이전 레이어의 1x1 conv, 3x3 conv, 5x5 conv, maxpooling 결과를 전부 이어 붙여 출력하는 구조

Inception V4

- 계수의 개수와 계산량에 비해 성능이 뛰어난 CNN

- 층마다 Inception 모듈을 달리 적용하기 때문에 구조가 복잡함

MobileNet: Depth-wise Separable Convolution 개념 도입

Depth-wise Separable Convolution

- 입력된 3차원 구조의 Feature Map을 채널의 개수 N으로 분리하여 각각에 대하여 KxK 커널 Convolution

- N개의 Feature Map이 출력됨

- K x K x 1 x N

Point-wise Convolution

- Depth-wise Separable Convolution에서 얻은 채널 개수 만큼의 Feature Map을 합쳐 1x1 Convolution

Standard Convolution = K x K x M x N

DW + PW = K x K x 1 x N + 1 x 1 x M x N

ShffleNet

- MobileNet에서 계수와 계산량 대부분이 Point-wise Convolution에서 발생

- Point-wise Group Convolution 도입

- Feature Map과 커널을 g개의 그룹으로 나누어 Point-wise Convolution

- 연산량 = 1 x 1 x N/g x M/g x g

- 채널 그룹 간의 정보 교환을 위하여 나뉜 그룹을 합쳐 전체에 대해 Convolution하는 과정 도입하고, 이 과정에서 계수의 양과 계산량이 늘어나는 문제를 해결하기 위해 Shuffling

ResNet

- skip connection에 identity mapping을 이용하여 신경망이 수렴이 잘 되도록 하여 층을 깊게 쌓아 정확도를 높인 모델 - 기존의 Residual 블록의 구조에 활성화 함수의 순서를 바꿔(Pre-Activation) 성능을 끌어올림

ResNeXt

- 기존에는 Depth와 Width로 CNN의 성능 조절하였지만, Cardinality를 도입하여 성능을 조절함

- Group Convolution 이용

Inverted Residual Block

- Shortcut Connection이 얇은(채널 개수가 적은) Bottlenect 층 사이를 연결

- 중간의 Expansion 층에서는 Depth-wise Convolution 사용

- 일반적인 Residual Block 구조에서는 1x1 conv로 채널 수를 줄이지만, 3x3 conv에서 DW를 한다면 DW 연산량이 매우 적어 채널 수가 많아도 연산량은 거의 증가하지 않으므로 채널 수를 많이 줄이지 않아도 됨

MobileNetV2

- Inverted Residual Block을 쌓아 만든 CNN

- 마지막 1x1 conv에서는 정보 유실을 막기 위하여 ReLU 사용하지 않음

- 채널의 개수가 적은 경우에는 정보가 함축적이어서 정보의 손실량이 커짐

'Memo' 카테고리의 다른 글

Hadoop 설치할 때 이용했던 Docker 명령어 메모  (0) 2021.10.18
우분투 관련 온갖 것들 메모  (0) 2021.09.28
CNN 메모  (0) 2021.06.04
선행대수 용어 정리  (0) 2021.06.04
빅데이터, AI 직군 자격에 대하여  (0) 2021.05.23
admin