Meet YOLO26: next-gen vision AI.

Link to this sectionRay 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.

Link to this sectionUltralytics YOLO26 ve Ray Tune ile Ayarlamayı Hızlandırın#

Ultralytics YOLO26, hiperparametre ayarlama için Ray Tune'u bünyesinde barındırarak YOLO26 model hiperparametrelerinin optimizasyonunu kolaylaştırır. Ray Tune ile ayarlama sürecini hızlandırmak için gelişmiş arama stratejilerinden, paralelleştirmeden ve erken durdurmadan faydalanabilirsin.

Link to this sectionRay Tune#

Ray Tune hyperparameter optimization workflow

Ray Tune, verimlilik ve esneklik için tasarlanmış bir hiperparametre ayarlama kütüphanesidir. Çeşitli arama stratejilerini, paralelleştirmeyi ve erken durdurma stratejilerini destekler ve Ultralytics YOLO26 dahil olmak üzere popüler machine learning çerçeveleriyle sorunsuz bir şekilde entegre olur.

Link to this sectionWeights & Biases ile Entegrasyon#

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

Link to this sectionKurulum#

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

Link to this sectionKullanı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)

Link to this sectiontune() Metot Parametreleri#

YOLO26 içindeki tune() metodu, Ray Tune ile hiperparametre ayarlama için kullanımı kolay bir arayüz sağlar. Ayarlama sürecini özelleştirmeni sağlayan çeşitli argümanları kabul eder. Aşağıda her bir parametrenin detaylı açıklaması bulunmaktadır:

ParametreTipAçıklamaVarsayılan Değer
datastrTuner'ı üzerinde çalıştıracağın veri kümesi yapılandırma dosyası (YAML formatında). Bu dosya, eğitim ve validation data yollarını ve diğer veri kümesine özgü 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, optionalThe grace period in epochs for the ASHA scheduler in Ray Tune. The scheduler will not terminate any trial before this number of epochs, allowing the model to have some minimum training before making a decision on early stopping.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çebilir 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" ayarını kullanır. Eğer sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator'a döner.None
**train_argsdict, optionalAyarlama sırasında train() metoduna geçirilecek ek argümanlar. Bu argümanlar eğitim epoch sayısı, batch size ve diğer eğitime özgü 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.

Link to this sectionVarsayılan Arama Uzayı Açıklaması#

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

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.

Link to this sectionÖ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,
)

In the code snippet above, we create a YOLO model with the "yolo26n.pt" pretrained weights. Then, we call the tune() method, specifying the dataset configuration with "coco8.yaml". We provide a custom search space for the initial learning rate lr0 using a dictionary with the key "lr0" and the value tune.uniform(1e-5, 1e-2). Finally, we pass additional training arguments, such as the number of epochs directly to the tune method as epochs=50.

Link to this sectionArama Algoritması Örneği#

Bir Ray Tune arama stratejisini ismine göre seçebilirsin. Dize tabanlı arama algoritmaları için Ultralytics otomatik olarak mevcut görevin varsayılan optimizasyon metriğini ve mode="max" ayarını kullanacaktır. Eğer search_alg sağlanmazsa, Ray Tune varsayılan rastgele arama stratejisi olan BasicVariantGenerator'ı 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,
)

Link to this sectionRay Tune ile Kesintiye Uğrayan Hiperparametre Ayarlama Oturumunu Sürdürme#

You can resume an interrupted Ray Tune session by passing resume=True. You can optionally pass the directory name used by Ray Tune under runs/{task} to resume. Otherwise, it would resume the last interrupted session. You don't need to provide the iterations and space again, but you need to provide the rest of the training arguments again including data and epochs.

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

Link to this sectionRay 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.

Link to this sectionBir Dizinden Tune Deney Sonuçlarını Yükleme#

tuner.fit() ile ayarlama deneyini çalıştırdıktan sonra sonuçları bir dizinden yükleyebilirsin. Bu, özellikle ilk eğitim betiği kapandıktan sonra analiz yapıyorsan oldukça 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()

Link to this sectionTemel 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!")

Link to this sectionTemel 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}")

Link to this sectionBir 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()

Link to this sectionÖ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 ayarlama deneylerinden en iyi şekilde yararlanmak için Ray Tune'un Analyze Results doküman sayfasına göz atarak daha fazlasını keşfet.

Link to this sectionSSS#

Link to this sectionYOLO26 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 stratejilerinden ve paralellikten yararlanır. Daha fazla bilgi için Ray Tune belgelerine göz at.

Link to this sectionRay 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. Tam liste ve daha fazla detay için Hiperparametre Ayarlama kılavuzuna başvur.

Link to this sectionWeights & 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.

Link to this sectionNeden 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 Bayesian Optimization 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 entegre olur ve hiperparametreleri etkili bir şekilde ayarlamak için kullanımı kolay bir arayüz sağlar. Başlamak için Hiperparametre Ayarlama kılavuzuna göz at.

Link to this sectionYOLO26 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, ayarlama süreci sırasında 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 başvur.

Yorumlar