DS가 되기 위한 여정 👩‍💻

Projects/Comento_cctv_object_detection

[trouble_shooting] yolov5랑 8, 11은 wandb 결과 값이 다름. 굳이 같게 x

Tashapark 2025. 3. 21. 19:33
728x90
반응형

- 어제 계속 학습을 돌리고 또 돌리고.. 또 돌리고.. 

...

 

1. wandb..... 결과가 5버전이랑 8,11 버전이 다름 

 

- ^^ 그냥 yolo 5버전이 다른 만큼 결과도 다름..

- 같게 뽑아보려고 했으나,,, 그냥 로스율을 train과 val 버전 별로 수집을 따로 하지 않고 전체로 함. 

- 5버전은 자세하게 나왔는데 내 것은 안 됐음. 

- 업그레이드도 해봤으나... 8, 11 버전은 안 됐음. 

# 울트라틱스 임포트 업그레이드
#!pip install ultralytics --upgrade

- 5버전은 간단히 그래프로 볼 수도 있었음.

 

- 8, 11 버전은 이 정도로만 나왔음. 

 

- 결과 값에서 위 처럼 해보려고 했는데.. 자세하게 안 나와서.. 포기했음. 그래도 필요한 정보들은 다 나오고, 이건 반올림 값이 나와서 자세하게 보고 싶으면 metric 출력해서 확인이 가능함. 

# 성능평가 코드 시
from ultralytics import YOLO

# YOLOv8 모델 로드
model = YOLO("모델 경로/best.pt")

# 검증 실행
metrics = model.val(data='데이터 경로/data.yaml', imgsz=224, batch=60)

# 출력된 검증 결과 확인
print(metrics)

 

- 다만... wandb에 억지로 넣어도 적용이 안 됐음..

- 아래는 욜로 5 결과

 

- 아래는 욜로 8 결과이고, 억지로 결과 값들 넣어봤는데 그냥 빈공간으로 떴음. 

- but, 특이하게도 모델 폴더에 결과값이 png로 저장되어 있기는 했음.

 

 

2. 욜로5는 ...GPU 명시하지 말 것..

- --device gpu 명시하니깐 갑자기 성능이 박살났고,

1.7시간 걸리던게 3.5시간 걸려서 바로 폐기했음

!python yolov5/train.py --img 224 --batch 64 --epochs 10 --data 경로/data.yaml --cfg yolov5/models/yolov5s.yaml --weights yolov5s.pt --name yolov5s_batch64_epoch10 --patience 5 --device gpu

- 한 번 학습을 새로 돌리면, 이전에 이미 저장된 best.pt 값이 있어도... 분명히 폴더는 숫자1을 추가해서 저장이 됨에도 사라져버림.

- 이제.. 새로운 사진 넣어서 돌리고 제출하면 됐는데.. 다시 돌리는 중임. 

 

- 그냥 학습 모델 위에 셀에서 아래 정도로만 하고 넘길 것. 

- 원래 이렇게 돌렸는데, 모델 비교하면서 GPU_메모리를 확인하려고 했는데 없어서 위처럼 명시한건 데 안 됐음.

- 이젠.. yolov5를 쓰는 분들이 많이 없겠지만.. 혹시나 그럴 것이라면 주의하시길.

import torch
print(torch.__version__)  # PyTorch 버전 확인
# MPS는 M1 GPU에서 Metal API를 사용하는 PyTorch 백엔드입니다.
print(torch.backends.mps.is_available())  # M1 GPU(Metal)가 사용 가능한지 확인

#torch는 gpu를 기본값으로 쓰도록 설정 
device = torch.device("mps")

 

 

3. 학습 배치 != 검증배치

 

- 이 부분은 헷갈려서 gpt에게 물어봤음 

왜 학습 배치(train)랑 검증 배치(val) 크기가 달라도 되나?

  • 학습(train)에서는 배치 크기가 크면 GPU 활용도가 올라가고 학습 속도가 빨라짐.
  • 검증(val)에서는 가중치가 고정된 상태에서 성능을 측정하는 거라 배치 크기가 커도 작아도 성능 평가엔 영향 없음.
  • 검증에서는 속도와 메모리 사용량을 고려해서 배치 크기를 조절할 수 있음.

🔹 결론:
👉 배치 크기(batch_size)와 에폭(epochs)을 학습 결과로 비교하는 건 맞는 튜닝 방법!
👉 검증(val.py) 때는 학습 배치 크기를 그대로 쓸 필요 없고, 메모리에 맞게 조정 가능!

728x90
반응형