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 ra các checkpoint huấn luyện trước chính thức của YOLO26 trên COCO. Mọi siêu tham số hiển thị ở đây đều đã được nhúng sẵn trong các file weights .pt được phát hành và có thể được kiểm tra theo lập trình.
Việc hiểu rõ cách huấn luyện các mô hình cơ sở giúp bạn đưa ra quyết định tốt hơn khi tinh chỉnh: nên giữ lại các tăng cường dữ liệu nào, nên điều chỉnh trọng số hàm mất mát nào và các cài đặt bộ 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.
Hướng dẫn này dành cho các chuyên gia muốn hiểu những gì đã được đưa vào các checkpoint chính thức của YOLO26 — không chỉ kiến trúc, mà cả các lịch trình tốc độ học, các pipeline tăng cường và các trọng số mất mát đã định hình hiệu suất của chúng. Hãy sử dụng thông tin này để đưa ra các 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 các đối số huấn luyện
Mọi checkpoint của 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:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])Cách này hoạt động với bất kỳ checkpoint .pt nào — bao gồm cả các bản phát hành chính thức và các mô hình 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 tham khảo cấu hình huấn luyện.
Tổng quan về huấn luyện
Tất cả các mô hình cơ sở YOLO26 đều được huấn luyện trên COCO ở độ phân giải 640x640 sử dụng bộ tối ưu hóa MuSGD với batch size là 128. Các mô hình được khởi tạo từ các weights huấn luyện trước trung gian và được 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 mô hình đều có sẵn trên Nền tảng Ultralytics:
Các lựa chọn thiết kế chính trên tất cả các kích thước:
- Huấn luyện end-to-end (
end2end=True) với head một-một không cần NMS - Bộ tối ưu hóa MuSGD kết hợp SGD với các cập nhật trực giao hóa kiểu Muon cho các trọng số conv
- Tăng cường mosaic mạnh (xác suất ~0.9-1.0) bị vô hiệu hóa trong 10 epoch cuối (
close_mosaic=10) - Tăng cường tỷ lệ (scale augmentation) 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 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 mô hình
Bộ tối ưu hóa và Tốc độ học
| 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 nhanh (lrf=0.0495), trong khi các mô hình 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 của các mô hình nhỏ so với lớn — các mô hình nhỏ cần các cập nhật mạnh mẽ hơn để học hiệu quả.
Trọng số mất mát
| 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 hàm mất mát DFL, trong khi các mô hình S/M/L/X chuyển trọng tâm sang hồi quy bounding box. Hàm mất mát phân loại vẫn tương đối nhất quán trên tất cả các kích thước.
Pipeline tăng cường
Để 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 mô hình lớn hơn sử dụng tăng cường mạnh mẽ hơn về tổng thể (tăng cường 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ừ điều chuẩn mạnh mẽ hơn. Mô hình N là kích thước duy nhất có tăng cường xoay, cắt và BGR đáng kể.
Tham số huấn luyện nội bộ
Nâng cao: các tham số pipeline nội bộ
Các checkpoint cũng chứa các tham số đã được sử dụng trong pipeline huấn luyện nội bộ nhưng không được hiển thị dưới dạng các cài đặt có thể cấu hình bởi 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 head một-nhiều (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 |
Các giá trị này được ghi lại để đảm bảo tính tái lập nhưng không cần phải thiết lập khi tinh chỉnh (fine-tuning). Xem FAQ để biết thêm chi tiết.
Hướng dẫn tinh chỉnh
Khi tinh chỉnh YOLO26 trên tập dữ liệu của riêng bạn, bạn không cần phải sao chép toàn bộ công thức tiền huấn luyện (pretraining). Các trọng số tiền huấn luyện đã mã hóa sẵn các kiến thức về tăng cường dữ liệu (augmentation) và tối ưu hóa từ quá trình huấn luyện trên COCO. Để biết các phương pháp thực hành tốt nhất về huấn luyện chung, hãy xem Mẹo huấn luyện mô hình.
Bắt đầu đơn giản
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)Tinh chỉnh với các cài đặt mặc định là một nền tảng vững chắc. Chỉ điều chỉnh các siêu tham số (hyperparameters) 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 tốc độ học (learning rate):
lr0=0.001 - Sử dụng ít epoch hơn với patience:
epochs=50,patience=20 - Cân nhắc đóng băng (freeze) các lớp backbone:
freeze=10
Tập dữ liệu lớn (> 50.000 ảnh):
- Bám sát công thức tiền huấn luyện hơn
- Cân nhắc sử dụng
optimizer=MuSGDcho 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.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 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 về kích thước batch |
|---|---|---|
| YOLO26n | Thiết bị biên, di động, thời gian thực trên CPU | Batch lớn (64-128) trên GPU người dù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 tài nguyên 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, xem Hướng dẫn xuất và 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 siêu tham số chính xác được sử dụng cho bất kỳ checkpoint nào?
Tải checkpoint với 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 tham số huấn luyện để 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 mô hình?
Các mô hình lớn hơn hội tụ nhanh hơn trên COCO vì chúng có dung lượng lớn hơn. Mô hình N cần 245 epoch trong khi mô hình X chỉ cần 40. Khi tinh chỉnh 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. Hãy sử dụng early stopping (patience) để tìm điểm dừng thích hợp một cách tự động.
Tôi có nên sử dụng MuSGD để tinh chỉnh không?
Khi optimizer=auto (mặc định), Ultralytics tự động chọn MuSGD cho các đợt huấn luyện dài (>10.000 lần lặp) và AdamW cho các đợt ngắn hơn. Bạn có thể đặt optimizer=MuSGD một cách rõ ràng nếu muốn. Để biết thêm về cách chọn trình tối ưu hóa, hãy xem tài liệu huấn luyện.
muon_w, sgd_w, cls_w, o2m, và topk trong checkpoint là gì?
Đâ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ở. Chúng được lưu trữ để đảm bảo tính tái lập nhưng không phải là các thiết lập người dùng có thể cấu hình trong default.yaml. Bạn không cần phải thiết lập chúng khi tinh chỉnh. Xem Tham số huấn luyện nội bộ để biết chi tiết.
Tôi có thể sao chép chính xác quy trình tiền huấn luyện từ đầu không?
Các checkpoint được tạo bằ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 mã nguồn công khai (như trọng số o2m và cls_w có thể cấu hình). Bạn có thể đạt được kết quả rất gần bằng cách sử dụng các siêu tham số được ghi lại trên trang này với gói Ultralytics công khai, nhưng để tái lập chính xác cần phải có nhánh nội bộ.