[Coursera/IBM course #6] Capstone Project 메모

2025. 7. 20. 18:03·🥇 certification logbook
728x90
반응형

 

 

 

 

[IBM course #6] AI Capstone Project with Deep Learning

 

6번째 코스는 AI Capstone Project로, ResNet을 이용하여 정상 이미지 / 이상 이미지를 분류하는 모델을 만드는 프로젝트를 진행한다.

단계별로 실습을 진행하면서, 마지막에는 학습 결과를 제출하고 peer review를 받으면 마무리되는 코스이다.

실습을 진행하면서 정리해 두면 좋을 것들을 가볍게 메모하는 수준으로 게시글을 남겨두려 한다.

 

1. Dataset - 슬라이싱 문법

현업에서는 파이썬을 잘 사용하지 않아서 이런 게 튀어나올 때마다 당황한다ㅠ 그리고 공부해도 금방 까먹음 휴

 

from torch.utils.data import Dataset를 상속해서 사용자 정의 데이터셋 만들기

 

여기에서,

self.all_files[::2] = positive_files  # 0, 2, 4, ...
self.all_files[1::2] = negative_files # 1, 3, 5, ...

 

::2는 슬라이싱(slicing) 문법 

list[start:stop:step]


항목 의미
start 시작 인덱스 (생략 시 0부터)
stop 끝 인덱스 (생략 시 끝까지)
step 간격 (1칸 간격 기본)

 

즉,
list[::2] 는 처음부터 끝까지, 2칸씩 건너뛰며 가져오라는 의미.

list[1::2] 는 1부터 끝까지, 2칸씩 건너뛰며 가져오라는 의미로,

self.all_files 내부에는 짝수에 positive, 홀수에 negative가 위치하게 된다.

 

마찬가지로, 라벨도

self.Y[::2] = 1  # positive 라벨
self.Y[1::2] = 0  # negative 라벨

 

2. Model - ResNet-18을 이진 분류용으로 커스터마이징 하기

model = models.resnet18(pretrained=True)


ResNet-18 모델을 사전 학습된(pretrained) 가중치로 불러오고, (ImageNet으로 학습된 가중치 사용하게 됨)

for param in model.parameters():
    param.requires_grad= True



모델의 모든 파라미터를 학습 가능하게 설정한다.
(역전파 시에 해당 파라미터들이 업데이트 되게 된다. 만약 false로 하면, 학습이 되지 않고 feature extractor로만 사용하게 된다)

model.fc = nn.Linear(in_features=512, out_features=2)


ResNet의 마지막 fully connected layer(=classifier)를 이진 분류용으로 교체한다.
(기존 ResNet-18의 out_features는 ImageNet 클래스 수에 맞춰져 있으므로, 이를 이진 분류로 바꾸기 위해 2로 바꿔준다. in_features가 512인 이유는, ResNet-18의 마지막 feature map에 나오는 feature의 크기가 512이기 때문임. 고정값)

 

3. Model - 손실함수와 옵티마이저 설정

criterion = nn.CrossEntropyLoss()


다중 클래스 분류에서 자주 쓰이는 손실 함수
출력값이 클래스별 확률(logit)이고, 정답 라벨이 정수형(예: 0, 1) 일 때 사용

optimizer = torch.optim.Adam([parameters for parameters in model.parameters() if parameters.requires_grad],lr=0.001)


Adam 옵티마이저: Momentum + RMSprop의 장점을 합친 대표적인 최적화 알고리즘
여기서 
"[parameters  for parameters in model.parameters() if parameters.requires_grad]"를 한 이유는
고정된 파라미터(frozen)는 제외하고 학습 가능한 것만 업데이트하기 위해서

 

4. Model - 학습 및 평가

학습

1. model.train() : 학습 모드 설정 (Dropout, BatchNorm이 동작하도록)
2. optimizer.zero_grad(): 기존 gradient 초기화
3. model(x): 예측값 생성 (logits)
4. loss = criterion(...): 예측값과 실제값으로 손실 계산
5. loss.backward(): 역전파 (gradient 계산)
6. optimizer.step(): 파라미터 업데이트

 

평가

1. model.eval(): 평가 모드로 전환 (Dropout 등 꺼짐)
2. torch.no_grad(): 평가 시에는 gradient 계산 안 함 (메모리/속도 절약)
3. torch.argmax(outputs, dim=1): 클래스 예측 (logit 중 가장 큰 값 선택)

728x90
반응형

'🥇 certification logbook' 카테고리의 다른 글

[Coursera/IBM course #7] Data preparation for LLMs  (8) 2025.07.26
[Coursera/IBM course #7] 생성형 AI (Generative AI)  (5) 2025.07.23
[Coursera/IBM course #5] Convolution 연산 기본 개념  (4) 2025.07.19
[Coursera/IBM course #5] 신경망 (Neural Net)  (1) 2025.07.16
[Coursera/IBM course #5] Softmax  (0) 2025.07.13
[Coursera/IBM course #4] Linear Regression Prediction  (0) 2025.06.14
[Coursera/IBM course #4] Dataset  (0) 2025.06.07
[Coursera/IBM course #4] Tensors  (2) 2025.06.07
'🥇 certification logbook' 카테고리의 다른 글
  • [Coursera/IBM course #7] Data preparation for LLMs
  • [Coursera/IBM course #7] 생성형 AI (Generative AI)
  • [Coursera/IBM course #5] Convolution 연산 기본 개념
  • [Coursera/IBM course #5] 신경망 (Neural Net)
이소야
이소야
✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 이소야
    I study SO
    이소야
    ✔ 공부 기록 ٩(๑•̀o•́๑)و
  • 전체
    오늘
    어제
    • 분류 전체보기 (223)
      • 🤖 ai logbook (39)
      • 💻 developers logbook (1)
      • 🥇 certification logbook (73)
      • ⚖️ legal logbook (108)
      • ⚡ electronics logbook (1)
      • 🌍 english logbook (0)
      • 🎁 etc (1)
  • 최근 글

  • 인기 글

  • 태그

    머신러닝
    형법
    데이터사이언스 입문
    방통대
    온라인 강의 추천
    근로기준법
    certificate
    법학과
    deeplearning
    IBM
    인공지능
    기본권의기초이론
    Python
    데이터분석준전문가
    Coursera
    인공지능 입문
    자격증
    ADsP
    민법
    datascience
  • hELLO· Designed By정상우.v4.10.3
이소야
[Coursera/IBM course #6] Capstone Project 메모
상단으로

티스토리툴바