YOLO Vision 2026:

Ultralytics YOLO를 활용한 모델 학습#

Ultralytics YOLO ecosystem and integrations

소개#

딥러닝 모델을 훈련하는 과정은 모델에 데이터를 입력하고 매개변수를 조정하여 정확한 예측을 수행할 수 있도록 만드는 과정을 포함합니다. Ultralytics YOLO26의 학습 모드는 현대적인 하드웨어 성능을 완전히 활용하여 객체 검출 모델을 효과적이고 효율적으로 학습할 수 있도록 설계되었습니다. 이 가이드는 YOLO26의 강력한 기능 세트를 사용하여 나만의 모델 학습을 시작하는 데 필요한 모든 세부 정보를 다루는 것을 목표로 합니다. 아직 Ultralytics를 설치하지 않았다면 빠른 시작 가이드부터 시작하세요.



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

학습에 Ultralytics YOLO를 선택해야 하는 이유는 무엇입니까?#

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

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

학습 모드의 주요 기능#

다음은 YOLO26 학습 모드의 주요 기능입니다:

  • 자동 데이터셋 다운로드: 다운로드 소스가 포함된 데이터셋 구성은 첫 사용 시 yolo train data=coco8.yaml과 같이 자동으로 다운로드됩니다. 지원되는 형식과 데이터셋에 대한 자세한 내용은 데이터셋 개요를 참조하세요.
  • 다중 GPU 지원: 여러 GPU에서 학습 작업을 원활하게 확장하여 프로세스 속도를 높이십시오.
  • 하이퍼파라미터 구성: YAML 구성 파일 또는 CLI 인수를 통해 하이퍼파라미터를 수정하는 옵션을 제공합니다.
  • 시각화 및 모니터링: 학습 지표의 실시간 추적과 학습 과정 시각화를 통해 더 나은 통찰력을 제공합니다.

사용 예제#

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

Windows 다중 처리 오류

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

단일 GPU 및 CPU 학습 예시

장치는 자동으로 결정됩니다. GPU를 사용할 수 있는 경우 해당 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와 명령줄 인터페이스 모두에서 사용할 수 있습니다. 다중 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 스크립트에서 원활하게 작동합니다.

그러나 스크립트에 커스텀 트레이너, 검증기, 데이터셋, 또는 augmentation 파이프라인과 같은 커스텀 컴포넌트가 포함되어 있는 경우, 이러한 객체들은 자동으로 직렬화되어 DDP 하위 프로세스로 전송될 수 없습니다. 이 경우 torch.distributed.run을 사용하여 스크립트를 직접 실행해야 합니다:

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

AMD GPU 학습은 표준 device=0 또는 device=cuda:0 구문을 사용하는 PyTorch ROCm 빌드를 사용합니다. 설치 및 현재 MIGraphX, DirectML, Ryzen AI NPU 지원 상태에 대해서는 AMD 통합 가이드를 참조하세요.

Intel GPU 학습은 device=xpu:0을 사용하거나, XCCL을 지원하는 PyTorch 빌드와 함께 여러 XPU ID를 사용합니다.

Huawei Ascend NPU 학습#

Ultralytics는 torch_npu을 통해 화웨이 Ascend NPU에서의 학습 및 검증을 지원합니다. Ascend Extension for PyTorch 설치 가이드에 따라 상호 호환되는 CANN, PyTorch 및 torch_npu 버전을 설치한 후, Ultralytics를 시작하기 전에 CANN 환경을 소스(source)하세요.

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Ascend NPU 학습 예제
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

AMP, 검증, 체크포인트, 재개를 포함한 표준 학습 기능은 활성 NPU를 사용합니다. 단일 NPU 학습에는 AutoBatch를 사용할 수 있으며, 여러 NPU ID는 HCCL을 통해 분산 학습을 시작합니다. 학습 후 모델 내보내기 및 배포에 대해서는 Huawei Ascend 통합 가이드를 참조하세요.

유휴 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])

자동 선택 알고리즘은 다음을 우선순위로 합니다:

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

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

Apple Silicon MPS 학습#

Ultralytics YOLO 모델에 통합된 Apple Silicon 칩 지원을 통해 강력한 Metal Performance Shaders(MPS) 프레임워크를 활용하는 장치에서 모델을 학습할 수 있습니다. MPS는 Apple의 맞춤형 실리콘에서 계산 및 이미지 처리 작업을 수행하는 고성능 방식을 제공합니다.

Apple Silicon 칩에서 학습을 활성화하려면 학습 프로세스를 시작할 때 장치로 '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는 마지막으로 저장된 모델의 가중치를 불러올 뿐만 아니라 옵티마이저 상태, 학습률 스케줄러, 에포크 번호도 복원합니다. 이를 통해 중단된 지점부터 원활하게 학습을 이어갈 수 있습니다.

Ultralytics YOLO에서는 train 메서드를 호출할 때 resume 인수를 True로 설정하고 부분적으로 학습된 모델 가중치가 포함된 .pt 파일의 경로를 지정하여 쉽게 학습을 재개할 수 있습니다.

다음은 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을 설정하면 'path/to/last.pt' 파일에 저장된 상태를 사용하여 train 함수가 중단된 지점부터 학습을 계속합니다. resume 인수가 생략되거나 False(으)로 설정되면 train 함수가 새로운 학습 세션을 시작합니다.

체크포인트는 기본적으로 매 에포크가 끝날 때 또는 save_period 인수를 사용한 고정 간격으로 저장되므로, 학습을 재개하려면 최소 1 에포크를 완료해야 합니다.

학습 설정#

YOLO 모델의 학습 설정은 학습 과정에서 사용되는 다양한 하이퍼파라미터와 구성을 포함합니다. 이러한 설정은 모델의 성능, 속도, 정확도에 영향을 미칩니다. 주요 학습 설정에는 배치 크기, 학습률, 모멘텀, 가중치 감소가 포함됩니다. 또한 옵티마이저 선택, 손실 함수, 학습 데이터셋 구성도 학습 과정에 영향을 줄 수 있습니다. 이러한 설정에 대한 신중한 튜닝과 실험은 성능 최적화에 매우 중요합니다.

MuSGD 옵티마이저#

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

이는 더 긴 YOLO26 학습 및 더 큰 데이터셋에 권장되며, 직교화된 Muon 업데이트가 최적화를 안정화하는 데 도움이 될 수 있습니다.

2D 선형 가중치와 4D 합성곱 필터(2D로 재형성됨)만 SGD와 함께 Muon 스타일 업데이트를 받고, 배치 정규화 가중치 및 편향 항과 같은 다른 모든 파라미터는 표준 SGD에 유지됩니다.

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

사용 예시:

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

ultralytics/optim/muon.py의 구현과 BaseTrainer.build_optimizer의 옵티마이저 자동 선택 로직을 참조하세요.

인수유형기본값설명
modelstrNone학습을 위한 모델 파일을 지정합니다. .pt 사전 학습된 모델 또는 .yaml 설정 파일 중 하나의 경로를 허용합니다. 모델 구조를 정의하거나 가중치를 초기화하는 데 필수적입니다.
datastrNone학습 및 validation data 경로, 클래스 이름, 클래스 수를 담고 있는 데이터셋 YAML(coco8.yaml 등)의 경로입니다. 분류(Classification)의 경우 데이터셋 디렉토리 또는 내장 데이터셋 이름(imagenet10 등)을 대신 사용합니다.
epochsint100총 학습 에포크 수. 각 epoch은 전체 데이터셋에 대한 한 번의 전체 패스를 나타냅니다. 이 값을 조절하면 학습 시간과 모델 성능에 영향을 줄 수 있습니다.
timefloatNone시간 단위의 최대 학습 시간. 설정할 경우, epochs 인수를 재정의하여 지정된 시간이 지나면 학습이 자동으로 중단되도록 합니다. 시간이 제한된 학습 시나리오에 유용합니다.
patienceint100조기 종료를 수행하기 전에 검증 지표가 향상되지 않은 상태로 기다릴 에포크 수. 성능 정체 시 학습을 중단하여 overfitting을 방지하는 데 도움을 줍니다.
batchint 또는 float16Batch size는 세 가지 모드가 있습니다: 정수형 설정(예: batch=16), GPU 메모리 60% 활용을 위한 자동 모드(batch=-1), 또는 지정된 활용 비율을 사용하는 자동 모드(batch=0.70).
imgszint640학습을 위한 목표 이미지 크기. 이미지는 지정된 값과 같은 변을 가진 정사각형으로 크기가 조정되며(rect=False), YOLO 모델의 경우 종횡비를 유지하지만 RT-DETR의 경우는 그렇지 않습니다. 모델 accuracy와 연산 복잡도에 영향을 줍니다.
saveboolTrue학습 체크포인트와 최종 모델 가중치의 저장을 활성화합니다. 학습 재개 또는 model deployment에 유용합니다.
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), 화웨이 어센드 NPU(device=npu:0 또는 device=npu:0,1), 또는 유휴 GPU 자동 선택(device=-1) 혹은 다중 유휴 GPU 자동 선택(device=[-1,-1]).
workersint8데이터 로딩을 위한 워커 스레드 수 (다중 GPU 학습 시 RANK당). 데이터 전처리 및 모델 주입 속도에 영향을 미치며, 특히 다중 GPU 설정에서 유용합니다.
projectstrNone학습 출력이 저장되는 프로젝트 디렉터리 이름입니다. 다양한 실험을 체계적으로 저장할 수 있습니다.
namestrNone학습 실행 이름입니다. 프로젝트 폴더 내에 학습 로그와 결과물이 저장되는 하위 디렉터리를 만드는 데 사용됩니다.
exist_okboolFalseTrue인 경우, 기존 프로젝트/이름 디렉터리를 덮어쓸 수 있습니다. 이전 결과물을 수동으로 삭제할 필요 없이 반복적인 실험을 수행할 때 유용합니다.
save_dirstrNoneproject/name 조합을 재정의하여 실행 출력이 저장되는 정확한 디렉토리를 지정합니다. 자동 증가 없이 경로는 그대로 사용되므로 연속 실행 시 동일한 디렉토리를 재사용합니다.
pretrainedbool 또는 strTrue사전 학습된 가중치로부터 학습을 시작할지 여부를 결정합니다. 부울 값 또는 로드할 가중치의 문자열 경로일 수 있습니다. pretrained=False은 모델 아키텍처를 유지하면서 무작위로 초기화된 가중치부터 학습합니다.
cls_remapboolTrue데이터셋 간에 파인튜닝할 때, 클래스 이름이 일치하는 곳마다 사전 학습된 분류 헤드 행을 새 모델에 복사하므로, 중첩되는 클래스는 학습된 바이어스를 유지하며 헤드 너비가 변경되지 않은 경우 가중치도 함께 유지합니다. 클래스 수가 다르거나 클래스 순서가 다른 상태로 일치할 때 모두 적용됩니다.
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코사인 learning rate 스케줄러를 활용하여, 에포크에 따라 코사인 곡선에 맞춰 학습률을 조절합니다. 더 나은 수렴을 위해 학습률을 관리하는 데 도움을 줍니다.
close_mosaicint10완료 전 학습을 안정화하기 위해 마지막 N개 에포크에서 모자이크 data augmentation을 비활성화합니다. 0으로 설정하면 이 기능이 비활성화됩니다.
resumeboolFalse마지막으로 저장된 체크포인트에서 학습을 재개합니다. 모델 가중치, 옵티마이저 상태 및 에포크 수를 자동으로 로드하여 학습을 원활하게 이어갑니다.
ampboolTrue자동 Mixed Precision (AMP) 학습을 활성화하여, 메모리 사용량을 줄이고 정확도에 미치는 영향을 최소화하면서 학습을 가속화할 수 있습니다.
fractionfloat1.0학습에 사용할 데이터셋의 비율을 지정합니다. 전체 데이터셋의 하위 집합으로 학습할 수 있게 하여 실험이나 자원이 제한된 경우에 유용합니다.
profileboolFalse학습 중 ONNX 및 TensorRT 속도 프로파일링을 활성화하여 모델 배포 최적화에 유용합니다.
freezeint 또는 listNone모델의 첫 N개 레이어 또는 인덱스로 지정된 레이어를 동결하여 학습 가능한 파라미터 수를 줄입니다. 파인 튜닝이나 transfer learning에 유용합니다.
lr0float0.01초기 학습률 (즉, SGD=1E-2, Adam=1E-3). 이 값을 조정하는 것은 모델 가중치가 업데이트되는 속도에 영향을 주어 최적화 과정에 매우 중요합니다.
lrffloat0.01시간에 따라 학습률을 조절하기 위해 스케줄러와 함께 사용되는 초기 비율의 분수 형태인 최종 학습률 = (lr0 * lrf).
momentumfloat0.937SGD의 모멘텀 팩터 또는 Adam optimizers의 beta1으로, 현재 업데이트에 과거 그래디언트의 반영에 영향을 줍니다.
weight_decayfloat0.0005L2 regularization 항, 오버피팅을 방지하기 위해 큰 가중치에 페널티를 부과합니다.
warmup_epochsfloat3.0학습률 웜업을 위한 에포크 수로, 낮은 값에서 초기 학습률까지 점진적으로 학습률을 높여 초기 학습을 안정화합니다.
warmup_momentumfloat0.8웜업 단계의 초기 모멘텀으로, 웜업 기간 동안 설정된 모멘텀으로 점진적으로 조정됩니다.
warmup_bias_lrfloat0.1웜업 단계에서의 바이어스 파라미터에 대한 학습률로, 초기 에포크에서 모델 학습을 안정화하는 데 도움을 줍니다.
distill_modelstrNone지식 증류를 위한 교사 모델 체크포인트 경로 (예: yolo26x.pt). 설정된 경우, 학생 모델은 동결된 교사에 의해 안내되는 추가 증류 손실로 학습됩니다.
disfloat6.0표준 탐지 손실에 추가되는 증류 손실의 가중치입니다. 값이 클수록 교사의 특징 지침에 의한 영향력이 증가합니다.
boxfloat7.5loss function에서 박스 손실 구성 요소의 가중치로, bounding box 좌표를 정확하게 예측하는 데 얼마나 많은 비중을 둘지에 영향을 줍니다.
clsfloat0.5전체 손실 함수에서 분류 손실의 가중치로, 다른 구성 요소 대비 올바른 클래스 예측의 중요도에 영향을 미칩니다.
cls_pwfloat0.0역 클래스 빈도를 사용하여 클래스 불균형을 처리하기 위한 클래스 가중치 부여 파워. 0.0은 클래스 가중치를 비활성화하고, 1.0은 전체 역 빈도 가중치를 적용합니다. 0과 1 사이의 값은 부분 가중치를 제공합니다.
dflfloat1.5박스 가장자리 거리를 회귀하는 경계 상자 위치 지정 항인 DFL(Distribution Focal Loss)의 가중치입니다.
posefloat12.0포즈 추정을 위해 학습된 모델의 포즈 손실 가중치로, 포즈 키포인트를 정확하게 예측하는 데 강조점을 둡니다.
kobjfloat1.0포즈 추정 모델에서의 키포인트 오브젝트니스 손실 가중치로, 감지 신뢰도와 포즈 정확도 간의 균형을 맞춥니다.
rlefloat1.0포즈 추정 모델에서의 잔차 로그 우도 추정 손실 가중치로, 키포인트 위치 지정의 정밀도에 영향을 미칩니다.
anglefloat1.0obb 모델에서의 각도 손실 가중치로, 회전된 바운딩 박스 각도 예측의 정밀도에 영향을 미칩니다.
dlogfloat1.0깊이 정확도를 유도하는 주요 항인 깊이 추정 모델의 스케일 불변 로그(SILog) 손실의 가중치입니다.
dgradfloat0.5깊이 추정 모델에서 깊이 경계의 오차에 페널티를 주고 더 선명한 표면 경계를 유도하는 그래디언트 손실의 가중치입니다.
dlamfloat1.0깊이 추정 모델에서 SILog 손실의 분산 초점 인자. 1.0은 손실을 완전히 스케일 불변으로 만드는 반면, 0.0은 이를 일반 log-RMSE로 축소합니다.
nbsint64손실 정규화를 위한 명목 배치 크기입니다.
overlap_maskboolTrue학습을 위해 객체 마스크를 단일 마스크로 병합할지 아니면 각 객체마다 별도로 유지할지 결정합니다. 겹치는 경우, 병합 시 더 작은 마스크가 더 큰 마스크 위에 덮어씌워집니다.
mask_ratioint4세그멘테이션 마스크에 대한 다운샘플링 비율로, 학습 중 사용되는 마스크의 해상도에 영향을 미칩니다.
dropoutfloat0.0분류 작업에서 정규화를 위한 드롭아웃 비율로, 학습 중 유닛을 무작위로 생략하여 과적합을 방지합니다.
valboolTrue학습 중 검증을 활성화하여 별도의 데이터셋에서 모델 성능을 주기적으로 평가할 수 있습니다.
plotsboolTrue학습 및 검증 메트릭과 예측 예시의 플롯을 생성하고 저장하여 모델 성능과 학습 진행 상황에 대한 시각적 통찰을 제공합니다.
compilebool 또는 strFalsePyTorch 2.x torch.compile 그래프 컴파일을 backend='inductor'(으)로 활성화합니다. True"default", False → 비활성화, 또는 "default", "reduce-overhead", "max-autotune-no-cudagraphs"과 같은 문자열 모드를 허용합니다. 지원되지 않는 경우 경고와 함께 eager로 대체됩니다.
channels_lastboolFalse학습 중 컨볼루션에 channels_last (NHWC) 메모리 형식을 사용하여 결과 변경 없이 CUDA Tensor Core GPU의 속도를 높입니다. 이점이 없는 CPU 및 MPS에서는 자동으로 무시됩니다.
max_detint300학습의 검증 단계에서 유지되는 최대 객체 수를 지정합니다.
배치 크기 설정에 대한 참고 사항

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

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

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

증강 기법은 학습 데이터에 다양성을 도입하여 YOLO 모델의 견고성과 성능을 향상시키는 데 필수적이며, 모델이 보이지 않는 데이터에 더 잘 일반화하도록 돕습니다. 다음 표는 각 증강 인수의 목적과 효과를 설명합니다:

인수유형기본값지원되는 작업범위설명
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0색상 휠의 일부만큼 이미지의 색조(Hue)를 조정하여 색상 변동성을 도입합니다. 모델이 다양한 조명 조건에서도 일반화할 수 있도록 돕습니다.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0이미지의 채도(Saturation)를 일정 비율만큼 변경하여 색상 강도에 영향을 줍니다. 다양한 환경 조건을 시뮬레이션하는 데 유용합니다.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0이미지의 명도(Value/Brightness)를 일정 비율만큼 수정하여 모델이 다양한 조명 환경에서 잘 작동하도록 돕습니다.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180이미지를 지정된 각도 범위 내에서 무작위로 회전시켜, 다양한 방향에 있는 객체를 인식하는 모델의 능력을 향상합니다.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0이미지를 이미지 크기의 일부만큼 가로 및 세로로 이동시켜, 부분적으로 보이는 객체를 탐지하는 학습을 지원합니다.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1게인(gain) 계수만큼 이미지의 크기를 조정하여, 카메라로부터 다양한 거리에 있는 객체를 시뮬레이션합니다.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180지정된 각도만큼 이미지를 기울여, 다양한 각도에서 객체를 바라보는 효과를 모방합니다.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001이미지에 무작위 원근 변환을 적용하여, 3D 공간 내의 객체를 이해하는 모델의 능력을 향상합니다.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0지정된 확률로 이미지를 상하로 뒤집어, 객체의 특성을 변경하지 않으면서 데이터 가변성을 증가시킵니다.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0지정된 확률로 이미지를 좌우로 뒤집어, 대칭적인 객체를 학습하고 데이터셋의 다양성을 높이는 데 유용합니다.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0지정된 확률로 이미지 채널을 RGB에서 BGR로 전환하며, 잘못된 채널 순서에 대한 견고성을 높이는 데 유용합니다.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.04개의 학습 이미지를 하나로 결합하여 다양한 장면 구성과 객체 상호작용을 시뮬레이션합니다. 복잡한 장면 이해에 매우 효과적입니다.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0두 이미지와 해당 라벨을 혼합하여 합성 이미지를 생성합니다. 라벨 노이즈와 시각적 가변성을 도입하여 모델의 일반화 능력을 향상합니다.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0두 이미지의 일부를 결합하여 뚜렷한 영역을 유지하면서 부분적인 혼합을 생성합니다. 폐색 시나리오를 만들어 모델의 견고성을 향상합니다.
copy_pastefloat0segment0.0 - 1.0이미지 전반에 걸쳐 객체를 복사하고 붙여넣어 객체 인스턴스를 늘립니다.
copy_paste_modestrflipsegment-사용할 copy-paste 전략을 지정합니다. 옵션에는 'flip''mixup'가 포함됩니다.
auto_augmentstrrandaugmentclassify-시각적 다양성을 통해 모델 성능을 향상시키기 위해 사전 정의된 증강 정책('randaugment', 'autoaugment' 또는 'augmix')을 적용합니다.
erasingfloat0.4classify0.0 - 1.0학습 중에 이미지의 영역을 무작위로 지워 모델이 덜 명확한 특징에 집중하도록 유도합니다.
augmentationslistNonedetect, segment, semantic, 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가 로드되고 학습 로그가 저장된 디렉토리로 안내됩니다.

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

다음 단계#

보유한 데이터로 검증하여 실제 정확도를 확인한 후 ONNX, TensorRT 또는 다른 배포 형식으로 내보내기하세요. COCO8 대신 자신만의 데이터로 학습하시나요? 데이터셋 가이드를 사용하여 먼저 형식을 지정하세요.

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은 MPS(Metal Performance Shaders) 프레임워크를 활용하여 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은 인수를 통해 배치 크기, 학습률, 에포크 등 다양한 학습 설정을 구성할 수 있게 합니다. 간단한 개요는 다음과 같습니다:

인수기본값설명
modelNone학습할 모델 파일의 경로입니다.
dataNone분류를 위한 데이터셋 YAML 경로(예: coco8.yaml) 또는 데이터셋 디렉터리나 이름(예: imagenet10).
epochs100총 학습 에포크 수입니다.
batch16정수 또는 자동 모드로 조정 가능한 배치 크기입니다.
imgsz640학습을 위한 대상 이미지 크기입니다.
deviceNonecpu, 0, 0,1, 또는 mps과 같은 학습용 연산 장치.
saveTrue학습 체크포인트와 최종 모델 가중치 저장을 활성화합니다.

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

댓글