Hướng dẫn Tinh chỉnh siêu tham số cho Ultralytics YOLO#
Tinh chỉnh siêu tham số trong Ultralytics YOLO là quá trình tìm kiếm tự động, lặp đi lặp lại nhằm tối ưu hóa các thiết lập — chẳng hạn như tốc độ học (learning rate), trọng số mất mát (loss weights) và mức độ tăng cường dữ liệu (augmentation strength) — nhằm tối đa hóa các chỉ số hiệu suất của mô hình học máy như độ chính xác (accuracy), độ chuẩn xác (precision) và độ thu hồi (recall). Thay vì kiểm tra thủ công các giá trị này, Ultralytics YOLO khám phá không gian siêu tham số bằng thuật toán di truyền, thực hiện đột biến và đánh giá các cấu hình ứng cử viên qua nhiều lần huấn luyện ngắn.
Watch: How to Tune Hyperparameters for Better Model Performance 🚀
Siêu tham số là gì?#
Siêu tham số là các thiết lập cấu trúc cấp cao cho thuật toán. Chúng được đặt trước giai đoạn đào tạo và giữ nguyên trong suốt quá trình này. Dưới đây là một số siêu tham số thường được điều chỉnh trong Ultralytics YOLO:
- Tốc độ học (Learning Rate)
lr0: Xác định kích thước bước ở mỗi lần lặp khi di chuyển về phía giá trị cực tiểu trong hàm mất mát. - Kích thước lô (Batch Size)
batch: Số lượng hình ảnh được xử lý đồng thời trong một lượt truyền xuôi (forward pass). - Số lượng Epoch
epochs: Một epoch là một lượt truyền xuôi và truyền ngược hoàn chỉnh của tất cả các mẫu huấn luyện. - Chi tiết kiến trúc: Chẳng hạn như số lượng kênh, số lượng lớp, các loại hàm kích hoạt, v.v. Những thông tin này nằm trong model YAML configuration thay vì trong các đối số huấn luyện.
Trong số bốn yếu tố này, chỉ có tốc độ học nằm trong không gian tìm kiếm mặc định: batch, epochs, và kiến trúc được giữ nguyên. Bộ tinh chỉnh cũng thay đổi lịch trình, hệ số tổn thất và các phép tăng cường được liệt kê bên dưới.
Để có danh sách đầy đủ các siêu tham số tăng cường được sử dụng trong YOLO26, vui lòng tham khảo trang cấu hình.
Tiến hóa di truyền và đột biến#
Ultralytics YOLO sử dụng thuật toán di truyền để tối ưu hóa siêu tham số. Thuật toán di truyền lấy cảm hứng từ cơ chế chọn lọc tự nhiên và di truyền học.
- Lai ghép (Crossover): Mỗi lần lặp kết hợp các gen từ tối đa chín cấu hình có độ thích nghi cao nhất được ghi nhận cho đến nay, sử dụng phương pháp lai ghép BLX-α với lựa chọn cha mẹ dựa trên trọng số thích nghi.
- Đột biến (Mutation): Ứng viên được tái tổ hợp sau đó được làm nhiễu bởi một hệ số nhân log-normal áp dụng cho từng siêu tham số (với xác suất 0,5 cho mỗi tham số). Độ mạnh đột biến sigma giảm dần từ 0,2 xuống 0,1 qua 300 lần lặp đầu tiên, vì vậy thuật toán khám phá rộng rãi ở giai đoạn đầu và tinh chỉnh khi nó hội tụ. Lần lặp 1 không có cha mẹ để lai ghép và sử dụng các siêu tham số đào tạo mặc định làm cơ sở.
Chuẩn bị cho việc điều chỉnh siêu tham số#
Trước khi bạn bắt đầu quy trình điều chỉnh, điều quan trọng là:
- Xác định các chỉ số: Bộ tinh chỉnh tích hợp (
use_ray=False) xếp hạng các lần thử nghiệm theo điểm sốfitnesscủa tác vụ, trong khiuse_ray=Truesử dụng chỉ số của tác vụ. Hãy quyết định các chỉ số phụ mà bạn sẽ kiểm tra, chẳng hạn như AP50 hoặc F1-score. - Thiết lập ngân sách điều chỉnh: Xác định lượng tài nguyên tính toán bạn sẵn sàng phân bổ. Việc điều chỉnh siêu tham số có thể đòi hỏi nhiều tài nguyên tính toán.
Cách hoạt động của vòng lặp điều chỉnh#
Đối với mỗi lần lặp, bộ điều chỉnh tích hợp sẵn sẽ thực hiện lặp lại vòng lặp sau:
- Khởi tạo siêu tham số — bắt đầu từ một đường cơ sở hợp lý, sử dụng các siêu tham số mặc định do Ultralytics YOLO thiết lập hoặc các giá trị dựa trên kiến thức chuyên môn hoặc các thí nghiệm trước đó của bạn.
- Đột biến siêu tham số —
Tunerclass tự động tạo ra một tập hợp siêu tham số mới từ tập hợp hiện có bằng phương thức_mutatecủa nó. - Huấn luyện mô hình — huấn luyện bằng cách sử dụng các siêu tham số đã biến đổi, sau đó đánh giá hiệu suất huấn luyện bằng các chỉ số bạn đã chọn.
- Đánh giá model — quá trình đánh giá tạo ra điểm số độ thích nghi của vòng lặp, được so sánh với các vòng lặp trước đó để xác định xem các siêu tham số hiện tại có cải thiện hay không.
- Ghi lại kết quả — ghi lại cả chỉ số hiệu suất và các siêu tham số tương ứng để tham khảo trong tương lai. Ultralytics YOLO tự động lưu các kết quả này ở định dạng NDJSON.
- Lặp lại — tiếp tục cho đến khi đạt đến số lượng vòng lặp đã đặt, với mỗi vòng lặp xây dựng dựa trên kiến thức thu được từ các lần chạy trước. Bộ tinh chỉnh tích hợp chạy tất cả
iterations; Ray Tune báo cáo các chỉ số sau mỗi epoch huấn luyện, cho phép ASHA dừng các lần thử kém hiệu quả sau thời gian ân hạn của nó.
Số lần lặp và quy mô quần thể#
Với trình tinh chỉnh tích hợp sẵn (use_ray=False), iterations kiểm soát tổng số lần thử nghiệm tuần tự. Mỗi lần thử nghiệm sẽ huấn luyện một mô hình với một cấu hình siêu tham số — ví dụ: iterations=40 với epochs=50 thiết lập lịch trình 40 lần chạy huấn luyện 50 epoch độc lập, chứ không phải một lần chạy 50 epoch với một nhóm 40 ứng cử viên riêng biệt.
Thuật toán di truyền tích hợp không có tham số quy mô quần thể rõ ràng. Khi đã có các lần thử nghiệm trước đó, nó lấy mẫu tối đa chín cấu hình có độ thích nghi cao nhất làm cha mẹ, áp dụng lai ghép BLX-α và đột biến, và tạo ra một ứng viên mỗi lần lặp.
Đối với các lần thử nghiệm song song hoặc các chiến lược tìm kiếm nâng cao hơn, hãy đặt use_ray=True để sử dụng Ray Tune, nhận iterations làm num_samples. Xem hướng dẫn tích hợp Ray Tune để biết chi tiết.
Không gian tìm kiếm mặc định#
Bảng sau liệt kê các tham số không gian tìm kiếm mặc định để tinh chỉnh siêu tham số trong YOLO26. Mỗi tham số có một dải giá trị cụ thể được xác định bởi một tuple (min, max).
| Tham số | Loại | Phạm vi giá trị | Mô tả |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | Tốc độ học ban đầu khi bắt đầu đào tạo. Các giá trị thấp hơn giúp việc đào tạo ổn định hơn nhưng hội tụ chậm hơn |
lrf | float | (0.01, 1.0) | Hệ số tốc độ học cuối cùng dưới dạng một phần của lr0. Kiểm soát mức độ giảm tốc độ học trong quá trình đào tạo |
momentum | float | (0.7, 0.98) | Hệ số xung lượng (momentum) SGD. Các giá trị cao hơn giúp duy trì hướng gradient nhất quán và có thể tăng tốc độ hội tụ |
weight_decay | float | (0.0, 0.001) | Hệ số chính quy hóa L2 để ngăn ngừa quá khớp (overfitting). Các giá trị lớn hơn thực thi chính quy hóa mạnh hơn |
warmup_epochs | float | (0.0, 5.0) | Số lượng epoch cho việc khởi động tốc độ học tuyến tính (linear learning rate warmup). Giúp ngăn ngừa sự không ổn định trong giai đoạn đầu đào tạo |
warmup_momentum | float | (0.0, 0.95) | Xung lượng ban đầu trong giai đoạn khởi động. Tăng dần đến giá trị xung lượng cuối cùng |
box | float | (1.0, 20.0) | Trọng số mất mát BBox trong tổng hàm mất mát. Cân bằng giữa hồi quy hộp và phân loại |
cls | float | (0.1, 4.0) | Trọng số mất mát phân loại trong tổng hàm mất mát. Các giá trị cao hơn nhấn mạnh vào dự đoán lớp chính xác |
cls_pw | float | (0.0, 1.0) | Lũy thừa trọng số lớp để xử lý mất cân bằng lớp. Các giá trị cao hơn tăng trọng số cho các lớp hiếm |
dfl | float | (0.4, 12.0) | Trọng số của thuật ngữ hồi quy khoảng cách hộp. YOLO26 không có DFL áp dụng hệ số này cho tổn thất L1 trên khoảng cách hộp đã chuẩn hóa; giá trị cao hơn nhấn mạnh việc định vị chính xác |
hsv_h | float | (0.0, 0.1) | Phạm vi tăng cường màu sắc (hue) ngẫu nhiên trong không gian màu HSV. Giúp mô hình tổng quát hóa qua các biến thể màu sắc |
hsv_s | float | (0.0, 0.9) | Phạm vi tăng cường độ bão hòa (saturation) ngẫu nhiên trong không gian HSV. Mô phỏng các điều kiện ánh sáng khác nhau |
hsv_v | float | (0.0, 0.9) | Phạm vi tăng cường giá trị (độ sáng) ngẫu nhiên. Giúp mô hình xử lý các mức độ phơi sáng khác nhau |
degrees | float | (0.0, 45.0) | Tăng cường xoay tối đa tính bằng độ. Giúp mô hình trở nên bất biến với hướng của đối tượng |
translate | float | (0.0, 0.9) | Tăng cường tịnh tiến tối đa dưới dạng phần nhỏ của kích thước hình ảnh. Cải thiện độ bền vững với vị trí đối tượng |
scale | float | (0.0, 0.95) | Phạm vi tăng cường tỷ lệ ngẫu nhiên. Giúp mô hình phát hiện đối tượng ở các kích thước khác nhau |
shear | float | (0.0, 10.0) | Tăng cường cắt xén (shear) tối đa tính bằng độ. Thêm các biến dạng giống như phối cảnh vào hình ảnh đào tạo |
perspective | float | (0.0, 0.001) | Phạm vi tăng cường phối cảnh ngẫu nhiên. Mô phỏng các góc nhìn khác nhau |
flipud | float | (0.0, 1.0) | Xác suất lật ảnh dọc trong quá trình đào tạo. Hữu ích cho hình ảnh chụp từ trên cao/trên không |
fliplr | float | (0.0, 1.0) | Xác suất lật ảnh ngang. Giúp mô hình trở nên bất biến với hướng của đối tượng |
bgr | float | (0.0, 1.0) | Xác suất sử dụng tăng cường BGR, giúp hoán đổi các kênh màu. Có thể giúp đạt được độ bất biến màu sắc |
mosaic | float | (0.0, 1.0) | Xác suất sử dụng tăng cường mosaic, kết hợp 4 hình ảnh. Đặc biệt hữu ích cho việc phát hiện đối tượng nhỏ |
mixup | float | (0.0, 1.0) | Xác suất sử dụng tăng cường mixup, pha trộn hai hình ảnh. Có thể cải thiện độ bền vững của mô hình |
cutmix | float | (0.0, 1.0) | Xác suất sử dụng tăng cường cutmix. Kết hợp các vùng hình ảnh trong khi vẫn duy trì các đặc trưng cục bộ |
copy_paste | float | (0.0, 1.0) | Trong chế độ flip, tỷ lệ các đối tượng đủ điều kiện được sao chép; trong chế độ mixup, có thêm xác suất áp dụng kỹ thuật đó |
close_mosaic | int | (0.0, 10.0) | Vô hiệu hóa mosaic trong N epoch cuối cùng để ổn định quá trình huấn luyện trước khi hoàn thành. Được đột biến dưới dạng số thực, sau đó được làm tròn thành số nguyên các epoch |
Ví dụ về không gian tìm kiếm tùy chỉnh#
Dưới đây là cách xác định không gian tìm kiếm và sử dụng phương thức model.tune() để tận dụng Tuner class nhằm tinh chỉnh siêu tham số cho YOLO26n trên COCO8 trong 30 epoch với bộ tối ưu hóa AdamW, đồng thời bỏ qua việc vẽ biểu đồ, lưu checkpoint và xác thực ngoại trừ ở epoch cuối cùng để quá trình tinh chỉnh diễn ra nhanh hơn.
Ví dụ này chỉ dành cho mục đích minh họa. Các siêu tham số thu được từ các lần chạy điều chỉnh ngắn hoặc quy mô nhỏ hiếm khi tối ưu cho việc đào tạo trong thực tế. Trong thực tiễn, việc điều chỉnh nên được thực hiện trong các thiết lập tương tự như đào tạo đầy đủ — bao gồm các tập dữ liệu, epoch và tăng cường dữ liệu tương đương — để đảm bảo kết quả đáng tin cậy và có khả năng chuyển đổi. Việc điều chỉnh nhanh có thể làm lệch các tham số theo hướng hội tụ nhanh hơn hoặc đạt được lợi ích xác thực ngắn hạn mà không có khả năng tổng quát hóa.
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
data="coco8.yaml",
epochs=30,
iterations=300,
optimizer="AdamW",
space=search_space,
plots=False,
save=False,
val=False,
)Tiếp tục phiên điều chỉnh siêu tham số bị gián đoạn#
Bạn có thể tiếp tục một phiên tinh chỉnh siêu tham số bị gián đoạn bằng cách truyền resume=True. Bạn có thể tùy chọn truyền thư mục name được sử dụng dưới runs/{task} để tiếp tục. Nếu không có name, chương trình sẽ tiếp tục thư mục có tên đen đủi là tune, đây là tên mặc định thay vì phiên chạy gần đây nhất, vì vậy hãy truyền name cho bất kỳ lần chạy nào bạn bắt đầu bằng tên tùy chỉnh. Bạn cũng cần cung cấp tất cả các đối số huấn luyện trước đó bao gồm data, epochs, iterations và space.
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"degrees": (0.0, 45.0),
}
# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)
# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)Kết quả#
Sau khi bạn đã hoàn thành thành công quy trình điều chỉnh siêu tham số, bạn sẽ nhận được một số tệp và thư mục gói gọn kết quả điều chỉnh. Sau đây mô tả từng mục:
Cấu trúc tệp#
Dưới đây là cấu trúc thư mục của kết quả trông sẽ như thế nào. Các thư mục huấn luyện như train/ và train-2/ chứa các vòng lặp tinh chỉnh riêng lẻ, tức là một model được huấn luyện với một tập hợp siêu tham số. Thư mục tune/ chứa kết quả tinh chỉnh từ tất cả các lần huấn luyện model riêng lẻ:
runs/
└── detect/
├── train/
├── train-2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── tune_fitness.png
├── tune_results.ndjson
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.ptMô tả tệp#
best_hyperparameters.yaml#
Tệp YAML này chứa các siêu tham số có hiệu suất tốt nhất được tìm thấy trong quá trình điều chỉnh. Bạn có thể sử dụng tệp này để khởi tạo các quá trình đào tạo trong tương lai với các cài đặt tối ưu này.
-
Định dạng: YAML
-
Sử dụng: Kết quả siêu tham số
-
Ví dụ:
# 558/900 iterations complete ✅ (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/l1_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/tune/weights # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
tune_fitness.png#
Đây là biểu đồ hiển thị độ thích nghi so với số lần lặp. Nó giúp bạn trực quan hóa cách thuật toán di truyền thực hiện theo thời gian.
- Định dạng: PNG
- Sử dụng: Trực quan hóa hiệu suất
Biểu đồ chứa:
- Một điểm đánh dấu cho mỗi lần lặp trên mỗi tập dữ liệu, vì vậy một lần chạy trên một tập dữ liệu hiển thị một điểm cho mỗi lần lặp, và một lần chạy trên nhiều tập dữ liệu hiển thị một điểm cho mỗi tập dữ liệu mỗi lần lặp.
- Đường "giá trị trung bình được làm mượt" dạng đứt nét được tính toán bằng phương pháp làm mượt Gaussian (
sigma=3) trên các giá trị độ thích ứng (fitness) cấp cao nhất của từng lần lặp.
tune_results.ndjson#
Một tệp NDJSON chứa các kết quả chi tiết của mỗi lần lặp điều chỉnh. Mỗi dòng là một đối tượng JSON với tổng độ thích nghi, các siêu tham số đã điều chỉnh và các chỉ số trên mỗi tập dữ liệu. Việc điều chỉnh trên một tập dữ liệu và nhiều tập dữ liệu sử dụng cùng một định dạng tệp.
- Định dạng: NDJSON
- Sử dụng: Theo dõi kết quả mỗi lần lặp.
- Ví dụ:
Một ví dụ được định dạng đẹp mắt được trình bày bên dưới để dễ đọc; trong tệp .ndjson thực tế, mỗi đối tượng được lưu trữ trên một dòng duy nhất.
{
"iteration": 1,
"fitness": 0.48628,
"hyperparameters": {
"lr0": 0.01,
"lrf": 0.01,
"momentum": 0.937,
"weight_decay": 0.0005
},
"datasets": {
"coco8": {
"metrics/precision(B)": 0.65666,
"metrics/recall(B)": 0.85,
"metrics/mAP50(B)": 0.85086,
"metrics/mAP50-95(B)": 0.64104,
"val/box_loss": 1.57958,
"val/cls_loss": 1.04986,
"val/l1_loss": 1.32641,
"fitness": 0.64104
},
"coco8-grayscale": {
"metrics/precision(B)": 0.6582,
"metrics/recall(B)": 0.51667,
"metrics/mAP50(B)": 0.59106,
"metrics/mAP50-95(B)": 0.33152,
"val/box_loss": 1.95424,
"val/cls_loss": 1.64059,
"val/l1_loss": 1.70226,
"fitness": 0.33152
}
},
"save_dirs": {
"coco8": "runs/detect/coco8",
"coco8-grayscale": "runs/detect/coco8-grayscale"
}
}Giá trị fitness cấp cao nhất là trung bình cộng của các giá trị fitness trên từng tập dữ liệu. Đối với việc tinh chỉnh trên một tập dữ liệu đơn lẻ, từ điển datasets có một mục có fitness bằng với fitness cấp cao nhất. Một đối tượng JSON được ghi lại cho mỗi lần lặp hoàn thành. Các đường dẫn save_dirs thực tế là đường dẫn tuyệt đối; chúng được viết tắt ở trên để dễ đọc.
tune_scatter_plots.png#
Tệp này chứa các biểu đồ phân tán được tạo từ tune_results.ndjson, giúp bạn trực quan hóa mối quan hệ giữa các siêu tham số khác nhau và các chỉ số hiệu suất. Các siêu tham số có giá trị mặc định là 0 (ví dụ: degrees và shear bên dưới) có thể tiến hóa rất chậm từ giá trị gốc ban đầu vì hệ số đột biến nhân có rất ít cơ sở để mở rộng từ một giá trị gần bằng 0.
- Định dạng: PNG
- Cách sử dụng: Phân tích dữ liệu khám phá
weights/#
Thư mục này chứa các model PyTorch đã lưu từ vòng lặp có độ thích nghi tốt nhất của quá trình tinh chỉnh. Cả hai tệp đều đến từ cùng một vòng lặp đó:
last.pt: Tệp last.pt là trọng số từ epoch huấn luyện cuối cùng.best.pt: Trọng số best.pt cho lần lặp đạt điểm số độ thích ứng tốt nhất.
Sử dụng các kết quả này, bạn có thể đưa ra các quyết định sáng suốt hơn cho các lần huấn luyện và phân tích mô hình trong tương lai.
Kết luận#
Tinh chỉnh siêu tham số trong Ultralytics YOLO vừa dễ khởi chạy vừa mạnh mẽ bên trong, kết hợp phép lai BLX-α với phép đột biến log-normal trong một thuật toán di truyền. Việc tuân theo vòng lặp được phác thảo trong hướng dẫn này cho phép bạn có hệ thống tinh chỉnh mô hình để đạt hiệu suất tốt hơn, sau đó tái sử dụng best_hyperparameters.yaml kết quả để khởi tạo cho các lần chạy huấn luyện trong tương lai. Để mở rộng quy mô tinh chỉnh qua các lần thử nghiệm song song và các thuật toán tìm kiếm nâng cao hơn, hãy tiếp tục với hướng dẫn tích hợp Ray Tune, hoặc chạy các tác vụ được quản lý với các siêu tham số có thể định cấu hình và theo dõi chỉ số thời gian thực trên Ultralytics Platform thông qua huấn luyện trên đám mây.
Đối với các thiết lập mà không có đối số nào phơi bày, chẳng hạn như tốc độ học theo từng lớp hoặc chỉ số độ thích nghi tùy chỉnh, thay vào đó hãy subclass the trainer. Để có cái nhìn sâu sắc hơn, hãy khám phá mã nguồn Tuner class. Nếu bạn có thắc mắc hoặc yêu cầu tính năng, hãy liên hệ trên GitHub hoặc Discord.
Câu hỏi thường gặp#
Đặt giá trị ban đầu với tham số
lr0— các giá trị phổ biến dao động từ0.001đến0.01— và để quá trình tinh chỉnh đột biến giá trị đó từ điểm khởi đầu nhằm tìm ra mức tối ưu. Bạn có thể tự động hóa việc này bằng phương thứcmodel.tune(). Ví dụ:Ví dụfrom ultralytics import YOLO # Initialize the YOLO model model = YOLO("yolo26n.pt") # Tune hyperparameters on COCO8 for 30 epochs model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)Để biết thêm chi tiết, hãy xem trang cấu hình Ultralytics YOLO.
Các thuật toán di truyền trong Ultralytics YOLO26 cung cấp một phương pháp mạnh mẽ để khám phá không gian siêu tham số, dẫn đến hiệu suất model được tối ưu hóa cao. Các lợi ích chính bao gồm:
- Tìm kiếm hiệu quả: Lai chéo BLX-α kết hợp các gen từ các cha mẹ có fitness cao nhất, trong khi đột biến log-normal làm xáo trộn kết quả để khám phá các ứng viên mới.
- Tránh các cực tiểu địa phương (Local Minima): Bằng cách đưa vào tính ngẫu nhiên, chúng giúp tránh các cực tiểu địa phương, đảm bảo tối ưu hóa toàn cục tốt hơn.
- Chỉ số hiệu suất: Chúng thích ứng dựa trên điểm số fitness cụ thể cho tác vụ (mAP50-95 cho phát hiện).
Để xem thuật toán di truyền có thể tối ưu hóa siêu tham số như thế nào, hãy xem hướng dẫn tiến hóa siêu tham số.
Thời gian cần thiết để tinh chỉnh siêu tham số với Ultralytics YOLO phụ thuộc phần lớn vào nhiều yếu tố như kích thước tập dữ liệu, độ phức tạp của kiến trúc model, số lần lặp và tài nguyên tính toán khả dụng. Ví dụ, việc tinh chỉnh YOLO26n trên một tập dữ liệu như COCO8 trong 30 epoch có thể mất vài giờ đến vài ngày, tùy thuộc vào phần cứng.
Để quản lý hiệu quả thời gian tinh chỉnh, hãy xác định trước một ngân sách tinh chỉnh rõ ràng, như được đề cập trong Chuẩn bị cho việc tinh chỉnh siêu tham số. Điều này giúp cân bằng việc phân bổ tài nguyên và các mục tiêu tối ưu hóa.
Khi đánh giá hiệu suất model trong quá trình tinh chỉnh siêu tham số trong YOLO, bạn có thể sử dụng một số chỉ số chính:
- AP50: Độ chính xác trung bình tại ngưỡng IoU là 0.50.
- F1-Score: Trung bình điều hòa giữa độ chính xác (precision) và độ thu hồi (recall).
- Độ chuẩn xác và Độ thu hồi (Precision and Recall): Các chỉ số riêng lẻ cho biết độ chính xác của mô hình trong việc nhận diện các trường hợp dương tính thật so với dương tính giả và âm tính giả.
Các chỉ số này giúp bạn hiểu rõ các khía cạnh khác nhau về hiệu suất của mô hình. Tham khảo hướng dẫn các chỉ số hiệu suất của Ultralytics YOLO để có cái nhìn tổng quan toàn diện.
Có, Ultralytics YOLO26 tích hợp với Ray Tune để tối ưu hóa siêu tham số nâng cao. Ray Tune cung cấp các thuật toán tìm kiếm tinhsoph như Tối ưu hóa Bayes (Bayesian Optimization) và Hyperband, cùng với khả năng thực thi song song để đẩy nhanh quá trình tinh chỉnh.
Để sử dụng Ray Tune với YOLO26, chỉ cần đặt tham số
use_ray=Truetrong lệnh gọi phương thứcmodel.tune()của bạn. Để biết thêm chi tiết và ví dụ, hãy xem hướng dẫn tích hợp Ray Tune.