Quy Trình Huấn Luyện YOLO26#
Giới thiệu#
Hướng dẫn này ghi lại chính xác quy trình huấn luyện được dùng để tạo ra các checkpoint pretrained YOLO26 chính thức trên COCO. Mọi hyperparameter được trình bày ở đây đã được tích hợp sẵn trong các weight .pt đã phát hành, cùng với log huấn luyện theo từng epoch và revision mã của lượt chạy; tất cả đều có thể được kiểm tra bằng chương trình.
Biết những gì đã được đưa vào các checkpoint chính thức — không chỉ kiến trúc mà còn cả lịch trình learning rate, pipeline augmentation và trọng số loss đã định hình hiệu năng — giúp bạn đưa ra quyết định tốt hơn khi fine-tuning: nên giữ lại augmentation dữ liệu nào, điều chỉnh trọng số hàm loss nào và thiết lập optimizer nào phù hợp nhất với kích thước dataset của bạn.
Trang này trình bày các hyperparameter được ghi lại trong những checkpoint đã phát hành. Để tìm hiểu cơ sở của các lựa chọn này, bao gồm kiến trúc, những thay đổi về loss và gán nhãn, cùng các thử nghiệm ablation, hãy đọc Ultralytics YOLO26: Mô hình Thị giác End-to-End Thống nhất theo Thời gian Thực.
Tổng quan về Huấn luyện#
Tất cả model YOLO26 cơ sở đề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 ở resolution 640x640 với optimizer MuSGD và batch size 128. Không có checkpoint YOLO26 nào được huấn luyện trên COCO từ weight 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à hyperparameter cho giai đoạn COCO được xác định qua tìm kiếm tiến hóa. Log huấn luyện và metric đầy đủ cho từng kích thước model được lưu 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 hai head với giám sát one-to-many và one-to-one; inference mặc định dùng NMS, còn
nms=Falsechọn head không cần NMS - Optimizer MuSGD kết hợp SGD với các cập nhật trực giao kiểu Muon cho ma trận trọng số (trọng số tuyến tính 2D và bộ lọc 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ý object ở các kích thước khác nhau
- Xoay/shear ở mức tối thiểu với hầu hết kích thước, giữ biến dạng hình học ở mức thấp
Giai đoạn 1: Pretraining trên Objects365#
Mỗi checkpoint YOLO26 COCO đều được fine-tune từ một checkpoint Objects365v1 cùng kích thước. Các weight pretrained này cũng được công bố và được mô tả trên trang dataset Objects365. Mỗi checkpoint COCO ghi tên weight khởi đầu trong cấu hình huấn luyện được nhúng trong file .pt; phần Kiểm tra Training Args của Checkpoint YOLO26 bên dưới hướng dẫn cách đọc:
| Checkpoint COCO | Weight khởi đầu |
|---|---|
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 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, còn warmup_epochs, close_mosaic và dfl đã được ghi đè. Các thiết lập được dùng chung cho mọi kích thước, ngoại trừ warmup_epochs trên X, cường độ augmentation và 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 cho 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 gồm những thiết lập ảnh hưởng đến quá trình pretraining, không phải toàn bộ cấu hình. Checkpoint ghi lại hơn 100 tham số, vì vậy hãy in train_args như minh họa bên dưới để xem danh sách chính thức.
Nâng cao: tham số pretraining nội bộ
Pretraining cũng thay đổi các tham số thuộc nhánh thử nghiệm cùng loại được mô tả trong Tham số Huấn luyện Nội bộ. cls_w có giá trị 1.0 cho 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 bộ dữ liệu Objects365 để sử dụng lại giai đoạn 1. Các checkpoint pretrained sẽ tự động tải xuống như mọi tài nguyên Ultralytics khác, vì vậy bạn có thể fine-tune chúng trên bộ dữ liệu 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 trọng số 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 đó từ các bảng bên dưới. Các bảng này không liệt kê những tham số nhỏ hơn không phải mặc định như warmup_momentum, warmup_bias_lr, perspective, flipud và cutmix, vì vậy hãy in train_args từ checkpoint để xem cấu hình chính xác. Gói đã phát hành từ chối các tham số nội bộ này; bạn cần dùng nhánh thử nghiệm.
Kiểm tra các tham số huấn luyện trong checkpoint YOLO26#
Mỗi checkpoint Ultralytics lưu toàn bộ cấu hình huấn luyện đã dùng để tạo ra checkpoint đó, 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"])Đầu ra liệt kê toàn bộ cấu hình gồm hơn 100 mục, bao gồm mọi giá trị recipe được ghi lại trên trang này. Trích đoạn cho 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 áp dụng cho mọi checkpoint .pt — cả các bản phát hành chính thức lẫn model do bạn tự fine-tune. Để xem danh sách đầy đủ các tham số huấn luyện có thể cấu hình, hãy tham khảo tài liệu tham chiếu cấu hình huấn luyện.
Xem biểu đồ huấn luyện#
Không chỉ có train_args được lưu trong checkpoint. Mỗi checkpoint còn chứa đầy đủ results.csv theo từng epoch của lần chạy tạo ra checkpoint đó, cùng với các metric validation cuối cùng. Biểu đồ của các checkpoint YOLO26 chính thức được công bố trên Ultralytics Platform, và bạn có thể kéo thả bất kỳ tệp .pt nào vào một project để vẽ biểu đồ cùng dữ liệu đó; metadata sẽ tự động được phân tích từ tệp.
Mỗi checkpoint bao gồm giai đoạn đã tạo ra checkpoint đó, vì vậy biểu đồ COCO nằm trong yolo26s.pt, còn biểu đồ Objects365 với 150 epoch nằm trong yolo26s-objv1-150.pt.
Kiểm tra bản sửa đổi mã nguồn#
ckpt["git"] ghi lại commit đã tạo ra checkpoint, và các commit đó nằm trên những nhánh thử nghiệm công khai của repository Ultralytics, vì vậy bạn có thể checkout chính xác mã 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 nhánh thử nghiệm có 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 siêu tham số được ghi lại bên dưới sẽ không cho kết quả giống hệt từng bit, nhưng sai khác so với các metric đã công bố là không đáng kể.
Siêu tham số huấn luyện YOLO26 theo kích thước model#
Đây là các giá trị giai đoạn 2, áp dụng trên các trọng số Objects365 ở trên. Các bảng bên dưới phân nhóm recipe theo danh mục: optimizer và lịch trình, trọng số loss và augmentation. Mọi giá trị đều được lấy trực tiếp từ train_args nhúng trong các checkpoint đã phát hành.
Optimizer và learning rate#
Các thiết lập optimizer và lịch trình này được dùng để fine-tune trên COCO cho từng kích thước; lưu ý model N khác biệt so với các model 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 dùng learning rate ban đầu cao hơn với mức giảm mạnh (lrf=0.0495), trong khi các model S/M/L/X dùng LR ban đầu thấp hơn nhiều với lịch trình giảm 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 cập nhật 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 loss phát hiện — hồi quy IoU của bounding box (box), phân loại (cls) và một thành phần hồi quy khoảng cách hộp (dfl). Lưu ý, YOLO26 không dùng DFL tái sử dụng hệ số dfl để gán trọng số cho loss L1 trên khoảng cách hộp đã 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 hộp dựa trên IoU. Loss phân loại tương đối ổn định ở mọi kích thước.
Pipeline augmentation#
Để biết giải thích chi tiết về từng kỹ thuật, hãy xem 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 nhỏ hơn 0.01 trong các checkpoint thực tế (ví dụ: degrees=0.00012 đối với model S) — augmentation gần như bị tắt.
Nhìn chung, model lớn dùng augmentation mạnh hơn (mixup và scale cao hơn) vì có dung lượng lớn 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ố đã dùng trên nhánh huấn luyện thử nghiệm nhưng không được cung cấp dưới dạng thiết lập người dùng có thể cấu hình trong default.yaml:
| Thiết lập | Mô tả | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | Trọng số cập nhật Muon trong MuSGD | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | Trọng số cập nhật SGD trong MuSGD | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | Trọng số phân loại 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 nhãn 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-tune.
Fine-tune YOLO26 trên bộ dữ liệu của bạn#
Khi fine-tune YOLO26 trên bộ dữ liệu của mình, bạn không cần tái tạo toàn bộ recipe pretraining. Các trọng số pretrained đã mã hóa kiến thức về augmentation và tối ưu hóa từ quá trình huấn luyện trên COCO. Để biết thêm các phương pháp hay nhất khi huấn luyện nói chung, hãy xem Mẹo huấn luyện model.
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-tune với thiết lập mặc định là một baseline tốt. Chỉ điều chỉnh siêu tham số khi bạn có lý do cụ thể.
Khi nào nên điều chỉnh siêu tham số YOLO26#
Bộ dữ liệu nhỏ (< 1.000 ảnh):
- Giảm cường độ augmentation:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Giảm learning rate và chỉ định optimizer rõ ràng:
optimizer=AdamW,lr0=0.001 - Dùng ít epoch hơn và thiết lập patience:
epochs=50,patience=20 - Cân nhắc đóng băng các layer backbone:
freeze=10
Bộ dữ liệu lớn (> 50.000 ảnh):
- Điều chỉnh để recipe gần với quá trình 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 miền (ảnh 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 đối tượng xuất hiện ở các góc xoay bất kỳ - Đ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 siêu tham số tự động, hãy xem hướng dẫn tinh chỉnh siêu tham số.
Chọn kích thước model#
| Model | Phù hợp nhất cho | Hướng dẫn chọn batch size |
|---|---|---|
| YOLO26n | Thiết bị biên, thiết bị di động, suy luận thời gian thực trên CPU | Batch size lớn (64-128) trên GPU phổ thông |
| YOLO26s | Cân bằng giữa tốc độ và độ chính xác | Batch size trung bình (32-64) |
| YOLO26m | Độ chính xác cao hơn với mức tính toán vừa phải | Batch size nhỏ hơn (16-32) |
| YOLO26l | Độ chính xác cao khi có GPU | Batch size nhỏ (8-16) hoặc nhiều GPU |
| YOLO26x | Độ chính xác tối đa, triển khai trên máy chủ | Batch size nhỏ (4-8) hoặc nhiều GPU |
Để biết các tùy chọn export và triển khai, hãy xem hướng dẫn Export và Các tùy chọn triển khai model.
Kết luận#
Các checkpoint YOLO26 được phát hành kèm recipe huấn luyện đầy đủ được nhúng bên trong, vì vậy bạn chỉ cần tra cứu train_args để xem chính xác các siêu tham số của từng kích thước model. Hãy bắt đầu fine-tune với thiết lập mặc định, điều chỉnh có chủ đích bằng các bảng trên trang này và xác minh mọi thay đổi trên tập validation của bạn. Nếu có thắc mắc trong quá trình thực hiện, hãy hỏi cộng đồng trên repository Ultralytics GitHub hoặc máy chủ Ultralytics Discord.
Câu hỏi thường gặp#
Tải checkpoint bằng
torch.load()và truy cập khóatrain_args, hoặc dùngmodel.ckpt["train_args"]với API Ultralytics. Xem Kiểm tra các tham số huấn luyện trong checkpoint YOLO26 để biết các ví dụ đầy đủ.Mọi kích thước đều được pretrain trên Objects365 trong cùng 150 epoch, vì vậy số epoch COCO chỉ tính giai đoạn fine-tune. Model lớn hội tụ trên COCO sau ít epoch hơn: 40 epoch với X so với 245 epoch với N. Số epoch không tăng giảm hoàn toàn đơn điệu (S dùng 70, M dùng 80) vì các giá trị này được xác định qua quá trình tìm kiếm siêu tham số riêng cho từng kích thước. Khi fine-tune trên bộ dữ liệu của mình, số epoch tối ưu phụ thuộc vào kích thước và độ phức tạp của bộ dữ liệu, không phải kích thước model. Dùng early stopping (
patience) để tự động tìm điểm dừng phù hợp.Các tham số này đến từ nhánh thử nghiệm đã tạo ra checkpoint nền và được ghi lại trong
train_argsđể đảm bảo khả năng tái lập. Đây không phải là các thiết lập người dùng có thể cấu hình trongdefault.yaml; truyền chúng vàomodel.train()sẽ gây lỗi tham số không hợp lệ vì gói đã phát hành không đọc các tham số này. Bạn không cần thiết lập chúng khi fine-tune; xem Tham số huấn luyện nội bộ để biết giá trị của từng kích thước model.Không. Mỗi checkpoint COCO được fine-tune 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: Pretraining trên Objects365 và bài báo YOLO26. Không có lần chạy COCO nào từ đầu đứng sau các con số đã công bố, vì vậy so sánh kết quả huấn luyện từ đầu với các con số đó không phải là so sánh tương đương.
Chúng nằm trong checkpoint và được vẽ biểu đồ trên Ultralytics Platform. Mỗi checkpoint lưu đầy đủ
results.csvtheo từng epoch của lần chạy, vì vậy chỉ cần thả tệp.ptvào một project Platform là có thể vẽ biểu đồ loss, diễn biến mAP và learning rate mà không cần viết code. Xem Xem biểu đồ huấn luyện. Giai đoạn Objects365 có nhật ký riêng trong các checkpointyolo26*-objv1-150.pt.Bạn sẽ đạt kết quả gần với các metric đã công bố, nhưng không hoàn toàn giống. Để có thiết lập giống hệt, hãy checkout commit được ghi trong checkpoint và huấn luyện trên nhánh đó. Xem Kiểm tra bản sửa đổi mã nguồn.