YOLOv8을 이용하여 모델을 학습하다보면 학습 중단 후 다시 재개하여 학습햐여 하는 상황이 발생할 수 있습니다. 특히 colab을 사용하면 중간에 런타임이 끊기는 경우가 발생하기 때문에 다시 재개할 때 아래와 같은 과정을 거치면 다시 학습을 시작할 수 있습니다. 단계는 아래와 같습니다.
중단된 시점의 모델 가중치 파일을 로드합니다. 일반적으로 학습 도중에는 체크포인트 파일이 저장되며, 이는 runs/ 디렉토리 내에 위치합니다.
from ultralytics import YOLO
# 기존에 학습된 모델 로드 (예: 'last.pt' 또는 'best.pt')
model = YOLO('runs/detect/train/weights/last.pt')
이전 학습에서 사용한 데이터 설정 파일과 동일한 data.yaml 파일을 사용합니다. 에포크 수를 늘리기 위해 epochs 파라미터를 기존 학습한 에포크 수보다 크게 설정합니다.
# 데이터 설정 파일 경로
data_yaml = 'path/to/data.yaml'
# 총 에포크 수 설정 (예: 이전에 50에포크를 학습했고, 추가로 50에포크를 더 학습하고 싶다면 epochs=100으로 설정)
model.train(data=data_yaml, epochs=100, resume=True)
여기서 중요한 점은:
위의 코드를 실행하면 모델이 이전 학습의 상태를 이어받아 에포크 수를 늘려서 학습을 재개합니다.
# 학습 재개
model.train(data=data_yaml, epochs=100, resume=True)
필요에 따라 학습률(lr0), 배치 크기(batch), 이미지 크기(imgsz) 등의 하이퍼파라미터를 조정할 수 있습니다. 그러나 resume=True 옵션을 사용하는 경우, 옵티마이저 상태를 이어받기 때문에 학습률 등의 설정을 변경하는 것은 권장되지 않습니다.
만약 하이퍼파라미터를 변경하고 싶다면 resume=False로 설정하고 학습을 진행하셔야 합니다. 이 경우 옵티마이저 상태는 초기화되지만, 모델의 가중치는 로드됩니다.
# 하이퍼파라미터를 변경하며 학습 재개 (옵티마이저 상태는 초기화됨)
model.train(
data=data_yaml,
epochs=100,
lr0=0.001, # 새로운 학습률
batch=16, # 새로운 배치 크기
resume=False # 옵티마이저 상태를 초기화하여 학습
)
학습 과정에서 로그와 메트릭을 확인하여 모델의 성능을 모니터링합니다. 필요에 따라 TensorBoard나 다른 시각화 도구를 활용할 수 있습니다.
from ultralytics import YOLO
# 1. 모델 로드
model = YOLO('runs/detect/train/weights/last.pt')
# 2. 데이터 설정 파일 경로
data_yaml = 'path/to/data.yaml'
# 3. 학습 재개
model.train(
data=data_yaml,
epochs=100, # 총 학습 에포크 수 (예: 이전 50에포크 + 추가 50에포크)
resume=True # 이전 학습 상태를 이어서 학습
)
# 4. (선택 사항) 하이퍼파라미터를 변경하며 학습 재개
# model.train(
# data=data_yaml,
# epochs=100,
# lr0=0.001,
# batch=16,
# resume=False # 옵티마이저 상태 초기화
# )
Labelme 이미지 어노테이션 툴 소개 및 사용 방법 (1) | 2024.11.01 |
---|---|
YOLOv8 사용하는 법 (Python API 활용) (1) | 2024.10.30 |