| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 회고
- 혼공
- 프리미어프로
- 맛있는디자인스터디12기
- 혼공머신
- 혼공바
- 챌린지
- 혼만딥
- CC2023
- 맛있는디자인스터디13기
- 바이브코딩
- 스터디
- 전면개정2판
- Doit점프투파이썬
- Doit파이썬스터디
- 혼공C
- 후기
- 혼공분석
- 혼공파
- 혼공자
- 3주차후기
- 제이펍
- 진짜쓰는일러스트레이터
- CS2023
- 애프터이펙트
- 6주차후기
- 혼공JS
- 혼공단
- 맛있는디자인
- 혼공학습단
- Today
- Total
애독자's 공부방
[혼만딥] 3주차 _ 혼자 만들면서 공부하는 딥러닝 본문
혼공단 - 혼만딥, 혼자 만들면서 공부하는 딥러닝
■ 시작에 앞서..
지난주, 2주차 우수 혼공족으로 선정되어 롯데리아 아이스크림을 받았습니다. 집에서 다소 떨어져 있어 아직 맛보진 못했지만, 그 덕분에 이번 주 숙제는 달콤한 에너지를 얻어 더욱 즐겁게 시작할 수 있었습니다. 사실 이번주에도 꼭 우수 혼공족에 선정되고 싶은 마음에, 평소보다 더 열정적으로 임했습니다.
하지만... 그 달콤함 뒤에는 족장님의 특별 미션이 숨어 있었으니! "동의하지 않는 자는 혀로 팔꿈치를 핥으시오." 라는, 듣기만 해도 아찔하고 인간의 신체 구조상 불가능에 가까운 미션이었습니다. 이 난해한 미션을 해결하기 위해 갑자기 요가 학원에 등록해 유연성을 극대화해야 할지, 아니면 꼭 자기 팔이라고는 안하셨으니 다른 사람(어쩌면 족장님?)의 팔꿈치를 핥아야 하나 고민하는 등, 불가능을 가능하게 만들 창의적인 고민으로 꽤나 고심했습니다.
어찌 됐든, 이처럼 '생각의 틀을 깨는' 미션과 씨름하며 저는 이번 주차 미션인 CNN 모델을 활용한 이미지 분류에 몰입했습니다. 특히 VGGNet과 ResNet 같은 유명 모델들의 구조를 깊이 파고들어 그 성능을 직접 비교해보는 실습을 진행했으며, 이론으로만 접하던 모델들이 실제 이미지 분류에서 어떻게 작동하는지 체험하는 과정은 정말 흥미로웠습니다.

■ 공부한 내용
| # | 진도 | 기본 숙제(필수) | 추가 숙제(선택) |
| 3주차 (7/14 ~ 7/20) |
Chapter 02 | Ch.02(02-2) VGGNet 또는 ResNet으로 고양이/강아지 이미지 분류하고 결과 화면 캡처하기 | Ch.02(02-1, 02-2, 02-3)AlexNet, VGGNet, ResNet 중 하나를 골라 모델 구조를 그림 또는 표로 정리하기 |

□ Chapter 02.사전 훈련된 CNN 모델로 강아지와 고양이 사진 분류하기
▷ 02-1. 이미지 분류 CNN 모델 만들기
1. 이미지넷 대회: 2010년 부터 2017년까지 열린 컴퓨터 비전 경연 대회
- 대회에서 제공하는 데이터셋은 1,000개의 클래스와 1백만 개 이상의 이미지로 구성
- 합성곱 신경망의 발전에 큰 영향을 미친 대회로, 인공지능 분야에서는 이에 영감을 받아 많은 대회와 벤치마크 데이터셋이 생성
2. AlexNet: 2012년 제프리 힌튼 팀이 만든 모델로, 이미지넷 대회에 CNN을 처음 도입하여 큰 차이로 우승을 차지한 모델
- 렐루 활성화 함수와 최대 풀링을 사용했고 완결 연결층 사이에 드롭아웃을 적용
3. VGGNet: 옥스포드 대학의 VGG 팀에서 만든 CNN 모델로, 2014년 이미지넷 대회에서 준우승을 차지
- 이전 신경망과 달리 여러 번의 합성곱층 다음에 풀링층을 적용하는 방식을 채택
- 동일한 구조를 여러 번 반복하여 깊은 신경망을 구성
▷ 02-2. 강아지와 고양이 사진 분류하기
1. keras.applications 모듈: 컴퓨터 비전 문제에 활용할 수 있는 다양한 사전 훈련된 모델을 제공
- 케라스에 내장되어 있기 때문에 현재 당면한 문제를 풀기 위해 어떤 모델을 적용할 수 있는지 빠르게 판단하는 데 도움
- 자연어 처리 분야에서 사용할 수 있는 사전 훈련된 모델은 KerasNLP 패키지로 제공
2. 이미지 전처러: 사전 훈련된 합성곱 신경망을 사용해 예측을 만들기 전에 수행해야 하는 필수 작업
- 신경망 모델은 저마다 기대하는 입력의 크기와 값의 범위가 다르며, 경우에 따라 컬러 채널의 순서도 다를 수 있는데, 이는 대부분 모델을 사전 훈련할 때 특정 방식의 전처리를 채택했기 때문
- 따라서 모델을 사용하기 전에 어떤 식의 전처리가 필요한지 검토
▷ 02-3. 강아지와 고양이 사진 분류 모델의 성능 개선하기
1. ResNet: 마이크로소프트 연구원들이 만든 신경망으로, 2015년에 이미지넷 대회에서 우승을 차지
- ResNet은 잔차 블록과 배치 정규화를 사용하여 매우 깊은 층을 쌓은 신경망을 구성
2. 잔차 블록: ResNet 신경망에서 도입한 핵심 구성 요소로, 입력을 합성곱층의 출력에 더하는 스킵 연결을 가짐
- 스킵 연결은 오차 그레이디언트를 효과적으로 전파할 수 있는 통로 역할을 하므로 신경망의 층을 깊게 쌓아 높은 성능을 발휘
- 잔차 블록은 1x1 합성곱을 사용하여 입력 차원을 감소시켜 계산 효율성을 높이도록 구성
3. 배치 정규화: 신경망 층의 출력을 정규화하기 위한 기법 중 하나로, 일반적인 표준화 방식과 비슷하게 평균과 분산을 사용해 층의 출력을 정규화
- 단, 이 평균과 분산은 전체 훈련 세트가 아니라 배치에서 계산한 값으로, 정규화로 인해 뒤따르는 활성화 함수의 효용성이 감소되지 않도록 정규화된 값의 스케일을 조정하고 이동
- 실전에서는 훈련이 끝난 후 평균과 분산을 계산한 배치가 없을 수 있기에, 훈련하는 동안 각 배치의 평균과 분산의 이동 평균을 구하여 훈련이 끝난 후 예측을 수행할 때 사용
■ 기본 숙제
▷ Ch.02(02-2) VGGNet 또는 ResNet으로 고양이/강아지 이미지 분류하고 결과 화면 캡처하기
- VGGNet(VGG16) 및 ResNet50 모델을 활용하여 강아지/고양이 이미지를 분류했습니다. ResNet50은 VGGNet보다 훨씬 깊은 구조(50개 레이어)라 학습이 어려울 수 있지만, 잔차 블록(Residual Blocks)과 잔차 스택 덕분에 안정적인 학습과 높은 분류 정확도를 보였습니다.
- 특히, VGG16이 비글 이미지를 잉글리시 폭스하운드로 잘못 인식했지만, ResNet50은 비글로 정확히 분류했습니다. 이는 ResNet50이 잔차 블록과 스택으로 미묘한 시각적 특징을 더 잘 포착했을 것이라고 생각합니다.

■ 추가 숙제(선택)
▷ Ch.02(02-1, 02-2, 02-3)AlexNet, VGGNet, ResNet 중 하나를 골라 모델 구조를 그림 또는 표로 정리하기
- 저는 이 중에서 VGGNet 모델을 선정했고, 해당 계열 중 가장 널리 알려지고 많이 사용되는 VGG16을 가지고 정리했습니다.
- 모델 구조를 직접 손으로 그리거나 복잡한 도구를 사용하기 보다는 Keras 라이브러리가 제공하는 기본 기능을 활용
- 책에도 소개된 model.summary() 메서드를 통해 모델의 계층 구성과 파라미터 수를 표로 요약
- plot_model 을 사용해서 모델의 연결관계를 시각화 (다이어그램 생성)
- VGG16 모델 구조 요약
| No. | 유형 | 주요 구성요소 | summary() 정보 | plot_model 정보 | 역할 및 특징 |
| 1 | Input | InputLayer | (None, 224, 224, 3) | (None, 224, 224, 3) | 이미지 입력 형태 정의 (높이, 너비, 채널 수) |
| 2 | Conv Blocks | Conv2D, ReLU | 레이어 이름, Output Shape, Param # | 사각형 블록, 채널 수 증가, 해상도 유지 | 이미지 특징 추출 (3x3 필터), ReLU로 비선형성 추가 |
| 3 | Pooling Layers | MaxPooling2D | 레이어 이름, Output Shape | Conv 블록 사이, 해상도 절반 감소 | 이미지 크기 압축 (다운샘플링), 중요 특징 보존, 과적합 방지, 불변성 증대 |
| 4 | Flatten | Flatten | 레이어 이름, 1차원 Output Shape | MaxPool 이후, 3D 특징 맵 → 1D 벡터 변환 | 3차원 특징 맵을 Dense층을 위한 1차원 벡터로 변환 |
| 5 | Dense Layers | Dense | 레이어 이름, Output Shape, Param # | Flatten 이후의 블록 | 고수준 특징 학습, 추상적 표현 생성, ReLU 활성화 |
| 6 | Output Layer | Dense | 레이어 이름, (None, 1000) | 마지막 블록 | 최종 예측 출력 (1000개 클래스), Softmax로 확률 분포 제공 |

'머신러닝+딥러닝 > 혼공학습단 14기' 카테고리의 다른 글
| [혼만딥] 6주차 _ 혼자 만들면서 공부하는 딥러닝 (4) | 2025.08.14 |
|---|---|
| [혼만딥] 5주차 _ 혼자 만들면서 공부하는 딥러닝 (6) | 2025.08.04 |
| [혼만딥] 4주차 _ 혼자 만들면서 공부하는 딥러닝 (1) | 2025.07.22 |
| [혼만딥] 2주차 _ 혼자 만들면서 공부하는 딥러닝 (1) | 2025.07.07 |
| [혼만딥] 1주차 _ 혼자 만들면서 공부하는 딥러닝 (2) | 2025.07.02 |