CNN 모델과 Convolution 기법 정리
Memo 2021. 6. 8. 22:59GoogLeNet: 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 |