Bỏ qua nội dung

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.

Điều chỉnh siêu tham số trực quan

Để 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à:

  1. 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.
  2. 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

Điều chỉnh siêu tham số phù hợp với lặp lại

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ư degreesshear dưới.

  • Định dạng : PNG
  • Sử dụng : Phân tích dữ liệu thăm dò

Biểu đồ phân tán điều chỉnh siêu tham số

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

  1. Tối ưu hóa siêu tham số trong Wikipedia
  2. YOLOv5 Hướng dẫn tiến hóa siêu tham số
  3. Đ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ụ

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.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 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 .

📅 Được tạo cách đây 1 năm ✏️ Đã cập nhật cách đây 23 ngày

Bình luận