YOLO26 학습 레시피#
소개#
이 가이드에서는 COCO에서 공식 YOLO26 사전 학습 체크포인트를 생성하는 데 사용된 정확한 학습 레시피를 설명합니다. 여기에 나온 모든 하이퍼파라미터는 epoch별 학습 로그 및 실행의 코드 리비전과 함께 배포된 .pt 가중치에 이미 포함되어 있으며, 전체 내용을 프로그래밍 방식으로 확인할 수 있습니다.
아키텍처뿐 아니라 성능에 영향을 준 학습률 스케줄, 증강 파이프라인, 손실 가중치까지 공식 체크포인트에 적용된 내용을 파악하면 파인튜닝 시 더 나은 결정을 내리는 데 도움이 됩니다. 즉, 어떤 데이터 증강을 유지할지, 어떤 손실 함수 가중치를 조정할지, 데이터셋 크기에 어떤 옵티마이저 설정이 가장 적합한지 판단할 수 있습니다.
이 페이지에서는 배포된 체크포인트에 기록된 하이퍼파라미터를 설명합니다. 아키텍처, 손실 및 레이블 할당 변경 사항, 어블레이션을 비롯한 설정 근거는 Ultralytics YOLO26: 통합 실시간 엔드투엔드 비전 모델을 읽어보세요.
학습 개요#
모든 YOLO26 기본 모델은 두 단계로 학습되었습니다. 먼저 Objects365v1 사전 학습을 150 epoch 동안 진행한 다음 COCO 파인튜닝을 수행했습니다. 두 단계 모두 640x640 해상도, MuSGD 옵티마이저, 배치 크기 128로 진행했습니다. 무작위 가중치로 COCO에서 학습한 YOLO26 체크포인트는 없습니다. 따라서 대부분의 모델 크기에서 COCO 단계가 짧으며, COCO 단계의 하이퍼파라미터는 진화적 탐색을 통해 찾았습니다. 모든 모델 크기의 전체 학습 로그와 지표는 배포된 체크포인트에 저장되며, 차트로 렌더링되어 Ultralytics Platform에 표시됩니다.
모든 모델 크기에 적용된 주요 설계 결정은 다음과 같습니다:
- COCO 단계 전에 모든 모델 크기에서 Objects365 사전 학습 수행
- one-to-many 및 one-to-one 감독을 모두 적용하는 듀얼 헤드 학습. 추론은 기본적으로 NMS를 사용하며,
nms=False을 지정하면 NMS가 필요 없는 헤드를 선택합니다. - SGD와 행렬 가중치(2D 선형 가중치 및 2D로 재구성한 4D 합성곱 필터)에 대한 Muon 방식의 직교화 업데이트를 결합한 MuSGD 옵티마이저
- 강한 모자이크 증강(확률 ~0.9~1.0)은 마지막 epoch 동안 비활성화했습니다(사전 학습에서는
close_mosaic=8, COCO에서는close_mosaic=10). - 크기가 다른 객체에 대응하기 위해 강도 높은 스케일 증강(0.5~0.95)을 적용했습니다
- 대부분의 모델 크기에서 기하학적 왜곡을 낮게 유지하기 위해 회전/전단 증강을 최소화했습니다
1단계: Objects365 사전 학습#
모든 YOLO26 COCO 체크포인트는 동일한 크기의 Objects365v1 체크포인트에서 파인튜닝되었습니다. 해당 사전 학습 가중치도 공개되어 있으며, Objects365 데이터셋 페이지에 문서화되어 있습니다. 각 COCO 체크포인트는 .pt 파일에 포함된 학습 설정에서 시작 가중치를 명시합니다. 아래의 YOLO26 체크포인트 학습 인수 확인 섹션에서 이를 확인하는 방법을 설명합니다:
| COCO 체크포인트 | 시작 가중치 |
|---|---|
yolo26n.pt | yolo26n-objv1-150.pt |
yolo26s.pt | yolo26s-objv1-150.pt |
yolo26m.pt | yolo26m-objv1-150.pt |
yolo26l.pt | yolo26l-objv1-150.pt |
yolo26x.pt | yolo26x-objv1-150.pt |
사전 학습에는 탐색을 통해 찾은 값이 아니라 대부분 기본 설정을 사용했습니다. lr0, lrf, momentum, weight_decay, box, cls는 default.yaml과 일치하며, warmup_epochs, close_mosaic, dfl는 재정의되었습니다. X 모델의 warmup_epochs, 증강 강도, 표 아래에 나열된 내부 MuSGD 및 헤드 가중치를 제외하면 모든 모델 크기에서 설정을 공유합니다:
| 설정 | 값 |
|---|---|
data | Objects365v1 |
epochs | 150 |
imgsz | 640 |
batch | 128 |
optimizer | MuSGD |
lr0 / lrf | 0.01 / 0.01 |
momentum | 0.937 |
weight_decay | 0.0005 |
warmup_epochs | 1 (X는 2) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| 증강 | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
mixup | 0.0 | 0.05 | 0.15 | 0.15 | 0.2 |
copy_paste | 0.1 | 0.15 | 0.4 | 0.5 | 0.6 |
scale | 0.5 | 0.9 | 0.9 | 0.9 | 0.9 |
이 표는 사전 학습에 영향을 주는 설정을 다루며 전체 설정을 포함하지는 않습니다. 체크포인트에는 100개가 넘는 인수가 기록되어 있으므로, 전체 기준 목록은 아래와 같이 train_args을 출력해 확인하세요.
고급: 내부 사전 학습 파라미터
사전 학습에서는 내부 학습 파라미터에서 설명한 것과 같은 실험 분기 파라미터도 변경했습니다. 모든 모델 크기에서 cls_w은 1.0이었습니다.
| 설정 | N | S | M | L | X |
|---|---|---|---|---|---|
muon_w | 0.45 | 0.5 | 0.45 | 0.45 | 0.5 |
sgd_w | 0.55 | 0.5 | 0.55 | 0.55 | 0.6 |
o2m | 0.1 | 0.1 | 0.1 | 1.0 | 1.0 |
stage 1을 재사용하는 데 Objects365 데이터 세트는 필요하지 않습니다. 사전 학습된 체크포인트는 다른 Ultralytics 에셋과 마찬가지로 자동 다운로드되므로, 자체 데이터 세트로 파인튜닝할 수 있습니다:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)대신 COCO stage를 다시 실행하려면 동일한 가중치에서 시작하고, 아래 표에 나와 있는 해당 크기의 stage 2 옵티마이저, 손실 및 증강 값을 전달합니다. 표에는 warmup_momentum, warmup_bias_lr, perspective, flipud, cutmix와 같이 기본값이 아닌 작은 인수는 생략되어 있으므로, 정확한 설정을 확인하려면 체크포인트에서 train_args를 출력하세요. 내부 매개변수는 배포된 패키지에서 거부되므로 실험용 브랜치가 필요합니다.
YOLO26 체크포인트 학습 인수 확인#
모든 Ultralytics 체크포인트에는 해당 체크포인트를 생성하는 데 사용된 전체 학습 구성이 저장되어 있으므로, 이 페이지의 각 값을 직접 확인할 수 있습니다:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])출력에는 100개가 넘는 항목의 전체 구성이 나열되며, 여기에는 이 페이지에 문서화된 모든 레시피 값이 포함됩니다. yolo26n.pt의 일부 예:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGD공식 릴리스와 자체 파인튜닝 모델을 포함해 모든 .pt 체크포인트에서 사용할 수 있습니다. 구성 가능한 전체 학습 인수 목록은 학습 구성 참조를 확인하세요.
학습 곡선 보기#
저장되는 항목은 train_args뿐만이 아닙니다. 모든 체크포인트에는 해당 체크포인트를 생성한 실행의 전체 epoch별 results.csv과 최종 검증 지표도 포함되어 있습니다. 공식 YOLO26 체크포인트의 곡선은 Ultralytics Platform에 게시되어 있으며, 모든 .pt 파일을 프로젝트에 끌어다 놓으면 파일에서 메타데이터가 자동으로 추출되어 동일한 데이터를 차트로 확인할 수 있습니다.
각 체크포인트에는 해당 체크포인트를 생성한 stage의 데이터가 포함되어 있으므로, COCO 곡선은 yolo26s.pt에, 150 epoch의 Objects365 곡선은 yolo26s-objv1-150.pt에 있습니다.
코드 리비전 확인#
ckpt["git"]에는 체크포인트를 생성한 커밋이 기록되어 있으며, 해당 커밋은 Ultralytics 저장소의 공개 실험용 브랜치에 있으므로 정확한 학습 코드를 체크아웃할 수 있습니다:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849실험용 브랜치에는 main에 반영되지 않은 작업이 포함되어 있습니다. 예를 들어 구성 가능한 o2m과 cls_w가 있습니다. 아래에 문서화된 하이퍼파라미터로 main에서 학습하면 비트 단위로 완전히 동일한 결과를 얻지는 못하지만, 공개된 지표와의 차이는 무시할 수 있을 정도로 작습니다.
모델 크기별 YOLO26 학습 하이퍼파라미터#
위의 Objects365 가중치에 적용하는 stage 2 값입니다. 아래 표에서는 레시피를 옵티마이저 및 스케줄, 손실 가중치, 증강의 범주별로 정리했습니다. 모든 값은 배포된 체크포인트에 포함된 train_args에서 가져왔습니다.
옵티마이저 및 학습률#
이 옵티마이저 및 스케줄 설정은 각 크기 모델의 COCO 파인튜닝에 사용되었습니다. N 모델이 나머지 모델과 어떻게 다른지 확인해 보세요:
| 설정 | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
N 모델은 초기 학습률을 더 높게 설정하고 급격하게 감소시키는 방식(lrf=0.0495)을 사용한 반면, S/M/L/X 모델은 초기 LR을 훨씬 낮게 설정하고 완만한 스케줄(lrf=0.882)을 사용했습니다. 이는 소형 모델과 대형 모델의 수렴 동역학이 서로 다르기 때문입니다. 소형 모델은 효과적으로 학습하려면 더 적극적인 업데이트가 필요합니다.
손실 가중치#
손실 가중치는 검출 손실의 세 가지 구성 요소, 즉 바운딩 박스 IoU 회귀(box), 분류(cls), 박스 거리 회귀 항(dfl)의 균형을 조정합니다. DFL을 사용하지 않는 YOLO26은 dfl 게인을 분포 초점 손실 대신 정규화된 박스 거리의 L1 손실에 가중치를 부여하는 데 사용합니다:
| 설정 | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
N 모델은 dfl 거리 회귀 항을 우선시하는 반면, S/M/L/X 모델은 IoU 기반 박스 회귀에 더 큰 비중을 둡니다. 분류 손실은 모든 크기에서 비교적 일정하게 유지됩니다.
증강 파이프라인#
각 기법에 대한 자세한 설명은 YOLO 데이터 증강 가이드를 참조하세요.
| 설정 | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
~0으로 표시된 값은 실제 체크포인트에서 0.01보다 작습니다(예: S 모델의 degrees=0.00012). 즉, 증강은 사실상 비활성화되어 있습니다.
대형 모델은 용량이 더 크고 강한 정규화의 이점을 얻으므로 전반적으로 더 강한 증강(더 높은 mixup 및 scale)을 사용합니다. N 모델만 유의미한 회전, 전단 및 BGR 증강을 사용합니다.
내부 학습 매개변수#
고급: 내부 파이프라인 매개변수
체크포인트에는 실험용 학습 브랜치에서 사용되었지만 default.yaml에서 사용자가 구성할 수 있는 설정으로 노출되지 않는 매개변수도 포함되어 있습니다:
| 설정 | 설명 | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | MuSGD의 Muon 업데이트 가중치 | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | MuSGD의 SGD 업데이트 가중치 | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | 내부 분류 가중치 | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | 일대다 헤드 손실 가중치 | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Top-k 레이블 할당 | 8 | 5 | 5 | 5 | 5 |
파인튜닝 시 해당 매개변수가 어떤 의미인지 알아보려면 이 매개변수에 관한 FAQ 항목을 참조하세요.
자체 데이터 세트로 YOLO26 파인튜닝하기#
자체 데이터 세트로 YOLO26을 파인튜닝할 때 전체 사전 학습 레시피를 그대로 재현할 필요는 없습니다. 사전 학습 가중치에는 이미 COCO 학습 과정에서 얻은 증강 및 최적화 지식이 반영되어 있습니다. 보다 일반적인 학습 모범 사례는 모델 학습 팁을 참조하세요.
기본 설정으로 파인튜닝하기#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)기본값으로 파인튜닝하는 것은 효과적인 기준선입니다. 구체적인 이유가 있을 때만 하이퍼파라미터를 조정하세요.
YOLO26 하이퍼파라미터를 조정해야 하는 경우#
소규모 데이터 세트(이미지 1,000개 미만):
- 증강 강도 낮추기:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - 옵티마이저를 명시하고 학습률 낮추기:
optimizer=AdamW,lr0=0.001 - patience를 설정하고 epoch 수 줄이기:
epochs=50,patience=20 - 백본 레이어 고정 고려:
freeze=10
대규모 데이터 세트(이미지 50,000개 초과):
- 사전 학습 레시피와 더 가깝게 설정
- 학습을 더 오래 진행한다면
optimizer=MuSGD사용 고려 - 증강 늘리기:
mosaic=1.0,mixup=0.3,scale=0.9
도메인 특화 이미지(항공, 의료, 수중):
- 세로 방향이 다양하다면
flipud=0.5늘리기 - 객체가 임의의 회전 방향으로 나타난다면
degrees늘리기 - 조명 조건이 COCO와 크게 다르다면
hsv_s및hsv_v조정하기
자동 하이퍼파라미터 최적화는 하이퍼파라미터 튜닝 가이드를 참조하세요.
모델 크기 선택#
| 모델 | 권장 용도 | 배치 크기 가이드 |
|---|---|---|
| YOLO26n | 엣지 디바이스, 모바일, CPU 실시간 처리 | 소비자용 GPU에서 큰 배치(64-128) |
| YOLO26s | 속도와 정확도의 균형 | 중간 크기 배치(32-64) |
| YOLO26m | 적당한 연산 자원으로 더 높은 정확도 | 작은 배치(16-32) |
| YOLO26l | GPU를 사용할 수 있을 때 높은 정확도 | 작은 배치(8-16) 또는 멀티 GPU |
| YOLO26x | 최고 수준의 정확도, 서버 배포 | 작은 배치(4-8) 또는 멀티 GPU |
내보내기 및 배포 옵션은 내보내기 가이드와 모델 배포 옵션을 참조하세요.
결론#
YOLO26 체크포인트에는 전체 학습 레시피가 내장되어 있으므로, 각 모델 크기에 사용된 정확한 하이퍼파라미터를 train_args 한 번만 조회하면 확인할 수 있습니다. 기본값으로 파인튜닝을 시작하고 이 페이지의 표를 참고해 신중하게 조정한 다음, 변경 사항을 자체 검증 세트로 확인하세요. 진행 중 궁금한 점이 있으면 Ultralytics GitHub 저장소 또는 Ultralytics Discord 서버에서 커뮤니티에 문의하세요.
자주 묻는 질문#
torch.load()으로 체크포인트를 로드한 뒤train_args키에 접근하거나, Ultralytics API와 함께model.ckpt["train_args"]를 사용하세요. 전체 예제는 YOLO26 체크포인트 학습 인수 확인을 참조하세요.모든 크기의 모델은 Objects365 사전 학습에서 동일하게 150 epoch를 수행했으므로, COCO epoch 수는 파인튜닝 단계만 반영합니다. 대형 모델은 COCO에서 더 적은 epoch 만에 수렴합니다. X 모델은 40 epoch, N 모델은 245 epoch가 걸렸습니다. 이 수치가 엄격하게 단조 증가 또는 감소하지 않는 이유(S는 70, M은 80)는 크기별 하이퍼파라미터 탐색 결과가 반영되었기 때문입니다. 자체 데이터 세트로 파인튜닝할 때 최적 epoch 수는 모델 크기가 아니라 데이터 세트의 크기와 복잡도에 따라 달라집니다. 조기 종료(
patience)를 사용하면 적절한 종료 시점을 자동으로 찾을 수 있습니다.이 값들은 기본 체크포인트를 생성한 실험용 브랜치에서 가져온 것으로, 재현성을 위해
train_args에 기록되어 있습니다.default.yaml에서 사용자가 구성할 수 있는 설정이 아니며, 배포된 패키지가 해당 값을 읽지 않기 때문에model.train()에 전달하면 잘못된 인수 오류가 발생합니다. 파인튜닝할 때 이 값을 설정할 필요는 없습니다. 모델 크기별 값은 내부 학습 매개변수를 참조하세요.아니요. 각 COCO 체크포인트는 이미 150 epoch 동안 학습된 동일한 크기의 Objects365v1 체크포인트에서 파인튜닝되었습니다. 자세한 내용은 Stage 1: Objects365 사전 학습과 YOLO26 논문을 참조하세요. 공개된 수치에는 COCO를 처음부터 학습한 실행이 없으므로, 처음부터 학습한 결과와 해당 수치를 비교하는 것은 동등한 비교가 아닙니다.
체크포인트 내부에 저장되어 있으며, Ultralytics Platform에서 차트로 확인할 수 있습니다. 모든 체크포인트에는 해당 실행의 전체 epoch별
results.csv이 저장되어 있으므로,.pt파일을 Platform 프로젝트에 놓으면 코드 없이도 손실, mAP 추이 및 학습률을 차트로 표시할 수 있습니다. 자세한 내용은 학습 곡선 보기를 참조하세요. Objects365 stage에는yolo26*-objv1-150.pt체크포인트에 자체 로그가 있습니다.공개된 지표와 가까운 결과를 얻을 수는 있지만 완전히 동일하지는 않습니다. 동일한 설정을 사용하려면 체크포인트에 기록된 커밋을 체크아웃하고 해당 브랜치에서 학습하세요. 자세한 내용은 코드 리비전 확인을 참조하세요.