İçeriğe geç

Ultralytics YOLO Hiperparametre Ayarlama Rehberi

Giriş

Hiperparametre ayarlama, yalnızca bir kerelik bir kurulum değil, aynı zamanda doğruluk, kesinlik ve geri çağırma gibi makine öğrenimi modelinin performans metriklerini optimize etmeyi amaçlayan yinelemeli bir süreçtir. Ultralytics YOLO bağlamında, bu hiperparametreler, öğrenme oranından katman sayısı veya kullanılan aktivasyon fonksiyonlarının türleri gibi mimari ayrıntılara kadar değişebilir.



İzle: Daha İyi Model Performansı İçin Hiperparametreler Nasıl Ayarlanır 🚀

Hiperparametreler nelerdir?

Hiperparametreler, algoritma için üst düzey, yapısal ayarlardır. Eğitim aşamasından önce ayarlanır ve bu aşama sırasında sabit kalır. İşte Ultralytics YOLO'da yaygın olarak ayarlanan bazı hiperparametreler:

  • Öğrenme Oranı lr0: İçinde bir minimuma doğru hareket ederken her yinelemede adım boyutunu belirler. kayıp fonksiyonu.
  • Yığın Boyutu batch: Bir ileri geçişte aynı anda işlenen görüntü sayısı.
  • Epok Sayısı epochs: Bir epoch, tüm eğitim örneklerinin bir tam ileri ve geri geçişidir.
  • Mimari Özellikleri: Kanal sayıları, katman sayısı, aktivasyon fonksiyonlarının türleri vb.

Hiperparametre Ayarlama Görseli

YOLO11'de kullanılan artırma hiperparametrelerinin tam listesi için lütfen yapılandırmalar sayfasına bakın.

Genetik Evrim ve Mutasyon

Ultralytics YOLO, hiperparametreleri optimize etmek için genetik algoritmalar kullanır. Genetik algoritmalar, doğal seçilim ve genetik mekanizmasından esinlenmiştir.

  • Mutasyon: Ultralytics YOLO bağlamında mutasyon, mevcut hiperparametrelerde küçük, rastgele değişiklikler uygulayarak hiperparametre uzayını yerel olarak aramaya ve değerlendirme için yeni adaylar üretmeye yardımcı olur.
  • Çaprazlama: Çaprazlama popüler bir genetik algoritma tekniği olmasına rağmen, şu anda hiperparametre ayarlaması için Ultralytics YOLO'da kullanılmamaktadır. Odak noktası temel olarak yeni hiperparametre kümeleri oluşturmak için mutasyondadır.

Hiperparametre Ayarlamaya Hazırlık

İyileştirme işlemine başlamadan önce şunlar önemlidir:

  1. Metrikleri Belirleyin: Modelin performansını değerlendirmek için kullanacağınız metrikleri belirleyin. Bu AP50, F1-skoru veya diğerleri olabilir.
  2. Ayarlama Bütçesini Ayarlayın: Ayırmak istediğiniz işlem kaynaklarının miktarını tanımlayın. Hiperparametre ayarlama, yoğun işlem gerektirebilir.

İlgili Adımlar

Hiperparametreleri başlat

Makul bir başlangıç hiperparametreleri kümesiyle başlayın. Bu, Ultralytics YOLO tarafından ayarlanan varsayılan hiperparametreler veya alan bilginize veya önceki deneylerinize dayalı bir şey olabilir.

Hiperparametreleri Değiştir

Şunu kullanın: _mutate mevcut kümeye dayalı olarak yeni bir hiperparametre kümesi üretme method'u. The Tuner sınıfı bu süreci otomatik olarak yönetir.

Model Eğitimi

Eğitim, mutasyona uğramış hiperparametreler kümesi kullanılarak gerçekleştirilir. Eğitim performansı daha sonra seçtiğiniz metrikler kullanılarak değerlendirilir.

Modeli Değerlendirin

Modelin performansını değerlendirmek için AP50, F1 skoru veya özel metrikler gibi metrikleri kullanın. Değerlendirme süreci, mevcut hiperparametrelerin öncekilerden daha iyi olup olmadığını belirlemeye yardımcı olur.

Sonuçları Kaydet

Gelecekte başvurmak için hem performans metriklerini hem de ilgili hiperparametreleri kaydetmek çok önemlidir. Ultralytics YOLO bu sonuçları otomatik olarak CSV formatında kaydeder.

Tekrarla

Süreç, ayarlanan yineleme sayısına ulaşılana veya performans metriği tatmin edici olana kadar tekrarlanır. Her yineleme, önceki çalıştırmalardan elde edilen bilgi üzerine inşa edilir.

Varsayılan Arama Alanı Açıklaması

Aşağıdaki tablo, YOLO11'de hiperparametre ayarlama için varsayılan arama alanı parametrelerini listeler. Her parametrenin bir demet tarafından tanımlanan belirli bir değer aralığı vardır. (min, max).

Parametre Tür Değer Aralığı Açıklama
lr0 float (1e-5, 1e-1) Eğitimin başlangıcındaki ilk öğrenme oranı. Daha düşük değerler daha kararlı bir eğitim ancak daha yavaş yakınsama sağlar
lrf float (0.01, 1.0) lr0'ın bir kesri olarak nihai öğrenme oranı faktörü. Öğrenme oranının eğitim sırasında ne kadar azalacağını kontrol eder
momentum float (0.6, 0.98) SGD momentum faktörü. Daha yüksek değerler, tutarlı gradyan yönünü korumaya yardımcı olur ve yakınsamayı hızlandırabilir
weight_decay float (0.0, 0.001) Aşırı öğrenmeyi önlemek için L2 düzenlileştirme faktörü. Daha büyük değerler, daha güçlü düzenlileştirme uygular
warmup_epochs float (0.0, 5.0) Doğrusal öğrenme oranı ısınması için dönem sayısı. Erken eğitim istikrarsızlığını önlemeye yardımcı olur.
warmup_momentum float (0.0, 0.95) Isınma aşamasındaki başlangıç momentumu. Kademeli olarak nihai momentum değerine yükselir.
box float (0.02, 0.2) Toplam kayıp fonksiyonunda sınırlayıcı kutu kayıp ağırlığı. Kutu regresyonunu sınıflandırmaya karşı dengeler
cls float (0.2, 4.0) Toplam kayıp fonksiyonunda sınıflandırma kaybı ağırlığı. Daha yüksek değerler, doğru sınıf tahminini vurgular
hsv_h float (0.0, 0.1) HSV renk uzayında rastgele renk tonu artırma aralığı. Modelin renk varyasyonları arasında genelleme yapmasına yardımcı olur
hsv_s float (0.0, 0.9) HSV uzayında rastgele doygunluk artırma aralığı. Farklı aydınlatma koşullarını simüle eder
hsv_v float (0.0, 0.9) Rastgele değer (parlaklık) artırma aralığı. Modelin farklı pozlama seviyelerini işlemesine yardımcı olur
degrees float (0.0, 45.0) Derece cinsinden maksimum döndürme artırımı. Modelin nesne yönüne karşı değişmez hale gelmesine yardımcı olur
translate float (0.0, 0.9) Görüntü boyutunun kesri olarak maksimum öteleme artırımı. Nesne konumuna karşı sağlamlığı artırır
scale float (0.0, 0.9) Rastgele ölçekleme artırma aralığı. Modelin farklı boyutlardaki nesneleri algılamasına yardımcı olur
shear float (0.0, 10.0) Derece cinsinden maksimum kayma artırımı. Eğitim görüntülerine perspektif benzeri bozulmalar ekler
perspective float (0.0, 0.001) Rastgele perspektif artırma aralığı. Farklı görüş açılarını simüle eder
flipud float (0.0, 1.0) Eğitim sırasında dikey görüntü çevirme olasılığı. Havadan/hava görüntüleri için kullanışlıdır
fliplr float (0.0, 1.0) Yatay görüntü çevirme olasılığı. Modelin nesne yönüne karşı değişmez hale gelmesine yardımcı olur
mosaic float (0.0, 1.0) 4 görüntüyü birleştiren mozaik artırmayı kullanma olasılığı. Özellikle küçük nesne tespiti için kullanışlıdır
mixup float (0.0, 1.0) İki görüntüyü karıştıran mixup artırmayı kullanma olasılığı. Modelin sağlamlığını artırabilir
copy_paste float (0.0, 1.0) Kopyala-yapıştır artırmayı kullanma olasılığı. Örnek bölümleme performansını artırmaya yardımcı olur

Özel Arama Alanı Örneği

İşte bir arama alanı tanımlama ve şunu kullanma yöntemi model.tune() kullanma yöntemi Tuner AdamW optimize edici ile 30 epoch için COCO8 üzerinde YOLO11n'nin hiperparametre ayarı için ve daha hızlı ayarlama için son epoch haricinde çizimi, kontrol noktası oluşturmayı ve doğrulamayı atlayan sınıf.

Örnek

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.pt")

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
    data="coco8.yaml",
    epochs=30,
    iterations=300,
    optimizer="AdamW",
    space=search_space,
    plots=False,
    save=False,
    val=False,
)

Kesintiye Uğramış Bir Hiperparametre Ayarlama Oturumuna Devam Etme

Kesintiye uğramış bir hiperparametre ayarlama oturumuna şunu ileterek devam edebilirsiniz: resume=True. İsteğe bağlı olarak dizini geçirebilirsiniz name altında kullanılır runs/{task} devam etmek için. Aksi takdirde, son kesintiye uğrayan oturuma devam eder. Ayrıca, aşağıdakiler de dahil olmak üzere önceki tüm eğitim argümanlarını da sağlamanız gerekir: data, epochs, iterations ve space.

Kullanarak resume=True ile model.tune()

from ultralytics import YOLO

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

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)

# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)

Sonuçlar

Hiperparametre ayarlama işlemini başarıyla tamamladıktan sonra, ayarlama sonuçlarını kapsayan çeşitli dosya ve dizinler elde edeceksiniz. Aşağıda her biri açıklanmaktadır:

Dosya Yapısı

İşte sonuçların dizin yapısının nasıl görüneceği. Eğitim dizinleri şuna benzer: train1/ yani bir dizi hiperparametre ile eğitilmiş bir modeli içeren bireysel ayarlama yinelemelerini içerir. tune/ dizininde, tüm bireysel model eğitimlerinden elde edilen ayarlama sonuçları bulunur:

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt

Dosya Açıklamaları

best_hyperparameters.yaml

Bu YAML dosyası, ayarlama işlemi sırasında bulunan en iyi performansı gösteren hiperparametreleri içerir. Gelecekteki eğitimleri bu optimize edilmiş ayarlarla başlatmak için bu dosyayı kullanabilirsiniz.

  • Format: YAML
  • Kullanım: Hiperparametre sonuçları
  • Örnek:

    # 558/900 iterations complete ✅ (45536.81s)
    # Results saved to /usr/src/ultralytics/runs/detect/tune
    # Best fitness=0.64297 observed at iteration 498
    # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297}
    # Best fitness model is /usr/src/ultralytics/runs/detect/train498
    # Best fitness hyperparameters are printed below.
    
    lr0: 0.00269
    lrf: 0.00288
    momentum: 0.73375
    weight_decay: 0.00015
    warmup_epochs: 1.22935
    warmup_momentum: 0.1525
    box: 18.27875
    cls: 1.32899
    dfl: 0.56016
    hsv_h: 0.01148
    hsv_s: 0.53554
    hsv_v: 0.13636
    degrees: 0.0
    translate: 0.12431
    scale: 0.07643
    shear: 0.0
    perspective: 0.0
    flipud: 0.0
    fliplr: 0.08631
    mosaic: 0.42551
    mixup: 0.0
    copy_paste: 0.0
    

best_fitness.png

Bu, yineleme sayısına karşı uygunluğu (genellikle AP50 gibi bir performans metriği) gösteren bir grafiktir. Genetik algoritmanın zaman içinde ne kadar iyi performans gösterdiğini görselleştirmenize yardımcı olur.

  • Format: PNG
  • Kullanım: Performans görselleştirmesi

Hiperparametre Ayarlama Uygunluğu ve İterasyon

tune_results.csv

Ayarlama sırasında her yinelemenin ayrıntılı sonuçlarını içeren bir CSV dosyası. Dosyadaki her satır bir yinelemeyi temsil eder ve uygunluk puanı, kesinlik, geri çağırma gibi metriklerin yanı sıra kullanılan hiperparametreleri de içerir.

  • Format: CSV
  • Kullanım: Yineleme başına sonuç izleme.
  • Örnek:
      fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste
      0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0
      0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0
      0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
    

tune_scatter_plots.png

Bu dosya, şuradan oluşturulan dağılım grafiklerini içerir: tune_results.csv, farklı hiperparametreler ve performans metrikleri arasındaki ilişkileri görselleştirmenize yardımcı olur. 0'a başlatılan hiperparametrelerin ayarlanmayacağını unutmayın, örneğin degrees ve shear aşağıda.

  • Format: PNG
  • Kullanım: Keşifsel veri analizi

Hiperparametre Ayarlama Dağılım Grafikleri

weights/

Bu dizin, hiperparametre ayarlama işlemi sırasında son ve en iyi yinelemeler için kaydedilmiş PyTorch modellerini içerir.

  • last.pt: last.pt, eğitimin son yinelemesinden elde edilen ağırlıklardır.
  • best.pt: En iyi uygunluk puanına ulaşan yineleme için best.pt ağırlıkları.

Bu sonuçları kullanarak, gelecekteki model eğitimleriniz ve analizleriniz için daha bilinçli kararlar verebilirsiniz. Modelinizin ne kadar iyi performans gösterdiğini ve daha da nasıl geliştirebileceğinizi anlamak için bu yapıtlara danışmaktan çekinmeyin.

Sonuç

Ultralytics YOLO'daki hiperparametre ayarlama süreci, mutasyona odaklanan genetik algoritma tabanlı yaklaşımı sayesinde basitleştirilmiş ancak güçlüdür. Bu kılavuzda özetlenen adımları izlemek, modelinizi daha iyi performans elde etmek için sistematik olarak ayarlamanıza yardımcı olacaktır.

Daha Fazla Okuma

  1. Wikipedia'da Hiperparametre Optimizasyonu
  2. YOLOv5 Hiperparametre Evrimi Kılavuzu
  3. Ray Tune ve YOLO11 ile Verimli Hiperparametre Ayarlama

Daha derin bilgiler için şurayı inceleyebilirsiniz: Tuner sınıf kaynak kodu ve beraberindeki belgeler. Herhangi bir sorunuz, özellik isteğiniz olması veya daha fazla yardıma ihtiyacınız olması durumunda, lütfen bizimle iletişime geçmekten çekinmeyin: GitHub veya Discord.

SSS

Hiperparametre ayarlama sırasında Ultralytics YOLO için öğrenme oranını nasıl optimize ederim?

Ultralytics YOLO için öğrenme oranını optimize etmek için, kullanarak bir başlangıç öğrenme oranı belirleyerek başlayın. lr0 parametresi. Yaygın değerler şu aralıktadır: 0.001 için 0.01. Hiperparametre ayarlama sürecinde, bu değer en uygun ayarı bulmak için değiştirilecektir. Şunu kullanabilirsiniz: model.tune() Bu süreci otomatikleştirmek için yöntem. Örneğin:

Örnek

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

Daha fazla ayrıntı için Ultralytics YOLO yapılandırma sayfasını inceleyin.

YOLO11'de hiperparametre ayarlaması için genetik algoritmalar kullanmanın faydaları nelerdir?

Ultralytics YOLO11'deki genetik algoritmalar, hiperparametre uzayını keşfetmek için güçlü bir yöntem sağlayarak, yüksek düzeyde optimize edilmiş model performansına yol açar. Temel faydaları şunlardır:

  • Verimli Arama: Mutasyon gibi genetik algoritmalar, geniş bir hiperparametre kümesini hızla keşfedebilir.
  • Yerel Minimumlardan Kaçınma: Rastgelelik sağlayarak, daha iyi küresel optimizasyon sağlayarak yerel minimumlardan kaçınmaya yardımcı olurlar.
  • Performans Metrikleri: AP50 ve F1 skoru gibi performans metriklerine göre uyum sağlarlar.

Genetik algoritmaların hiperparametreleri nasıl optimize edebileceğini görmek için hiperparametre evrimi kılavuzuna göz atın.

Ultralytics YOLO için hiperparametre ayarlama işlemi ne kadar sürer?

Ultralytics YOLO ile hiperparametre ayarlaması için gereken süre, büyük ölçüde veri kümesinin boyutu, model mimarisinin karmaşıklığı, yineleme sayısı ve mevcut hesaplama kaynakları gibi çeşitli faktörlere bağlıdır. Örneğin, YOLO11n'yi COCO8 gibi bir veri kümesinde 30 epoch için ayarlamak, donanıma bağlı olarak birkaç saatten günlere kadar sürebilir.

Ayar süresini etkili bir şekilde yönetmek için, önceden net bir ayarlama bütçesi tanımlayın (dahili bölüm bağlantısı). Bu, kaynak tahsisini ve optimizasyon hedeflerini dengelemede yardımcı olur.

YOLO'da hiperparametre ayarlaması sırasında model performansını değerlendirmek için hangi metrikleri kullanmalıyım?

YOLO'da hiperparametre ayarlaması sırasında model performansını değerlendirirken, çeşitli temel metrikleri kullanabilirsiniz:

  • AP50: IoU eşiğinde 0,50 olan ortalama kesinlik.
  • F1-Skoru: Kesinlik ve hatırlamanın harmonik ortalamasıdır.
  • Hassasiyet ve Geri Çağırma: Modelin yanlış pozitiflere ve yanlış negatiflere karşı gerçek pozitifleri belirlemedeki doğruluğunu gösteren bireysel metrikler.

Bu metrikler, modelinizin performansının farklı yönlerini anlamanıza yardımcı olur. Kapsamlı bir genel bakış için Ultralytics YOLO performans metrikleri kılavuzuna bakın.

YOLO11 ile gelişmiş hiperparametre optimizasyonu için Ray Tune'u kullanabilir miyim?

Evet, Ultralytics YOLO11, gelişmiş hiperparametre optimizasyonu için Ray Tune ile entegre olur. Ray Tune, ayarlama sürecini hızlandırmak için Bayesian Optimizasyonu ve Hyperband gibi gelişmiş arama algoritmalarının yanı sıra paralel yürütme yetenekleri sunar.

YOLO11 ile Ray Tune kullanmak için, sadece şunu ayarlayın: use_ray=True parametresi içinde model.tune() yöntem çağrısı. Daha fazla ayrıntı ve örnek için şuraya göz atın: Ray Tune entegrasyon kılavuzu.



📅 1 yıl önce oluşturuldu ✏️ 3 ay önce güncellendi

Yorumlar