Skip to main content

Công thức Huấn luyện YOLO26

Giới thiệu

Hướng dẫn này tài liệu hóa chính xác đào tạo công thức được sử dụng để tạo ra các YOLO26 checkpoint đã huấn luyện trước chính thức trên COCO. Mọi siêu tham số được hiển thị ở đây đã được nhúng vào các .pt trọng số đã phát hành và có thể được kiểm tra theo chương trình.

Hiểu cách các model nền tảng được huấn luyện giúp bạn đưa ra quyết định tốt hơn khi Xác định các thách thức cụ thể của miền có thể yêu cầu : data augmentations nào để giữ lại, loss function trọng số nào để điều chỉnh và cài đặt optimizer nào hoạt động tốt nhất cho quy mô dataset của bạn.

Hướng dẫn này dành cho ai?

Hướng dẫn này dành cho các lập trình viên muốn hiểu những gì đã tạo nên các checkpoint YOLO26 chính thức — không chỉ là kiến trúc, mà còn là các learning rate lịch trình, pipeline augmentation và trọng số loss đã định hình hiệu suất của chúng. Sử dụng thông tin này để đưa ra lựa chọn sáng suốt khi tinh chỉnh trên dữ liệu của riêng bạn.

Kiểm tra Training Args

Mọi checkpoint Ultralytics đều lưu trữ cấu hình huấn luyện đầy đủ được sử dụng để tạo ra nó. Bạn có thể kiểm tra các cài đặt này bất kỳ lúc nào:

Kiểm tra checkpoint training args
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])

Điều này hoạt động với bất kỳ .pt checkpoint nào — cả các bản phát hành chính thức và model bạn đã tự tinh chỉnh. Để xem danh sách đầy đủ các đối số huấn luyện có thể cấu hình, hãy xem tài liệu cấu hình huấn luyện.

Training Overview

Tất cả các model nền tảng YOLO26 đều được huấn luyện trên COCO tại độ phân giải 640x640 sử dụng MuSGD optimizer với batch size 128. Các model được khởi tạo từ các trọng số pretrained trung gian và tinh chỉnh với các siêu tham số tìm thấy thông qua tìm kiếm tiến hóa. Nhật ký huấn luyện và chỉ số đầy đủ cho mọi kích thước model đều có sẵn trên Ultralytics Platform:

Các lựa chọn thiết kế chính trên mọi kích thước:

  • Huấn luyện end-to-end (end2end=True) với head one-to-one không cần NMS
  • MuSGD optimizer kết hợp SGD với các bản cập nhật trực giao kiểu Muon cho các trọng số conv
  • Augmentation mosaic chuyên sâu (xác suất ~0.9-1.0) bị vô hiệu hóa trong 10 epoch cuối (close_mosaic=10)
  • Augmentation quy mô mạnh mẽ (0.56-0.95) để xử lý các đối tượng ở các kích thước khác nhau
  • Xoay/cắt tối thiểu cho hầu hết các kích thước, giữ cho biến dạng hình học ở mức thấp

Siêu tham số theo kích thước Model

Optimizer và tốc độ học

Thiết lậpNSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640
Chiến lược tốc độ học

Model N sử dụng tốc độ học ban đầu cao hơn với độ suy giảm nhanh (lrf=0.0495), trong khi các model S/M/L/X sử dụng tốc độ học ban đầu thấp hơn nhiều với lịch trình nhẹ nhàng hơn (lrf=0.882). Điều này phản ánh các động lực hội tụ khác nhau giữa các model nhỏ so với model lớn — các model nhỏ hơn cần các bản cập nhật mạnh mẽ hơn để học hiệu quả.

Trọng số Loss

Thiết lậpNSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

Model N ưu tiên loss DFL, trong khi các model S/M/L/X chuyển trọng tâm sang bounding box hồi quy. Loss phân loại vẫn tương đối ổn định trên tất cả các kích thước.

Pipeline Augmentation

Để có giải thích chi tiết về từng kỹ thuật, xem YOLO Data Augmentation guide.

Thiết lậpNSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

Các model lớn hơn sử dụng augmentation mạnh mẽ hơn tổng thể (tỷ lệ mixup, copy-paste, và scale cao hơn), vì chúng có khả năng lớn hơn và hưởng lợi từ regularization mạnh mẽ hơn. Model N là kích thước duy nhất có ý nghĩa về xoay, cắt, và BGR tăng cường dữ liệu.

Thông số đào tạo nội bộ

Nâng cao: thông số pipeline nội bộ

Các checkpoint cũng chứa các thông số đã được sử dụng trong pipeline đào tạo nội bộ nhưng không không được hiển thị như các cài đặt có thể cấu hình bởi người dùng trong default.yaml:

Thiết lậpMô tả (Description)NSMLX
muon_wTrọng số cập nhật Muon trong MuSGD0.5280.4360.4360.4360.436
sgd_wTrọng số cập nhật SGD trong MuSGD0.6740.4790.4790.4790.479
cls_wTrọng số phân loại nội bộ2.743.483.483.483.48
o2mTrọng số loss của head one-to-many1.00.7050.7050.7050.705
topkGán nhãn Top-k85555

Các thông số này được ghi lại để đảm bảo tính tái lập nhưng không cần thiết lập khi fine-tuning. Xem Câu hỏi thường gặp (FAQ) để biết thêm chi tiết.

Hướng dẫn Fine-Tuning

Khi fine-tuning YOLO26 trên tập dữ liệu của bạn, bạn không cần phải sao chép toàn bộ công thức pretraining. Các weights đã pretrain sẵn đã mã hóa kiến thức về tăng cường dữ liệu và tối ưu hóa từ quá trình đào tạo trên COCO. Để biết thêm các best practices về đào tạo chung, xem Mẹo Huấn luyện Mô hình.

Bắt đầu đơn giản

Fine-tune với cấu hình 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ấu hình mặc định là một baseline mạnh mẽ. Chỉ nên điều chỉnh các hyperparameter nếu bạn có lý do cụ thể.

Khi nào cần điều chỉnh

Tập dữ liệu nhỏ (< 1.000 ảnh):

  • Giảm cường độ tăng cường dữ liệu: mosaic=0.5, mixup=0.0, copy_paste=0.0
  • Giảm learning rate: lr0=0.001
  • Sử dụng ít epochs hơn với patience: epochs=50, patience=20
  • Cân nhắc đóng băng (freeze) các layer backbone: freeze=10

Tập dữ liệu lớn (> 50.000 ảnh):

  • Theo sát công thức pretraining
  • Cân nhắc optimizer=MuSGD cho các lần chạy dài hơn
  • Tăng cường độ tăng cường dữ liệu: mosaic=1.0, mixup=0.3, scale=0.9

Hình ảnh đặc thù theo lĩnh vực (trên không, y tế, dưới nước):

  • Tăng flipud=0.5 nếu hướng dọc thay đổi
  • Tăng degrees nếu đối tượng xuất hiện ở các góc xoay tùy ý
  • Điều chỉnh hsv_shsv_v nếu điều kiện ánh sáng khác biệt đáng kể so với COCO

Để tự động tối ưu hóa hyperparameter, xem Hướng dẫn điều chỉnh Hyperparameter.

Chọn kích thước Model

ModelTốt nhất choHướng dẫn Batch Size
YOLO26nThiết bị Edge, di động, real-time trên CPUBatch lớn (64-128) trên GPU tiêu dùng
YOLO26sCân bằng giữa tốc độ và độ chính xácBatch trung bình (32-64)
YOLO26mĐộ chính xác cao hơn với tài nguyên tính toán vừa phảiBatch nhỏ (16-32)
YOLO26lĐộ chính xác cao khi có GPUBatch nhỏ (8-16) hoặc multi-GPU
YOLO26xĐộ chính xác tối đa, triển khai máy chủBatch nhỏ (4-8) hoặc multi-GPU

Để biết các tùy chọn xuất và triển khai, xem Hướng dẫn ExportCác tùy chọn Triển khai Mô hình.

Câu hỏi thường gặp (FAQ)

Làm thế nào để xem các hyperparameter chính xác được sử dụng cho bất kỳ checkpoint nào?

Tải checkpoint bằng torch.load() và truy cập khóa train_args, hoặc sử dụng model.ckpt["train_args"] với Ultralytics API. Xem Kiểm tra Training Args để biết các ví dụ hoàn chỉnh.

Tại sao số lượng epoch lại khác nhau cho mỗi kích thước model?

Các model lớn hơn hội tụ nhanh hơn trên COCO vì chúng có nhiều capacity hơn. Model N cần 245 epoch trong khi model X chỉ cần 40. Khi fine-tuning trên tập dữ liệu của riêng bạn, số lượng epoch tối ưu phụ thuộc vào kích thước và độ phức tạp của dữ liệu, không phải kích thước model. Sử dụng tính năng dừng sớm (patience) để tìm điểm dừng phù hợp một cách tự động.

Tôi có nên sử dụng MuSGD để fine-tuning không?

Khi optimizer=auto (mặc định), Ultralytics tự động chọn MuSGD cho các lần đào tạo dài (>10.000 lần lặp) và AdamW cho các lần đào tạo ngắn hơn. Bạn có thể thiết lập rõ ràng optimizer=MuSGD nếu muốn. Để biết thêm về cách chọn optimizer, xem tài liệu về đào tạo.

Những cái gì là muon_w, sgd_w, cls_w, o2m, và topk trong checkpoint?

Đây là các thông số nội bộ từ pipeline đào tạo đã tạo ra các checkpoint gốc. Chúng được lưu trữ để đảm bảo tính tái lập nhưng không là các cài đặt có thể cấu hình bởi người dùng trong default.yaml. Bạn không cần thiết lập chúng khi fine-tuning. Xem Thông số đào tạo nội bộ để biết chi tiết.

Tôi có thể tái tạo chính xác quá trình pretraining từ đầu không?

Các checkpoint được tạo bằng cách sử dụng một nhánh đào tạo nội bộ với các tính năng bổ sung không có trong codebase công khai (như trọng số o2m có thể cấu hình và cls_w). Bạn có thể nhận được kết quả rất gần với thực tế bằng cách sử dụng các hyperparameter được ghi lại trên trang này với gói Ultralytics công khai, nhưng để tái tạo chính xác thì cần nhánh nội bộ.

Bình luận