CNN의 역사

기존 모델들에서 나타난 문제
- 레이어가 깊어지면서 나타나는 정보의 소실!

2.정보가 사라지는 이유:

ResNet
ResNet이 제안한 해결 방법
: skip connection

정보손실x
:h(x)-x=0 이어야 됨
h(x)-x=F(x)
H(x) 대신 F(x)를 학습, 그 후 x를 더해줌(?)
+) Bottleneck
연산량을 줄이기 위한 방법!



Pytorch
dilation

- dilation=2
- 필터가 한칸씩 떨어져서 적용
- 작은 필터로 큰 부분을 다룰 수 있음
group conv

- 이미지도 필터도 그룹 수에 맞게 나눠짐
- 빨간 것끼리, 파란 것끼리,, 연산됨
- output의 Depth = 필터 갯수xgroup 수가 됨
ResNet 코드
- 자주쓰이는 3x3, 1x1레이어를 함수화

- Basic Block

- batch normalization

- 레이어 정의

- 전체 구조(forward)

-
Bottleneck block
- BN&layer 설정

- 전체 구조

-
class: ResNet
-
init


-
make layer 함수

- bottle neck을 3,4,6,3으로 쌓음
- layer 1을 예시로

- down sampling은 꼭 차원을 낮추는게 아니라 맞춰주는 걸 의미함
- 뒤에 블록의 첫번째 레이어 스트라이드 =2 일때 사용됨



-> 이런 함수였기에
self.layer1 = self._make_layer(block, 64, layer[0])으로 첫번째 블록 3개가 완성
- 다음 block으로 넘어갈때 stride를 2로 둠

- for문에서는 stride를 입력하지 않아서 기본값인 1이 사용됨
->두번째 layer부턴 해상도 그대로
- 필터의 크기는 동일하지만, 해상도가 바뀌는 것의 의미=점점 추상적인 특징을 잡아냄

+) init의 초기화 함수

- 학습 진행 전 모델 불러올때 딱 1번 초기화 진행
forward!

_resnet으로 편하게 사용

사용하기

