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 quy trình training được sử dụng để tạo ra các checkpoint huấn luyện trước chính thức của YOLO26 trên COCO. Mọi hyperparameter được hiển thị ở đây đều đã được nhúng trong trọng số .pt được phát hành và có thể được kiểm tra bằng lập trình.
Việc nắm rõ 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, các đường ống tăng cường dữ liệu và trọng số tổn thất định hình hiệu suất của chúng — giúp bạn đưa ra các quyết định tốt hơn khi fine-tuning: nên giữ lại các data augmentations nào, điều chỉnh trọng số loss function nào và cài đặt trình tối ưu hóa nào hoạt động tốt nhất cho kích thước tập dữ liệu của bạn.
Tổng quan về huấn luyện#
Tất cả các model cơ sở YOLO26 đều được huấn luyện trên COCO ở độ phân giải 640x640 bằng cách sử dụng bộ tối ưu hóa MuSGD với batch size 128. Thay vì bắt đầu từ trọng số ngẫu nhiên trong một lần chạy duy nhất, các model được khởi tạo từ các trọng số tiền huấn luyện trung gian và được tinh chỉnh bằng các siêu tham số được tìm thấy thông qua evolutionary search. Nhật ký huấn luyện đầy đủ và các số liệu 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 tất cả các quy mô:
- Huấn luyện đầu cuối (End-to-end training) (
end2end=True) với phần đầu one-to-one không cần NMS - Trình tối ưu hóa MuSGD kết hợp SGD với các bản cập nhật trực giao theo phong cách Muon cho các ma trận trọng số (trọng số tuyến tính 2D và bộ lọc conv 4D, được định hình lại thành 2D)
- Tăng cường mosaic nặng (xác suất ~0.9-1.0) bị vô hiệu hóa trong 10 epoch cuối (
close_mosaic=10) - Augmentation tỷ lệ (scale) 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 (rotation/shear) tối thiểu cho hầu hết các quy mô, giữ cho biến dạng hình học ở mức thấp
Kiểm tra các tham số huấn luyện của Checkpoint YOLO26#
Mỗi checkpoint của Ultralytics lưu trữ cấu hình huấn luyện đầy đủ được sử dụng để tạo ra nó, vì vậy bạn có thể tự mình 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"])Kết quả đầu ra liệt kê cấu hình đầy đủ gồm hơn 100 mục, bao gồm mọi giá trị quy trình được tài liệu hóa trên trang này. Một đoạn trích 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: MuSGDĐiều này hoạt động với bất kỳ checkpoint .pt nào — cả các bản phát hành chính thức lẫn các mô hình tự tinh chỉnh của riêng bạn. Để có 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 tham khảo cấu hình huấn luyện.
Hyperparameter huấn luyện YOLO26 theo quy mô mô hình#
Các bảng dưới đây nhóm quy trình theo danh mục — trình tối ưu hóa và lịch trình, trọng số tổn thất và tăng cường. Mọi giá trị đều đến thẳng từ train_args được nhúng trong các checkpoint được phát hành.
Optimizer và Learning Rate#
Các cài đặt optimizer và lịch trình này đã thúc đẩy quá trình tiền huấn luyện COCO cho từng quy mô; hãy lưu ý cách mô hình N khác biệt với phần còn lại:
| Cài đặt | 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 |
Mô hình N sử dụng tốc độ học ban đầu cao hơn với độ suy giảm dốc (lrf=0.0495), trong khi các mô hình S/M/L/X sử dụng LR 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 động lực hội tụ khác nhau giữa các mô hình nhỏ hơn và lớn hơn — các mô hình nhỏ hơn cần các bản cập nhật mạnh mẽ hơn để học tập hiệu quả.
Trọng số hàm mất mát (Loss Weights)#
Trọng số tổn thất cân bằng ba thành phần của tổn thất phát hiện — hồi quy IoU bounding box (box), phân loại (cls) và một số hạn hồi quy khoảng cách hộp (dfl). Lưu ý rằng YOLO26 không có DFL sẽ tái sử dụng mức tăng dfl để làm trọng số cho tổn thất L1 trên khoảng cách hộp được chuẩn hóa thay vì tổn thất tiêu cự phân phối (distribution focal loss):
| Cài đặt | 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 |
Mô hình N ưu tiên số hạn hồi quy khoảng cách dfl, trong khi các mô hình S/M/L/X chuyển trọng tâm sang hồi quy hộp dựa trên IoU. Tổn thất phân loại vẫn tương đối ổn định trên tất cả các kích thước.
Quy trình Augmentation#
Để có giải thích chi tiết về từng kỹ thuật, hãy xem hướng dẫn Tăng cường Dữ liệu YOLO.
| Cài đặt | 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ị được hiển thị là ~0 dưới 0.01 trong các checkpoint thực tế (ví dụ: degrees=0.00012 cho mô hình S) — việc tăng cường dữ liệu thực tế bị vô hiệu hóa.
Các mô hình lớn hơn sử dụng việc tăng cường mạnh mẽ hơn nói chung (mixup, copy-paste và scale cao hơn), vì chúng có dung lượng lớn hơn và hưởng lợi từ regularization mạnh hơn. Mô hình N là kích thước duy nhất có sự tăng cường xoay, trượt và BGR có ý nghĩa.
Tham số huấn luyện nội bộ#
Nâng cao: các tham số quy trình nội bộ
Các checkpoint cũng chứa các tham số được sử dụng trong quy trình huấn luyện nội bộ nhưng không được phơi bày dưới dạng cài đặt có thể cấu hình của người dùng trong default.yaml:
| Cài đặt | 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ố hàm mất mát cho 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-tuning.
Fine-Tuning YOLO26 trên tập dữ liệu của bạn#
Khi fine-tuning YOLO26 trên tập dữ liệu của riêng bạn, bạn không cần phải tái tạo toàn bộ quy trình huấn luyện trước. Các trọng số đã được huấn luyện trước đã mã hóa kiến thức tăng cường và tối ưu hóa từ quá trình huấn luyện COCO. Để biết thêm các phương pháp hay nhất về huấn luyện chung, hãy xem Mẹo Huấn luyện Mô hình.
Fine-Tune với cài đặt 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 giá trị mặc định là một baseline mạnh mẽ. Chỉ điều chỉnh các siêu tham số nếu bạn có lý do cụ thể.
Khi nào cần điều chỉnh các siêu tham số của YOLO26#
Tập dữ liệu nhỏ (< 1.000 ảnh):
- Giảm cường độ tăng cường:
mosaic=0.5,mixup=0.0,copy_paste=0.0 - Giảm tốc độ học (learning rate):
lr0=0.001 - Sử dụng ít epochs hơn với tính năng kiên nhẫn (patience):
epochs=50,patience=20 - Cân nhắc đóng băng các lớp backbone:
freeze=10
Tập dữ liệu lớn (> 50.000 ảnh):
- Phù hợp chặt chẽ hơn với công thức tiền huấn luyện
- Cân nhắc
optimizer=MuSGDcho các lần chạy dài hơn - Tăng cường độ tăng cường:
mosaic=1.0,mixup=0.3,scale=0.9
Hình ả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 các đối tượng xuất hiện ở các góc xoay tùy ý - Điều chỉnh
hsv_svàhsv_vnếu điều kiện ánh sáng khác biệt đáng kể so với COCO
Để tối ưu hóa hyperparameter tự động, hãy xem Hướng dẫn Tinh chỉnh Hyperparameter.
Chọn kích thước mô hình#
| Mô hình | Phù hợp nhất cho | Hướng dẫn về Batch Size |
|---|---|---|
| YOLO26n | Thiết bị Edge, di động, thời gian thực trên CPU | Batch lớn (64-128) trên GPU 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 tính toán 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 đa GPU |
| YOLO26x | Độ chính xác tối đa, triển khai máy chủ | Batch nhỏ (4-8) hoặc đa GPU |
Để biết các tùy chọn xuất và triển khai, hãy xem Hướng dẫn Xuất và Tùy chọn Triển khai Mô hình.
Kết luận#
Các checkpoint YOLO26 đi kèm với toàn bộ quy trình huấn luyện được nhúng sẵn, do đó các hyperparameter chính xác đằng sau mọi kích thước mô hình luôn chỉ cách một lần tra cứu train_args. Bắt đầu fine-tuning từ các giá trị mặc định, điều chỉnh một cách có chủ đích bằng cách sử dụng các bảng trên trang này và xác minh mọi thay đổi dựa trên tập validation của riêng 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 kho lưu trữ GitHub Ultralytics hoặc máy chủ Discord Ultralytics.
Câu hỏi thường gặp#
Tải checkpoint bằng
torch.load()và truy cập khóatrain_args, hoặc sử dụngmodel.ckpt["train_args"]với Ultralytics API. Xem Kiểm tra Các Đối số Huấn luyện Checkpoint YOLO26 để có các ví dụ hoàn chỉnh.Các mô hình lớn hơn thường cần ít epoch hơn trên COCO vì dung lượng lớn hơn của chúng giúp tăng tốc độ hội tụ — mô hình X được huấn luyện trong 40 epoch so với 245 cho N — mặc dù số lượng không hoàn toàn đơn điệu (S dùng 70, M dùng 80). 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 tập dữ liệu chứ không phải kích thước mô hình. Sử dụng early stopping (
patience) để tự động tìm điểm dừng phù hợp.Thông thường bạn không cần phải chọn: với
optimizer=automặc định, Ultralytics tự động chọn MuSGD cho các lần chạy huấn luyện dài hơn (>10.000 vòng lặp) và AdamW cho các lần chạy ngắn hơn. Bạn có thể đặt rõ ràngoptimizer=MuSGDnếu muốn. Để biết thêm về cách thức hoạt động của MuSGD, hãy xem tài liệu huấn luyện.Đây là các tham số nội bộ từ quy trình huấn luyện tạo ra các checkpoint cơ sở, được ghi lại trong
train_argsđể đảm bảo tính tái tạo. Chúng không phải là các cài đặt có thể cấu hình của 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ệ — gói công khai không đọc chúng. Bạn không cần phải thiết lập chúng khi fine-tuning; hãy xem Tham số Huấn luyện Nội bộ để biết giá trị của chúng theo kích thước mô hình.Không hẳn vậy — các checkpoint được tạo ra bằng cách sử dụng một nhánh huấn luyện nội bộ với các tính năng bổ sung không có trong cơ mã nguồn công khai (như trọng số
o2mcó thể cấu hình vàcls_w). Bạn có thể nhận được kết quả rất gần bằng cách sử dụng các hyperparameter được tài liệu hóa trên trang này với gói Ultralytics công khai, nhưng việc tái tạo chính xác đòi hỏi nhánh nội bộ.