Ultralytics YOLO Hiperparametre Ayarı Kılavuzu#
Ultralytics YOLO'da hiperparametre ayarı, doğruluk, kesinlik ve duyarlılık gibi bir makine öğrenimi modelinin performans metriklerini en üst düzeye çıkarmak için öğrenme oranı, kayıp ağırlıkları ve veri artırma gücü gibi ayarları optimize eden otomatik, yinelemeli bir aramadır. Bu değerleri elle test etmek yerine Ultralytics YOLO, hiperparametre uzayını, birçok kısa eğitim çalıştırmasında aday konfigürasyonları mutasyona uğratan ve değerlendiren genetik bir algoritma ile inceler.
Watch: How to Tune Hyperparameters for Better Model Performance 🚀
Hiperparametreler Nedir?#
Hiperparametreler, algoritma için üst düzey, yapısal ayarlardır. Eğitim aşamasından önce belirlenirler ve eğitim boyunca sabit kalırlar. İşte Ultralytics YOLO'da yaygın olarak ayarlanan bazı hiperparametreler:
- Öğrenme Oranı
lr0: Kayıp fonksiyonunda bir minimuma doğru ilerlerken her yinelemedeki adım boyutunu belirler. - Toplu Boyutu
batch: İleri geçişte aynı anda işlenen görüntü sayısı. - Dönem Sayısı
epochs: Bir dönem, tüm eğitim örneklerinin tam bir ileri ve geri geçişidir. - Mimari Özellikleri: Kanal sayıları, katman sayısı, aktivasyon fonksiyonu türleri vb. gibi.
YOLO26'da kullanılan veri artırma hiperparametrelerinin tam listesi için lütfen konfigürasyonlar 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.
- Çaprazlama (Crossover): Her yineleme, uygunluk ağırlıklı ebeveyn seçimi ile BLX-α çaprazlaması kullanarak şu ana kadar görülen en yüksek uygunluğa sahip dokuz konfigürasyona kadar genleri birleştirir.
- Mutasyon: Yeniden birleştirilen aday daha sonra her hiperparametreye uygulanan (parametre başına 0.5 olasılıkla) log-normal çarpımsal bir faktörle sarsılır. Mutasyon gücü sigma, ilk 300 yineleme boyunca doğrusal olarak 0.2'den 0.1'e düşer, böylece algoritma erken aşamalarda geniş çaplı keşif yapar ve yakınsadıkça hassaslaşır. 1. yinelemede çaprazlama yapılacak ebeveyn yoktur ve temel olarak varsayılan eğitim hiperparametreleri kullanılır.
Hiperparametre Ayarlamaya Hazırlık#
Ayarlama sürecine başlamadan önce şunları yapman önemlidir:
- Metrikleri Belirle: Modelin performansını değerlendirmek için kullanacağın metrikleri belirle. Bu AP50, F1-skoru veya diğerleri olabilir.
- Ayarlama Bütçesini Belirle: Ne kadar hesaplama kaynağı ayırmaya istekli olduğunu tanımla. Hiperparametre ayarlama yoğun hesaplama gerektirebilir.
Optimizasyon Döngüsü Nasıl Çalışır#
Her yineleme için, yerleşik tuner şu döngüyü tekrarlar:
- Hiperparametreleri başlat — Ultralytics YOLO tarafından belirlenen varsayılan hiperparametreler veya alan bilginize ya da önceki deneyimlerinize dayalı değerler gibi makul bir temel ile başla.
- Hiperparametreleri mutasyona uğratın —
Tunersınıfı,_mutateyöntemini kullanarak mevcut kümeden otomatik olarak yeni bir hiperparametre kümesi üretir. - Modeli eğit — Mutate edilmiş hiperparametreleri kullanarak eğitim yap, ardından seçtiğin metriklerle eğitim performansını değerlendir.
- Modeli değerlendirin — mevcut hiperparametrelerin önceki öncekilerden daha iyi olup olmadığını belirlemek için değerlendirme süreci aracılığıyla AP50, F1 skoru veya özel metrikler gibi metrikler kullanın.
- Sonuçları kaydet — Hem performans metriklerini hem de bunlara karşılık gelen hiperparametreleri gelecekte başvurmak üzere kaydet. Ultralytics YOLO bu sonuçları otomatik olarak NDJSON formatında saklar.
- Tekrarla — Belirlenen yineleme sayısına ulaşılana veya performans metriği tatmin edici olana kadar devam et; her yineleme önceki çalışmalardan elde edilen bilgiler üzerine inşa edilir.
Yinelemeler ve Popülasyon Boyutu#
Yerleşik ayarlayıcı (use_ray=False) ile iterations, ardışık denemelerin toplam sayısını kontrol eder. Her deneme bir modeli bir hiperparametre konfigürasyonuyla eğitir; örneğin, iterations=40 ve epochs=50, ayrı bir 40 aday popülasyonuna sahip 50 dönemlik tek bir çalışmayı değil, 40 bağımsız 50 dönemlik eğitim çalışmasını zamanlar.
Yerleşik genetik algoritmanın açık bir popülasyon boyutu parametresi yoktur. Önceki denemeler mevcut olduğunda, ebeveyn olarak en yüksek uygunluğa sahip dokuz konfigürasyona kadar örnekler alır, BLX-α çaprazlaması ve mutasyon uygular ve yineleme başına bir aday üretir.
Paralel denemeler veya daha gelişmiş arama stratejileri için, iterations değerini num_samples olarak alan Ray Tune'u kullanmak üzere use_ray=True değerini ayarla. Ayrıntılar için Ray Tune entegrasyon kılavuzuna göz at.
Varsayılan Arama Uzayı#
Aşağıdaki tabloda YOLO26'da hiperparametre ayarı için varsayılan arama uzayı parametreleri listelenmektedir. Her parametrenin (min, max) demeti tarafından tanımlanan belirli bir değer aralığı vardır.
| Parametre | Tip | Değer Aralığı | Açıklama |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | Eğitimin başlangıcındaki ilk öğrenme oranı. Daha düşük değerler daha kararlı bir eğitim sağlar ancak daha yavaş yakınsama sunar |
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.7, 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 (overfitting) önlemek için L2 normalizasyon faktörü. Daha büyük değerler daha güçlü normalizasyon sağlar |
warmup_epochs | float | (0.0, 5.0) | Doğrusal öğrenme oranı ısınması (warmup) için epoch sayısı. Erken eğitim kararsı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 | (1.0, 20.0) | Toplam kayıp fonksiyonundaki sınırlayıcı kutu kayıp ağırlığı. Kutu regresyonu ile sınıflandırmayı dengeler |
cls | float | (0.1, 4.0) | Toplam kayıp fonksiyonundaki sınıflandırma kayıp ağırlığı. Daha yüksek değerler doğru sınıf tahminini vurgular |
cls_pw | float | (0.0, 1.0) | Sınıf dengesizliğini yönetmek için sınıf ağırlıklandırma gücü. Daha yüksek değerler nadir sınıfların ağırlığını artırır |
dfl | float | (0.4, 12.0) | Toplam kayıp fonksiyonundaki DFL (Distribution Focal Loss) ağırlığı. Daha yüksek değerler hassas sınırlayıcı kutu yerelleştirmesini vurgular |
hsv_h | float | (0.0, 0.1) | HSV renk uzayında rastgele ton (hue) 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 (saturation) 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 rotasyon artırma. Modelin nesne yönelimine karşı değişmez hale gelmesine yardımcı olur |
translate | float | (0.0, 0.9) | Görüntü boyutunun bir kesri olarak maksimum öteleme (translation) artırma. Nesne konumuna karşı dayanıklılığı artırır |
scale | float | (0.0, 0.95) | Rastgele ölçekleme artırma aralığı. Modelin nesneleri farklı boyutlarda algılamasına yardımcı olur |
shear | float | (0.0, 10.0) | Derece cinsinden maksimum kayma (shear) artırma. 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/tepeden çekimler için yararlı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 |
bgr | float | (0.0, 1.0) | Renk kanallarını değiştiren BGR artırma kullanma olasılığı. Renk değişmezliği ile yardımcı olabilir |
mosaic | float | (0.0, 1.0) | 4 görüntüyü birleştiren mozaik artırma kullanma olasılığı. Özellikle küçük nesne tespiti için yararlıdır |
mixup | float | (0.0, 1.0) | İki görüntüyü harmanlayan mixup artırma kullanma olasılığı. Model dayanıklılığını artırabilir |
cutmix | float | (0.0, 1.0) | Cutmix artırma kullanma olasılığı. Yerel özellikleri korurken görüntü bölgelerini birleştirir |
copy_paste | float | (0.0, 1.0) | Kopyala-yapıştır (copy-paste) artırma kullanma olasılığı. Örnek bölümleme (instance segmentation) performansını artırmaya yardımcı olur |
close_mosaic | float | (0.0, 10.0) | Tamamlanmadan önce eğitimi stabilize etmek için son N epoch'ta mozaiği devre dışı bırakır |
Özel Arama Uzayı Örneği#
İşte bir arama alanı tanımlamanın ve daha hızlı ayar için son epoch haricinde çizim, kontrol noktası oluşturma ve doğrulamayı atlayarak AdamW optimizer ve 30 epoch boyunca COCO8 üzerinde YOLO26n'in hiperparametre ayarı için Tuner sınıfını kullanmak üzere model.tune() yöntemini kullanmanın yolu.
Bu örnek sadece gösterim amaçlıdır. Kısa veya küçük ölçekli ayarlama çalışmalarından elde edilen hiperparametreler, gerçek dünya eğitimi için nadiren optimaldir. Uygulamada, güvenilir ve aktarılabilir sonuçlar sağlamak için ayarlama, karşılaştırılabilir veri kümeleri, epoch'lar ve artırmalar dahil olmak üzere tam eğitime benzer ayarlarda gerçekleştirilmelidir. Hızlı ayarlama, parametreleri daha hızlı yakınsamaya veya genel kullanıma uygun olmayan kısa vadeli doğrulama kazanımlarına yönlendirebilir.
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"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#
resume=True değerini ileterek kesintiye uğramış bir hiperparametre ayar oturumunu devam ettirebilirsin. Devam etmek için isteğe bağlı olarak runs/{task} altında kullanılan name dizinini iletebilirsin. Aksi takdirde, en son kesintiye uğrayan oturumu devam ettirir. Ayrıca data, epochs, iterations ve space dahil olmak üzere önceki tüm eğitim argümanlarını sağlaman gerekir.
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo26n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-2),
"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 sürecini başarıyla tamamladıktan sonra, ayarlama sonuçlarını içeren birkaç dosya ve dizin elde edeceksin. Aşağıdakiler her birini açıklar:
Dosya Yapısı#
Sonuçların dizin yapısı şöyle görünecektir. train1/ gibi eğitim dizinleri bireysel ayar yinelemelerini, yani bir hiperparametre kümesiyle eğitilmiş bir modeli içerir. tune/ dizini ise tüm bireysel model eğitimlerinden gelen ayar sonuçlarını içerir:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── tune_fitness.png
├── tune_results.ndjson
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.ptDosya Açıklamaları#
best_hyperparameters.yaml#
Bu YAML dosyası, ayarlama süreci sırasında bulunan en iyi performans gösteren hiperparametreleri içerir. Bu dosyayı, gelecekteki eğitimleri bu optimize edilmiş ayarlarla başlatmak için kullanabilirsin.
-
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
tune_fitness.png#
Bu, uygunluğu (fitness) yineleme sayısına karşı gösteren bir grafiktir. Genetik algoritmanın zaman içinde nasıl performans gösterdiğini görselleştirmene yardımcı olur.
- Format: PNG
- Kullanım: Performans görselleştirme
Grafik şunları içerir:
- Veri kümesi başına yineleme başına bir işaretleyici, bu nedenle tek veri kümeli bir çalışma yineleme başına bir nokta gösterir ve çok veri kümeli bir çalışma yineleme başına veri kümesi başına bir nokta gösterir.
- Yineleme başına üst düzey uygunluk değerleri üzerinde bir Gauss düzleştirmesi (
sigma=3) olarak hesaplanan noktalı bir "düzeltilmiş ortalama" çizgisi.
tune_results.ndjson#
Her ayarlama yinelemesinin ayrıntılı sonuçlarını içeren bir NDJSON dosyası. Her satır, toplam uygunluk, ayarlanmış hiperparametreler ve veri kümesi bazlı metrikleri içeren bir JSON nesnesidir. Tek veri kümeli ve çok veri kümeli ayarlama aynı dosya formatını kullanır.
- Format: NDJSON
- Kullanım: Yineleme bazlı sonuç takibi.
- Örnek:
Okunabilirlik için aşağıda düzgün biçimlendirilmiş bir örnek verilmiştir; gerçek .ndjson dosyasında her nesne tek bir satırda saklanır.
{
"iteration": 1,
"fitness": 0.48628,
"hyperparameters": {
"lr0": 0.01,
"lrf": 0.01,
"momentum": 0.937,
"weight_decay": 0.0005
},
"datasets": {
"coco8": {
"metrics/precision(B)": 0.65666,
"metrics/recall(B)": 0.85,
"metrics/mAP50(B)": 0.85086,
"metrics/mAP50-95(B)": 0.64104,
"val/box_loss": 1.57958,
"val/cls_loss": 1.04986,
"val/dfl_loss": 1.32641,
"fitness": 0.64104
},
"coco8-grayscale": {
"metrics/precision(B)": 0.6582,
"metrics/recall(B)": 0.51667,
"metrics/mAP50(B)": 0.59106,
"metrics/mAP50-95(B)": 0.33152,
"val/box_loss": 1.95424,
"val/cls_loss": 1.64059,
"val/dfl_loss": 1.70226,
"fitness": 0.33152
}
},
"save_dirs": {
"coco8": "runs/detect/coco8",
"coco8-grayscale": "runs/detect/coco8-grayscale"
}
}Üst düzey fitness, veri kümesi başına fitness değerlerinin aritmetik ortalamasıdır. Tek veri kümesi ayarı için datasets sözlüğü, fitness değeri üst düzey fitness değerine eşit olan bir girdiye sahiptir. Tamamlanan her yineleme için bir JSON nesnesi kaydedilir. Gerçek save_dirs yolları mutfaktır; okunabilirlik için yukarıda kısaltılmıştır.
tune_scatter_plots.png#
Bu dosya, tune_results.ndjson'dan oluşturulan, farklı hiperparametreler ile performans metrikleri arasındaki ilişkileri görselleştirmenize yardımcı olan saçılım grafikleri içerir. Varsayılan değeri 0 olan hiperparametreler (örneğin aşağıdaki degrees ve shear), çarpımsal mutasyon faktörünün sıfıra yakın bir değerden genişletecek çok az şeyi olması nedeniyle başlangıç tohumlarından yalnızca yavaşça evrilebilir.
- Format: PNG
- Kullanım: Keşifsel veri analizi
weights/#
Bu dizin, hiperparametre ayar süreci sırasındaki son ve en iyi yinelemeler için kaydedilmiş PyTorch modellerini içerir.
last.pt: last.pt, eğitimin son dönemindeki ağırlıklardır.best.pt: En iyi uygunluk skorunu elde eden yineleme için best.pt ağırlıkları.
Bu sonuçları kullanarak, gelecekteki model eğitimleri ve analizleri için daha bilinçli kararlar verebilirsin.
Sonuç#
Ultralytics YOLO'da hiperparametre ayarı, genetik bir algoritma içinde log-normal mutasyonla BLX-α çaprazlamasını birleştirerek hem başlatması kolay hem de kaputun altında güçlüdür. Bu kılavuzda özetlenen döngüyü takip etmek, daha iyi performans için modelini sistematik olarak ayarlamanı, ardından gelecekteki eğitim çalıştırmalarını başlatmak için ortaya çıkan best_hyperparameters.yaml değerini yeniden kullanmanı sağlar. Ayarı paralel denemeler ve daha gelişmiş arama algoritmaları arasında ölçeklendirmek için Ray Tune entegrasyon kılavuzuyla devam et veya bulut eğitimi aracılığıyla Ultralytics Platform üzerinde yapılandırılabilir hiperparametreler ve gerçek zamanlı metrik takibi ile yönetilen işler çalıştır.
Daha derin içgörüler için Tuner sınıfı kaynak kodunu inceleyin. Sorularınız veya özellik talepleriniz varsa GitHub veya Discord üzerinden ulaşın.
SSS#
Hiperparametre ayarı sırasında Ultralytics YOLO için öğrenme oranını nasıl optimize edebilirim?#
lr0 parametresi ile başlangıç değeri belirleyin (yaygın değerler 0.001 ile 0.01 arasındadır) ve optimumu bulmak için ayarın bunu mutasyona uğratmasına izin verin. Bunu model.tune() yöntemiyle otomatikleştirebilirsiniz. Örneğin:
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo26n.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 konfigürasyon sayfasına göz atın.
YOLO26'da hiperparametre ayarlama için genetik algoritmalar kullanmanın faydaları nelerdir?#
Ultralytics YOLO26'daki genetik algoritmalar, hiperparametre uzayını keşfetmek için sağlam bir yöntem sunarak oldukça optimize edilmiş model performansı sağlar. Temel faydaları şunlardır:
- Verimli Arama: BLX-α çaprazlama, en yüksek uygunluğa sahip ebeveynlerden genleri birleştirirken, log-normal mutasyon yeni adayları keşfetmek için sonucu sarsar.
- Yerel Minimumlardan Kaçınma: Rastgelelik ekleyerek, daha iyi küresel optimizasyon sağlayarak yerel minimumlardan kaçınmaya yardımcı olurlar.
- Performans Metrikleri: Göreve özel bir uygunluk puanına (algılama için mAP50-95) 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 süreci ne kadar sürer?#
Ultralytics YOLO ile hiperparametre ayarlama için gereken süre büyük ölçüde veri setinin boyutu, model mimarisinin karmaşıklığı, iterasyon sayısı ve mevcut hesaplama kaynakları gibi birkaç faktöre bağlıdır. Örneğin, YOLO26n'yi COCO8 gibi bir veri setinde 30 dönem (epoch) boyunca ayarlamak, donanıma bağlı olarak birkaç saatten günlere kadar sürebilir.
Hiperparametre Ayarına Hazırlık bölümünde ele alındığı gibi, ayar süresini etkili bir şekilde yönetmek için önceden net bir ayar bütçesi tanımlayın. Bu, kaynak tahsisi ile optimizasyon hedeflerini dengelemeye yardımcı olur.
YOLO'da hiperparametre ayarlama sırasında model performansını değerlendirmek için hangi metrikleri kullanmalıyım?#
YOLO'da hiperparametre ayarlama sırasında model performansını değerlendirirken, birkaç temel metrik kullanabilirsin:
- AP50: 0.50 IoU eşiğinde ortalama hassasiyet.
- F1-Skoru: Hassasiyet ve geri çağırmanın harmonik ortalaması.
- Kesinlik ve Duyarlılık: Gerçek pozitifleri yanlış pozitifler ve yanlış negatiflerle karşılaştırarak modelin doğrululuğunu belirten 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 başvurun.
YOLO26 ile gelişmiş hiperparametre optimizasyonu için Ray Tune kullanabilir miyim?#
Evet, Ultralytics YOLO26, gelişmiş hiperparametre optimizasyonu için Ray Tune ile entegre olur. Ray Tune, ayar sürecini hızlandırmak için paralel yürütme yeteneklerinin yanı sıra Bayes Optimizasyonu ve Hyperband gibi gelişmiş arama algoritmaları sunar.
YOLO26 ile Ray Tune'u kullanmak için model.tune() yöntem çağrında use_ray=True parametresini ayarlaman yeterlidir. Daha fazla ayrıntı ve örnek için Ray Tune entegrasyon kılavuzuna göz at.