Công thức huấn luyện YOLO26#
Giới thiệu#
Hướng dẫn này ghi lại chính xác công thức huấn luyện được sử dụng để tạo các checkpoint pretrained chính thức của YOLO26 trên COCO. Mọi hyperparameter được trình bày tại đây đã được nhúng trong các trọng số .pt đã phát hành, cùng với log huấn luyện theo từng epoch và revision code của lần chạy; toàn bộ thông tin đều có thể được kiểm tra bằng chương trình.
Biết những gì đã được sử dụng để tạo các checkpoint chính thức — không chỉ kiến trúc mà còn các lịch learning rate, pipeline augmentation và trọng số loss định hình hiệu năng của chúng — sẽ giúp bạn đưa ra quyết định tốt hơn khi fine-tuning: nên giữ lại data augmentation nào, nên điều chỉnh trọng số của loss function nào và thiết lập optimizer nào phù hợp nhất với quy mô dataset của bạn.
Trang này trình bày các hyperparameter được ghi trong những checkpoint đã phát hành. Để hiểu lý do đằng sau chúng, bao gồm kiến trúc, các thay đổi về loss và label assignment cũng như các phép ablation, hãy đọc Ultralytics YOLO26: Unified Real-Time End-to-End Vision Models.
Tổng quan về huấn luyện#
Tất cả model cơ sở YOLO26 đều được huấn luyện qua hai giai đoạn: pretraining trên Objects365v1 trong 150 epoch, sau đó fine-tuning trên COCO. Cả hai giai đoạn đều chạy ở độ phân giải 640x640, sử dụng optimizer MuSGD và batch size 128. Không có checkpoint YOLO26 nào được huấn luyện trên COCO từ trọng số ngẫu nhiên; đó là lý do giai đoạn COCO ngắn đối với hầu hết kích thước model, và các hyperparameter của giai đoạn COCO được tìm bằng evolutionary search. Log huấn luyện và metric đầy đủ cho mọi kích thước model được lưu bên trong các checkpoint đã phát hành và hiển thị dưới dạng biểu đồ trên Ultralytics Platform.
Các lựa chọn thiết kế chính áp dụng cho mọi kích thước:
- Pretraining trên Objects365 cho mọi kích thước trước giai đoạn COCO
- Huấn luyện end-to-end (
end2end=True) với head one-to-one không dùng NMS - Optimizer MuSGD kết hợp SGD với các update trực giao kiểu Muon cho các ma trận trọng số (trọng số linear 2D và filter conv 4D được reshape thành 2D)
- Augmentation mosaic mạnh (xác suất ~0.9-1.0) được tắt trong các epoch cuối (
close_mosaic=8khi pretraining,close_mosaic=10trên COCO) - Augmentation scale mạnh (0.5-0.95) để xử lý các object ở nhiều kích thước khác nhau
- Rotation/shear ở mức tối thiểu đối với hầu hết kích thước, giúp giảm biến dạng hình học
Giai đoạn 1: Pretraining trên Objects365#
Mọi checkpoint YOLO26 trên COCO đều được fine-tune từ checkpoint Objects365v1 có cùng kích thước. Các pretrained weight này cũng được phát hành và được mô tả trên trang dataset Objects365. Mỗi checkpoint COCO ghi rõ starting weight trong training configuration được nhúng vào file .pt; phần Inspecting YOLO26 Checkpoint Training Args bên dưới trình bày cách đọc thông tin này:
| Checkpoint COCO | Starting weight |
|---|---|
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 |
Pretraining chủ yếu sử dụng các thiết lập mặc định thay vì các giá trị được tìm kiếm. lr0, lrf, momentum, weight_decay, box và cls khớp với default.yaml, trong khi warmup_epochs, close_mosaic và dfl được ghi đè. Các thiết lập được dùng chung giữa các kích thước, ngoại trừ warmup_epochs trên X, cường độ augmentation và các trọng số MuSGD cùng head nội bộ được liệt kê sau các bảng:
| Thiết lập | Giá trị |
|---|---|
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 (2 đối với X) |
close_mosaic | 8 |
box / cls / dfl | 7.5 / 0.5 / 6.0 |
| Augmentation | 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 |
Các bảng này bao quát những thiết lập định hình quá trình pretraining, không phải toàn bộ configuration. Các checkpoint ghi lại hơn 100 argument, vì vậy hãy in train_args như minh họa bên dưới để xem danh sách chính xác.
Nâng cao: tham số pretraining nội bộ
Pretraining cũng thay đổi cùng loại tham số của experimental branch được mô tả trong Internal Training Parameters. cls_w có giá trị 1.0 đối với mọi kích thước:
| Thiết lập | 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 |
Bạn không cần dataset Objects365 để sử dụng lại giai đoạn 1. Các checkpoint pretrained được tự động tải xuống giống như mọi asset Ultralytics khác, vì vậy bạn có thể fine-tune chúng trên dataset của mình:
from ultralytics import YOLO
model = YOLO("yolo26s-objv1-150.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Để chạy lại giai đoạn COCO, hãy bắt đầu từ cùng các weight đó và truyền các giá trị optimizer, loss và augmentation của giai đoạn 2 tương ứng với kích thước model từ các bảng bên dưới. Các bảng này không bao gồm những argument nhỏ hơn không mặc định như warmup_momentum, warmup_bias_lr, perspective, flipud và cutmix, vì vậy hãy in train_args từ checkpoint để lấy configuration chính xác. Các tham số nội bộ bị package đã phát hành từ chối và cần experimental branch.
Kiểm tra Training Args của Checkpoint YOLO26#
Mỗi checkpoint Ultralytics lưu toàn bộ training configuration được sử dụng để tạo ra nó, vì vậy bạn có thể tự xác minh từng con số trên trang này:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Output liệt kê configuration đầy đủ với hơn 100 entry, bao gồm mọi giá trị trong công thức được ghi lại trên trang này. Ví dụ trích từ 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: MuSGDCách này hoạt động với mọi checkpoint .pt — cả bản phát hành chính thức lẫn model đã fine-tune của riêng bạn. Để xem danh sách đầy đủ các training argument có thể cấu hình, hãy tham khảo training configuration reference.
Xem các đường cong huấn luyện#
train_args không phải là thông tin duy nhất được lưu trữ. Mỗi checkpoint cũng chứa results.csv đầy đủ theo từng epoch của lần chạy tạo ra nó, cùng với các validation metric cuối cùng. Các đường cong của checkpoint YOLO26 chính thức được công bố trên Ultralytics Platform, và bất kỳ file .pt nào cũng có thể được kéo thả vào một project để biểu đồ hóa cùng dữ liệu đó; metadata sẽ được tự động phân tích từ file.
Mỗi checkpoint bao quát giai đoạn đã tạo ra nó, vì vậy các đường cong COCO nằm trong yolo26s.pt, còn các đường cong Objects365 150 epoch nằm trong yolo26s-objv1-150.pt.
Kiểm tra revision code#
ckpt["git"] ghi lại commit đã tạo ra checkpoint, và các commit đó nằm trên những experimental branch công khai của repository Ultralytics, vì vậy bạn có thể checkout chính xác code huấn luyện:
from ultralytics import YOLO
print(YOLO("yolo26n.pt").ckpt["git"])
# {'root': ..., 'branch': 'exp-main', 'commit': 'cb13d5f9cfbd6f299da3620c625f81d721dc2849', ...}git fetch origin cb13d5f9cfbd6f299da3620c625f81d721dc2849
git checkout cb13d5f9cfbd6f299da3620c625f81d721dc2849Các experimental branch chứa những thay đổi chưa từng được đưa vào main, chẳng hạn như o2m và cls_w có thể cấu hình. Huấn luyện trên main với các hyperparameter được mô tả bên dưới sẽ không giống hệt từng bit, nhưng kết quả nằm trong khoảng sai khác không đáng kể so với metric đã công bố.
Hyperparameter huấn luyện YOLO26 theo kích thước model#
Đây là các giá trị giai đoạn 2, được áp dụng trên các weight Objects365 ở trên. Các bảng bên dưới nhóm công thức theo danh mục: optimizer và schedule, trọng số loss và augmentation. Mọi giá trị đều lấy trực tiếp từ train_args được nhúng trong các checkpoint đã phát hành.
Optimizer và Learning Rate#
Các thiết lập optimizer và schedule này điều khiển quá trình fine-tuning trên COCO cho từng kích thước; lưu ý model N khác biệt rõ rệt so với phần còn lại:
| Thiết lập | 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 |
Model N sử dụng learning rate ban đầu cao hơn với mức decay mạnh (lrf=0.0495), trong khi các model S/M/L/X sử dụng LR ban đầu thấp hơn nhiều với schedule nhẹ hơn (lrf=0.882). Điều này phản ánh động lực hội tụ khác nhau giữa model nhỏ và lớn — model nhỏ cần các update mạnh hơn để học hiệu quả.
Trọng số Loss#
Trọng số loss cân bằng ba thành phần của detection loss — hồi quy IoU của bounding box (box), classification (cls) và một thành phần hồi quy khoảng cách box (dfl). Lưu ý rằng YOLO26 không dùng DFL tái sử dụng gain dfl để gán trọng số cho loss L1 trên khoảng cách box đã chuẩn hóa thay vì distribution focal loss:
| Thiết lập | 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 |
Model N ưu tiên thành phần hồi quy khoảng cách dfl, trong khi các model S/M/L/X chuyển trọng tâm sang hồi quy box dựa trên IoU. Classification loss vẫn tương đối nhất quán ở mọi kích thước.
Pipeline Augmentation#
Để xem giải thích chi tiết về từng kỹ thuật, hãy tham khảo hướng dẫn YOLO Data Augmentation.
| Thiết lập | 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 |
Các giá trị hiển thị dưới dạng ~0 thực tế nhỏ hơn 0.01 trong các checkpoint (ví dụ degrees=0.00012 đối với model S) — augmentation về cơ bản đã bị tắt.
Các model lớn hơn sử dụng augmentation mạnh hơn nhìn chung (mixup và scale cao hơn), vì chúng có nhiều capacity hơn và hưởng lợi từ regularization mạnh hơn. Model N là kích thước duy nhất có rotation, shear và augmentation BGR đáng kể.
Tham số huấn luyện nội bộ#
Nâng cao: tham số pipeline nội bộ
Các checkpoint cũng chứa những tham số được sử dụng trên experimental training branch nhưng không được cung cấp dưới dạng thiết lập có thể cấu hình cho người dùng trong default.yaml:
| Thiết lập | Mô tả | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Trọng số update Muon trong MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Trọng số update SGD trong MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Trọng số classification nội bộ | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | Trọng số loss của head one-to-many | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Gán label top-k | 8 | 5 | 5 | 5 | 5 |
Xem mục FAQ về các tham số này để biết ý nghĩa của chúng khi fine-tuning.
Fine-Tuning YOLO26 trên Dataset của bạn#
Khi fine-tune YOLO26 trên dataset của riêng mình, bạn không cần tái tạo toàn bộ công thức pretraining. Các pretrained weight đã mã hóa kiến thức về augmentation và optimization từ quá trình huấn luyện trên COCO. Để biết thêm các best practice tổng quát về huấn luyện, hãy xem Tips for Model Training.
Fine-Tune với Thiết lập Mặc định#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Fine-tuning với các thiết lập mặc định là một baseline tốt. Chỉ điều chỉnh hyperparameter khi bạn có lý do cụ thể.
Khi nào nên Điều chỉnh Hyperparameter YOLO26#
Dataset nhỏ (< 1.000 ảnh):
- Giảm cường độ augmentation:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Giảm learning rate với optimizer được chỉ định rõ ràng:
optimizer=AdamW,lr0=0.001 - Sử dụng ít epoch hơn với patience:
epochs=50,patience=20 - Cân nhắc freeze các layer backbone:
freeze=10
Dataset lớn (> 50.000 ảnh):
- Bám sát công thức pretraining hơn
- Cân nhắc
optimizer=MuSGDcho các lần chạy dài hơn - Tăng augmentation:
mosaic=1.0,mixup=0.3,scale=0.9
Ảnh chuyên biệt theo lĩnh vực (trên không, y tế, dưới nước):
- Tăng
flipud=0.5nếu hướng dọc thay đổi - Tăng
degreesnếu object xuất hiện ở các góc xoay tùy ý - Điều chỉnh
hsv_svàhsv_vnếu điều kiện chiếu sáng khác biệt đáng kể so với COCO
Để tối ưu hyperparameter tự động, hãy xem hướng dẫn Hyperparameter Tuning.
Chọn Kích thước Model#
| Model | Phù hợp nhất cho | Hướng dẫn về Batch Size |
|---|---|---|
| YOLO26n | Thiết bị edge, mobile, real-time trên CPU | Batch lớn (64-128) trên GPU dành cho người dùng phổ thông |
| YOLO26s | Cân bằng giữa tốc độ và độ chính xác | Batch trung bình (32-64) |
| YOLO26m | Độ chính xác cao hơn với mức compute vừa phải | Batch nhỏ hơn (16-32) |
| YOLO26l | Độ chính xác cao khi có GPU | Batch nhỏ (8-16) hoặc nhiều GPU |
| YOLO26x | Độ chính xác tối đa, triển khai trên server | Batch nhỏ (4-8) hoặc nhiều GPU |
Để xem các tùy chọn export và triển khai, hãy tham khảo hướng dẫn Export và Các tùy chọn triển khai Model.
Kết luận#
Các checkpoint YOLO26 đi kèm toàn bộ recipe huấn luyện được nhúng sẵn, vì vậy bạn luôn chỉ cần một lần tra cứu train_args để biết chính xác các hyperparameter đứng sau mỗi kích thước model. Hãy bắt đầu fine-tuning từ các giá trị mặc định, điều chỉnh có chủ đích bằng các bảng trên trang này và kiểm tra từng thay đổi trên validation set của riêng bạn. Nếu có câu hỏi trong quá trình thực hiện, hãy hỏi cộng đồng trên repository Ultralytics GitHub hoặc server Ultralytics Discord.
FAQ#
Nạp checkpoint bằng
torch.load()và truy cập keytrain_args, hoặc sử dụngmodel.ckpt["train_args"]với API Ultralytics. Xem Kiểm tra các tham số huấn luyện của checkpoint YOLO26 để có các ví dụ đầy đủ.Mỗi kích thước đều trải qua 150 epoch tiền huấn luyện trên Objects365, vì vậy số epoch trên COCO chỉ bao gồm giai đoạn fine-tuning. Các model lớn hơn hội tụ trên COCO trong ít epoch hơn, cụ thể là 40 epoch với X so với 245 epoch với N. Các con số này không hoàn toàn đơn điệu (S sử dụng 70, M sử dụng 80) vì chúng là kết quả của quá trình tìm kiếm hyperparameter riêng cho từng kích thước. Khi fine-tuning trên dataset của riêng bạn, số epoch tối ưu phụ thuộc vào kích thước và độ phức tạp của dataset, không phụ thuộc vào kích thước model. Hãy sử dụng early stopping (
patience) để tự động tìm thời điểm dừng phù hợp.Các giá trị này xuất phát từ branch thử nghiệm đã tạo ra các checkpoint cơ sở và được ghi lại trong
train_argsđể đảm bảo khả năng tái lập. Chúng không phải là các thiết lập có thể cấu hình bởi người dùng trongdefault.yaml, và việc truyền chúng vàomodel.train()sẽ gây ra lỗi đối số không hợp lệ vì package đã phát hành không đọc các giá trị này. Bạn không cần thiết lập chúng khi fine-tuning; hãy xem Các tham số huấn luyện nội bộ để biết giá trị của chúng theo từng kích thước model.Không. Mỗi checkpoint COCO đều được fine-tuning từ một checkpoint Objects365v1 cùng kích thước, vốn đã được huấn luyện 150 epoch, như mô tả trong Giai đoạn 1: Tiền huấn luyện Objects365 và bài báo YOLO26. Không có lần chạy COCO nào được huấn luyện từ đầu đứng sau các số liệu đã công bố, vì vậy việc so sánh một lần chạy từ đầu với các số liệu đó không phải là so sánh tương đương.
Chúng nằm trong các checkpoint và được biểu đồ hóa trên Ultralytics Platform. Mỗi checkpoint lưu toàn bộ
results.csvtheo từng epoch của lần chạy tương ứng, vì vậy chỉ cần thả một file.ptvào project trên Platform là có thể vẽ loss, diễn biến mAP và learning rate mà không cần viết code. Xem Xem các đường cong huấn luyện. Giai đoạn Objects365 có log riêng trong các checkpointyolo26*-objv1-150.pt.Bạn sẽ đạt được các metric gần với số liệu đã công bố, nhưng không hoàn toàn giống hệt. Để có thiết lập giống hệt, hãy checkout commit được ghi trong checkpoint và huấn luyện trên branch đó. Xem Kiểm tra revision của code.