[딥러닝 프로젝트] 5강. 사전 훈련된 CNN 모델 | ③강아지와 고양이 사진 분류 모델의 성능 개선하기
- 레즈넷(ResNet)은 카이밍 허가 제안한 딥러닝 모델로, 컴퓨터 비전 분야에 큰 영향을 미쳤습니다. 🧠
- 핵심 기술은 '잔차 블록(Residual Block)'과 '스킵 연결(Skip Connection)'로, 깊은 네트워크 훈련 시 발생하는 기울기 소실 문제를 해결하여 더 깊은 층을 쌓을 수 있게 합니다. 🔗
- 스킵 연결은 입력 신호를 여러 층을 건너뛰어 출력에 직접 더함으로써, 오차 기울기가 효과적으로 전달되도록 돕습니다. 🛣️
- '배치 정규화(Batch Normalization)'를 도입하여 모델 훈련 속도와 안정성을 크게 향상시켰으며, 이는 이후 다양한 모델에 널리 적용되었습니다. ⚖️
- 레즈넷은 층의 개수에 따라 ResNet-18, 34, 50, 101, 152 등 다양한 버전이 있으며, 깊은 모델(50 이상)은 '병목 블록(Bottleneck Block)' 구조를 사용하여 연산 효율을 높입니다. 🏗️
- 병목 블록은 1x1 합성곱으로 채널을 줄였다가 3x3 합성곱 후 다시 1x1 합성곱으로 채널을 늘리는 방식으로 구성됩니다. ⏳
- 배치 정규화는 각 배치 내 샘플의 평균과 분산을 사용하여 층의 출력을 정규화하며, 훈련 가능한 감마(gamma)와 베타(beta) 파라미터로 분포를 조절합니다. 📊
- 레즈넷-50 모델은 초기 전처리 단계, 여러 개의 잔차 스택(Residual Stacks), 전역 평균 풀링(Global Average Pooling), 그리고 최종 완전 연결층으로 구성됩니다. 🏛️
- 구현 시에는 Keras 함수형 API를 활용하며, 잔차 스택 내 첫 번째 블록에서 스트라이드(stride)를 조절하여 특성 맵의 크기를 줄이거나, 스킵 연결 시 채널 개수를 맞추기 위한 추가적인 1x1 합성곱을 사용합니다. 💻
build_stack 함수를 통해 잔차 블록의 개수와 채널 구성을 유연하게 변경하여 ResNet-101, 152 등 다른 버전도 쉽게 구현할 수 있습니다. 🛠️
데브허브 | DEVHUB | [딥러닝 프로젝트] 5강. 사전 훈련된 CNN 모델 | ③강아지와 고양이 사진 분류 모델의 성능 개선하기