[DL] ResNet 기초(ResNet18)

Seung-ah Park·2023년 11월 20일
0

  네이버 부스트캠프 AI Tech 2주차 과제에서 ResNet18을 이용하는데 ResNet에 대한 기초적인 개념과 ResNet이름 뒤에 붙은 숫자의 의미가 궁금하여 추가학습을 진행하였습니다.(논문을 읽기 전이어서 내용은 차후 추가될 수 있습니다!)


ResNet: Residual Network


  • CNN 구조의 한 종류로, 2015년에 Kaiming He 등이 제안한 아키텍처
  • ResNet 논문 "Deep Residual Learning for Image Recognition"의 제목을 따 ResNet이라 불림
  • ResNet에서는 신경망의 깊이가 깊어짐에 따라 발생하는 훈련 문제를 해결하기 위해 '잔여 학습(Residual Learning)'이라는 개념을 도입
    • 또한, 이전 층의 출력이 다음 층의 입력에 그대로 추가되는 '스킵 연결' 또는 '단순히 지나가는 경로'를 도입하여 신경망의 깊이에 따른 문제의 실마리를 제공
  • ResNet은 최대 152개 층까지 쌓을 수 있게 되었으며, 그래디언트 소실(Vanishing Gradient) 문제와 그래디언트 폭발(Exploding Gradient) 문제를 해결

Residual block


  위 그림에서 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)를 최소화한다.

  • Residual learning : 원래 Output에서 자기자신을 빼는 것이 F(x)의 정의
  • Skip Connection : x가 F(x)를 통과하고 나서 다시 x를 더해줌

ResNet18


  ResNet18은 18개의 층으로 이루어진 ResNet을 의미하는데 244*244*3의 image를 input으로 받는다. 그리고 4개의 Conv block과 Adaptive Average Pooling을 시행한 후 Fully Connected layer(FC layer)를 통과시켜 이미지를 분류한다. 각각의 Conv block은 두 개의 3*3 Conv 레이어로 구성되어 있다.

  • 첫 번째 컨볼루션 레이어:
      입력에서 신경망이 특징을 추출하도록 3×3크기의 필터로 입력 데이터를 합성곱
  • 활성화 함수 (ReLU):
      비선형성을 추가하여 네트워크가 복잡한 패턴을 학습할 수 있도록 컨볼루션 결과에 ReLU 활성화 함수를 적용합니다.
  • 두 번째 컨볼루션 레이어:
      3×3 크기의 필터로 특징을 추출, 첫 번째 레이어의 출력과 동일한 수의 필터를 사용하여 차원을 일치시킵니다.
  • 잔차 연결 (Residual Connection):
     두 번째 컨볼루션 레이어의 출력에 첫 번째 레이어의 입력을 직접 더함. 이는 잔차를 학습하도록 하며, 기울기 소실 문제를 완화시켜 더 깊은 네트워크를 효과적으로 훈련시킴.
  • 활성화 함수 (ReLU):
     잔차 연결 후에도 ReLU 활성화 함수를 적용하여 비선형성을 유지
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

profile
성장하는 삐약이 AI 개발자 지망생

0개의 댓글