Ultralytics YOLO를 사용한 모델 훈련
소개
딥러닝 모델 훈련은 모델에 데이터를 제공하고 정확한 예측을 할 수 있도록 파라미터를 조정하는 과정을 포함합니다. Ultralytics YOLO11의 Train 모드는 최신 하드웨어 기능을 최대한 활용하여 객체 감지 모델을 효과적이고 효율적으로 훈련할 수 있도록 설계되었습니다. 이 가이드는 YOLO11의 강력한 기능들을 사용하여 자체 모델 훈련을 시작하는 데 필요한 모든 세부 정보를 다루는 것을 목표로 합니다.
참고: Google Colab에서 사용자 정의 데이터 세트로 YOLO 모델을 훈련하는 방법.
훈련을 위해 Ultralytics YOLO를 선택해야 하는 이유
다음은 YOLO11의 Train 모드를 선택해야 하는 몇 가지 강력한 이유입니다.
- 효율성: 단일 GPU 설정에서든 여러 GPU로 확장하든 하드웨어를 최대한 활용하십시오.
- 다재다능함: COCO, VOC 및 ImageNet과 같이 즉시 사용 가능한 데이터 세트 외에도 사용자 정의 데이터 세트에서 훈련하십시오.
- 사용자 친화적: 간단하면서도 강력한 CLI 및 python 인터페이스를 통해 간단한 훈련 경험을 제공합니다.
- 하이퍼파라미터 유연성: 모델 성능을 미세 조정할 수 있는 광범위한 사용자 정의 가능 하이퍼파라미터.
Train 모드의 주요 기능
다음은 YOLO11의 Train 모드의 몇 가지 주목할 만한 기능입니다.
- 자동 데이터 세트 다운로드: COCO, VOC 및 ImageNet과 같은 표준 데이터 세트는 처음 사용할 때 자동으로 다운로드됩니다.
- 다중 GPU 지원: 여러 GPU에서 훈련 노력을 원활하게 확장하여 프로세스 속도를 높입니다.
- 하이퍼파라미터 구성: YAML 구성 파일 또는 CLI 인수를 통해 하이퍼파라미터를 수정하는 옵션.
- 시각화 및 모니터링: 더 나은 통찰력을 위해 훈련 메트릭을 실시간으로 추적하고 학습 프로세스를 시각화합니다.
팁
- COCO, VOC, ImageNet과 같은 YOLO11 데이터 세트는 처음 사용할 때 자동으로 다운로드됩니다. 즉,
yolo train data=coco.yaml
사용 예시
COCO8 데이터 세트에서 YOLO11n을 100회 훈련합니다. epochs 이미지 크기 640에서. 훈련 장치는 다음을 사용하여 지정할 수 있습니다. 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("yolo11n.yaml") # build a new model from YAML
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo11n.yaml").load("yolo11n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt epochs=100 imgsz=640
Multi-GPU 훈련
Multi-GPU 학습은 여러 GPU에 학습 부하를 분산하여 사용 가능한 하드웨어 리소스를 보다 효율적으로 활용할 수 있도록 합니다. 이 기능은 python API와 명령줄 인터페이스를 통해 사용할 수 있습니다. Multi-GPU 학습을 활성화하려면 사용하려는 GPU 장치 ID를 지정하십시오.
Multi-GPU 학습 예제
2개의 GPU, CUDA 장치 0과 1로 학습하려면 다음 명령을 사용하십시오. 필요에 따라 추가 GPU로 확장하십시오.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1
# Use the two most idle GPUs
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=-1,-1
유휴 GPU 학습
유휴 GPU 학습은 수동 GPU 선택 없이도 다중 GPU 시스템에서 활용도가 가장 낮은 GPU를 자동으로 선택하여 리소스 사용을 최적화합니다. 이 기능은 활용률 지표 및 VRAM 가용성을 기반으로 사용 가능한 GPU를 식별합니다.
유휴 GPU 학습 예시
학습을 위해 가장 유휴 상태인 GPU를 자동으로 선택하고 사용하려면 다음을 사용하세요. -1
device 파라미터. 이는 공유 컴퓨팅 환경이나 여러 사용자가 있는 서버에서 특히 유용합니다.
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.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])
# Start training using the single most idle GPU
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1
# Start training using the two most idle GPUs
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1,-1
자동 선택 알고리즘은 다음을 갖춘 GPU를 우선적으로 선택합니다.
- 더 낮은 전류 사용률
- 더 높은 사용 가능한 메모리(여유 VRAM)
- 더 낮은 온도 및 전력 소비
이 기능은 공유 컴퓨팅 환경이나 여러 모델에서 여러 훈련 작업을 실행할 때 특히 유용합니다. 수동 개입 없이 변화하는 시스템 조건에 자동으로 적응하여 최적의 리소스 할당을 보장합니다.
Apple Silicon MPS 훈련
Ultralytics YOLO 모델에 통합된 Apple Silicon 칩에 대한 지원을 통해 이제 강력한 MPS(Metal Performance Shaders) 프레임워크를 활용하여 장치에서 모델을 학습할 수 있습니다. MPS는 Apple의 맞춤형 실리콘에서 연산 및 이미지 처리 작업을 실행하는 고성능 방법을 제공합니다.
Apple Silicon 칩에서 학습을 활성화하려면 학습 프로세스를 시작할 때 'mps'를 장치로 지정해야 합니다. 다음은 python 및 명령줄을 통해 이 작업을 수행하는 방법에 대한 예입니다.
MPS 학습 예제
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps
Apple Silicon 칩의 계산 능력을 활용하는 동시에 학습 작업의 보다 효율적인 처리가 가능합니다. 자세한 지침 및 고급 구성 옵션은 PyTorch MPS 설명서를 참조하십시오.
중단된 훈련 재개
이전에 저장한 상태에서 학습을 재개하는 것은 딥 러닝 모델로 작업할 때 중요한 기능입니다. 이는 학습 프로세스가 예기치 않게 중단되었거나 새 데이터로 또는 더 많은 epoch 동안 모델 학습을 계속하려는 경우와 같은 다양한 시나리오에서 유용할 수 있습니다.
학습이 재개되면 Ultralytics YOLO는 마지막으로 저장된 모델에서 가중치를 로드하고 optimizer 상태, 학습률 스케줄러 및 epoch 번호도 복원합니다. 이를 통해 중단된 위치에서부터 학습 프로세스를 원활하게 계속할 수 있습니다.
Ultralytics YOLO에서 학습을 쉽게 재개하려면 다음을 설정하십시오. resume
인수를 True
호출할 때 train
메서드로 설정하고 .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 an interrupted training
yolo train resume model=path/to/last.pt
설정하면 resume=True
, 'path/to/last.pt' 파일에 저장된 상태를 사용하여 중단된 위치에서부터 train
함수가 학습을 계속합니다. 만약 resume
인수가 생략되거나 False
, 'path/to/last.pt' 파일에 저장된 상태를 사용하여 중단된 위치에서부터 train
함수가 새 학습 세션을 시작합니다.
체크포인트는 기본적으로 모든 epoch이 끝날 때마다 저장되거나, `--save-period` 인수를 사용하여 설정된 고정 간격으로 저장됩니다. 따라서 학습을 재개하려면 최소 1 epoch을 완료해야 합니다. save_period
`--save-period` 인수를 사용하여 설정된 고정 간격으로 저장됩니다. 따라서 학습을 재개하려면 최소 1 epoch을 완료해야 합니다.
훈련 설정
YOLO 모델의 학습 설정은 학습 과정에서 사용되는 다양한 하이퍼파라미터와 구성을 포함합니다. 이러한 설정은 모델의 성능, 속도 및 정확도에 영향을 미칩니다. 주요 학습 설정에는 배치 크기, 학습률, 모멘텀 및 가중치 감소가 포함됩니다. 또한 옵티마이저, 손실 함수 및 학습 데이터 세트 구성의 선택은 학습 과정에 영향을 줄 수 있습니다. 성능을 최적화하려면 이러한 설정을 신중하게 조정하고 실험하는 것이 중요합니다.
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
model |
str |
None |
학습에 사용할 모델 파일을 지정합니다. 사전 학습된 모델 또는 .pt 사전 학습된 모델 또는 .yaml 구성 파일의 경로를 허용합니다. 모델 구조를 정의하거나 가중치를 초기화하는 데 필수적입니다. |
data |
str |
None |
데이터 세트 구성 파일의 경로입니다(예: coco8.yaml 데이터 세트 구성 파일의 경로입니다(예:). 이 파일에는 학습 경로를 포함한 데이터 세트 관련 파라미터가 포함되어 있습니다. 유효성 검사 데이터, 클래스 이름 및 클래스 수가 포함됩니다. |
epochs |
int |
100 |
총 학습 epoch 수입니다. 각 epoch은 전체 데이터 세트에 대한 전체 패스를 나타냅니다. 이 값을 조정하면 학습 기간 및 모델 성능에 영향을 줄 수 있습니다. |
time |
float |
None |
최대 학습 시간(시간)입니다. 설정된 경우 `--epochs` 인수를 덮어쓰고 지정된 기간 후 학습이 자동으로 중지되도록 합니다. 시간이 제한된 학습 시나리오에 유용합니다. epochs 인수를 덮어쓰고 지정된 기간 후 학습이 자동으로 중지되도록 합니다. 시간이 제한된 학습 시나리오에 유용합니다. |
patience |
int |
100 |
검증 메트릭이 개선되지 않은 상태로 조기 중단을 위해 대기하는 epoch 수입니다. 성능이 정체될 때 학습을 중단하여 과적합을 방지하는 데 도움이 됩니다. |
batch |
int 또는 float |
16 |
배치 크기이며, 세 가지 모드가 있습니다. 정수로 설정(예: batch=16 ) 60% GPU 메모리 활용을 위한 자동 모드(batch=-1 ) 또는 지정된 활용 비율의 자동 모드(batch=0.70 )입니다. |
imgsz |
int |
640 |
학습 대상 이미지 크기. 이미지는 지정된 값과 같은 변이 있는 정사각형으로 크기가 조정됩니다(있는 경우) rect=False )는 YOLO 모델의 종횡비를 유지하지만 RTDETR에는 적용되지 않습니다. 모델에 영향을 미치며 정확도 계산 복잡도에도 영향을 미칩니다. |
save |
bool |
True |
학습 체크포인트 및 최종 모델 가중치 저장을 활성화합니다. 학습 재개 또는 모델 배포에 유용합니다. |
save_period |
int |
-1 |
모델 체크포인트 저장 빈도(epoch 단위)입니다. -1 값은 이 기능을 비활성화합니다. 긴 학습 세션 중에 중간 모델을 저장하는 데 유용합니다. |
cache |
bool |
False |
데이터 세트 이미지를 메모리(True /ram ), 디스크(disk )에 캐싱하거나 비활성화(False )합니다. 메모리 사용량을 늘리는 대신 디스크 I/O를 줄여 학습 속도를 향상시킵니다. |
device |
int 또는 str 또는 list |
None |
학습을 위한 계산 장치를 지정합니다. 단일 GPU(device=0 ), 다중 GPU (device=[0,1] ), CPU (device=cpu ), Apple Silicon용 MPS (device=mps ), 또는 가장 유휴 상태인 GPU 자동 선택(device=-1 ) 또는 여러 개의 유휴 GPU(device=[-1,-1] ) |
workers |
int |
8 |
데이터 로딩을 위한 worker 스레드 수 (per RANK ) (다중 GPU 훈련인 경우). 데이터 전처리 속도와 모델에 데이터를 공급하는 속도에 영향을 미치며, 특히 다중 GPU 설정에서 유용합니다. |
project |
str |
None |
훈련 결과가 저장되는 프로젝트 디렉터리의 이름입니다. 다양한 실험을 체계적으로 저장할 수 있습니다. |
name |
str |
None |
훈련 실행 이름입니다. 훈련 로그 및 결과가 저장되는 프로젝트 폴더 내에 하위 디렉터리를 만드는 데 사용됩니다. |
exist_ok |
bool |
False |
True인 경우 기존 프로젝트/이름 디렉터리를 덮어쓸 수 있습니다. 이전 결과를 수동으로 지우지 않고 반복적인 실험을 수행하는 데 유용합니다. |
pretrained |
bool 또는 str |
True |
사전 훈련된 모델에서 훈련을 시작할지 여부를 결정합니다. 부울 값이거나 가중치를 로드할 특정 모델의 문자열 경로일 수 있습니다. 훈련 효율성과 모델 성능을 향상시킵니다. |
optimizer |
str |
'auto' |
훈련에 사용할 최적화 알고리즘을 선택합니다. 옵션에는 SGD , Adam , AdamW , NAdam , RAdam , RMSProp 등이 있으며, auto 모델 구성에 따라 자동 선택을 위한 옵션도 있습니다. 수렴 속도와 안정성에 영향을 미칩니다. |
seed |
int |
0 |
훈련을 위한 임의 시드를 설정하여 동일한 구성으로 실행할 때마다 결과의 재현성을 보장합니다. |
deterministic |
bool |
True |
결정론적 알고리즘 사용을 강제하여 재현성을 보장하지만, 비결정론적 알고리즘에 대한 제한으로 인해 성능과 속도에 영향을 줄 수 있습니다. |
single_cls |
bool |
False |
다중 클래스 데이터 세트의 모든 클래스를 훈련 중에 단일 클래스로 취급합니다. 이진 분류 작업이나 분류보다는 객체 존재에 집중할 때 유용합니다. |
classes |
list[int] |
None |
학습할 클래스 ID 목록을 지정합니다. 학습 중에 특정 클래스만 필터링하여 집중하는 데 유용합니다. |
rect |
bool |
False |
최소 패딩 전략을 사용하여 배치 내 이미지를 공통 크기로 최소한으로 패딩하며, 가장 긴 변의 길이는 다음과 같습니다. imgsz 입니다. 효율성과 속도를 향상시킬 수 있지만 모델 정확도에 영향을 줄 수 있습니다. |
multi_scale |
bool |
False |
증가/감소를 통해 다중 스케일 학습을 활성화합니다. imgsz 최대 0.5 학습 중. 모델이 여러 번 더 정확해지도록 학습합니다. imgsz 추론 시. |
cos_lr |
bool |
False |
코사인 학습률 스케줄러를 활용하여 epoch에 따라 코사인 곡선을 따라 학습률을 조정합니다. 더 나은 수렴을 위해 학습률을 관리하는 데 도움이 됩니다. |
close_mosaic |
int |
10 |
완료 전에 훈련을 안정화하기 위해 마지막 N epoch에서 모자이크 데이터 증강을 비활성화합니다. 0으로 설정하면 이 기능이 비활성화됩니다. |
resume |
bool |
False |
마지막으로 저장된 체크포인트부터 훈련을 재개합니다. 모델 가중치, 최적화 프로그램 상태 및 epoch 수를 자동으로 로드하여 훈련을 원활하게 계속합니다. |
amp |
bool |
True |
자동 혼합 정밀도 (AMP) 훈련을 활성화하여 메모리 사용량을 줄이고 정확도에 미치는 영향을 최소화하면서 훈련 속도를 높일 수 있습니다. |
fraction |
float |
1.0 |
훈련에 사용할 데이터 세트의 비율을 지정합니다. 전체 데이터 세트의 하위 세트에서 훈련할 수 있으므로 실험이나 리소스가 제한적인 경우에 유용합니다. |
profile |
bool |
False |
훈련 중 ONNX 및 TensorRT 속도 프로파일링을 활성화하여 모델 배포를 최적화하는 데 유용합니다. |
freeze |
int 또는 list |
None |
모델의 처음 N개 레이어 또는 지정된 레이어를 인덱스별로 고정하여 훈련 가능한 파라미터 수를 줄입니다. 전이 학습 또는 미세 조정에 유용합니다. |
lr0 |
float |
0.01 |
초기 학습률 (예: SGD=1E-2 , Adam=1E-3 ). 이 값을 조정하는 것은 최적화 프로세스에 매우 중요하며 모델 가중치가 업데이트되는 속도에 영향을 미칩니다. |
lrf |
float |
0.01 |
초기 비율의 일부로 최종 학습률 = (lr0 * lrf 스케줄러와 함께 사용하여 학습률을 시간에 따라 조정합니다. |
momentum |
float |
0.937 |
SGD의 모멘텀 계수 또는 Adam 옵티마이저의 베타1으로, 현재 업데이트에 과거 기울기를 통합하는 데 영향을 줍니다. |
weight_decay |
float |
0.0005 |
L2 정규화 항으로, 과적합을 방지하기 위해 큰 가중치에 페널티를 줍니다. |
warmup_epochs |
float |
3.0 |
학습률 워밍업을 위한 epoch 수로, 학습 초기에 안정화를 위해 낮은 값에서 초기 학습률로 점진적으로 증가시킵니다. |
warmup_momentum |
float |
0.8 |
워밍업 단계의 초기 모멘텀으로, 워밍업 기간 동안 설정된 모멘텀으로 점진적으로 조정됩니다. |
warmup_bias_lr |
float |
0.1 |
워밍업 단계 동안 편향 파라미터에 대한 학습률로, 초기 epoch에서 모델 학습을 안정화하는 데 도움이 됩니다. |
box |
float |
7.5 |
손실 함수에서 박스 손실 요소의 가중치로, bounding box 좌표를 정확하게 예측하는 데 얼마나 중점을 둘지 영향을 줍니다. |
cls |
float |
0.5 |
전체 손실 함수에서 분류 손실의 가중치로, 다른 요소에 비해 올바른 클래스 예측의 중요도에 영향을 미칩니다. |
dfl |
float |
1.5 |
분포 focal loss의 가중치로, 세분화된 분류를 위해 특정 YOLO 버전에서 사용됩니다. |
pose |
float |
12.0 |
포즈 추정을 위해 학습된 모델에서 포즈 손실의 가중치로, 포즈 키포인트를 정확하게 예측하는 데 중점을 둡니다. |
kobj |
float |
2.0 |
포즈 추정 모델에서 키포인트 객체성 손실의 가중치로, 감지 신뢰도와 포즈 정확도 간의 균형을 맞춥니다. |
nbs |
int |
64 |
손실 정규화를 위한 명목 배치 크기입니다. |
overlap_mask |
bool |
True |
객체 마스크를 훈련을 위해 단일 마스크로 병합할지, 아니면 각 객체에 대해 개별적으로 유지할지 결정합니다. 겹치는 경우 병합하는 동안 더 작은 마스크가 더 큰 마스크 위에 겹쳐집니다. |
mask_ratio |
int |
4 |
세분화 마스크의 다운샘플링 비율로, 학습 중에 사용되는 마스크의 해상도에 영향을 줍니다. |
dropout |
float |
0.0 |
분류 작업에서 정규화를 위한 드롭아웃 비율로, 학습 중에 임의로 유닛을 생략하여 과적합을 방지합니다. |
val |
bool |
True |
학습 중 유효성 검사를 활성화하여 별도의 데이터 세트에서 모델 성능을 주기적으로 평가할 수 있습니다. |
plots |
bool |
False |
학습 및 유효성 검사 지표와 예측 예제의 플롯을 생성하고 저장하여 모델 성능 및 학습 진행 상황에 대한 시각적 통찰력을 제공합니다. |
배치 크기 설정에 대한 참고 사항
에 지정되어 있습니다. batch
인수는 세 가지 방식으로 구성할 수 있습니다.
- 고정 배치 크기: 정수 값을 설정합니다(예:
batch=16
), 배치당 이미지 수를 직접 지정합니다. - 자동 모드(GPU 메모리 60%): 사용
batch=-1
CUDA 메모리 활용률을 약 60%로 자동 조정합니다. - 활용률 분수를 사용하는 자동 모드: GPU 메모리 사용량의 지정된 비율에 따라 배치 크기를 조정하려면 분수 값(예:
batch=0.70
)을 설정합니다.
증강 설정 및 하이퍼파라미터
증강 기법은 학습 데이터에 변동성을 부여하여 YOLO 모델의 견고성과 성능을 향상시키는 데 필수적이며, 모델이 보이지 않는 데이터에 대해 더 잘 일반화되도록 돕습니다. 다음 표는 각 증강 인수의 목적과 효과를 간략하게 설명합니다.
인수 | 유형 | 기본값 | 범위 | 설명 |
---|---|---|---|---|
hsv_h |
float |
0.015 |
0.0 - 1.0 |
색상환의 일부를 기준으로 이미지의 색조를 조정하여 색상 변화를 줍니다. 다양한 조명 조건에서 모델이 일반화되도록 돕습니다. |
hsv_s |
float |
0.7 |
0.0 - 1.0 |
일정 비율로 이미지의 채도를 변경하여 색상의 강도에 영향을 줍니다. 다양한 환경 조건을 시뮬레이션하는 데 유용합니다. |
hsv_v |
float |
0.4 |
0.0 - 1.0 |
일정 비율로 이미지의 값(밝기)을 수정하여 다양한 조명 조건에서 모델이 잘 작동하도록 돕습니다. |
degrees |
float |
0.0 |
0.0 - 180 |
지정된 각도 범위 내에서 이미지를 무작위로 회전시켜 다양한 방향에서 객체를 인식하는 모델의 능력을 향상시킵니다. |
translate |
float |
0.1 |
0.0 - 1.0 |
이미지 크기의 일부를 기준으로 이미지를 가로 및 세로로 이동시켜 부분적으로 보이는 객체를 감지하는 학습을 돕습니다. |
scale |
float |
0.5 |
>=0.0 |
이득 계수로 이미지의 크기를 조정하여 카메라에서 서로 다른 거리에 있는 객체를 시뮬레이션합니다. |
shear |
float |
0.0 |
-180 - +180 |
지정된 각도로 이미지를 기울여 서로 다른 각도에서 보이는 객체의 효과를 모방합니다. |
perspective |
float |
0.0 |
0.0 - 0.001 |
이미지에 임의 원근 변환을 적용하여 3D 공간에서 객체를 이해하는 모델의 능력을 향상시킵니다. |
flipud |
float |
0.0 |
0.0 - 1.0 |
지정된 확률로 이미지를 뒤집어 객체의 특성에 영향을 주지 않으면서 데이터 변동성을 높입니다. |
fliplr |
float |
0.5 |
0.0 - 1.0 |
지정된 확률로 이미지를 좌우로 뒤집어 대칭 객체를 학습하고 데이터 세트 다양성을 높이는 데 유용합니다. |
bgr |
float |
0.0 |
0.0 - 1.0 |
지정된 확률로 이미지 채널을 RGB에서 BGR로 뒤집어 잘못된 채널 순서에 대한 견고성을 높이는 데 유용합니다. |
mosaic |
float |
1.0 |
0.0 - 1.0 |
네 개의 학습 이미지를 하나로 결합하여 다양한 장면 구성과 객체 상호 작용을 시뮬레이션합니다. 복잡한 장면 이해에 매우 효과적입니다. |
mixup |
float |
0.0 |
0.0 - 1.0 |
두 이미지와 해당 레이블을 혼합하여 합성 이미지를 만듭니다. 레이블 노이즈와 시각적 가변성을 도입하여 모델의 일반화 능력을 향상시킵니다. |
cutmix |
float |
0.0 |
0.0 - 1.0 |
두 이미지의 일부를 결합하여 뚜렷한 영역을 유지하면서 부분적으로 혼합합니다. 폐색 시나리오를 만들어 모델의 견고성을 향상시킵니다. |
copy_paste |
float |
0.0 |
0.0 - 1.0 |
분할만 해당. 객체 인스턴스를 늘리기 위해 이미지 간에 객체를 복사하여 붙여넣습니다. |
copy_paste_mode |
str |
flip |
- | 분할 전용다음을 지정합니다. copy-paste 사용할 전략. 옵션은 다음과 같습니다. 'flip' 및 'mixup' . |
auto_augment |
str |
randaugment |
- | 분류 전용. 미리 정의된 증강 정책을 적용합니다('randaugment' , 'autoaugment' 또는 'augmix' ) 시각적 다양성을 통해 모델 성능을 향상시킵니다. |
erasing |
float |
0.4 |
0.0 - 0.9 |
분류만 해당. 모델이 덜 명확한 특징에 집중하도록 학습 중에 이미지 영역을 무작위로 지웁니다. |
이러한 설정은 데이터 세트 및 당면한 작업의 특정 요구 사항을 충족하도록 조정할 수 있습니다. 다양한 값을 실험하면 최상의 모델 성능을 이끌어내는 최적의 증강 전략을 찾는 데 도움이 될 수 있습니다.
정보
학습 증강 작업에 대한 자세한 내용은 참조 섹션을 참조하십시오.
로깅
YOLO11 모델을 훈련할 때 시간이 지남에 따라 모델의 성능을 추적하는 것이 유용할 수 있습니다. 이럴 때 로깅이 필요합니다. Ultralytics YOLO는 Comet, ClearML 및 TensorBoard의 세 가지 유형의 로거를 지원합니다.
로거를 사용하려면 위의 코드 스니펫에서 드롭다운 메뉴에서 선택하고 실행합니다. 선택한 로거가 설치되고 초기화됩니다.
Comet
Comet은 데이터 과학자와 개발자가 실험 및 모델을 추적, 비교, 설명 및 최적화할 수 있도록 지원하는 플랫폼입니다. 실시간 메트릭, 코드 차이 및 하이퍼파라미터 추적과 같은 기능을 제공합니다.
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
TensorBoard는 TensorFlow 시각화 툴킷입니다. TensorFlow 그래프를 시각화하고, 그래프 실행에 대한 정량적 메트릭을 플롯하고, 그래프를 통과하는 이미지와 같은 추가 데이터를 표시할 수 있습니다.
Google Colab에서 TensorBoard를 사용하려면:
예시
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory
TensorBoard를 로컬에서 사용하려면 아래 명령을 실행하고 결과를 확인하세요. http://localhost:6006/
.
예시
tensorboard --logdir ultralytics/runs # replace with 'runs' directory
이렇게 하면 TensorBoard가 로드되고 학습 로그가 저장된 디렉터리로 연결됩니다.
로거를 설정한 후 모델 학습을 진행할 수 있습니다. 모든 학습 메트릭은 선택한 플랫폼에 자동으로 기록되며, 이러한 로그에 액세스하여 모델의 성능을 시간 경과에 따라 모니터링하고, 다양한 모델을 비교하고, 개선 영역을 식별할 수 있습니다.
FAQ
Ultralytics YOLO11을 사용하여 객체 감지 모델을 학습하려면 어떻게 해야 하나요?
Ultralytics YOLO11을 사용하여 객체 감지 모델을 학습하려면 python API 또는 CLI를 사용할 수 있습니다. 아래는 두 가지 모두에 대한 예입니다.
단일 GPU 및 CPU 학습 예제
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640
자세한 내용은 Train Settings 섹션을 참조하세요.
Ultralytics YOLO11의 Train 모드의 주요 기능은 무엇입니까?
Ultralytics YOLO11의 Train 모드의 주요 기능은 다음과 같습니다.
- 자동 데이터세트 다운로드: COCO, VOC 및 ImageNet과 같은 표준 데이터세트를 자동으로 다운로드합니다.
- Multi-GPU 지원: 더 빠른 처리를 위해 여러 GPU에서 학습을 확장합니다.
- 하이퍼파라미터 구성: YAML 파일 또는 CLI 인수를 통해 하이퍼파라미터를 사용자 정의합니다.
- 시각화 및 모니터링: 더 나은 통찰력을 위해 학습 메트릭을 실시간으로 추적합니다.
이러한 기능을 통해 학습을 효율적으로 수행하고 필요에 따라 사용자 정의할 수 있습니다. 자세한 내용은 Train 모드의 주요 기능 섹션을 참조하세요.
Ultralytics YOLO11에서 중단된 세션으로부터 훈련을 재개하려면 어떻게 해야 합니까?
중단된 세션에서 학습을 재개하려면 다음을 설정합니다. resume
인수를 True
마지막으로 저장된 체크포인트의 경로를 지정합니다.
학습 재개 예제
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)
yolo train resume model=path/to/last.pt
자세한 내용은 중단된 학습 재개 섹션을 확인하세요.
Apple Silicon 칩에서 YOLO11 모델을 훈련할 수 있습니까?
예, Ultralytics YOLO11은 Metal Performance Shaders (MPS) 프레임워크를 활용하여 Apple Silicon 칩에서 학습을 지원합니다. 'mps'를 학습 장치로 지정하세요.
MPS 학습 예제
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo11n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=mps
자세한 내용은 Apple Silicon MPS 학습 섹션을 참조하십시오.
일반적인 훈련 설정은 무엇이며, 어떻게 구성해야 합니까?
Ultralytics YOLO11을 사용하면 배치 크기, 학습률, epoch 등 다양한 학습 설정을 인수를 통해 구성할 수 있습니다. 다음은 간략한 개요입니다.
인수 | 기본값 | 설명 |
---|---|---|
model |
None |
학습할 모델 파일의 경로입니다. |
data |
None |
데이터 세트 구성 파일의 경로입니다(예: coco8.yaml )입니다. |
epochs |
100 |
총 학습 epoch 수입니다. |
batch |
16 |
배치 크기이며, 정수 또는 자동 모드로 조정할 수 있습니다. |
imgsz |
640 |
학습 대상 이미지 크기입니다. |
device |
None |
다음과 같은 학습을 위한 컴퓨팅 장치입니다. cpu , 0 , 0,1 또는 mps . |
save |
True |
학습 체크포인트 및 최종 모델 가중치 저장을 활성화합니다. |
학습 설정에 대한 자세한 내용은 학습 설정 섹션을 확인하십시오.