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à một quá trình lặp đi lặp lại nhằm tối ưu hóa các chỉ số 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ể bao gồm từ tốc độ học tập đến chi tiết 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 ở mỗi lần lặp trong khi tiến tới 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ố 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 YOLOv8 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 YOLOv8n trên COCO8 cho 30 kỷ nguyên với trình tối ưu hóa AdamW và bỏ qua vẽ sơ đồ, điểm kiểm tra và xác thực khác vớ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('yolov8n.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 lại trong quá trình điều chỉnh. Mỗi hàng trong tệp đại diện cho một lần lặp và nó bao gồm các số liệu như điểm thể dục, độ chính xác, khả năng nhớ lạ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 lưu PyTorch Các mô hình 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à YOLOv8

Để 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.



Đã tạo 2023-11-12, Cập nhật 2024-03-03
Tác giả: glenn-jocher (7)

Ý kiến