네이버 부스트캠프 AI Tech 2주차 과제에서 ResNet18을 이용하는데 ResNet에 대한 기초적인 개념과 ResNet이름 뒤에 붙은 숫자의 의미가 궁금하여 추가학습을 진행하였습니다.(논문을 읽기 전이어서 내용은 차후 추가될 수 있습니다!)
위 그림에서 H(x)는 Identity를 매핑해주는 함수이기 때문에 H(x)-x를 최소화하면서 H(x) = x 가 되는 것을 목표로 한다.(Identity 매핑이 아니었다면 H(x)-y를 최소화!)
H(x)를 기존의 네트워크라고 할 때, H(x)를 복잡한 함수에 근사시키는 것 보다 F(x) := H(x) - x일 때, H(x) = F(x) + x이고, F(x) + x를 근사시키는 것이 더 쉬울 것이라는 아이디어에서 출발한다. 기존 신경망이 H(x) - x = 0을 만들려 했다면 ResNet은 H(x) - x = F(x) 로 두어 F(x)를 최소화한다.
ResNet18은 18개의 층으로 이루어진 ResNet을 의미하는데 244*244*3의 image를 input으로 받는다. 그리고 4개의 Conv block과 Adaptive Average Pooling을 시행한 후 Fully Connected layer(FC layer)를 통과시켜 이미지를 분류한다. 각각의 Conv block은 두 개의 3*3 Conv 레이어로 구성되어 있다.
import torchvision
model = torchvision.model.resnet18(pretrained=True/False)
PyTorch에서는 위 코드와 같이 불러올 수 있다. pretrained를 True로 설정하면 ImageNet 데이터베이스의 1백만 개가 넘는 영상에 대해 훈련된 버전을 불러올 수 있고 영상을 키보드, 마우스, 연필, 각종 동물 등 1000가지 사물 범주로 분류할 수 있다. pretrained를 False로 설정하면 사전 학습이 안 된 모델 뼈대만을 가져올 수 있다.
출처
1. 위키독스 인공지능 & 머신러닝 책갈피 https://wikidocs.net/202619
2. 위키독스 한땀한땀 딥러닝 컴퓨터 비전 백과사전 https://wikidocs.net/137252
3. residual block 이미지 https://mole-starseeker.tistory.com/12
4. ResNet18 구조 이미지 https://daeun-computer-uneasy.tistory.com/85