Bỏ để qua phần nội dung

Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11

Điều chỉnh siêu tham số là rất quan trọng trong việc đạt được hiệu suất mô hình cao nhất bằng cách khám phá bộ siêu tham số tối ưu. Điều này liên quan đến việc chạy thử nghiệm với các siêu tham số khác nhau và đánh giá hiệu suất của từng thử nghiệm.

Tăng tốc điều chỉnh với Ultralytics YOLO11 và Ray Tune

Ultralytics YOLO11 kết hợp Ray Tune để điều chỉnh siêu tham số, hợp lý hóa việc tối ưu hóa siêu tham số mô hình YOLO11. Với Ray Tune, bạn có thể sử dụng các chiến lược tìm kiếm nâng cao, song song và dừng sớm để đẩy nhanh quá trình điều chỉnh.

Điều chỉnh tia

Tổng quan về Ray Tune

Ray Tune là một thư viện điều chỉnh siêu tham số được thiết kế để đạt hiệu quả và tính linh hoạt. Nó hỗ trợ nhiều chiến lược tìm kiếm, song song và chiến lược dừng sớm, và tích hợp liền mạch với các khuôn khổ học máy phổ biến, bao gồm Ultralytics YOLO11.

Tích hợp với Weights & Biases

YOLO11 cũng cho phép tích hợp tùy chọn với Weights & Biases để theo dõi quá trình điều chỉnh.

Cài đặt

Để cài đặt các gói cần thiết, hãy chạy:

Cài đặt

# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

Sử dụng

Sử dụng

from ultralytics import YOLO

# Load a YOLO11n model
model = YOLO("yolo11n.pt")

# Start tuning hyperparameters for YOLO11n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() Tham số phương pháp

Các tune() phương pháp trong YOLO11 cung cấp giao diện dễ sử dụng để điều chỉnh siêu tham số với Ray Tune. Nó chấp nhận một số đối số cho phép bạn tùy chỉnh quy trình điều chỉnh. Dưới đây là giải thích chi tiết về từng tham số:

Thông sốKiểuSự miêu tảGiá trị mặc định
datastrTệp cấu hình tập dữ liệu (ở định dạng YAML) để chạy bộ điều chỉnh. Tệp này phải chỉ định đường dẫn dữ liệu đào tạo và xác thực , cũng như các thiết lập cụ thể khác của tập dữ liệu.
spacedict, optionalTừ điển định nghĩa không gian tìm kiếm siêu tham số cho Ray Tune. Mỗi khóa tương ứng với một tên siêu tham số và giá trị chỉ định phạm vi giá trị để khám phá trong quá trình điều chỉnh. Nếu không được cung cấp, YOLO11 sẽ sử dụng không gian tìm kiếm mặc định với nhiều siêu tham số khác nhau.
grace_periodint, optionalThời gian gia hạn theo epoch cho trình lập lịch ASHA trong Ray Tune. Trình lập lịch sẽ không chấm dứt bất kỳ thử nghiệm nào trước số epoch này, cho phép mô hình có một số đào tạo tối thiểu trước khi đưa ra quyết định dừng sớm.10
gpu_per_trialint, optionalSố lượng GPU cần phân bổ cho mỗi lần dùng thử trong quá trình điều chỉnh. Điều này giúp quản lý GPU sử dụng, đặc biệt là trong đa -GPU Môi trường. Nếu không được cung cấp, bộ chỉnh sẽ sử dụng tất cả các GPU có sẵn.Không ai
iterationsint, optionalSố lượng thử nghiệm tối đa để chạy trong quá trình điều chỉnh. Tham số này giúp kiểm soát tổng số tổ hợp siêu tham số được thử nghiệm, đảm bảo quá trình điều chỉnh không chạy vô thời hạn.10
**train_argsdict, optionalCác đối số bổ sung để chuyển đến train() phương pháp trong quá trình điều chỉnh. Những đối số này có thể bao gồm các thiết lập như số kỷ nguyên đào tạo, kích thước lôvà các cấu hình đào tạo cụ thể khác.{}

Bằng cách tùy chỉnh các tham số này, bạn có thể tinh chỉnh quy trình tối ưu hóa siêu tham số cho phù hợp với nhu cầu cụ thể và tài nguyên tính toán sẵn có của mình.

Mô tả không gian tìm kiếm mặc định

Bảng sau đây liệt kê các tham số không gian tìm kiếm mặc định để điều chỉnh siêu tham số trong YOLO11 với Ray Tune. Mỗi tham số có một phạm vi giá trị cụ thể được xác định bởi tune.uniform().

Thông sốPhạm vi giá trịSự miêu tả
lr0tune.uniform(1e-5, 1e-1)Tốc độ học ban đầu
lrftune.uniform(0.01, 1.0)Yếu tố tỷ lệ học tập cuối cùng
momentumtune.uniform(0.6, 0.98)Đà
weight_decaytune.uniform(0.0, 0.001)Phân rã trọng lượng
warmup_epochstune.uniform(0.0, 5.0)Kỷ nguyên khởi động
warmup_momentumtune.uniform(0.0, 0.95)Đà khởi động
boxtune.uniform(0.02, 0.2)Trọng lượng hộp giảm
clstune.uniform(0.2, 4.0)Lớp học giảm cân
hsv_htune.uniform(0.0, 0.1)Phạm vi tăng cường Huế
hsv_stune.uniform(0.0, 0.9)Phạm vi tăng độ bão hòa
hsv_vtune.uniform(0.0, 0.9)Phạm vi tăng giá trị (độ sáng)
degreestune.uniform(0.0, 45.0)Phạm vi tăng cường xoay (độ)
translatetune.uniform(0.0, 0.9)Phạm vi tăng cường dịch thuật
scaletune.uniform(0.0, 0.9)Phạm vi tăng cường mở rộng quy mô
sheartune.uniform(0.0, 10.0)Phạm vi tăng lực cắt (độ)
perspectivetune.uniform(0.0, 0.001)Phạm vi tăng cường phối cảnh
flipudtune.uniform(0.0, 1.0)Xác suất tăng cường lật dọc
fliplrtune.uniform(0.0, 1.0)Xác suất tăng cường lật ngang
mosaictune.uniform(0.0, 1.0)Xác suất tăng khảm
mixuptune.uniform(0.0, 1.0)Xác suất tăng hỗn hợp
copy_pastetune.uniform(0.0, 1.0)Xác suất tăng cường sao chép-dán

Ví dụ về không gian tìm kiếm tùy chỉnh

Trong ví dụ này, chúng tôi trình bày cách sử dụng không gian tìm kiếm tùy chỉnh để điều chỉnh siêu tham số với Ray Tune và YOLO11. Bằng cách cung cấp không gian tìm kiếm tùy chỉnh, bạn có thể tập trung quá trình điều chỉnh vào các siêu tham số cụ thể cần quan tâm.

Sử dụng

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo11n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-1)},
    epochs=50,
    use_ray=True,
)

Trong đoạn mã trên, chúng ta tạo ra một YOLO mô hình với trọng số được đào tạo trước "yolo11n.pt". Sau đó, chúng tôi gọi tune() phương pháp, chỉ định cấu hình tập dữ liệu với "coco8.yaml". Chúng tôi cung cấp một không gian tìm kiếm tùy chỉnh cho tỷ lệ học tập ban đầu lr0 Sử dụng từ điển có khóa "LR0" và giá trị tune.uniform(1e-5, 1e-1). Cuối cùng, chúng ta truyền các đối số đào tạo bổ sung, chẳng hạn như số lượng kỷ nguyên trực tiếp vào phương thức điều chỉnh là epochs=50.

Xử lý kết quả Ray Tune

Sau khi chạy thử nghiệm điều chỉnh siêu tham số với Ray Tune, bạn có thể muốn thực hiện các phân tích khác nhau về kết quả thu được. Hướng dẫn này sẽ đưa bạn qua các quy trình công việc phổ biến để xử lý và phân tích các kết quả này.

Tải kết quả thử nghiệm Tune từ một thư mục

Sau khi chạy thử nghiệm điều chỉnh với tuner.fit(), bạn có thể tải kết quả từ một thư mục. Điều này rất hữu ích, đặc biệt nếu bạn đang thực hiện phân tích sau khi kịch bản đào tạo ban đầu đã thoát.

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

Phân tích cấp độ thử nghiệm cơ bản

Xem tổng quan về cách các bản dùng thử được thực hiện. Bạn có thể nhanh chóng kiểm tra xem có bất kỳ lỗi nào trong quá trình dùng thử hay không.

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

Phân tích cấp độ dùng thử cơ bản

Truy cập các cấu hình siêu tham số dùng thử riêng lẻ và các chỉ số được báo cáo gần đây nhất.

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

Vẽ toàn bộ lịch sử của các số liệu được báo cáo cho một thử nghiệm

Bạn có thể vẽ lịch sử của các chỉ số được báo cáo cho mỗi thử nghiệm để xem các chỉ số phát triển như thế nào theo thời gian.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

Tóm tắt

Trong tài liệu này, chúng tôi đã đề cập đến các quy trình công việc phổ biến để phân tích kết quả của các thử nghiệm chạy với Ray Tune bằng cách sử dụng Ultralytics. Các bước chính bao gồm tải kết quả thử nghiệm từ một thư mục, thực hiện phân tích cơ bản ở cấp độ thử nghiệm và cấp độ thử nghiệm và vẽ số liệu.

Khám phá thêm bằng cách xem trang tài liệu Phân tích kết quả của Ray Tune để tận dụng tối đa các thử nghiệm điều chỉnh siêu tham số của bạn.

FAQ

Làm thế nào để điều chỉnh siêu tham số của mô hình YOLO11 của tôi bằng Ray Tune?

Để điều chỉnh các siêu tham số của bạn Ultralytics Mô hình YOLO11 sử dụng Ray Tune, hãy làm theo các bước sau:

  1. Cài đặt các gói cần thiết:

    pip install -U ultralytics "ray[tune]"
    pip install wandb  # optional for logging
    
  2. Tải mô hình YOLO11 của bạn và bắt đầu điều chỉnh:

    from ultralytics import YOLO
    
    # Load a YOLO11 model
    model = YOLO("yolo11n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

Điều này sử dụng các chiến lược tìm kiếm nâng cao và tính song song của Ray Tune để tối ưu hóa hiệu quả các siêu tham số của mô hình của bạn. Để biết thêm thông tin, hãy xem tài liệu về Ray Tune.

Siêu tham số mặc định để điều chỉnh YOLO11 bằng Ray Tune là gì?

Ultralytics YOLO11 sử dụng các siêu tham số mặc định sau để điều chỉnh bằng Ray Tune:

Thông sốPhạm vi giá trịSự miêu tả
lr0tune.uniform(1e-5, 1e-1)Tỷ lệ học ban đầu
lrftune.uniform(0.01, 1.0)Yếu tố tỷ lệ học tập cuối cùng
momentumtune.uniform(0.6, 0.98)Đà
weight_decaytune.uniform(0.0, 0.001)Phân rã trọng lượng
warmup_epochstune.uniform(0.0, 5.0)Kỷ nguyên khởi động
boxtune.uniform(0.02, 0.2)Trọng lượng hộp giảm
clstune.uniform(0.2, 4.0)Lớp học giảm cân
hsv_htune.uniform(0.0, 0.1)Phạm vi tăng cường Huế
translatetune.uniform(0.0, 0.9)Phạm vi tăng cường dịch thuật

Các siêu thông số này có thể được tùy chỉnh để phù hợp với nhu cầu cụ thể của bạn. Để có danh sách đầy đủ và biết thêm chi tiết, hãy tham khảo hướng dẫn Điều chỉnh siêu tham số .

Làm thế nào tôi có thể tích hợp Weights & Biases với mô hình điều chỉnh YOLO11 của tôi?

Để tích hợp Weights & Biases (W&B) với bạn Ultralytics Quy trình điều chỉnh YOLO11:

  1. Cài đặt W&B:

    pip install wandb
    
  2. Sửa đổi tập lệnh điều chỉnh của bạn:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo11n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

Thiết lập này sẽ cho phép bạn theo dõi quá trình điều chỉnh, theo dõi cấu hình siêu tham số và trực quan hóa kết quả trong W &B.

Tại sao tôi nên sử dụng Ray Tune để tối ưu hóa siêu tham số với YOLO11?

Ray Tune cung cấp nhiều lợi thế để tối ưu hóa siêu tham số:

  • Chiến lược tìm kiếm nâng cao: Sử dụng các thuật toán như Bayesian Optimization và HyperOpt để tìm kiếm tham số hiệu quả.
  • Song song: Hỗ trợ thực hiện song song nhiều thử nghiệm, đẩy nhanh đáng kể quá trình điều chỉnh.
  • Dừng sớm: Sử dụng các chiến lược như ASHA để sớm chấm dứt các thử nghiệm hoạt động kém, tiết kiệm tài nguyên tính toán.

Ray Tune tích hợp liền mạch với Ultralytics YOLO11, cung cấp giao diện dễ sử dụng để điều chỉnh siêu tham số hiệu quả. Để bắt đầu, hãy xem hướng dẫn Điều chỉnh siêu tham số hiệu quả với Ray Tune và YOLO11 .

Làm thế nào tôi có thể xác định không gian tìm kiếm tùy chỉnh cho việc điều chỉnh siêu tham số YOLO11?

Để xác định không gian tìm kiếm tùy chỉnh cho việc điều chỉnh siêu tham số YOLO11 của bạn bằng Ray Tune:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

Điều này tùy chỉnh phạm vi của các siêu tham số như tốc độ học tập ban đầu và động lượng được khám phá trong quá trình điều chỉnh. Để biết cấu hình nâng cao, hãy tham khảo phần Ví dụ về Không gian Tìm kiếm Tùy chỉnh .

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

Ý kiến