YOLO Vision 2026:

Ray Tune ve YOLO26 ile Verimli Hiperparametre Ayarlama#

Hiperparametre ayarlama, optimal hiperparametre kümesini keşfederek en yüksek model performansına ulaşmak için hayati önem taşır. Bu süreç, farklı hiperparametrelerle denemeler çalıştırmayı ve her bir denemenin performansını değerlendirmeyi içerir.

Ultralytics YOLO26 ve Ray Tune ile Ayarlamayı Hızlandırın#

Ultralytics YOLO26, YOLO26 model hiperparametrelerinin optimizasyonunu basitleştirerek hiperparametre ayarı için Ray Tune'u içerir. Ray Tune ile ayar sürecini hızlandırmak için gelişmiş arama stratejilerini, paralelliği ve erken durdurmayı kullanabilirsin.

Ray Tune#

Ray Tune hyperparameter optimization workflow

Ray Tune, verimlilik ve esneklik için tasarlanmış bir hiperparametre ayar kütüphanesidir. Çeşitli arama stratejilerini, paralelliği ve erken durdurma stratejilerini destekler ve Ultralytics YOLO26 dahil popüler makine öğrenimi çatılarıyla sorunsuz bir şekilde entegre olur.

Weights & Biases ile Entegrasyon#

YOLO26 ayrıca ayar sürecini izlemek için Weights & Biases ile isteğe bağlı entegrasyona izin verir.

Kurulum#

Gerekli paketleri kurmak için şunu çalıştır:

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 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'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 argümanlar kabul eder. Her parametrenin ayrıntılı açıklaması aşağıdadır:

ParametreTipAçıklamaVarsayılan Değer
datastrTuner'ın çalıştırılacağı veri kümesi yapılandırma dosyası (YAML formatında). Bu dosya, eğitim ve doğrulama verisi yollarının yanı sıra diğer veri kümesine özel ayarları belirtmelidir.
spacedict, optionalRay Tune için hiperparametre arama uzayını tanımlayan bir sözlük. Her anahtar bir hiperparametre ismine karşılık gelir ve değer, ayarlama sırasında keşfedilecek değer aralığını belirtir. Eğer sağlanmazsa, YOLO26 çeşitli hiperparametrelerle varsayılan bir arama uzayı kullanır.
grace_periodint, optionalRay Tune'daki ASHA scheduler için epochs cinsinden yetkisiz geçiş süresi. Zamanlayıcı, erken durdurma konusunda karar vermeden önce modelin minimum düzeyde eğitim almasına izin vererek bu epoch sayısından önce hiçbir denemeyi sonlandırmayacaktır.10
gpu_per_trialint, optionalAyarlama sırasında deneme başına ayrılacak GPU sayısı. Bu, özellikle çoklu GPU ortamlarında GPU kullanımını yönetmeye yardımcı olur. Eğer sağlanmazsa, tuner mevcut tüm GPU'ları kullanacaktır.None
iterationsint, optionalAyarlama sırasında çalıştırılacak maksimum deneme sayısı. Bu parametre, ayarlama sürecinin sonsuza kadar çalışmamasını sağlayarak test edilen toplam hiperparametre kombinasyonu sayısını kontrol etmeye yardımcı olur.10
search_algstr or Searcher, optionalKullanılacak Ray Tune arama stratejisi. Doğrudan bir Ray arayıcı nesnesi geçebilirsin veya optuna, hyperopt, bayesopt, bohb, hebo, nevergrad, zoopt, ax ya da random gibi desteklenen bir dize kullanabilirsin. Dize tabanlı arayıcılar otomatik olarak varsayılan görev metriğini ve mode="max" kullanır. Sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator değerine geri döner.None
**train_argsdict, optionalAyar sırasında train() yöntemine geçirilecek ek argümanlar. Bu argümanlar, eğitim epoch sayısı, batch boyutu ve diğer eğitime özel yapılandırmalar gibi ayarları içerebilir.{}

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

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

Aşağıdaki tablo, Ray Tune ile YOLO26'da hiperparametre ayarı 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ı. 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 düşeceğini belirleyen nihai öğrenme oranı faktörü.
momentumtune.uniform(0.7, 0.98)Eğitimi hızlandırmaya ve yerel minimumlardan kurtulmaya yardımcı olan optimizer için momentum faktörü.
weight_decaytune.uniform(0.0, 0.001)Büyük ağırlık değerlerini cezalandırarak aşırı öğrenmeyi (overfitting) önleyen düzenlileştirme (regularization) parametresi.
warmup_epochstune.uniform(0.0, 5.0)Erken eğitimi stabilize etmek için öğrenme oranının kademeli olarak arttığı epoch sayısı.
warmup_momentumtune.uniform(0.0, 0.95)Isınma (warmup) döneminde kademeli olarak artan başlangıç momentum değeri.
boxtune.uniform(1.0, 20.0)Modeldeki lokalizasyon doğruluğunu dengeleyen sınırlayıcı kutu (bounding box) kaybı bileşeni için ağırlık.
clstune.uniform(0.1, 4.0)Modeldeki sınıf tahmin doğruluğunu dengeleyen sınıflandırma kaybı bileşeni için ağırlık.
dfltune.uniform(0.4, 12.0)Hassas sınırlayıcı kutu lokalizasyonunu vurgulayan Distribution Focal Loss bileşeni için ağırlık.
hsv_htune.uniform(0.0, 0.1)Modelin genelleştirilmesine yardımcı olmak için renk değişkenliği getiren ton (hue) artırma aralığı.
hsv_stune.uniform(0.0, 0.9)Dayanıklılığı artırmak için renk yoğunluğunu değiştiren doygunluk (saturation) artırma aralığı.
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ığı.
degreestune.uniform(0.0, 45.0)Derece cinsinden döndürme artırma aralığı, döndürülmüş nesnelerin tanınmasını iyileştirir.
translatetune.uniform(0.0, 0.9)Görüntüleri yatay ve dikey olarak kaydıran öteleme (translation) artırma aralığı.
scaletune.uniform(0.0, 0.95)Nesneleri farklı mesafelerde simüle eden ölçeklendirme artırma aralığı.
sheartune.uniform(0.0, 10.0)Derece cinsinden kayma (shear) artırma aralığı, perspektif değişimlerini simüle eder.
perspectivetune.uniform(0.0, 0.001)3D bakış açısı değişimlerini simüle eden perspektif artırma aralığı.
flipudtune.uniform(0.0, 1.0)Veri kümesi çeşitliliğini artıran dikey çevirme (vertical flip) artırma olasılığı.
fliplrtune.uniform(0.0, 1.0)Simetrik nesneler için yararlı olan yatay çevirme (horizontal flip) artırma olasılığı.
bgrtune.uniform(0.0, 1.0)Renk değişmezliğine yardımcı olan BGR kanal değiştirme artırma olasılığı.
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ığı.
mixuptune.uniform(0.0, 1.0)İki görüntüyü ve etiketlerini birbirine karıştıran Mixup artırma olasılığı.
cutmixtune.uniform(0.0, 1.0)Yerel özellikleri korurken görüntü bölgelerini birleştiren Cutmix artırma olasılığı.
copy_pastetune.uniform(0.0, 1.0)Örnek çeşitliliğini artırmak için görüntüler arasında nesneleri aktaran kopyala-yapıştır artırma olasılığı.
close_mosaictune.randint(0, 11)Tamamlanmadan önce eğitimi stabilize etmek 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 uzayının nasıl kullanılacağını gösteriyoruz. Özel bir arama uzayı sağlayarak, ayarlama sürecini belirli hiperparametreler üzerinde yoğunlaştırabilirsin.

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,
)

"yolo26n.pt" ön eğitilmiş ağırlıklarıyla bir YOLO modeli oluştururuz. Ardından, "coco8.yaml" ile veri kümesi yapılandırmasını belirterek tune() yöntemini çağırırız. "lr0" anahtarına ve tune.uniform(1e-5, 1e-2) değerine sahip bir sözlük kullanarak başlangıç öğrenme hızı lr0 için özel bir arama alanı sağlarız. Son olarak, epoch sayısı gibi ek eğitim argümanlarını doğrudan epochs=50 olarak tune yöntemine geçiririz.

Arama Algoritması Örneği#

Bir Ray Tune arama stratejisini ada 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 kullanacaktır. search_alg sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator değerini 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 örneklendirilmiş bir Ray Tune arayıcı nesnesi geçir.

`model.tune()` ile `OptunaSearch` nesnesi kullanımı
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ğrayan Hiperparametre Ayarlama Oturumunu Sürdürme#

resume=True değerini geçirerek kesintiye uğrayan bir Ray Tune oturumunu devam ettirebilirsin. Devam etmek için isteğe bağlı olarak Ray Tune tarafından runs/{task} altında kullanılan name dizinini geçirebilirsin. Aksi takdirde, son kesintiye uğrayan oturumu devam ettirir. iterations ve space değerlerini tekrar sağlaman gerekmez, ancak data ve epochs dahil olmak üzere eğitim argümanlarının geri kalanını tekrar sağlaman gerekir.

`model.tune()` ile `resume=True` kullanımı
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ı boyunca sana rehberlik edecektir.

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

tuner.fit() ile ayar denemesini çalıştırdıktan sonra, sonuçları bir dizinden yükleyebilirsin. Bu, özellikle ilk eğitim betiği bittikten sonra analiz yapıyorsan yararlı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 Düzeyinde Analiz#

Denemelerin nasıl performans gösterdiğine dair genel bir bakış elde et. Denemeler sırasında herhangi bir hata olup olmadığı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#

Bireysel deneme hiperparametre yapılandırmalarına ve son bildirilen metriklerine eriş.

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

Bir Deneme İçin Bildirilen Metriklerin Tüm Geçmişini Çizdirme#

Metriklerin zaman içinde nasıl geliştiğini görmek için her deneme için 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["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

Özet#

Bu kılavuzda, Ultralytics kullanarak Ray Tune ile yürütülen deneylerin sonuçlarını analiz etmek için kullanılan yaygın iş akışlarını ele aldık. Temel adımlar arasında deney sonuçlarını bir dizinden yükleme, temel deney ve deneme düzeyinde analiz yapma ve metrikleri çizdirme yer alır.

Hiperparametre ayarı denemelerinden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Etme dokümantasyon sayfasına göz atarak daha fazlasını keşfet.

SSS#

YOLO26 modelimin hiperparametrelerini Ray Tune kullanarak nasıl ayarlayabilirim?#

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]"
    pip install wandb # optional for logging
  2. YOLO26 modelini yükle ve ayarlamaya başla:

    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, modelinin 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 dokümantasyonuna göz at.

Ray Tune ile YOLO26 ayarlaması için varsayılan hiperparametreler nelerdir?#

Ultralytics YOLO26, Ray Tune ile ayarlama için şu 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)Nihai öğrenme oranı çarpanı
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 dönemleri
boxtune.uniform(1.0, 20.0)Kutu kaybı ağırlığı
clstune.uniform(0.1, 4.0)Sınıf kaybı ağırlığı
dfltune.uniform(0.4, 12.0)DFL 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 bir liste ve daha fazla ayrıntı için Hiperparametre Ayarı kılavuzuna bak.

Weights & Biases'ı YOLO26 model ayarlamama nasıl entegre edebilirim?#

Weights & Biases (W&B) çözümünü Ultralytics YOLO26 ayarlama sürecine entegre etmek için:

  1. W&B yükle:

    pip install wandb
  2. Ayarlama betiğini değiştir:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo26n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

Bu kurulum, ayarlama sürecini izlemeni, hiperparametre yapılandırmalarını takip etmeni ve sonuçları W&B içinde görselleştirmeni sağlayacaktır.

Neden YOLO26 ile hiperparametre optimizasyonu için Ray Tune kullanmalıyım?#

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

  • Gelişmiş Arama Stratejileri: Verimli parametre araması için Bayes Optimizasyonu ve HyperOpt gibi algoritmaları kullanır.
  • Paralellik: Birden fazla denemenin paralel yürütülmesini destekler ve ayarlama sürecini önemli ölçüde hızlandırır.
  • Erken Durdurma: Düşük performans gösteren denemeleri erkenden sonlandırmak için ASHA gibi stratejiler kullanır ve böylece hesaplama kaynaklarından tasarruf sağlar.

Ray Tune, Ultralytics YOLO26 ile sorunsuz bir şekilde bütünleşerek hiperparametreleri etkili bir şekilde ayarlamak için kullanımı kolay bir arayüz sağlar. Başlamak için Hiperparametre Ayarı kılavuzuna göz at.

YOLO26 hiperparametre ayarlaması için nasıl özel bir arama alanı tanımlayabilirim?#

Ray Tune ile YOLO26 hiperparametre ayarlaman için özel bir arama alanı tanımlamak için:

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, ayar süreci boyunca keşfedilecek başlangıç öğ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.

Yorumlar