의문점 정리
- model.train에서 조정해야할 parameter
- data
- yaml 형태로 된 custom dataset.yaml
- TODO: coco8.yaml을 보고, 어떤 식으로 custom dataset.yaml을 설정해야할지 고민
- epochs
- TODO: 기본값이 100인데, fine tuning의 경우 얼마로 설정하면 좋을지
- batch
- imgsz:
- device: GPU로 설정하면 됨
- project: TODO 훈련 출력이 저장되는 프로젝트 디렉토리 이름
- name: TODO 훈련 실행 이름으로, 프로젝트 폴더 내에 서브디렉토리를 생성하는 데 사용
- single_cls
- 멀티 클래스 데이터셋을 단일 클래스로 처리합니다.
- 이진 분류 작업이나 객체 존재에 중점을 둘 때 유용합니다. 기본값: False
- TODO: 공 인지, 아닌지 역할로만 사용할 것이면, 해당 Option에 대해 탐구해 봐야하나?
- resume
- 마지막 저장된 체크포인트에서 훈련을 재개
- 기본값이 False인데, True로 설정해야 할듯.
- freeze
- 모델의 첫 N 레이어 또는 인덱스로 지정된 레이어를 고정하여 훈련 가능한 매개변수 수를 줄입니다. 미세 조정이나 전이 학습에 유용합니다. 기본값: None
- TODO: freeze를 할건지, 하면 어느 레이어까지 freeze를 할 것인지 정해야함
- plots
- 훈련 및 검증 지표, 예측 예시의 그래프를 생성하고 저장하여 모델 성능 및 학습 진행에 대한 시각적 통찰을 제공
- 기본값이 False인데, True로 해야하나?
사용법
from ultralytics import YOLO
model = YOLO('yolov8n.yaml')
model = YOLO('yolov8n.pt')
model = YOLO('yolov8n.yaml').load('yolov8n.pt')
results = model.train(data='coco8.yaml', epochs=100, imgsz=640, device=0)
results = model.train(data='coco8.yaml', epochs=100, imgsz=640, device=[0, 1])
results = model.train(data='coco8.yaml', epochs=100, imgsz=640, device='mps')
사용법 2
- Dataset format
- YOLO detection dataset format can be found in detail in the Dataset Guide.
- To convert your existing dataset from other formats (like COCO etc.) to YOLO format, please use JSON2YOLO tool by Ultralytics.
Resuming Interrupted Trainings
- When training is resumed, Ultralytics YOLO loads the weights from the last saved model and
- also restores
- the optimizer state,
- learning rate scheduler,
- epoch number.
- This allows you to continue the training process seamlessly from where it was left off.
from ultralytics import YOLO
model = YOLO('path/to/last.pt')
results = model.train(resume=True)
- Remember that checkpoints are saved
at the end of every epoch by default
, or at fixed interval using the save_period argument
, so you must complete at least 1 epoch to resume a training run.
model.train의 hyperparameter
- model:
- 사전 훈련된
.pt
모델 또는 .yaml
설정 파일의 경로를 받습니다. 모델 구조를 정의하거나 가중치를 초기화하는 데 필수적입니다. 기본값: None
- data:
- 데이터셋 설정 파일 경로 (예:
coco8.yaml
).
- 훈련 및 검증 데이터 경로, 클래스 이름, 클래스 수 등 데이터셋 특정 파라미터를 포함. 기본값:
None
- TODO: custom dataset은 어떻게?
- epochs:
- 훈련할 총 에포크 수. 한 에포크는 전체 데이터셋에 대한 완전한 패스를 나타냅니다.
- 기본값:
100
- time:
- 최대 훈련 시간(시간 단위).
- 설정된 경우 에포크 인수를 무시하고 지정된 기간 후 자동으로 훈련을 중단합니다.
- 시간 제약이 있는 훈련 시나리오에 유용합니다. 기본값:
None
- patience:
- 검증 지표가 개선되지 않을 경우 조기 종료 전까지 대기할 에포크 수
- 성능이 정체될 때 훈련을 중단함으로써 과적합을 방지합니다. 기본값:
100
- batch:
- 훈련 시 배치 크기로, 모델의 내부 매개변수가 업데이트되기 전에 처리되는 이미지 수
- AutoBatch (
batch=-1
)는 GPU 메모리 사용량에 따라 동적으로 배치 크기를 조정합니다. 기본값: 16
- imgsz:
- 훈련을 위한 대상 이미지 크기입니다.
- 모든 이미지는 모델에 입력되기 전 이 크기로 조정됩니다.
- 모델 정확도와 계산 복잡성에 영향을 줍니다. 기본값:
640
- save_period:
- 모델 체크포인트 저장 빈도를 에포크 단위로 지정합니다.
-1
은 이 기능을 비활성화합니다.
- 장기 훈련 세션 중 중간 모델을 저장하는 데 유용합니다. 기본값:
-1
- cache:
- 데이터셋 이미지를 메모리(
True
/ram
), 디스크(disk
)에 캐시하거나 비활성화(False
)합니다.
- 디스크 I/O를 줄임으로써 훈련 속도를 향상시키지만 메모리 사용량이 증가할 수 있습니다. 기본값:
False
- device:
- 훈련을 위한 계산 장치를 지정합니다.
- 단일 GPU (
device=0
), 다중 GPU (device=0,1
), CPU (device=cpu
), 또는 Apple 실리콘용 MPS (device=mps
). 기본값: None
- workers: 데이터 로딩을 위한 작업자 스레드 수 (멀티 GPU 훈련 시 RANK당). 데이터 전처리 및 모델로의 피딩 속도에 영향을 미칩니다. 기본값:
8
- project:
- 훈련 출력이 저장되는 프로젝트 디렉토리 이름입니다.
- 서로 다른 실험을 조직적으로 저장할 수 있습니다. 기본값:
None
- name:
- 훈련 실행 이름으로, 프로젝트 폴더 내에 서브디렉토리를 생성하는 데 사용
- 훈련 로그 및 출력이 저장됩니다. 기본값:
None
- exist_ok:
True
인 경우 기존의 프로젝트/이름 디렉토리를 덮어쓸 수 있습니다.
- 수동으로 이전 출력을 지우지 않고도 반복적인 실험을 할 수 있습니다. 기본값:
False
- pretrained:
- 사전 훈련된 모델에서 훈련을 시작할지 여부를 결정합니다.
- 불린 값이거나 특정 모델에서 가중치를 로드할 경로일 수 있습니다.
- 훈련 효율과 모델 성능을 향상시킵니다. 기본값:
True
- optimizer:
- 훈련에 사용할 최적화 도구를 선택합니다. SGD, Adam, AdamW, NAdam, RAdam, RMSProp 등이 있으며, 모델 구성에 따라 자동으로 선택하도록
auto
도 가능합니다. 수렴 속도 및 안정성에 영향을 줍니다. 기본값: 'auto'
- verbose: 훈련 중 상세 출력을 활성화하여 상세 로그 및 진행 상황 업데이트를 제공합니다. 디버깅 및 훈련 과정을 면밀히 모니터링하는 데 유용합니다. 기본값:
False
- deterministic: 결정적 알고리즘 사용을 강제하여 재현성을 보장하지만, 비결정적 알고리즘에 대한 제한으로 인해 성능 및 속도가 영향을 받을 수 있습니다. 기본값:
True
- single_cls:
- 멀티 클래스 데이터셋을 단일 클래스로 처리합니다. 이진 분류 작업이나 객체 존재에 중점을 둘 때 유용합니다. 기본값:
False
- rect:
직사각형 훈련을 활성화하여 최소 패딩으로 배치 구성을 최적화
합니다.
- 효율성과 속도를 개선할 수 있지만 모델 정확도에 영향을 줄 수 있습니다. 기본값:
False
- cos_lr: 에포크를 거듭하면서 코사인 곡선을 따라 학습률을 조정하는 코사인 학습률 스케줄러를 사용합니다. 더 나은 수렴을 위해 학습률을 관리하는 데 도움이 됩니다. 기본값:
False
- close_mosaic:
- 훈련 종료 전 마지막 N 에포크 동안 모자이크 데이터 증강을 비활성화하여 훈련을 안정화합니다.
0
으로 설정하면 이 기능을 비활성화합니다. 기본값: 10
- resume:
- 마지막 저장된 체크포인트에서 훈련을 재개합니다. 모델 가중치, 최적화 상태 및 에포크 수를 자동으로 로드하여 훈련을 원활하게 계속합니다. 기본값:
False
- amp: 자동 혼합 정밀도(AMP) 훈련을 활성화하여 메모리 사용을 줄이고 정확도에 최소한의 영향을 미치면서 훈련 속도를 높일 수 있습니다. 기본값:
True
- fraction: 훈련에 사용할 데이터셋의 비율을 지정합니다. 실험을 위하거나 리소스가 제한될 때 전체 데이터셋의 일부를 사용하는 데 유용합니다. 기본값:
1.0
- profile: 훈련 중 ONNX 및 TensorRT 속도 프로파일링을 활성화하여 모델 배포를 최적화하는 데 도움이 됩니다. 기본값:
False
- freeze:
- 모델의 첫 N 레이어 또는 인덱스로 지정된 레이어를 고정하여 훈련 가능한 매개변수 수를 줄입니다. 미세 조정이나 전이 학습에 유용합니다. 기본값:
None
- lr0: 초기 학습률입니다. 이 값의 조정은 최적화 과정에서 중요하며 모델 가중치가 얼마나 빠르게 업데이트될지에 영향을 미칩니다. 기본값:
0.01
- lrf: 초기 학습률의 비율로 최종 학습률을 설정합니다 (lr0 * lrf), 스케줄러와 함께 시간이 지남에 따라 학습률을 조정하는 데 사용됩니다. 기본값:
0.01
- momentum:
- SGD의 모멘텀 인자 또는 Adam 최적화 도구의 beta1 값을 나타냅니다. 현재 업데이트에서 과거 기울기를 얼마나 통합할지에 영향을 줍니다. 기본값:
0.937
- weight_decay:
- L2 정규화 항으로, 큰 가중치에 대한 패널티를 부과하여 과적합을 방지합니다. 기본값:
0.0005
- warmup_epochs:
- 학습률 워밍업을 위한 에포크 수로, 낮은 값에서 초기 학습률까지 점차적으로 학습률을 증가시켜 훈련 초기에 안정성을 높입니다. 기본값:
3.0
- warmup_momentum:
- 워밍업 단계의 초기 모멘텀으로, 설정된 모멘텀으로 점차 조정됩니다. 기본값:
0.8
- warmup_bias_lr: 워밍업 단계 동안 편향 매개변수의 학습률로, 초기 에포크에서 모델 훈련을 안정화하는 데 도움이 됩니다. 기본값:
0.1
- box: 손실 함수에서 박스 손실 구성 요소의 가중치로, 경계 상자 좌표를 정확하게 예측하는 데 얼마나 많은 강조를 두는지에 영향을 줍니다. 기본값:
7.5
- cls: 전체 손실 함수에서 분류 손실의 가중치로, 다른 구성 요소에 비해 올바른 클래스 예측의 중요성에 영향을 줍니다. 기본값:
0.5
- dfl: 세분화된 분류를 위해 특정 YOLO 버전에서 사용되는 분포 초점 손실의 가중치입니다. 기본값:
1.5
- pose:
- 자세 추정을 위해 훈련된 모델에서 자세 키포인트를 정확하게 예측하는 데 중점을 두는 자세 손실의 가중치입니다. 기본값:
12.0
- TODO: 0으로 설정해야하나?
- kobj:
- 자세 추정 모델에서 키포인트 객체성 손실의 가중치로, 탐지 확신과 자세 정확성을 균형 있게 유지합니다. 기본값:
2.0
- TODO: 0으로 설정해야하나?
- label_smoothing: 레이블 스무딩을 적용하여 하드 레이블을 대상 레이블과 레이블에 대한 균일 분포의 혼합으로 완화시킵니다. 일반화를 개선할 수 있습니다. 기본값:
0.0
- nbs: 손실 정규화를 위한 명목 배치 크기입니다. 기본값:
64
- overlap_mask: 훈련 중 분할 마스크가 겹치도록 설정합니다. 인스턴스 분할 작업에 적용됩니다. 기본값:
True
- mask_ratio: 분할 마스크의 다운샘플 비율로, 훈련 중 사용되는 마스크의 해상도에 영향을 줍니다. 기본값:
4
- dropout: 분류 작업에서 정규화를 위한 드롭아웃 비율로, 훈련 중 무작위로 유닛을 생략하여 과적합을 방지합니다. 기본값:
0.0
- val:
- 훈련 중 검증을 활성화하여 별도의 데이터셋에서 모델 성능을 주기적으로 평가합니다. 기본값:
True
- plots:
- 훈련 및 검증 지표, 예측 예시의 그래프를 생성하고 저장하여 모델 성능 및 학습 진행에 대한 시각적 통찰을 제공합니다. 기본값:
False