Ray Tune ile Verimli Hiperparametre Ayarlama ve YOLO11
Hiperparametre ayarlama, optimum hiperparametre setini keşfederek en yüksek model performansına ulaşmada hayati önem taşır. Bu, farklı hiperparametrelerle denemeler yapmayı ve her denemenin performansını değerlendirmeyi içerir.
Ultralytics YOLO11 ve Ray Tune ile Ayarlamayı Hızlandırın
Ultralytics YOLO11 hiperparametre ayarı için Ray Tune'u içerir ve YOLO11 model hiperparametrelerinin optimizasyonunu kolaylaştırır. Ray Tune ile ayarlama sürecini hızlandırmak için gelişmiş arama stratejilerini, paralelliği ve erken durdurmayı kullanabilirsiniz.
Ray Tune
Ray Tune, verimlilik ve esneklik için tasarlanmış bir hiperparametre ayarlama kütüphanesidir. Çeşitli arama stratejilerini, paralelliği ve erken durdurma stratejilerini destekler ve Ultralytics YOLO11 dahil olmak üzere popüler makine öğrenimi çerçeveleriyle sorunsuz bir şekilde entegre olur.
ile Entegrasyon Weights & Biases
YOLO11 ile isteğe bağlı entegrasyona da izin verir. Weights & Biases ayarlama sürecini izlemek için.
Kurulum
Gerekli paketleri yüklemek için çalıştırın:
Kurulum
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"
# Optionally install W&B for logging
pip install wandb
Kullanım
Kullanım
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()
Yöntem Parametreleri
Bu tune()
YOLO11 adresindeki yöntem, Ray Tune ile hiperparametre ayarı için kullanımı kolay bir arayüz sağlar. Ayarlama sürecini özelleştirmenize olanak tanıyan çeşitli argümanları kabul eder. Aşağıda her parametrenin ayrıntılı bir açıklaması bulunmaktadır:
Parametre | Tip | Açıklama | Varsayılan Değer |
---|---|---|---|
data |
str |
Ayarlayıcıyı çalıştırmak için veri kümesi yapılandırma dosyası (YAML biçiminde). Bu dosya, eğitim ve doğrulama veri yollarının yanı sıra veri kümesine özgü diğer ayarları da belirtmelidir. | |
space |
dict, optional |
Ray Tune için hiperparametre arama alanını tanımlayan bir sözlük. Her anahtar bir hiperparametre adına karşılık gelir ve değer, ayarlama sırasında keşfedilecek değer aralığını belirtir. Sağlanmamışsa, YOLO11 çeşitli hiperparametrelerle varsayılan bir arama alanı kullanır. | |
grace_period |
int, optional |
Ray Tune'da ASHA zaman layıcısı için epok cinsinden ödemesiz dönem. Zamanlayıcı, bu epok sayısından önce herhangi bir denemeyi sonlandırmayacak ve modelin erken durdurma kararı vermeden önce minimum eğitim almasına izin verecektir. | 10 |
gpu_per_trial |
int, optional |
Ayarlama sırasında deneme başına tahsis edilecek GPU sayısı. Bu, özellikle çokluGPU ortamlarında GPU kullanımını yönetmeye yardımcı olur. Sağlanmazsa, ayarlayıcı mevcut tüm GPU'ları kullanacaktır. | Hiçbiri |
iterations |
int, optional |
Ayarlama sırasında çalıştırılacak maksimum deneme sayısı. Bu parametre, test edilen hiperparametre kombinasyonlarının toplam sayısının kontrol edilmesine yardımcı olarak ayarlama sürecinin süresiz olarak çalışmamasını sağlar. | 10 |
**train_args |
dict, optional |
'ye iletilecek ek argümanlar train() ayarlama sırasında yöntem. Bu argümanlar eğitim epoklarının sayısı gibi ayarları içerebilir, parti büyüklüğüve eğitime özel diğer yapılandırmalar. |
{} |
Bu parametreleri özelleştirerek, hiperparametre optimizasyon sürecini özel ihtiyaçlarınıza ve mevcut hesaplama kaynaklarınıza uyacak şekilde ince ayar yapabilirsiniz.
Varsayılan Arama Alanı Açıklama
Aşağıdaki tabloda YOLO11 adresinde Ray Tune ile hiperparametre ayarlama için varsayılan arama alanı parametreleri listelenmektedir. Her parametrenin şu şekilde tanımlanan belirli bir değer aralığı vardır tune.uniform()
.
Parametre | Menzil | Açıklama |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Optimizasyon sırasında adım boyutunu kontrol eden ilk öğrenme oranı. Daha yüksek değerler eğitimi hızlandırır ancak kararsızlığa neden olabilir. |
lrf |
tune.uniform(0.01, 1.0) |
Eğitimin sonunda öğrenme oranının ne kadar azalacağını belirleyen nihai öğrenme oranı faktörü. |
momentum |
tune.uniform(0.6, 0.98) |
Optimize edici için eğitimi hızlandırmaya ve yerel minimumların üstesinden gelmeye yardımcı olan momentum faktörü. |
weight_decay |
tune.uniform(0.0, 0.001) |
Büyük ağırlık değerlerini cezalandırarak aşırı uyumu önleyen düzenli hale getirme parametresi. |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Erken eğitimi stabilize etmek için kademeli olarak artan öğrenme oranına sahip epok sayısı. |
warmup_momentum |
tune.uniform(0.0, 0.95) |
Isınma süresi boyunca kademeli olarak artan ilk momentum değeri. |
box |
tune.uniform(0.02, 0.2) |
Sınırlayıcı kutu kaybı bileşeni için ağırlık, modeldeki yerelleştirme doğruluğunu dengeler. |
cls |
tune.uniform(0.2, 4.0) |
Sınıflandırma kaybı bileşeni için ağırlık, modeldeki sınıf tahmin doğruluğunu dengeler. |
hsv_h |
tune.uniform(0.0, 0.1) |
Modelin genelleştirilmesine yardımcı olmak için renk değişkenliği sunan renk tonu artırma aralığı. |
hsv_s |
tune.uniform(0.0, 0.9) |
Sağlamlığı artırmak için renk yoğunluğunu değiştiren doygunluk artırma aralığı. |
hsv_v |
tune.uniform(0.0, 0.9) |
Modelin çeşitli aydınlatma koşulları altında performans göstermesine yardımcı olan değer (parlaklık) artırma aralığı. |
degrees |
tune.uniform(0.0, 45.0) |
Döndürülmüş nesnelerin tanınmasını iyileştiren derece cinsinden döndürme artırma aralığı. |
translate |
tune.uniform(0.0, 0.9) |
Görüntüleri yatay ve dikey olarak kaydıran çeviri büyütme aralığı. |
scale |
tune.uniform(0.0, 0.9) |
Farklı mesafelerdeki nesneleri simüle eden ölçeklendirme büyütme aralığı. |
shear |
tune.uniform(0.0, 10.0) |
Perspektif kaymalarını simüle eden derece cinsinden kesme büyütme aralığı. |
perspective |
tune.uniform(0.0, 0.001) |
3D bakış açısı değişikliklerini simüle eden perspektif büyütme aralığı. |
flipud |
tune.uniform(0.0, 1.0) |
Dikey çevirme artırma olasılığı, veri seti çeşitliliğini artırır. |
fliplr |
tune.uniform(0.0, 1.0) |
Yatay çevirme artırma olasılığı, simetrik nesneler için kullanışlıdır. |
mosaic |
tune.uniform(0.0, 1.0) |
Dört görüntüyü tek bir eğitim örneğinde birleştiren mozaik büyütme olasılığı. |
mixup |
tune.uniform(0.0, 1.0) |
İki görüntüyü ve etiketlerini birbirine karıştıran karıştırma artırma olasılığı. |
cutmix |
tune.uniform(0.0, 1.0) |
Yerel özellikleri korurken görüntü bölgelerini birleştiren ve kısmen tıkalı nesnelerin algılanmasını iyileştiren Cutmix büyütme olasılığı. |
copy_paste |
tune.uniform(0.0, 1.0) |
Örnek çeşitliliğini artırmak için nesneleri görüntüler arasında aktaran kopyala-yapıştır artırma olasılığı. |
Özel Arama Alanı Örneği
Bu örnekte, Ray Tune ve YOLO11 ile hiperparametre ayarı için özel bir arama alanının nasıl kullanılacağını gösteriyoruz. Özel bir arama alanı sağlayarak, ayarlama sürecini ilgilenilen belirli hiperparametreler üzerine odaklayabilirsiniz.
Kullanım
from ray import tune
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,
)
Yukarıdaki kod parçasında, "yolo11n.pt" ön eğitimli ağırlıklarla bir YOLO modeli oluşturuyoruz. Ardından, modeli tune()
yöntemini kullanarak, veri kümesi yapılandırmasını "coco8.yaml" ile belirtiyoruz. İlk öğrenme oranı için özel bir arama alanı sağlıyoruz lr0
"lr0" anahtarına ve değerine sahip bir sözlük kullanarak tune.uniform(1e-5, 1e-1)
. Son olarak, epok sayısı gibi ek eğitim argümanlarını doğrudan ayarlama yöntemine şu şekilde aktarıyoruz epochs=50
.
Ray Tune ile Kesilen Bir Hiperparametre Ayarlama Oturumuna Devam Etme
Yarıda kesilen bir Ray Tune oturumunu şu şekilde devam ettirebilirsiniz resume=True
. İsteğe bağlı olarak dizini geçebilirsiniz name
Ray Tune tarafından runs/{task}
devam etmek için. Aksi takdirde, son kesilen oturuma devam eder. Şunları sağlamanıza gerek yoktur iterations
ve space
ancak eğitim argümanlarının geri kalanını da tekrar sağlamanız gerekir. data
ve epochs
.
Kullanma resume=True
ile model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo11n.pt")
# Resume previous run
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)
# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)
Işın Ayarı Sonuçlarının İşlenmesi
Ray Tune ile bir hiperparametre ayarlama deneyi yürüttükten sonra, elde edilen sonuçlar üzerinde çeşitli analizler yapmak isteyebilirsiniz. Bu kılavuz, bu sonuçları işlemek ve analiz etmek için yaygın iş akışlarını size gösterecektir.
Dizinden Tune Deneyi Sonuçlarını Yükleme
ile ayarlama deneyini çalıştırdıktan sonra tuner.fit()
'yi kullanarak sonuçları bir dizinden yükleyebilirsiniz. Bu, özellikle analizi ilk eğitim komut dosyasından çıktıktan sonra gerçekleştiriyorsanız kullanışlıdır.
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()
Temel Deney Seviyesi Analizi
Denemelerin nasıl yapıldığına dair genel bir bakış elde edin. Denemeler sırasında herhangi bir hata olup olmadığını hızlıca kontrol edebilirsiniz.
if result_grid.errors:
print("One or more trials failed!")
else:
print("No errors!")
Temel Deneme Seviyesi Analizi
Bireysel deneme hiperparametre konfigürasyonlarına ve son raporlanan metriklere erişin.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Bir Deneme için Raporlanan Metriklerin Tüm Geçmişini Çizme
Metriklerin zaman içinde nasıl geliştiğini görmek için her bir deneme için raporlanan metriklerin geçmişini çizebilirsiniz.
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()
Özet
Bu belgede, Ultralytics adresini kullanarak Ray Tune ile yürütülen deneylerin sonuçlarını analiz etmek için yaygın iş akışlarını ele aldık. Temel adımlar arasında deney sonuçlarının bir dizinden yüklenmesi, deney düzeyinde ve deneme düzeyinde temel analizlerin gerçekleştirilmesi ve metriklerin çizilmesi yer almaktadır.
Hiperparametre ayarlama deneylerinizden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Et dokümanları sayfasını inceleyerek daha fazlasını keşfedin.
SSS
Ray Tune kullanarak YOLO11 modelimin hiperparametrelerini nasıl ayarlayabilirim?
Ray Tune kullanarak Ultralytics YOLO11 modelinizin hiperparametrelerini ayarlamak için aşağıdaki adımları izleyin:
-
Gerekli paketleri yükleyin:
pip install -U ultralytics "ray[tune]" pip install wandb # optional for logging
-
YOLO11 modelinizi yükleyin ve ayarlamaya başlayın:
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)
Bu, modelinizin hiperparametrelerini verimli bir şekilde optimize etmek için Ray Tune'un gelişmiş arama stratejilerini ve paralelliğini kullanır. Daha fazla bilgi için Ray Tune belgelerine göz atın.
Ray Tune ile YOLO11 ayarlama için varsayılan hiperparametreler nelerdir?
Ultralytics YOLO11 Ray Tune ile ayarlama için aşağıdaki varsayılan hiperparametreleri kullanır:
Parametre | Değer Aralığı | Açıklama |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
İlk öğrenme oranı |
lrf |
tune.uniform(0.01, 1.0) |
Nihai öğrenme oranı faktörü |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Ağırlık azalması |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Isınma dönemleri |
box |
tune.uniform(0.02, 0.2) |
Kutu kilo kaybı |
cls |
tune.uniform(0.2, 4.0) |
Sınıf kilo kaybı |
hsv_h |
tune.uniform(0.0, 0.1) |
Ton büyütme aralığı |
translate |
tune.uniform(0.0, 0.9) |
Çeviri büyütme aralığı |
Bu hiperparametreler özel ihtiyaçlarınıza uyacak şekilde özelleştirilebilir. Tam bir liste ve daha fazla ayrıntı için Hiperparametre Ayarlama kılavuzuna bakın.
Weights & Biases ile YOLO11 model ayarlamamı nasıl entegre edebilirim?
Weights & Biases (W&B) ile Ultralytics YOLO11 ayarlama sürecinizi entegre etmek için:
-
W&B'yi kurun:
pip install wandb
-
Ayarlama komut dosyanızı değiştirin:
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)
Bu kurulum, ayarlama sürecini izlemenize, hiperparametre yapılandırmalarını takip etmenize ve sonuçları W&B'de görselleştirmenize olanak tanır.
YOLO11 ile hiperparametre optimizasyonu için neden Ray Tune kullanmalıyım?
Ray Tune, hiperparametre optimizasyonu için çok sayıda avantaj sunar:
- Gelişmiş Arama Stratejileri: Verimli parametre araması için Bayesian Optimizasyonu ve HyperOpt gibi algoritmaları kullanır.
- Paralellik: Birden fazla denemenin paralel yürütülmesini destekleyerek ayarlama sürecini önemli ölçüde hızlandırır.
- Erken Durdurma: Düşük performans gösteren denemeleri erken sonlandırmak için ASHA gibi stratejiler kullanır ve hesaplama kaynaklarından tasarruf sağlar.
Ray Tune, Ultralytics YOLO11 ile sorunsuz bir şekilde entegre olur ve hiperparametreleri etkili bir şekilde ayarlamak için kullanımı kolay bir arayüz sağlar. Başlamak için Hiperparametre Ayar lama kılavuzuna göz atın.
YOLO11 hiperparametre ayarı için özel bir arama alanını nasıl tanımlayabilirim?
Ray Tune ile YOLO11 hiperparametre ayarınız için özel bir arama alanı tanımlamak için:
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)
Bu, ayarlama işlemi sırasında keşfedilecek ilk öğrenme oranı ve momentum gibi hiperparametrelerin aralığını özelleştirir. Gelişmiş yapılandırmalar için Özel Arama Alanı Örneği bölümüne bakın.