Ultralytics YOLO를 사용한 모델 학습

Ultralytics YOLO ecosystem and integrations

소개

딥러닝 모델을 학습한다는 것은 모델에 데이터를 공급하고 파라미터를 조정하여 정확한 예측을 수행할 수 있도록 하는 과정입니다. Ultralytics YOLO26의 학습 모드(Train mode)는 현대적인 하드웨어 성능을 최대한 활용하여 객체 탐지 모델을 효과적이고 효율적으로 학습할 수 있도록 설계되었습니다. 이 가이드는 YOLO26의 강력한 기능 세트를 사용하여 직접 모델을 학습하기 위해 필요한 모든 세부 사항을 다룹니다.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

학습에 Ultralytics YOLO를 선택해야 하는 이유

YOLO26의 학습 모드를 선택해야 하는 몇 가지 강력한 이유는 다음과 같습니다:

  • 효율성: 단일 GPU 환경이든 여러 GPU를 확장하는 환경이든 관계없이 하드웨어 성능을 최대한 활용합니다.
  • 범용성: COCO, VOC, ImageNet과 같이 이미 사용 가능한 데이터셋 외에도 사용자 정의 데이터셋으로 학습할 수 있습니다.
  • 사용자 친화적: 간단하면서도 강력한 CLI 및 Python 인터페이스를 통해 직관적인 학습 경험을 제공합니다.
  • 하이퍼파라미터 유연성: 모델 성능을 미세 조정할 수 있는 광범위한 사용자 지정 하이퍼파라미터를 제공합니다. 더 깊은 제어를 원하시면 트레이너(trainer) 자체를 사용자 지정할 수도 있습니다.
  • 클라우드 학습: Ultralytics Platform을 통해 실시간 메트릭 확인 및 자동 체크포인트 저장 기능을 갖춘 클라우드 GPU 기반 학습을 수행할 수 있습니다.

학습 모드의 주요 기능

다음은 YOLO26 학습 모드의 몇 가지 주목할 만한 기능입니다:

  • 자동 데이터셋 다운로드: COCO, VOC, ImageNet과 같은 표준 데이터셋은 처음 사용할 때 자동으로 다운로드됩니다.
  • 멀티 GPU 지원: 학습 과정을 가속화하기 위해 여러 GPU에 걸쳐 학습 작업을 원활하게 확장할 수 있습니다.
  • 하이퍼파라미터 구성: YAML 구성 파일 또는 CLI 인수를 통해 하이퍼파라미터를 수정할 수 있는 옵션을 제공합니다.
  • 시각화 및 모니터링: 더 나은 통찰력을 위해 학습 메트릭을 실시간으로 추적하고 학습 과정을 시각화합니다.
  • COCO, VOC, ImageNet 등과 같은 YOLO26 데이터셋은 처음 사용할 때 yolo train data=coco.yaml과 같이 자동으로 다운로드됩니다.

사용 예시

COCO8 데이터셋에서 YOLO26n 모델을 이미지 크기 640으로 100 에포크(epochs) 동안 학습합니다. 학습 디바이스는 device 인수를 사용하여 지정할 수 있습니다. 인수를 전달하지 않으면 사용 가능한 경우 GPU device=0이 사용되며, 그렇지 않으면 device='cpu'가 사용됩니다. 전체 학습 인수 목록은 아래의 인수 섹션을 참조하십시오.

Windows 멀티 프로세싱 오류

Windows에서 학습을 스크립트로 실행할 때 RuntimeError가 발생할 수 있습니다. 이를 해결하려면 학습 코드 앞에 if __name__ == "__main__": 블록을 추가하십시오.

단일 GPU 및 CPU 학습 예시

디바이스는 자동으로 결정됩니다. GPU를 사용할 수 있는 경우 기본적으로 CUDA 디바이스 0이 사용되며, 그렇지 않으면 CPU에서 학습이 시작됩니다.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

멀티 GPU 학습

멀티 GPU 학습을 사용하면 학습 부하를 여러 GPU로 분산하여 가용한 하드웨어 리소스를 더욱 효율적으로 활용할 수 있습니다. 이 기능은 Python API와 CLI 모두에서 사용할 수 있습니다. 멀티 GPU 학습을 활성화하려면 사용할 GPU 디바이스 ID를 지정하십시오.

멀티 GPU 학습 예시

2개의 GPU(CUDA 디바이스 0과 1)로 학습하려면 다음 명령어를 사용하십시오. 필요에 따라 GPU를 추가로 확장할 수 있습니다.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
사용자 정의 코드를 활용한 멀티 GPU 학습

여러 디바이스(예: device=[0, 1])를 지정하면 Ultralytics는 내부적으로 새로운 트레이너 인스턴스를 생성하고 백엔드에서 torch.distributed.run을 실행합니다. 이는 표준 CLI 사용 및 수정되지 않은 Python 스크립트에서 원활하게 작동합니다.

하지만 스크립트에 사용자 정의 트레이너, 검증기, 데이터셋, 또는 증강 파이프라인과 같은 사용자 정의 구성 요소가 포함된 경우, 이러한 객체는 자동으로 직렬화되어 DDP 서브프로세스로 전송될 수 없습니다. 이 경우 torch.distributed.run을 사용하여 스크립트를 직접 실행해야 합니다:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

유휴 GPU 학습

유휴 GPU 학습 기능을 사용하면 멀티 GPU 시스템에서 사용률이 가장 낮은 GPU를 자동으로 선택하여 수동 선택 없이도 리소스 사용을 최적화할 수 있습니다. 이 기능은 사용률 메트릭 및 VRAM 가용성을 기반으로 사용 가능한 GPU를 식별합니다.

유휴 GPU 학습 예시

학습을 위해 유휴 상태인 GPU를 자동으로 선택하여 사용하려면 -1 디바이스 파라미터를 사용하십시오. 이는 공유 컴퓨팅 환경이나 다중 사용자 서버에서 특히 유용합니다.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

자동 선택 알고리즘은 다음 조건을 가진 GPU를 우선순위로 둡니다:

  1. 현재 사용률(%)이 더 낮은 경우
  2. 사용 가능한 메모리(무료 VRAM)가 더 높은 경우
  3. 온도 및 전력 소비가 더 낮은 경우

이 기능은 공유 컴퓨팅 환경에서 작업하거나 서로 다른 모델에 대해 여러 학습 작업을 실행할 때 특히 유용합니다. 변화하는 시스템 조건에 자동으로 적응하여 수동 개입 없이도 최적의 리소스 할당을 보장합니다.

Apple Silicon MPS 학습

Ultralytics YOLO 모델에 Apple 실리콘 칩 지원이 통합됨에 따라, 강력한 Metal Performance Shaders(MPS) 프레임워크를 활용하는 디바이스에서 모델을 학습할 수 있게 되었습니다. MPS는 Apple의 커스텀 실리콘에서 계산 및 이미지 처리 작업을 실행하는 고성능 방식을 제공합니다.

Apple 실리콘 칩에서 학습을 활성화하려면 학습 과정을 시작할 때 디바이스로 'mps'를 지정해야 합니다. 아래는 Python 및 명령줄을 통해 이를 수행하는 방법의 예시입니다:

MPS 학습 예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Apple 실리콘 칩의 계산 능력을 활용하면 학습 작업을 더욱 효율적으로 처리할 수 있습니다. 더 자세한 안내 및 고급 구성 옵션은 PyTorch MPS 문서를 참조하십시오.

중단된 학습 재개

이전에 저장된 상태에서 학습을 재개하는 것은 딥러닝 모델 작업 시 매우 중요한 기능입니다. 학습 과정이 예상치 못하게 중단되었거나, 새로운 데이터로 모델을 계속 학습시키거나, 혹은 더 많은 에포크 동안 학습을 이어가고 싶을 때 유용하게 활용할 수 있습니다.

학습을 재개할 때 Ultralytics YOLO는 마지막으로 저장된 모델의 가중치를 로드하고 옵티마이저 상태, 학습률(learning rate) 스케줄러, 그리고 에포크 번호를 복원합니다. 이를 통해 학습 과정을 중단된 지점에서부터 원활하게 계속할 수 있습니다.

You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.

아래는 Python 및 명령줄을 사용하여 중단된 학습을 재개하는 방법의 예시입니다:

학습 재개 예시
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

resume=True를 설정하면 train 함수는 'path/to/last.pt' 파일에 저장된 상태를 사용하여 중단된 지점부터 학습을 계속합니다. resume 인수가 생략되거나 False로 설정되면 train 함수는 새로운 학습 세션을 시작합니다.

체크포인트는 기본적으로 모든 에포크가 끝날 때마다, 또는 save_period 인수를 사용하여 고정된 간격으로 저장된다는 점을 기억하십시오. 따라서 학습을 재개하려면 최소 1번의 에포크를 완료해야 합니다.

학습 설정(Train Settings)

YOLO 모델의 학습 설정은 학습 과정 중에 사용되는 다양한 하이퍼파라미터 및 구성을 포함합니다. 이러한 설정은 모델의 성능, 속도 및 정확도(accuracy)에 영향을 미칩니다. 주요 학습 설정에는 배치 크기, 학습률, 모멘텀, 가중치 감쇠(weight decay)가 포함됩니다. 또한 옵티마이저, 손실 함수(loss function), 그리고 학습 데이터셋 구성 선택도 학습 과정에 영향을 줄 수 있습니다. 성능을 최적화하려면 이러한 설정을 신중하게 조정하고 실험하는 것이 중요합니다.

MuSGD 옵티마이저

YOLO26의 MuSGD는 표준 SGD 업데이트와 Muon 스타일의 직교화 업데이트를 결합한 하이브리드 옵티마이저입니다.

이 옵티마이저는 직교화된 Muon 업데이트가 최적화를 안정화하는 데 도움이 될 수 있는 더 긴 YOLO26 학습 실행 및 대규모 데이터셋에 권장됩니다.

param.ndim >= 2인 파라미터(예: 합성곱 가중치)만 SGD와 함께 Muon 스타일 업데이트를 받으며, 배치 정규화 계층이나 편향(bias) 항과 같은 저차원 파라미터는 표준 SGD를 유지합니다.

optimizer=auto가 사용되면 Ultralytics는 더 긴 학습 실행(일반적으로 반복 횟수 > 10000)을 위해 MuSGD를 자동으로 선택합니다. 더 짧은 실행의 경우 트레이너는 AdamW로 전환됩니다.

사용 예시:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

ultralytics/optim/muon.py의 구현 및 BaseTrainer.build_optimizer의 옵티마이저 자동 선택 로직을 참조하십시오.

인수(Argument)유형(Type)기본값(Default)설명
modelstrNone학습을 위한 모델 파일을 지정합니다. .pt 사전 학습된 모델 또는 .yaml 구성 파일에 대한 경로를 허용합니다. 모델 구조를 정의하거나 가중치를 초기화하는 데 필수적입니다.
datastrNone데이터셋 구성 파일에 대한 경로(예: coco8.yaml)입니다. 이 파일에는 학습 및 검증 데이터에 대한 경로, 클래스 이름 및 클래스 수를 포함한 데이터셋별 파라미터가 포함되어 있습니다.
epochsint100총 학습 에포크 수입니다. 각 에포크는 전체 데이터셋에 대한 한 번의 전체 통과를 나타냅니다. 이 값을 조정하면 학습 기간과 모델 성능에 영향을 줄 수 있습니다.
timefloatNone시간 단위(시간)로 표시된 최대 학습 시간입니다. 설정하면 epochs 인수를 재정의하여 지정된 시간이 지난 후 학습이 자동으로 중단되도록 합니다. 시간 제한이 있는 학습 시나리오에 유용합니다.
patienceint100학습을 조기 중단하기 전에 검증 지표의 개선 없이 대기할 에포크 수입니다. 성능이 정체될 때 학습을 중단하여 과적합을 방지하는 데 도움이 됩니다.
batchint 또는 float16배치 크기이며 세 가지 모드가 있습니다: 정수 설정(예: batch=16), GPU 메모리 60% 활용을 위한 자동 모드(batch=-1), 또는 지정된 활용 비율을 사용하는 자동 모드(batch=0.70).
imgszint640학습을 위한 대상 이미지 크기입니다. 이미지는 지정된 값과 같은 변을 가진 정사각형으로 크기가 조정되며(rect=False인 경우), YOLO 모델의 경우 가로세로 비율을 유지하지만 RT-DETR은 그렇지 않습니다. 모델 정확도와 계산 복잡성에 영향을 줍니다.
saveboolTrue학습 체크포인트와 최종 모델 가중치 저장을 활성화합니다. 학습을 재개하거나 모델 배포에 유용합니다.
save_periodint-1에포크 단위로 지정된 모델 체크포인트 저장 빈도입니다. -1 값은 이 기능을 비활성화합니다. 긴 학습 세션 중에 중간 모델을 저장하는 데 유용합니다.
cacheboolFalse데이터셋 이미지를 메모리(True/ram), 디스크(disk)에 캐싱하는 것을 활성화하거나 비활성화(False)합니다. 메모리 사용량 증가를 대가로 디스크 I/O를 줄여 학습 속도를 향상시킵니다.
deviceint 또는 str 또는 listNone학습을 위한 계산 장치를 지정합니다: 단일 GPU(device=0), 다중 GPU(device=[0,1]), CPU(device=cpu), Apple 실리콘용 MPS(device=mps), Huawei Ascend NPU(device=npu 또는 device=npu:0), 가장 유휴 상태인 GPU 자동 선택(device=-1) 또는 여러 유휴 GPU(device=[-1,-1]).
workersint8데이터 로딩을 위한 워커 스레드 수입니다(다중 GPU 학습 시 RANK당). 데이터 전처리 및 모델 공급 속도에 영향을 미치며 특히 다중 GPU 설정에서 유용합니다.
projectstrNone학습 출력이 저장되는 프로젝트 디렉토리 이름입니다. 서로 다른 실험을 체계적으로 저장할 수 있습니다.
namestrNone학습 실행 이름입니다. 학습 로그와 출력이 저장되는 프로젝트 폴더 내의 하위 디렉토리를 만드는 데 사용됩니다.
exist_okboolFalseTrue인 경우 기존 프로젝트/이름 디렉토리를 덮어쓸 수 있습니다. 이전 출력을 수동으로 삭제할 필요 없이 반복적인 실험을 수행하는 데 유용합니다.
pretrainedbool 또는 strTrue사전 학습된 가중치부터 학습을 시작할지 여부를 결정합니다. 부울 값이나 불러올 가중치에 대한 문자열 경로일 수 있습니다. pretrained=False는 모델 아키텍처를 유지하면서 임의로 초기화된 가중치로 학습합니다.
optimizerstr'auto'학습을 위한 옵티마이저 선택입니다. 옵션에는 SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp이 있거나, 모델 구성에 따라 자동 선택하는 auto가 있습니다. 수렴 속도와 안정성에 영향을 줍니다.
seedint0학습을 위한 난수 시드를 설정하여 동일한 구성으로 실행할 때 결과의 재현성을 보장합니다.
deterministicboolTrue결정론적 알고리즘 사용을 강제하여 재현성을 보장하지만, 비결정론적 알고리즘에 대한 제한으로 인해 성능과 속도에 영향을 줄 수 있습니다.
verboseboolTrue학습 중 상세 출력을 활성화하여 콘솔에 진행률 표시줄, 에포크별 지표 및 추가 학습 정보를 표시합니다.
single_clsboolFalse학습 중 다중 클래스 데이터셋의 모든 클래스를 단일 클래스로 취급합니다. 이진 분류 작업이나 분류보다는 객체의 존재 여부에 집중할 때 유용합니다.
classeslist[int]None학습할 클래스 ID 목록을 지정합니다. 학습 중에 특정 클래스만 필터링하여 집중적으로 학습하는 데 유용합니다.
rectboolFalse최소 패딩 전략을 활성화합니다. 배치 내의 이미지들이 imgsz와 같은 가장 긴 변을 갖도록 최소한으로 패딩되어 공통 크기에 도달합니다. 효율성과 속도를 향상할 수 있지만 모델 정확도에 영향을 줄 수 있습니다.
multi_scalefloat0.0매 배치마다 imgsz를 +/- multi_scale(예: 0.25 -> 0.75x에서 1.25x)만큼 무작위로 변경하며, 모델 스트라이드 배수로 반올림합니다. 0.0은 멀티 스케일 학습을 비활성화합니다.
cos_lrboolFalse코사인 학습률 스케줄러를 사용하여 에폭(epoch)에 따라 코사인 곡선을 따르도록 학습률을 조정합니다. 더 나은 수렴을 위해 학습률을 관리하는 데 도움이 됩니다.
close_mosaicint10마지막 N 에폭 동안 모자이크 데이터 증강을 비활성화하여 완료 전 학습을 안정화합니다. 0으로 설정하면 이 기능이 비활성화됩니다.
resumeboolFalse마지막으로 저장된 체크포인트에서 학습을 재개합니다. 모델 가중치, 옵티마이저 상태, 에폭 카운트를 자동으로 로드하여 원활하게 학습을 이어갑니다.
ampboolTrue자동 혼합 정밀도 (AMP) 학습을 활성화하여 메모리 사용량을 줄이고 정확도에 미치는 영향을 최소화하면서 학습 속도를 높일 수 있습니다.
fractionfloat1.0학습에 사용할 데이터셋의 비율을 지정합니다. 전체 데이터셋의 일부만 사용하여 학습할 수 있게 해주며, 실험을 하거나 리소스가 제한된 경우 유용합니다.
profileboolFalse학습 중에 ONNX 및 TensorRT 속도를 프로파일링하여 모델 배포 최적화에 도움을 줍니다.
freezeint 또는 listNone모델의 첫 N개 레이어 또는 인덱스로 지정된 레이어를 고정하여 학습 가능한 파라미터 수를 줄입니다. 파인 튜닝이나 전이 학습에 유용합니다.
lr0float0.01초기 학습률입니다(예: SGD=1E-2, Adam=1E-3). 이 값을 조정하는 것은 최적화 과정에서 매우 중요하며, 모델 가중치가 업데이트되는 속도에 영향을 줍니다.
lrffloat0.01초기 학습률의 비율로 나타낸 최종 학습률 = (lr0 * lrf)이며, 스케줄러와 함께 사용하여 시간에 따라 학습률을 조정합니다.
momentumfloat0.937SGD의 모멘텀 계수 또는 Adam 옵티마이저의 beta1 값으로, 현재 업데이트에 과거 그래디언트를 반영하는 정도에 영향을 줍니다.
weight_decayfloat0.0005L2 정규화 항으로, 큰 가중치에 페널티를 주어 과적합(overfitting)을 방지합니다.
warmup_epochsfloat3.0학습률 웜업(warmup)을 위한 에폭 수로, 낮은 값에서 초기 학습률까지 점진적으로 학습률을 높여 초기 학습을 안정화합니다.
warmup_momentumfloat0.8웜업 단계의 초기 모멘텀이며, 웜업 기간 동안 설정된 모멘텀까지 점진적으로 조정됩니다.
warmup_bias_lrfloat0.1웜업 단계 중 바이어스 파라미터에 대한 학습률로, 초기 에폭에서 모델 학습을 안정화하는 데 도움을 줍니다.
boxfloat7.5손실 함수 내 박스 손실 구성 요소의 가중치로, 경계 상자 좌표 예측의 정확도에 얼마나 중점을 둘지 결정합니다.
clsfloat0.5전체 손실 함수 내 분류 손실의 가중치로, 다른 구성 요소 대비 정확한 클래스 예측의 중요도에 영향을 줍니다.
cls_pwfloat0.0클래스 불균형을 처리하기 위한 클래스 가중치 적용 시의 거듭제곱 값입니다. 0.0은 클래스 가중치를 비활성화하며, 1.0은 전체 역빈도 가중치를 적용합니다. 0과 1 사이의 값은 부분적인 가중치를 제공합니다.
dflfloat1.5분포 초점 손실(Distribution Focal Loss)의 가중치로, 특정 YOLO 버전에서 세밀한 분류를 위해 사용됩니다.
posefloat12.0포즈 추정 모델 학습 시 포즈 손실 가중치로, 포즈 키포인트를 정확하게 예측하는 데 대한 강조 정도에 영향을 줍니다.
kobjfloat1.0포즈 추정 모델에서 키포인트 객체 존재 여부 손실 가중치로, 탐지 신뢰도와 포즈 정확도 간의 균형을 맞춥니다.
rlefloat1.0포즈 추정 모델에서 잔차 로그 우도 추정 손실 가중치로, 키포인트 위치 정밀도에 영향을 줍니다.
anglefloat1.0OBB 모델에서 각도 손실 가중치로, 회전된 경계 상자(oriented bounding box) 각도 예측의 정밀도에 영향을 줍니다.
nbsint64손실 정규화를 위한 공칭 배치 크기입니다.
overlap_maskboolTrue객체 마스크를 학습을 위해 하나의 마스크로 병합할지, 각 객체별로 분리할지 결정합니다. 병합 시 중첩이 발생하면 더 작은 마스크가 더 큰 마스크 위에 오버레이됩니다.
mask_ratioint4세그멘테이션 마스크에 대한 다운샘플링 비율로, 학습 중 사용되는 마스크의 해상도에 영향을 줍니다.
dropoutfloat0.0분류 작업에서 정규화를 위한 드롭아웃 비율로, 학습 중에 무작위로 유닛을 생략하여 과적합을 방지합니다.
valboolTrue학습 중 검증을 활성화하여 별도의 데이터셋에서 주기적으로 모델 성능을 평가할 수 있습니다.
plotsboolTrue학습 및 검증 메트릭과 예측 예시의 플롯을 생성하고 저장하여 모델 성능 및 학습 진행 상황에 대한 시각적 통찰력을 제공합니다.
compilebool 또는 strFalseEnables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True"default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported.
max_detint300학습의 검증 단계에서 유지되는 최대 객체 수를 지정합니다.
배치 크기 설정에 대한 참고 사항

batch 인수는 세 가지 방식으로 구성할 수 있습니다:

  • 고정 배치 크기(Batch Size): 정수 값(예: batch=16)을 설정하여 배치당 이미지 수를 직접 지정합니다.
  • 자동 모드(60% GPU 메모리): batch=-1을 사용하여 CUDA 메모리 활용률이 약 60%가 되도록 배치 크기를 자동으로 조정합니다.
  • 활용률 분수를 이용한 자동 모드: 분수 값(예: batch=0.70)을 설정하여 지정된 GPU 메모리 사용 비율에 따라 배치 크기를 조정합니다.
  • OOM 자동 재시도: 첫 번째 에포크 중에 CUDA 메모리 부족(OOM) 오류가 발생하면 트레이너는 자동으로 배치 크기를 절반으로 줄이고 최대 3회까지 재시도합니다. 이는 단일 GPU 학습에만 적용되며, 멀티 GPU(DDP) 학습은 오류 발생 시 즉시 종료됩니다.

증강 설정 및 하이퍼파라미터

증강 기술은 학습 데이터(training data)에 변동성을 도입하여 모델이 보지 못한 데이터에 대해 더 잘 일반화되도록 함으로써 YOLO 모델의 견고성과 성능을 향상시키는 데 필수적입니다. 다음 표는 각 증강 인수의 목적과 효과를 설명합니다:

인수(Argument)유형(Type)기본값(Default)지원 작업범위설명
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0색상환의 일부만큼 이미지의 색조를 조정하여 색상 변동성을 도입합니다. 다양한 조명 조건에서 모델이 일반화되도록 돕습니다.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0이미지의 채도를 일부 변경하여 색상 강도에 영향을 줍니다. 다양한 환경 조건을 시뮬레이션하는 데 유용합니다.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0이미지의 명도(밝기)를 일부 수정하여 다양한 조명 조건에서도 모델이 잘 작동하도록 돕습니다.
degreesfloat0detect, segment, pose, obb0.0 - 180지정된 각도 범위 내에서 이미지를 무작위로 회전시켜 다양한 방향의 객체를 인식하는 모델의 능력을 향상시킵니다.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0이미지 크기의 일부만큼 이미지를 가로 및 세로로 이동시켜 부분적으로 보이는 객체를 탐지하는 학습을 지원합니다.
scalefloat0.5detect, segment, pose, obb, classify0 - 1이득 계수로 이미지 크기를 조정하여 카메라로부터 거리가 다른 객체를 시뮬레이션합니다.
shearfloat0detect, segment, pose, obb-180 - +180이미지를 지정된 각도만큼 기울여 다른 각도에서 객체를 보는 효과를 모방합니다.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001이미지에 무작위 원근 변환을 적용하여 3D 공간에서 객체를 이해하는 모델의 능력을 강화합니다.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0지정된 확률로 이미지를 상하 반전시켜 객체의 특성을 유지하면서 데이터 변동성을 높입니다.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0지정된 확률로 이미지를 좌우 반전시켜 대칭적인 객체를 학습하고 데이터셋 다양성을 높이는 데 유용합니다.
bgrfloat0detect, segment, pose, obb0.0 - 1.0지정된 확률로 이미지 채널을 RGB에서 BGR로 반전시켜 잘못된 채널 순서에 대한 견고성을 높이는 데 유용합니다.
mosaicfloat1detect, segment, pose, obb0.0 - 1.04개의 학습 이미지를 하나로 결합하여 다양한 장면 구성과 객체 상호 작용을 시뮬레이션합니다. 복잡한 장면 이해에 매우 효과적입니다.
mixupfloat0detect, segment, pose, obb0.0 - 1.0두 이미지와 해당 라벨을 혼합하여 합성 이미지를 생성합니다. 라벨 노이즈와 시각적 가변성을 도입하여 모델의 일반화 능력을 향상시킵니다.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0두 이미지의 일부를 결합하여 뚜렷한 영역을 유지하면서 부분적인 혼합을 생성합니다. 가림(occlusion) 시나리오를 생성하여 모델의 견고성을 강화합니다.
copy_pastefloat0segment0.0 - 1.0객체 인스턴스를 늘리기 위해 이미지 간에 객체를 복사하고 붙여넣습니다.
copy_paste_modestrflipsegment-사용할 copy-paste 전략을 지정합니다. 옵션에는 'flip''mixup'이 포함됩니다.
auto_augmentstrrandaugmentclassify-사전 정의된 증강 정책('randaugment', 'autoaugment' 또는 'augmix')을 적용하여 시각적 다양성을 통해 모델 성능을 향상시킵니다.
erasingfloat0.4classify0.0 - 1.0학습 중에 이미지의 영역을 무작위로 지워 모델이 덜 명확한 특징에 집중하도록 유도합니다.
augmentationslist``detect, segment, pose, obb-고급 데이터 증강을 위한 사용자 지정 Albumentations 변환(Python API 전용)입니다. 특수 증강 요구 사항을 위해 변환 객체 목록을 허용합니다.

이 설정들은 데이터셋과 현재 작업의 특정 요구 사항을 충족하도록 조정할 수 있습니다. 다양한 값을 실험하면 최상의 모델 성능을 이끌어내는 최적의 증강 전략을 찾는 데 도움이 될 수 있습니다.

정보

학습 증강 작업에 대한 자세한 내용은 참조 섹션을 참조하십시오.

로깅

YOLO26 모델을 학습할 때 시간이 지남에 따라 모델의 성능을 추적하는 것이 유용할 수 있습니다. 이때 로깅이 필요합니다. Ultralytics YOLO는 Comet, ClearML, TensorBoard와 같은 세 가지 유형의 로거를 지원합니다.

로거를 사용하려면 위 코드 조각의 드롭다운 메뉴에서 선택하고 실행하십시오. 선택한 로거가 설치되고 초기화됩니다.

Comet

Comet은 데이터 과학자와 개발자가 실험과 모델을 추적, 비교, 설명 및 최적화할 수 있도록 지원하는 플랫폼입니다. 실시간 메트릭, 코드 diff, 하이퍼파라미터 추적과 같은 기능을 제공합니다.

Comet 사용 방법:

예시
# pip install comet_ml
import comet_ml

comet_ml.init()

웹사이트에서 Comet 계정에 로그인하고 API 키를 확인하십시오. 실험을 기록하려면 이 키를 환경 변수나 스크립트에 추가해야 합니다.

ClearML

ClearML은 실험 추적을 자동화하고 리소스를 효율적으로 공유할 수 있도록 지원하는 오픈 소스 플랫폼입니다. 팀이 ML 작업을 보다 효율적으로 관리, 실행 및 재현할 수 있도록 설계되었습니다.

ClearML 사용 방법:

예시
# pip install clearml
import clearml

clearml.browser_login()

이 스크립트를 실행한 후 브라우저에서 ClearML 계정에 로그인하여 세션을 인증해야 합니다.

TensorBoard

TensorBoardTensorFlow를 위한 시각화 툴킷입니다. TensorFlow 그래프를 시각화하고, 그래프 실행에 대한 정량적 메트릭을 도표화하며, 이를 통과하는 이미지와 같은 추가 데이터를 표시할 수 있습니다.

Google Colab에서 TensorBoard를 사용하려면:

예시
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

로컬에서 TensorBoard를 사용하려면 아래 명령을 실행하고 localhost:6006에서 결과를 확인하십시오.

예시
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

이 명령은 TensorBoard를 로드하고 학습 로그가 저장된 디렉토리를 가리키도록 합니다.

로거 설정을 완료하면 모델 학습을 진행할 수 있습니다. 모든 학습 메트릭은 선택한 플랫폼에 자동으로 기록되며, 이러한 로그에 액세스하여 시간이 지남에 따라 모델 성능을 모니터링하고, 다양한 모델을 비교하며, 개선 영역을 파악할 수 있습니다.

자주 묻는 질문(FAQ)

로컬 GPU 없이 학습할 수 있습니까?

네. Ultralytics Platform은 시작을 위한 무료 크레딧과 함께 클라우드 학습을 지원합니다. 데이터셋을 업로드하고, 모델과 GPU를 선택한 다음 브라우저에서 직접 학습하십시오. 자세한 내용은 클라우드 학습 가이드를 참조하십시오.

Ultralytics YOLO26을 사용하여 객체 탐지 모델을 어떻게 학습합니까?

Ultralytics YOLO26을 사용하여 객체 탐지 모델을 학습하려면 Python API 또는 CLI를 사용할 수 있습니다. 아래는 두 가지 방식에 대한 예시입니다.

단일 GPU 및 CPU 학습 예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

자세한 내용은 학습 설정 섹션을 참조하십시오.

Ultralytics YOLO26의 학습 모드에는 어떤 주요 기능이 있습니까?

Ultralytics YOLO26 학습 모드의 주요 기능은 다음과 같습니다:

  • 자동 데이터셋 다운로드: COCO, VOC 및 ImageNet과 같은 표준 데이터셋을 자동으로 다운로드합니다.
  • 멀티 GPU 지원: 더 빠른 처리를 위해 여러 GPU에 걸쳐 학습을 확장합니다.
  • 하이퍼파라미터 구성: YAML 파일 또는 CLI 인수를 통해 하이퍼파라미터를 사용자 지정합니다.
  • 시각화 및 모니터링: 더 나은 통찰력을 위한 학습 메트릭의 실시간 추적.

이러한 기능을 통해 학습을 효율적으로 만들고 필요에 맞게 사용자 지정할 수 있습니다. 자세한 내용은 학습 모드의 주요 기능 섹션을 참조하십시오.

Ultralytics YOLO26에서 중단된 세션의 학습을 어떻게 재개합니까?

중단된 세션에서 학습을 재개하려면 resume 인수를 True로 설정하고 마지막으로 저장된 체크포인트의 경로를 지정하십시오.

학습 재개 예시
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

자세한 내용은 중단된 학습 재개하기 섹션을 확인하십시오.

데이터셋이 불균형할 때 모델을 어떻게 학습합니까?

클래스 불균형은 학습 데이터 내의 특정 클래스가 다른 클래스보다 예제 수가 현저히 적을 때 발생합니다. 이로 인해 모델이 희귀 클래스에서 성능이 저하될 수 있습니다. Ultralytics YOLO는 이 문제를 해결하기 위해 cls_pw 인수를 통한 클래스 가중치 설정을 지원합니다.

cls_pw 인수는 역 클래스 빈도를 기반으로 클래스 가중치 강도를 제어합니다:

  • cls_pw=0.0 (기본값): 클래스 가중치 설정 비활성화
  • cls_pw=1.0: 전체 역 빈도 가중치 적용
  • 0.01.0 사이의 값: 중간 정도의 불균형에 대한 부분 가중치 제공

클래스 가중치는 (1.0 / class_counts) ^ cls_pw로 계산되며 평균이 1.0이 되도록 정규화됩니다.

불균형한 데이터셋에서의 학습
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)

적당히 불균형한 데이터셋의 경우 cls_pw=0.25로 시작하고, 여전히 희귀 클래스의 성능이 낮으면 1.0까지 높이십시오. 학습 로그에서 계산된 클래스 가중치를 확인하여 가중치 분포를 검증할 수 있습니다.

Apple 실리콘 칩에서 YOLO26 모델을 학습할 수 있습니까?

네, Ultralytics YOLO26은 Metal Performance Shaders (MPS) 프레임워크를 활용하여 Apple 실리콘 칩에서의 학습을 지원합니다. 학습 장치로 'mps'를 지정하십시오.

MPS 학습 예시
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

자세한 내용은 Apple 실리콘 MPS 학습 섹션을 참조하십시오.

일반적인 학습 설정은 무엇이며, 어떻게 구성합니까?

Ultralytics YOLO26을 사용하면 배치 크기, 학습률, 에포크 등 다양한 학습 설정을 인수를 통해 구성할 수 있습니다. 간단한 개요는 다음과 같습니다:

인수(Argument)기본값(Default)설명
modelNone학습을 위한 모델 파일 경로.
dataNone데이터셋 구성 파일 경로(예: coco8.yaml).
epochs100총 학습 에포크 수.
batch16배치 크기, 정수 또는 자동 모드로 조정 가능.
imgsz640학습을 위한 목표 이미지 크기.
deviceNonecpu, 0, 0,1 또는 mps와 같은 학습용 컴퓨팅 장치.
saveTrue학습 체크포인트 및 최종 모델 가중치 저장을 활성화합니다.

학습 설정에 대한 자세한 가이드는 학습 설정 섹션을 확인하십시오.

댓글