Bỏ để qua phần 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.

Siêu tham số là gì?

Siêu tham số là các cài đặt 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à không đổi trong suốt thời gian đó. Dưới đâ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 đường chuyền về phía trước.
  • Số lượng kỷ nguyên epochs: Một kỷ nguyên là một đường chuyền tiến và lùi hoàn chỉnh của tất cả các ví dụ đào tạo.
  • Kiến trúc cụ thể: Chẳng hạn như số kênh, số lớp, loại chức năng kích hoạt, v.v.

Hình ảnh điều chỉnh siêu tham số

Để 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 di truyền và đột biến

Ultralytics YOLO sử dụng các thuật toán di truyền để tối ưu hóa các siêu tham số. Các thuật toán di truyền được lấy cảm hứng từ cơ chế chọn lọc tự nhiên và di truyền.

  • Đột biến: Trong bối cảnh 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 các thay đổi nhỏ, ngẫu nhiên cho các siêu tham số hiện có, tạo ra các ứng cử 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 nó hiệ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ị điều chỉnh siêu tham số

Trước khi bạn 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. Đây có thể là AP50, F1-score hoặc những thứ khác.
  2. Đặt ngân sách điều chỉnh: Xác định số lượng tài nguyên tính toán bạn sẵn sàng phân bổ. Điều chỉnh siêu tham số có thể chuyên sâu về mặt 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à siêu tham số mặc định được đặt bởi Ultralytics YOLO hoặc một cái gì đó dựa trên kiến thức miền của bạn hoặc các thử nghiệm trước đó.

Siêu tham số đột biến

Sử dụng _mutate phương pháp để tạo ra một tập hợp các siêu tham số mới dựa trên tập hợp hiện có.

Mô hình tàu hỏa

Đào tạo được thực hiện bằng cách sử dụng tập hợp các siêu tham số đột biến. Hiệu suất đào tạo sau đó được đánh giá.

Đánh giá mô hình

Sử dụng các chỉ số như AP50, F1-score hoặc chỉ số tùy chỉnh để đánh giá hiệu suất của mô hình.

Đăng nhập kết quả

Điều quan trọng là phải 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.

Lặp lại

Quá trình này được lặp lại cho đến khi đạt được số lần lặp đã đặt hoặc chỉ số hiệu suất đạt yêu cầu.

Ví dụ sử dụng

Dưới đây là cách sử dụng 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")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

Kết quả

Sau khi bạn đã hoàn thành 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ả điều chỉnh. Sau đây mô tả mỗi:

Cấu trúc tập tin

Đâ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 tập hợp các siêu tham số. Các tune/ Thư mục chứa kết quả điều chỉnh từ tất cả các khóa đà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

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 cài đặt được tối ưu hóa này.

  • Định dạng: YAML
  • Cách 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à một biểu đồ hiển thị thể dục (thường là một số liệu hiệu suất như AP50) so với số lần lặp. 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
  • Cách sử dụng: Trực quan hóa hiệu suất

Điều chỉnh siêu tham số Thể dục so 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ả mỗi 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ố và chỉ số hiệu suất khác nhau. 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
  • Cách sử dụng: Phân tích dữ liệu thăm dò

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

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: Các last.pt là trọng lượng từ kỷ nguyên đào tạo cuối cùng.
  • best.pt: Trọng lượng best.pt cho lần lặp lại đạ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 khóa đào tạo và phân tích mô hình trong tương lai của mình. Vui lòng 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à bạn có thể cải thiện nó như thế nào.

Kết thúc

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ờ cách tiếp cận dựa trên thuật toán di truyền tập trung vào đột biến. Làm theo các bước được nêu trong hướng dẫn này sẽ giúp 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ó thông tin chi tiết sâu hơn, bạn có thể khám phá Tuner mã nguồn lớp và tài liệu kèm theo. Nếu bạn có bất kỳ câu hỏi, yêu cầu tính năng nào hoặc cần hỗ trợ thêm, vui lòng liên hệ với chúng tôi theo số GitHub hoặc Bất hòa.

FAQ

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ỷ lệ học tập cho Ultralytics YOLO, bắt đầu bằng cách thiết lập tỷ lệ học tập ban đầu bằng cách sử dụng lr0 thông số. Các giá trị chung bao gồm từ 0.001 đến 0.01. Trong quá trình điều chỉnh siêu tham số, giá trị này sẽ bị biến đổi để tìm cài đặt 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. Chẳng hạn:

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 Ultralytics YOLO trang cấu hình.

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 là gì?

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 tối thiểu cục bộ: Bằng cách giới thiệu tính ngẫu nhiên, chúng giúp tránh mức tối thiểu cục bộ, đảm bảo tối ưu hóa toàn cầu tốt hơn.
  • Chỉ số hiệu suất: Chúng thích ứng dựa trên các chỉ số hiệu suất như AP50 và F1-score.

Để xem các thuật toán di truyền có thể tối ưu hóa các siêu tham số như thế nào, 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ý hiệu quả thời gian điều chỉnh, hãy xác định trước ngân sách điều chỉnh rõ ràng (liên kết phần nội bộ). Điều này giúp cân bằng các mục tiêu phân bổ và tối ưu hóa nguồn lực.

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ố trong 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ố chỉ số chính:

  • AP50: Độ chính xác trung bình ở ngưỡng IoU là 0,50.
  • F1-Score: Trung bình hài hòa của độ chính xác và khả năng nhớ lạ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 chỉ số 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 Ultralytics YOLO Hướng dẫn chỉ số hiệu suất để có cái nhìn tổng quan toàn diện.

Tôi có thể sử dụng khô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 một nền tảng không mã để dễ dàng tải lên các bộ dữ liệu, đào tạo mô hình và thực hiện điều chỉnh siêu tham số một cách hiệu quả. Nó cung cấp theo dõi thời gian thực và trực quan hóa tiến trình và kết quả điều chỉnh.

Khám phá thêm về cách sử dụng Ultralytics HUB để điều chỉnh siêu tham số trong Ultralytics Tài liệu Đào tạo đám mây HUB .

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

Ý kiến