LeNet --> AlexNet --> GoogLeNet --> VGGNet --> ResNet --> SENet
Alexnet
- Conv층 5개와 FC층 3개로 구성됨
- 8개 층에 290400-186624-64896-64896-43264-4096-4096-1000
- input : 224*224 크기의 RGB 3채널 3*224*224 텐서
- CNN은 FC의 매개변수 수를 줄이는 방향으로 발전
- LeNet-5에 컨볼루션 부에 2개 층을 추가하고, FC에 1개 층을 추가한 깊어진 CNN
- 활성함수로 ReLU 사용
- 커널의 컨볼루션 결과를 이웃 커널의 값을 고려해서 조정하는 local response normalization 기법 적용
- 규제 기법 : 데이터 확대, 드롭아웃
* 데이터 확대 : cropping과 flipping을 적용, PCA 사용해서 영상의 개수 추가로 늘림
* 드롭아웃은 FC층 3개 중 앞에 2개만 적용함
- 영상 전처리 : 화소별로 평균을 빼는 연산 적용
VGGNet
- 작은 커널을 사용해서 신경망을 깊게 만듦
- FC층은 3개로 고정한채(분류 목적) Conv층을 8~16개의 범위에서 바꿔가며 성능 실험
- AlexNet에 비해서 층이 2~3배정도 깊어짐
- 모든 컨볼루션층이 3*3의 작은 커널을 사용함
--> 작은 커널을 여러번 적용하는 연산이 분별력 측면과 매개변수가 작아서 더 계산이 빨라짐
- input : 224*224 크기의 RGB 3채널 3*224*224 텐서
- 1*1 크기의 커널 사용
GoogLeNet
- 1*1 커널 사용
--> 특성맵이 줄어들어서 연산량이 줄어듦 -> 네트워크를 더 깊게 만들 수 있음
- 과잉적합 방지 용으로 inception 모듈 사용 ; network in network
--> 매개변수가 줄어듦
- 마이크로 네트워크로 컨볼루션 연산 사용
--> 4종류의 컨볼루션을 수행하고 결과를 결합하는 방식으로 연산을 수행함
--> 4종류의 연산은 모두 같은 크기의 특징 맵을 만들지만, 특징맵의 수는 각각 다름
- FC 층 대신 global average pooling 방식 사용함
- 네트워크 깊이가 깊어져서 중간에 auxiliary classifier를 달아줌
ResNet
- VGG처럼 깊은 구조를 추구함, VGG19의 구조를 뼈대로 함
--> Conv 층을 추가해서 깊게 만든 후 shortcut을 추가함
1) residual learning을 제안함
--> 지름길 연결 사용
--> 그래디언트 소멸 문제가 발생하지 않음
--> 성능 저하를 피하면서 층수를 최대로 늘림
2) FC layer3개를 전역 평균 풀링 (GAP)층으로 대치함
SENet
- SE Block을 제안함
--> Squeeze and Excitation
---> squeeze해서 특성맵을 1*1 사이즈 특성맵으로 변환시켜주고 GAP로 평균냄
---> excitation해서 각 채널의 상대적 중요도를 알아냄
- VGG, GoogLeNet, ResNet 등에 SE block을 추가함
'ML' 카테고리의 다른 글
활성함수와 목적함수 (0) | 2023.01.12 |
---|---|
생성 모델 (0) | 2023.01.11 |
Deep Learning (0) | 2023.01.03 |
다층 퍼셉트론 (0) | 2023.01.03 |
기계 학습과 수학 (0) | 2023.01.02 |