Ultralytics YOLO Hướng dẫn điều chỉnh siêu tham số
Giới thiệu
Điều chỉnh siêu tham số không chỉ là thiết lập một lần mà là quá trình lặp đi lặp lại nhằm tối ưu hóa các số liệu hiệu suất của mô hình học máy , chẳng hạn như độ chính xác, độ chính xác và khả năng thu hồi. Trong bối cảnh Ultralytics YOLO , các siêu tham số này có thể dao động từ tốc độ học đến các chi tiết về kiến trúc, chẳng hạn như số lớp hoặc loại hàm kích hoạt được sử dụng.
Đồng hồ: 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 thiết lập trước giai đoạn đào tạo và duy trì không đổi trong suốt giai đoạn đó. Sau đây là một số siêu tham số thường được điều chỉnh trong Ultralytics YOLO :
- Tỷ lệ học tập
lr0
: Xác định kích thước bước tại mỗi lần lặp lại trong khi di chuyển về phía mức tối thiểu trong chức năng mất mát. - Kích thước lô
batch
: Số lượng hình ảnh được xử lý đồng thời trong một lần truyền tiếp. - Số lượng kỷ nguyên
epochs
: Một kỷ nguyên là một lần duyệt hoàn chỉnh tới và lui của tất cả các ví dụ đào tạo. - Thông số kiến trúc : Chẳng hạn như số lượng kênh, số lớp, loại hàm kích hoạt, v.v.
Để biết danh sách đầy đủ các siêu tham số tăng cường được sử dụng trong YOLO11 vui lòng tham khảo trang cấu hình .
Tiến hóa và đột biến di truyề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.
- Đột biến : Trong bối cảnh của Ultralytics YOLO , đột biến giúp tìm kiếm cục bộ không gian siêu tham số bằng cách áp dụng những thay đổi nhỏ, ngẫu nhiên vào các siêu tham số hiện có, tạo ra các ứng viên mới để đánh giá.
- Crossover : Mặc dù crossover là một kỹ thuật thuật toán di truyền phổ biến, nhưng hiện tại nó không được sử dụng trong Ultralytics YOLO để điều chỉnh siêu tham số. Trọng tâm chủ yếu là đột biến để tạo ra các bộ siêu tham số mới.
Chuẩn bị cho việc điều chỉnh siêu tham số
Trước khi bắt đầu quá trình điều chỉnh, điều quan trọng là:
- Xác định số liệu : Xác định số liệu bạn sẽ sử dụng để đánh giá hiệu suất của mô hình. Có thể là AP50, điểm F1 hoặc các số liệu khác.
- 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 mà bạn muốn phân bổ. Điều chỉnh siêu tham số có thể tốn nhiều tài nguyên tính toán.
Các bước liên quan
Khởi tạo siêu tham số
Bắt đầu với một tập hợp hợp lý các siêu tham số ban đầu. Đây có thể là các siêu tham số mặc định được thiết lập bởi Ultralytics YOLO hoặc thứ gì đó dựa trên kiến thức chuyên môn hoặc các thử nghiệm trước đây của bạn.
Đột biến siêu tham số
Sử dụng _mutate
phương pháp tạo ra một tập siêu tham số mới dựa trên tập hiện có.
Mô hình tàu hỏa
Quá trình đào tạo được thực hiện bằng cách sử dụng bộ siêu tham số đột biến. Sau đó, hiệu suất đào tạo được đánh giá.
Đánh giá mô hình
Sử dụng các số liệu như AP50, điểm F1 hoặc các số liệu tùy chỉnh để đánh giá hiệu suất của mô hình.
Nhật ký kết quả
Điều quan trọng là phải ghi lại cả số liệu hiệu suất và siêu tham số tương ứng để tham khảo trong tương lai.
Lặp lại
Quá trình này được lặp lại cho đến khi đạt được số lần lặp đã định hoặc số liệu hiệu suất đạt yêu cầu.
Mô tả không gian tìm kiếm mặc định
The following table lists the default search space parameters for hyperparameter tuning in YOLO11. Each parameter has a specific value range defined by a tuple (min, max)
.
Tham số | Kiểu | Phạm vi giá trị | Sự miêu tả |
---|---|---|---|
lr0 |
float |
(1e-5, 1e-1) |
Initial learning rate at the start of training. Lower values provide more stable training but slower convergence |
lrf |
float |
(0.01, 1.0) |
Final learning rate factor as a fraction of lr0. Controls how much the learning rate decreases during training |
momentum |
float |
(0.6, 0.98) |
SGD momentum factor. Higher values help maintain consistent gradient direction and can speed up convergence |
weight_decay |
float |
(0.0, 0.001) |
L2 regularization factor to prevent overfitting. Larger values enforce stronger regularization |
warmup_epochs |
float |
(0.0, 5.0) |
Number of epochs for linear learning rate warmup. Helps prevent early training instability |
warmup_momentum |
float |
(0.0, 0.95) |
Initial momentum during warmup phase. Gradually increases to the final momentum value |
box |
float |
(0.02, 0.2) |
Bounding box loss weight in the total loss function. Balances box regression vs classification |
cls |
float |
(0.2, 4.0) |
Classification loss weight in the total loss function. Higher values emphasize correct class prediction |
hsv_h |
float |
(0.0, 0.1) |
Random hue augmentation range in HSV color space. Helps model generalize across color variations |
hsv_s |
float |
(0.0, 0.9) |
Random saturation augmentation range in HSV space. Simulates different lighting conditions |
hsv_v |
float |
(0.0, 0.9) |
Random value (brightness) augmentation range. Helps model handle different exposure levels |
degrees |
float |
(0.0, 45.0) |
Maximum rotation augmentation in degrees. Helps model become invariant to object orientation |
translate |
float |
(0.0, 0.9) |
Maximum translation augmentation as fraction of image size. Improves robustness to object position |
scale |
float |
(0.0, 0.9) |
Random scaling augmentation range. Helps model detect objects at different sizes |
shear |
float |
(0.0, 10.0) |
Maximum shear augmentation in degrees. Adds perspective-like distortions to training images |
perspective |
float |
(0.0, 0.001) |
Random perspective augmentation range. Simulates different viewing angles |
flipud |
float |
(0.0, 1.0) |
Probability of vertical image flip during training. Useful for overhead/aerial imagery |
fliplr |
float |
(0.0, 1.0) |
Probability of horizontal image flip. Helps model become invariant to object direction |
mosaic |
float |
(0.0, 1.0) |
Probability of using mosaic augmentation, which combines 4 images. Especially useful for small object detection |
mixup |
float |
(0.0, 1.0) |
Probability of using mixup augmentation, which blends two images. Can improve model robustness |
copy_paste |
float |
(0.0, 1.0) |
Probability of using copy-paste augmentation. Helps improve instance segmentation performance |
Ví dụ về không gian tìm kiếm tùy chỉnh
Here's how to define a search space and use the model.tune()
phương pháp sử dụng Tuner
lớp để điều chỉnh siêu tham số của YOLO11n trên COCO8 trong 30 kỷ nguyên với trình tối ưu hóa AdamW và bỏ qua việc vẽ đồ thị, kiểm tra điểm và xác thực ngoài kỷ nguyên cuối cùng để điều chỉnh nhanh hơn.
Ví dụ
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo11n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-1),
"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,
)
Kết quả
Sau khi bạn hoàn tất thành công quá 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 đóng gói kết quả của quá trình điều chỉnh. Sau đây mô tả từng tệp và thư mục:
Cấu trúc tập tin
Sau đây là cấu trúc thư mục của kết quả sẽ trông như thế nào. Các thư mục đào tạo như train1/
chứa các lần lặp điều chỉnh riêng lẻ, tức là một mô hình được đào tạo với một bộ siêu tham số. tune/
thư mục chứa kết quả điều chỉnh từ tất cả các bài đào tạo mô hình riêng lẻ:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── best_fitness.png
├── tune_results.csv
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
Mô tả tập tin
best_hyperparameters.yaml
Tệp YAML này chứa các siêu tham số hoạt động 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 khóa đào tạo trong tương lai với các thiết lập được tối ưu hóa 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/dfl_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/train498 # 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
best_fitness.png
Đây là biểu đồ hiển thị mức độ phù hợp (thường là số liệu hiệu suất như AP50) so với số lần lặp lại. Nó giúp bạn hình dung thuật toán di truyền hoạt động tốt như thế nào theo thời gian.
- Định dạng : PNG
- Sử dụng : Trực quan hóa hiệu suất
tune_results.csv
Tệp CSV chứa kết quả chi tiết của từng lần lặp trong quá trình điều chỉnh. Mỗi hàng trong tệp biểu diễn một lần lặp và bao gồm các số liệu như điểm thể lực, độ chính xác , độ thu hồi cũng như các siêu tham số được sử dụng.
- Định dạng : CSV
- Cách sử dụng : Theo dõi kết quả theo từng lần lặp.
- Ví dụ:
fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste 0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0 0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0 0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
tune_scatter_plots.png
Tệp này chứa các biểu đồ phân tán được tạo từ tune_results.csv
, giúp bạn hình dung mối quan hệ giữa các siêu tham số khác nhau và số liệu hiệu suất. Lưu ý rằng các siêu tham số được khởi tạo thành 0 sẽ không được điều chỉnh, chẳng hạn như degrees
Và shear
dưới.
- Định dạng : PNG
- Sử dụng : Phân tích dữ liệu thăm dò
trọng lượng/
Thư mục này chứa các mô hình PyTorch đã lưu cho lần lặp cuối cùng và tốt nhất trong quá trình điều chỉnh siêu tham số.
last.pt
: Last.pt là trọng số từ giai đoạn đào tạo cuối cùng.best.pt
: Trọng số pt tốt nhất cho lần lặp đạt được điểm thể lực tốt nhất.
Sử dụng những kết quả này, bạn có thể đưa ra quyết định sáng suốt hơn cho các bài đào tạo và phân tích mô hình trong tương lai của mình. Hãy thoải mái tham khảo các hiện vật này để hiểu mô hình của bạn hoạt động tốt như thế nào và làm thế nào bạn có thể cải thiện nó hơn nữa.
Phần kết luận
Quá trình điều chỉnh siêu tham số trong Ultralytics YOLO được đơn giản hóa nhưng mạnh mẽ, nhờ vào phương pháp tiếp cận dựa trên thuật toán di truyền tập trung vào đột biến. Thực hiện theo các bước được nêu trong hướng dẫn này sẽ hỗ trợ bạn điều chỉnh mô hình của mình một cách có hệ thống để đạt được hiệu suất tốt hơn.
Đọc thêm
- Tối ưu hóa siêu tham số trong Wikipedia
- YOLOv5 Hướng dẫn tiến hóa siêu tham số
- Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11
Để có cái nhìn sâu sắc hơn, bạn có thể khám phá Tuner
mã nguồn lớp và tài liệu đi kèm. Nếu bạn có bất kỳ câu hỏi, yêu cầu tính năng hoặc cần hỗ trợ thêm, vui lòng liên hệ với chúng tôi qua GitHub hoặc Bất hòa.
CÂU HỎI THƯỜNG GẶP
Làm thế nào để tôi tối ưu hóa tốc độ học tập cho Ultralytics YOLO trong quá trình điều chỉnh siêu tham số?
Để tối ưu hóa tốc độ học tập cho Ultralytics YOLO , bắt đầu bằng cách thiết lập tốc độ học ban đầu bằng cách sử dụng lr0
tham số. Các giá trị phổ biến nằm trong khoảng từ 0.001
ĐẾN 0.01
. Trong quá trình điều chỉnh siêu tham số, giá trị này sẽ được thay đổi để tìm ra thiết lập tối ưu. Bạn có thể sử dụng model.tune()
phương pháp để tự động hóa quá trình này. Ví dụ:
Ví dụ
Để biết thêm chi tiết, hãy kiểm tra trang cấu hình Ultralytics YOLO .
Lợi ích của việc sử dụng thuật toán di truyền để điều chỉnh siêu tham số trong YOLO11 ?
Thuật toán di truyền trong Ultralytics YOLO11 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 mô hình được tối ưu hóa cao. Các lợi ích chính bao gồm:
- Tìm kiếm hiệu quả : Các thuật toán di truyền như đột biến có thể nhanh chóng khám phá một tập hợp lớn các siêu tham số.
- Tránh các giá trị cực tiểu cục bộ : Bằng cách đưa tính ngẫu nhiên vào, chúng giúp tránh các giá trị cực tiểu cục bộ, đảm bảo tối ưu hóa toàn cục tốt hơn.
- Chỉ số hiệu suất : Chúng được điều chỉnh dựa trên các chỉ số hiệu suất như AP50 và điểm F1.
Để xem cách thuật toán di truyền có thể tối ưu hóa siêu tham số, hãy xem hướng dẫn tiến hóa siêu tham số .
Quá trình điều chỉnh siêu tham số mất bao lâu? Ultralytics YOLO ?
Thời gian cần thiết để điều chỉnh siêu tham số với Ultralytics YOLO phụ thuộc phần lớn vào một số yếu tố như kích thước của tập dữ liệu, độ phức tạp của kiến trúc mô hình, số lần lặp và tài nguyên tính toán có sẵn. Ví dụ, việc điều chỉnh YOLO11n trên một tập dữ liệu như COCO8 trong 30 kỷ nguyên 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ý thời gian điều chỉnh hiệu quả, hãy xác định ngân sách điều chỉnh rõ ràng trước ( liên kết phần nội bộ ). Điều này giúp cân bằng mục tiêu phân bổ tài nguyên và tối ưu hóa.
Tôi nên sử dụng số liệu nào để đánh giá hiệu suất mô hình trong quá trình điều chỉnh siêu tham số? YOLO ?
Khi đánh giá hiệu suất mô hình trong quá trình điều chỉnh siêu tham số trong YOLO , bạn có thể sử dụng một số số liệu quan trọng:
- AP50 : Độ chính xác trung bình ở ngưỡng IoU là 0,50.
- Điểm F1 : Giá trị trung bình hài hòa của độ chính xác và độ thu hồi.
- Độ chính xác và khả năng thu hồi : Các số liệu riêng lẻ cho biết độ chính xác của mô hình trong việc xác định kết quả dương tính thật so với kết quả dương tính giả và kết quả âm tính giả.
Các số liệu này giúp bạn hiểu 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 về số liệu hiệu suất YOLO Ultralytics để có cái nhìn tổng quan toàn diện.
Tôi có thể sử dụng Ultralytics HUB để điều chỉnh siêu tham số của YOLO mô hình?
Có, bạn có thể sử dụng Ultralytics HUB để điều chỉnh siêu tham số của YOLO mô hình. HUB cung cấp nền tảng không cần mã để dễ dàng tải lên các tập dữ liệu, đào tạo mô hình và thực hiện điều chỉnh siêu tham số hiệu quả. Nó cung cấp khả năng theo dõi và trực quan hóa tiến trình và kết quả điều chỉnh theo thời gian thực.
Khám phá thêm về việc sử dụng Ultralytics HUB để điều chỉnh siêu tham số trong tài liệu đào tạo đám mây Ultralytics HUB .