Ultralytics YOLO27:
Get Started

Ray Tune ve YOLO26 ile Verimli Hiperparametre Ayarı#

Hiperparametre ayarı, en uygun hiperparametre kümesini keşfederek model performansını en üst düzeye çıkarmada kritik öneme sahiptir. Bu süreç, farklı hiperparametrelerle denemeler yürütmeyi ve her denemenin performansını değerlendirmeyi içerir.

Ultralytics YOLO26 ve Ray Tune ile Ayarı Hızlandır#

Ultralytics YOLO26, hiperparametre ayarı için Ray Tune'u kullanarak YOLO26 modelinin hiperparametrelerini optimize etme sürecini kolaylaştırır. Ray Tune ile ayar sürecini hızlandırmak için gelişmiş arama stratejilerinden, paralellikten ve erken durdurmadan yararlanabilirsin.

Ray Tune#

Ray Tune hyperparameter optimization workflow

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 YOLO26 dâhil olmak üzere popüler makine öğrenimi çerçeveleriyle sorunsuz bir şekilde bütünleşir.

Weights & Biases ile Entegrasyon#

YOLO26, ayar sürecini izlemek için isteğe bağlı olarak Weights & Biases entegrasyonuna da olanak tanır.

Kurulum#

Gerekli paketleri yüklemek için şunu çalıştır:

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

# Optionally install and enable W&B for per-trial logging
pip install wandb
yolo settings wandb=True

Kullanım#

Kullanım
from ultralytics import YOLO

# Bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")

# COCO8 veri kümesinde YOLO26n eğitimi için hiperparametreleri ayarlamaya başla
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() Yönteminin Parametreleri#

YOLO26'daki tune() yöntemi, Ray Tune ile hiperparametre ayarı için kullanımı kolay bir arayüz sağlar. Ayar sürecini özelleştirmene olanak tanıyan çeşitli bağımsız değişkenleri kabul eder. Aşağıda her parametrenin ayrıntılı açıklaması yer alıyor:

ParametreTürAçıklamaVarsayılan Değer
datastrAyarlayıcının çalıştırılacağı veri kümesi YAML dosyası; doğrulama verisi yollarını ve veri kümesine özgü diğer ayarları belirtir. Sınıflandırma içinse bir veri kümesi dizini veya yerleşik bir veri kümesi adı (ör. imagenet10) kullanılır.
spacedict, optionalRay 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 araştırılacak değer aralığını belirtir. Sağlanmadığında YOLO26, çeşitli hiperparametreleri içeren varsayılan bir arama alanı kullanır.
grace_periodint, optionalRay Tune'daki ASHA zamanlayıcısı için epoch cinsinden ek süre. Zamanlayıcı, bu epoch sayısına ulaşılmadan hiçbir denemeyi sonlandırmaz; böylece erken durdurma kararı verilmeden önce modelin en azından bir süre eğitilmesi sağlanır.10
gpu_per_trialint, optionalRay'in her denemeye ayırdığı GPU sayısı. GPU ile eğitim yapmak için bu değeri açıkça ayarla; belirtilmediğinde denemelere GPU kaynağı atanmaz.None
iterationsint, optionalAyar sırasında yürütülecek en fazla deneme sayısı. Bu parametre, test edilen toplam hiperparametre birleşimi sayısını kontrol etmeye yardımcı olur ve ayar sürecinin süresiz çalışmasını önler.300
search_algstr or Searcher, optionalKullanılacak Ray Tune arama stratejisi. Bir Ray arayıcı nesnesini doğrudan iletebilir veya optuna, hyperopt, bayesopt, bohb, hebo, nevergrad, zoopt, ax ya da random gibi desteklenen bir dize kullanabilirsin. Dize tabanlı arayıcılar, varsayılan görev metriğini ve mode="max" değerini otomatik olarak kullanır. Varsayılan seçenek, paralelliği dikkate alan öneriler sunan Optuna çok değişkenli TPE'dir."optuna"
**train_argsdict, optionalAyar sırasında train() yöntemine iletilecek ek bağımsız değişkenler. Bu bağımsız değişkenler, eğitim epoch sayısı, yığın boyutu ve eğitime özgü diğer yapılandırmalar gibi ayarları içerebilir.{}

Bu parametreleri özelleştirerek hiperparametre optimizasyonu sürecini kendi ihtiyaçlarına ve mevcut hesaplama kaynaklarına göre ince ayarlayabilirsin.

Varsayılan Arama Alanı Açıklaması#

Aşağıdaki tabloda, Ray Tune ile YOLO26'da hiperparametre ayarı için varsayılan arama uzayı parametreleri listelenmektedir. Her parametrenin belirli bir değer aralığı tune.uniform() tarafından tanımlanır; close_mosaic ise tune.randint() kullanır.

ParametreAralıkAçıklama
lr0tune.uniform(1e-5, 1e-2)Optimizasyon sırasında adım boyutunu kontrol eden başlangıç öğrenme oranı. Daha yüksek değerler eğitimi hızlandırır ancak kararsızlığa yol açabilir.
lrftune.uniform(0.01, 1.0)Eğitimin sonunda öğrenme oranının ne kadar azalacağını belirleyen son öğrenme oranı katsayısı.
momentumtune.uniform(0.7, 0.98)Eğitimi hızlandırmaya ve yerel minimumları aşmaya yardımcı olan iyileştirici momentum katsayısı.
weight_decaytune.uniform(0.0, 0.001)Yüksek ağırlık değerlerini cezalandırarak aşırı öğrenmeyi önleyen düzenlileştirme parametresi.
warmup_epochstune.uniform(0.0, 5.0)Eğitimin başlangıcını kararlı hâle getirmek için öğrenme oranının kademeli olarak artırıldığı epoch sayısı.
warmup_momentumtune.uniform(0.0, 0.95)Isınma süresince kademeli olarak artan başlangıç momentum değeri.
boxtune.uniform(1.0, 20.0)Modelin konum belirleme doğruluğunu dengeleyen sınırlayıcı kutu kaybı bileşeninin ağırlığı.
clstune.uniform(0.1, 4.0)Modelin sınıf tahmini doğruluğunu dengeleyen sınıflandırma kaybı bileşeninin ağırlığı.
cls_pwtune.uniform(0.0, 1.0)Devre dışı (0.0) ile tam ters frekans ağırlıklandırması (1.0) arasındaki sınıf ağırlıklandırma gücü.
dfltune.uniform(0.4, 12.0)Sınırlayıcı kutuların hassas konumlandırılmasını öne çıkaran kutu mesafesi regresyon bileşeninin ağırlığı.
hsv_htune.uniform(0.0, 0.1)Modelin genelleme yeteneğini geliştirmek için renk çeşitliliği sağlayan ton artırımı aralığı.
hsv_stune.uniform(0.0, 0.9)Dayanıklılığı artırmak için renk yoğunluğunu değiştiren doygunluk artırımı aralığı.
hsv_vtune.uniform(0.0, 0.9)Modelin çeşitli aydınlatma koşullarında performans göstermesine yardımcı olan değer (parlaklık) artırımı aralığı.
degreestune.uniform(0.0, 45.0)Döndürülmüş nesnelerin tanınmasını iyileştiren, derece cinsinden döndürme artırımı aralığı.
translatetune.uniform(0.0, 0.9)Görüntüleri yatay ve dikey yönde kaydıran öteleme artırımı aralığı.
scaletune.uniform(0.0, 0.95)Farklı uzaklıklardaki nesneleri taklit eden ölçeklendirme artırımı aralığı.
sheartune.uniform(0.0, 10.0)Perspektif kaymalarını taklit eden, derece cinsinden kesme artırımı aralığı.
perspectivetune.uniform(0.0, 0.001)3B bakış açısı değişikliklerini taklit eden perspektif artırımı aralığı.
flipudtune.uniform(0.0, 1.0)Veri kümesi çeşitliliğini artıran dikey çevirme artırımı olasılığı.
fliplrtune.uniform(0.0, 1.0)Simetrik nesneler için yararlı olan yatay çevirme artırımı olasılığı.
bgrtune.uniform(0.0, 1.0)Renk değişmezliğine yardımcı olan BGR kanallarını değiştirme artırımı olasılığı.
mosaictune.uniform(0.0, 1.0)Dört görüntüyü tek bir eğitim örneğinde birleştiren mozaik artırımı olasılığı.
mixuptune.uniform(0.0, 1.0)İki görüntüyü ve bunların etiketlerini bir arada harmanlayan Mixup artırımı olasılığı.
cutmixtune.uniform(0.0, 1.0)Yerel özellikleri korurken görüntü bölgelerini birleştiren Cutmix artırımı olasılığı.
copy_pastetune.uniform(0.0, 1.0)flip modunda, kopyalanabilecek nesnelerin görüntüye eklenen oranı; mixup modunda ise işlemin uygulanma olasılığı da.
close_mosaictune.randint(0, 11)Eğitim tamamlanmadan önce kararlılığı sağlamak için son N epoch boyunca mozaiği devre dışı bırakır.

Özel Arama Alanı Örneği#

Bu örnekte Ray Tune ve YOLO26 ile hiperparametre ayarı için özel bir arama alanının nasıl kullanılacağını gösteriyoruz. Özel bir arama alanı sağlayarak ayar sürecini ilgilendiğin belirli hiperparametrelere odaklayabilirsin.

Kullanım
from ray import tune

from ultralytics import YOLO

# Bir YOLO modeli tanımla
model = YOLO("yolo26n.pt")

# Modelde Ray Tune'u çalıştır
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-2)},
    epochs=50,
    use_ray=True,
)

Yukarıdaki kod parçacığında, "yolo26n.pt" önceden eğitilmiş ağırlıklarını kullanan bir YOLO modeli oluşturuyoruz. Ardından veri kümesi yapılandırmasını "coco8.yaml" olarak belirterek tune() yöntemini çağırıyoruz. Sözlükte anahtar olarak "lr0", değer olarak tune.uniform(1e-5, 1e-2) kullanıp lr0 başlangıç öğrenme oranı için özel bir arama alanı sağlıyoruz. Son olarak, epoch sayısı gibi ek eğitim bağımsız değişkenlerini epochs=50 olarak doğrudan ayarlama yöntemine iletiyoruz.

Arama Algoritması Örneği#

Ray Tune arama stratejisini ada göre seçebilirsin. Dize tabanlı arama algoritmaları için Ultralytics, geçerli görevin varsayılan optimizasyon metriğini ve mode="max" değerini otomatik olarak kullanır. search_alg sağlanmazsa Ultralytics, paralelliği dikkate alan önerilerle Optuna çok değişkenli TPE'yi kullanır.

`model.tune()` ile `search_alg` dizesini kullanma
from ultralytics import YOLO

# Bir YOLO modeli tanımla
model = YOLO("yolo26n.pt")

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg="optuna",
    use_ray=True,
)

Arayıcının örnekleyicisini özelleştirmen veya metriğini ve optimizasyon modunu geçersiz kılman gerekiyorsa dize yerine örneklenmiş bir Ray Tune arayıcı nesnesi ilet.

`model.tune()` ile `OptunaSearch` nesnesini kullanma
from ray.tune.search.optuna import OptunaSearch

from ultralytics import YOLO

# Bir YOLO modeli tanımla
model = YOLO("yolo26n.pt")

# Bir arayıcı tanımla
searcher = OptunaSearch(
    metric="metrics/mAP50-95(B)",
    mode="max",
)

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg=searcher,
    use_ray=True,
)

Ray Tune ile Kesintiye Uğrayan Hiperparametre Ayarı Oturumunu Sürdürme#

resume=True ileterek kesintiye uğramış bir Ray Tune oturumunu sürdürebilirsin. Oturumu sürdürmek için Ray Tune'un runs/{task} altında kullandığı name dizinini isteğe bağlı olarak iletebilirsin. Aksi takdirde, en son kesintiye uğramış oturum sürdürülür. iterations ve space değerlerini yeniden sağlaman gerekmez; ancak data ve epochs dâhil olmak üzere diğer eğitim bağımsız değişkenlerini yeniden sağlaman gerekir.

`model.tune()` ile `resume=True` kullanımı
from ultralytics import YOLO

# Bir YOLO modeli tanımla
model = YOLO("yolo26n.pt")

# Önceki çalıştırmayı sürdür
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, resume=True)

# 'tune_exp_2' adlı Ray Tune çalışmasını sürdür
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)

Ray Tune Sonuçlarını İşleme#

Ray Tune ile bir hiperparametre ayarı deneyi yürüttükten sonra elde edilen sonuçlar üzerinde çeşitli analizler yapmak isteyebilirsin. Bu kılavuz, bu sonuçları işleme ve analiz etmeye yönelik yaygın iş akışlarında sana yol gösterecek.

Tune Deneyi Sonuçlarını Bir Dizinden Yükleme#

model.tune(use_ray=True), bir Ray ResultGrid döndürür ve deneyi runs/{task}/tune altında ya da ilettiğin name konumunda kaydeder. Özgün betik kapandıktan sonra bu sonuçları yüklemek için oturumu sürdür; böylece kaydedilen denemeler geri yüklenir ve aynı ResultGrid döndürülür:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
result_grid = model.tune(data="coco8.yaml", epochs=50, use_ray=True, resume=True)

Temel Deney Düzeyinde Analiz#

Denemelerin nasıl performans gösterdiğine genel bir bakış edin. Denemeler sırasında hata oluşup oluşmadığını hızlıca kontrol edebilirsin.

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

Temel Deneme Düzeyinde Analiz#

Denemelere ait hiperparametre yapılandırmalarına ve son bildirilen metriklere eriş.

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

Bir Denemenin Bildirilen Metriklerinin Tüm Geçmişini Çizme#

Metriklerin zaman içinde nasıl değiştiğini görmek için her denemede bildirilen metriklerin geçmişini çizebilirsin.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["metrics/mAP50-95(B)"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("mAP50-95")
plt.legend()
plt.show()

Özet#

Bu kılavuzda, Ultralytics kullanılarak Ray Tune ile yürütülen deneylerin sonuçlarını analiz etmeye yönelik yaygın iş akışlarını ele aldık. Temel adımlar; deney sonuçlarını bir dizinden yüklemeyi, deney ve deneme düzeyinde temel analiz yapmayı ve metrikleri çizmeyi içerir.

Hiperparametre ayarı deneylerinden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Etme dokümantasyon sayfasına göz at.

Sık Sorulan Sorular#

  • Ultralytics YOLO26 modelinin hiperparametrelerini Ray Tune kullanarak ayarlamak için şu adımları izle:

    1. Gerekli paketleri yükle:

      pip install -U ultralytics "ray[tune]" optuna
      pip install wandb # optional for logging
      yolo settings wandb=True
    2. YOLO26 modelini yükle ve ayarlamayı başlat:

      from ultralytics import YOLO
      
      # YOLO26 modelini yükle
      model = YOLO("yolo26n.pt")
      
      # COCO8 veri kümesiyle ayarlamayı başlat
      result_grid = model.tune(data="coco8.yaml", use_ray=True)

    Bu yöntem, modelinin hiperparametrelerini verimli bir şekilde optimize etmek için Ray Tune'un gelişmiş arama stratejilerinden ve paralellikten yararlanır. Daha fazla bilgi için Ray Tune dokümantasyonuna göz at.

  • Ultralytics YOLO26, Ray Tune ile ayarlama için aşağıdaki varsayılan hiperparametreleri kullanır:

    ParametreDeğer AralığıAçıklama
    lr0tune.uniform(1e-5, 1e-2)Başlangıç öğrenme oranı
    lrftune.uniform(0.01, 1.0)Son öğrenme oranı katsayısı
    momentumtune.uniform(0.7, 0.98)Momentum
    weight_decaytune.uniform(0.0, 0.001)Ağırlık azalması
    warmup_epochstune.uniform(0.0, 5.0)Isınma epoch'ları
    boxtune.uniform(1.0, 20.0)Kutu kaybı ağırlığı
    clstune.uniform(0.1, 4.0)Sınıf kaybı ağırlığı
    cls_pwtune.uniform(0.0, 1.0)Sınıf ağırlıklandırma gücü
    dfltune.uniform(0.4, 12.0)Kutu mesafesi kaybı ağırlığı
    hsv_htune.uniform(0.0, 0.1)Ton artırımı aralığı
    translatetune.uniform(0.0, 0.9)Öteleme artırımı aralığı

    Bu hiperparametreleri kendi ihtiyaçlarına göre özelleştirebilirsin. Tam liste ve daha fazla ayrıntı için Hiperparametre Ayarı kılavuzuna bak.

  • Weights & Biases'i (W&B) Ultralytics YOLO26 ayar sürecine entegre etmek için:

    1. W&B'yi yükle:

      pip install wandb
      wandb login
      yolo settings wandb=True
    2. Ayarlayıcıyı çalıştır:

      from ultralytics import YOLO
      
      # YOLO modelini yükle
      model = YOLO("yolo26n.pt")
      
      # Her Ray denemesi bu projede kendi W&B çalışmasını oluşturur
      result_grid = model.tune(data="coco8.yaml", project="YOLO-Tuning", use_ray=True)

    Bu kurulum, ince ayar sürecini izlemeni, hiperparametre yapılandırmalarını takip etmeni ve sonuçları W&B'de görselleştirmeni sağlar.

  • Ray Tune, hiperparametre optimizasyonu için pek çok avantaj sunar:

    • Gelişmiş Arama Stratejileri: Verimli parametre araması için Bayes Optimizasyonu ve HyperOpt gibi algoritmalardan yararlanır.
    • Paralellik: Birden fazla denemenin paralel yürütülmesini destekleyerek ince ayar sürecini önemli ölçüde hızlandırır.
    • Erken Durdurma: Başarısız denemeleri erken sonlandırmak ve hesaplama kaynaklarından tasarruf etmek için ASHA gibi stratejiler kullanır.

    Ray Tune, hiperparametreleri etkili bir şekilde ayarlamak için kullanımı kolay bir arayüz sunarak Ultralytics YOLO26 ile sorunsuz biçimde bütünleşir. Başlamak için Hiperparametre Ayarlama kılavuzuna göz at.

  • Ray Tune ile YOLO26 hiperparametre ayarlaması için özel bir arama uzayı tanımlamak üzere:

    from ray import tune
    
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    search_space = {"lr0": tune.uniform(1e-5, 1e-2), "momentum": tune.uniform(0.7, 0.98)}
    result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

    Bu, ayarlama sürecinde araştırılacak başlangıç öğrenme oranı ve momentum gibi hiperparametrelerin aralığını özelleştirir. Gelişmiş yapılandırmalar için Özel Arama Uzayı Örneği bölümüne bak.

Yorumlar