개발 | 프로젝트

[YOLO] YOLOv5 모델 학습 / 예제 코드

seulll 2025. 5. 8. 13:54

 

 

[YOLO] Roboflow로 라벨링하기 (Multiclass Classification)

YOLO란?YOLO는 "You Only Look Once"의 약자로, 이미지에서 객체를 한 번에 찾아내는 실시간 객체 탐지 모델입니다.기존 방식은 이미지 안에서 일부분씩 잘라가며 분석했지만,YOLO는 이미지를 한 번에 쭉

seulow-down.tistory.com

위의 글에서 이어, Roboflow로 라벨링 작업을 한 데이터셋을 바탕으로 실제 YOLOv5 모델을 학습시켜보겠습니다. 

 

✅  YOLOv5 깃허브 클론

git clone https://github.com/ultralytics/yolov5
cd yolov5
pip install -r requirements.txt

 

 

✅  학습 예제 코드 

아래의 코드로 생각보다 간단히 학습을 돌릴 수 있습니다.

import subprocess

subprocess.run([
    "python", "train.py",
    "--img", "416",                       # 이미지 크기
    "--batch", "16",                      # 배치 크기
    "--epochs", "50",                     # 학습 횟수
    "--data", "dataset/data.yaml",        # 데이터 설정 파일 경로
    "--weights", "yolov5s.pt",            
    "--name", "custom-model",   
    "--device", "0",                      # GPU 사용 (GPU 0번 사용)
    "--exist-ok"                         
])

 

  • yolov5s.pt: 경량화된 YOLOv5 모델
  • 결과는 /runs/train/custom-model 폴더에 저장됨

 

 

✅ 학습 결과 확인

  • results.png: Precision/Recall 그래프 등 시각화
  • weights/best.pt: 가장 성능 좋은 모델 (추론할 때 사용)

학습이 끝나면 위와 같은 결과 파일이 생성됩니다.

 

YOLOv5는 학습 중 매 epoch마다 validation 데이터를 기준으로 모델의 성능을 평가합니다.

이때 mAP(mean Average Precision) 등의 지표를 기준으로 가장 성능이 좋았던 시점의 모델을 runs/train/모델이름/weights/best.pt에 저장합니다. best.pt 모델을 이용해 실제 이미지에 대해 객체 탐지를 수행할 수 있습니다.