Ultralytics YOLO27:

Ray Tune ve YOLO26 ile Verimli Hiperparametre Ayarlama#

Hiperparametre ayarlama, en uygun hiperparametre kümesini keşfederek model performansının en üst düzeye çıkarılmasında kritik öneme sahiptir. Bu işlem, farklı hiperparametrelerle denemeler çalıştırmayı ve her denemenin performansını değerlendirmeyi içerir.

Ultralytics YOLO26 ve Ray Tune ile Ayarlamayı Hızlandırma#

Ultralytics YOLO26, hiperparametre ayarlama için Ray Tune'u kullanarak YOLO26 model hiperparametrelerinin optimizasyonunu kolaylaştırır. Ray Tune ile gelişmiş arama stratejilerinden, paralellikten ve erken durdurmadan yararlanarak ayarlama sürecini hızlandırabilirsin.

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; ayrıca Ultralytics YOLO26 dahil popüler makine öğrenimi çerçeveleriyle sorunsuz şekilde entegre olur.

Weights & Biases ile Entegrasyon#

YOLO26, ayarlama 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

# Load a YOLO26n model
model = YOLO("yolo26n.pt")

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

tune() Yöntem Parametreleri#

YOLO26 içindeki tune() yöntemi, Ray Tune ile hiperparametre ayarlama için kullanımı kolay bir arayüz sunar. Ayarlama sürecini özelleştirmeni sağlayan çeşitli bağımsız değişkenleri kabul eder. Aşağıda her parametrenin ayrıntılı açıklaması verilmiştir:

ParametreTürAçıklamaVarsayılan Değer
datastrEğitim ve doğrulama verileri yollarını ve veri kümesine özgü diğer ayarları belirten, tuner'ın üzerinde çalışacağı veri kümesi YAML dosyasıdır. Sınıflandırma için bunun yerine 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üktür. Her anahtar bir hiperparametre adına karşılık gelir ve değer, ayarlama sırasında incelenecek değer aralığını belirtir. Sağlanmazsa YOLO26, çeşitli hiperparametreleri içeren varsayılan bir arama alanı kullanır.
grace_periodint, optionalRay Tune içindeki ASHA zamanlayıcısı için epoch cinsinden bekleme süresidir. Zamanlayıcı, bu epoch sayısına ulaşılmadan önce hiçbir denemeyi sonlandırmaz; böylece erken durdurma kararı verilmeden önce modelin en azından belirli bir süre eğitilmesine olanak tanır.10
gpu_per_trialint, optionalRay'in her denemeye ayırdığı GPU sayısıdır. GPU eğitimi kullanmak için bunu açıkça ayarla; belirtilmezse denemelere GPU kaynağı tahsis edilmez.None
iterationsint, optionalAyarlama sırasında çalıştırılacak en fazla deneme sayısıdır. Bu parametre, test edilen toplam hiperparametre kombinasyonu sayısını kontrol etmeye yardımcı olarak ayarlama sürecinin süresiz çalışmasını önler.300
search_algstr or Searcher, optionalKullanılacak Ray Tune arama stratejisidir. 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 önerilerle Optuna çok değişkenli TPE kullanır."optuna"
**train_argsdict, optionalAyarlama sırasında train() yöntemine iletilecek ek bağımsız değişkenlerdir. Bu bağımsız değişkenler eğitim epoch sayısı, batch size ve eğitime özgü diğer yapılandırmalar gibi ayarları içerebilir.{}

Bu parametreleri özelleştirerek hiperparametre optimizasyonu sürecini özel ihtiyaçlarına ve mevcut hesaplama kaynaklarına uyacak şekilde ince ayarlayabilirsin.

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

Aşağıdaki tablo, Ray Tune ile YOLO26'da hiperparametre ayarlama için varsayılan arama alanı parametrelerini listeler. Her parametrenin tune.uniform() tarafından tanımlanan belirli bir değer aralığı vardır.

ParametreAralıkAçıklama
lr0tune.uniform(1e-5, 1e-2)Optimizasyon sırasında adım boyutunu kontrol eden başlangıç öğrenme oranıdır. Daha yüksek değerler eğitimi hızlandırır ancak kararsızlığa neden olabilir.
lrftune.uniform(0.01, 1.0)Eğitimin sonunda öğrenme oranının ne kadar azalacağını belirleyen son öğrenme oranı çarpanıdır.
momentumtune.uniform(0.7, 0.98)Eğitimi hızlandırmaya ve yerel minimumların üstesinden gelmeye yardımcı olan optimizer momentum çarpanıdır.
weight_decaytune.uniform(0.0, 0.001)Büyük ağırlık değerlerini cezalandırarak aşırı öğrenmeyi önleyen düzenlileştirme parametresidir.
warmup_epochstune.uniform(0.0, 5.0)Erken eğitimi kararlı hâle getirmek için öğrenme oranının kademeli olarak artırıldığı epoch sayısıdır.
warmup_momentumtune.uniform(0.0, 0.95)Isınma süresi boyunca kademeli olarak artan başlangıç momentum değeridir.
boxtune.uniform(1.0, 20.0)Modeldeki konumlandırma doğruluğunu dengeleyen, bounding box kaybı bileşeninin ağırlığıdır.
clstune.uniform(0.1, 4.0)Modeldeki sınıf tahmini doğruluğunu dengeleyen, sınıflandırma kaybı bileşeninin ağırlığıdır.
cls_pwtune.uniform(0.0, 1.0)Devre dışı (0.0) durumdan tam ters frekans ağırlıklandırmaya (1.0) kadar sınıf ağırlıklandırma gücüdür.
dfltune.uniform(0.4, 12.0)Kesin bounding box konumlandırmasını öne çıkaran, kutu mesafesi regresyon bileşeninin ağırlığıdır.
hsv_htune.uniform(0.0, 0.1)Modelin genelleme yapmasına yardımcı olmak için renk değişkenliği sağlayan ton artırma aralığıdır.
hsv_stune.uniform(0.0, 0.9)Sağlamlığı artırmak için renk yoğunluğunu değiştiren doygunluk artırma aralığıdır.
hsv_vtune.uniform(0.0, 0.9)Modelin çeşitli aydınlatma koşullarında çalışmasına yardımcı olan değer (parlaklık) artırma aralığıdır.
degreestune.uniform(0.0, 45.0)Döndürülmüş nesnelerin tanınmasını iyileştiren, derece cinsinden döndürme artırma aralığıdır.
translatetune.uniform(0.0, 0.9)Görüntüleri yatay ve dikey olarak kaydıran öteleme artırma aralığıdır.
scaletune.uniform(0.0, 0.95)Farklı mesafelerdeki nesneleri simüle eden ölçekleme artırma aralığıdır.
sheartune.uniform(0.0, 10.0)Perspektif kaymalarını simüle eden, derece cinsinden kesme artırma aralığıdır.
perspectivetune.uniform(0.0, 0.001)3B bakış açısı değişikliklerini simüle eden perspektif artırma aralığıdır.
flipudtune.uniform(0.0, 1.0)Veri kümesi çeşitliliğini artıran dikey çevirme artırma olasılığıdır.
fliplrtune.uniform(0.0, 1.0)Simetrik nesneler için kullanışlı olan yatay çevirme artırma olasılığıdır.
bgrtune.uniform(0.0, 1.0)Renk değişmezliğine yardımcı olan BGR kanal değiştirme artırma olasılığıdır.
mosaictune.uniform(0.0, 1.0)Dört görüntüyü tek bir eğitim örneğinde birleştiren mozaik artırma olasılığıdır.
mixuptune.uniform(0.0, 1.0)İki görüntüyü ve bunların etiketlerini birlikte harmanlayan MixUp artırma olasılığıdır.
cutmixtune.uniform(0.0, 1.0)Yerel özellikleri korurken görüntü bölgelerini birleştiren CutMix artırma olasılığıdır.
copy_pastetune.uniform(0.0, 1.0)flip modunda görüntüye kopyalanan uygun nesnelerin oranını, mixup modunda ise bunu çalıştırma olasılığını belirtir.
close_mosaictune.randint(0, 11)Eğitim tamamlanmadan önce eğitimi kararlı hâle getirmek için son N epoch'ta mozaiği devre dışı bırakır.

Özel Arama Uzayı Örneği#

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

Kullanım
from ray import tune

from ultralytics import YOLO

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

# Run Ray Tune on the model
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ıyla bir YOLO modeli oluşturuyoruz. Ardından veri kümesi yapılandırmasını "coco8.yaml" olarak belirterek tune() yöntemini çağırıyoruz. "lr0" anahtarını ve tune.uniform(1e-5, 1e-2) değerini içeren bir sözlük kullanarak başlangıç öğrenme oranı lr0 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 tune yöntemine iletiyoruz.

Arama Algoritması Örneği#

Ray Tune arama stratejisini adına göre seçebilirsin. Dize tabanlı arama algoritmaları için Ultralytics, mevcut 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 kullanır.

`model.tune()` ile dize `search_alg` kullanımı
from ultralytics import YOLO

# Define a YOLO model
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

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

# Define a searcher
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ğramış Bir Hiperparametre Ayarlama Oturumunu Sürdürme#

Kesintiye uğramış bir Ray Tune oturumunu resume=True ileterek sürdürebilirsin. Sürdürmek için Ray Tune tarafından runs/{task} altında kullanılan name dizinini isteğe bağlı olarak iletebilirsin. Aksi takdirde son kesintiye uğrayan oturum sürdürülür. iterations ve space değerlerini yeniden sağlaman gerekmez; ancak data ve epochs dahil olmak üzere diğer eğitim bağımsız değişkenlerini yeniden sağlaman gerekir.

`resume=True` ile `model.tune()` kullanma
from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo26n.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)

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

Ray Tune ile bir hiperparametre ayarlama deneyi çalıştırdıktan sonra elde edilen sonuçlar üzerinde çeşitli analizler yapmak isteyebilirsin. Bu kılavuz, bu sonuçları işlemek ve analiz etmek için yaygın iş akışlarında sana yol gösterecektir.

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

model.tune(use_ray=True), bir Ray ResultGrid nesnesi döndürür ve deneyi runs/{task}/tune altında ya da geçirdiğin name altında kaydeder. O sonuçları orijinal betik sonlandıktan sonra yüklemek için, oturumu devam ettir; bu işlem kaydedilen denemeleri geri yükler ve aynı ResultGrid nesnesini döndürü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ış elde et. 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#

Tek tek denemelerin hiperparametre yapılandırmalarına ve son raporlanan metriklerine eriş.

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

Bir Deneme İçin Raporlanan Metriklerin Tüm Geçmişini Çizme#

Metriklerin zaman içinde nasıl değiştiğini görmek için her denemenin raporlanan metrik 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 çalıştırılan 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ı bir dizinden yüklemek, temel deney ve deneme düzeyinde analiz yapmak ve metrikleri çizmek yer alır.

Hiperparametre ayarlama deneylerinden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Etme dokümantasyon sayfasını inceleyerek daha fazlasını keşfet.

SSS#

  • 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
      
      # Load a YOLO26 model
      model = YOLO("yolo26n.pt")
      
      # Start tuning with the COCO8 dataset
      result_grid = model.tune(data="coco8.yaml", use_ray=True)

    Bu işlem, modelinin hiperparametrelerini verimli şekilde optimize etmek için Ray Tune'un gelişmiş arama stratejilerinden ve paralelliğinden 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ı çarpanı
    momentumtune.uniform(0.7, 0.98)Momentum
    weight_decaytune.uniform(0.0, 0.001)Ağırlık çürümesi
    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ırma aralığı
    translatetune.uniform(0.0, 0.9)Öteleme artırma aralığı

    Bu hiperparametreler özel ihtiyaçlarına uyacak şekilde özelleştirilebilir. Eksiksiz liste ve daha fazla ayrıntı için Hiperparametre Ayarlama kılavuzuna başvur.

  • Weights & Biases (W&B) ile Ultralytics YOLO26 ayarlama sürecini entegre etmek için:

    1. W&B'yi yükle:

      pip install wandb
      wandb login
      yolo settings wandb=True
    2. Tuner'ı çalıştır:

      from ultralytics import YOLO
      
      # Load YOLO model
      model = YOLO("yolo26n.pt")
      
      # Each Ray trial creates its own W&B run in this project
      result_grid = model.tune(data="coco8.yaml", project="YOLO-Tuning", use_ray=True)

    Bu kurulum, ayarlama 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 çok sayıda avantaj sunar:

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

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

  • Ray Tune ile YOLO26 hiperparametre ayarlaman için özel bir arama alanı 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 işlem, başlangıç öğrenme oranı ve momentum gibi hiperparametrelerin ayarlama sürecinde incelenecek aralığını özelleştirir. Gelişmiş yapılandırmalar için Özel Arama Alanı Örneği bölümüne başvur.

Yorumlar