Link to this sectionUltralytics YOLO Hiperparametre Ayarlama Kılavuzu#
Ultralytics YOLO'da hiperparametre optimizasyonu, öğrenme oranı, kayıp ağırlıkları ve artırma gücü gibi ayarları optimize ederek makine öğrenimi modelinin doğruluk, kesinlik ve duyarlılık gibi performans metriklerini maksimize eden otomatik ve yinelemeli bir arama sürecidir. Bu değerleri manuel olarak test etmek yerine, Ultralytics YOLO hiperparametre uzayını birçok kısa eğitim çalışması boyunca aday konfigürasyonları mutate eden ve değerlendiren bir genetik algoritma ile keşfeder.
Watch: How to Tune Hyperparameters for Better Model Performance 🚀
Link to this sectionHiperparametreler 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 fonksiyonu içinde bir minimuma doğru hareket ederken her yinelemedeki adım boyutunu belirler. - Yığın Boyutu
batch: İleri geçişte eş zamanlı olarak işlenen görüntü sayısı. - Epoch 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 fonksiyonu türleri vb. gibi.
YOLO26'da kullanılan tüm artırma hiperparametrelerinin listesi için lütfen yapılandırma sayfasına bakın.
Link to this sectionGenetik 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.
Link to this sectionHiperparametre 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.
Link to this sectionOptimizasyon 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 —
Tunersınıfı,_mutateyöntemi ile mevcut hiperparametre kümesinden otomatik olarak yeni bir hiperparametre kümesi oluşturur. - Modeli eğit — Mutate edilmiş hiperparametreleri kullanarak eğitim yap, ardından seçtiğin metriklerle eğitim performansını değerlendir.
- Modeli değerlendir — mevcut hiperparametrelerin öncekilere göre iyileştirme sağlayıp sağlamadığını belirlemek için AP50, F1-score veya değerlendirme süreci üzerinden özel metrikler gibi metrikleri kullan.
- 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.
Link to this sectionYinelemeler ve Popülasyon Boyutu#
Dahili ayarlayıcı (use_ray=False) ile iterations, toplam sıralı deneme sayısını kontrol eder. Her deneme, bir hiperparametre yapılandırmasıyla bir model eğitir; örneğin iterations=40 ve epochs=50 ayarı, 40 adaylık ayrı bir popülasyonla tek bir 50 epoch'luk çalışma yerine, 50 epoch'luk 40 bağımsız eğitim çalışması planlar.
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.
For parallel trials or more advanced search strategies, set use_ray=True to use Ray Tune, which receives iterations as num_samples. See the Ray Tune integration guide for details.
Link to this sectionVarsayılan Arama Uzayı#
Aşağıdaki tablo, YOLO26'da hiperparametre ayarlama için varsayılan arama alanı parametrelerini listeler. Her parametre, bir (min, max) demeti ile tanımlanan belirli bir değer aralığına sahiptir.
| 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 |
Link to this sectionÖzel Arama Uzayı Örneği#
Bir arama uzayını nasıl tanımlayacağın ve model.tune() yöntemini kullanarak Tuner sınıfından yararlanıp YOLO26n modelini COCO8 üzerinde 30 epoch boyunca, AdamW optimize ediciyle, daha hızlı bir optimizasyon için son epoch dışındaki çizim, kontrol noktası kaydetme ve doğrulama işlemlerini atlayarak nasıl optimize edeceğin burada gösterilmiştir.
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,
)Link to this sectionKesintiye Uğramış Bir Hiperparametre Ayarlama Oturumuna Devam Etme#
You can resume an interrupted hyperparameter tuning session by passing resume=True. You can optionally pass the directory name used under runs/{task} to resume. Otherwise, it would resume the last interrupted session. You also need to provide all the previous training arguments including data, epochs, iterations and space.
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)Link to this sectionSonuç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:
Link to this sectionDosya Yapısı#
Sonuçların dizin yapısının nasıl görüneceği burada. train1/ gibi eğitim dizinleri, bireysel ayarlama yinelemelerini, yani bir hiperparametre seti ile eğitilmiş bir modeli içerir. tune/ dizini, tüm bireysel model eğitimlerinden elde edilen ayarlama 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.ptLink to this sectionDosya Açıklamaları#
Link to this sectionbest_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
Link to this sectiontune_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.
- Noktalı "düzleştirilmiş ortalama" çizgisi, yineleme bazlı üst düzey uygunluk değerleri üzerinde bir Gauss düzleştirmesi (
sigma=3) olarak hesaplanır.
Link to this sectiontune_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 güzel biçimlendirilmiş bir örnek aşağıdadır; 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 bazlı fitness değerlerinin aritmetik ortalamasıdır. Tek veri kümeli ayarlama için datasets sözlüğü, fitness değeri üst düzey fitness değerine eşit olan bir girdiye sahiptir. Tamamlanan yineleme başına bir JSON nesnesi kaydedilir. Gerçek save_dirs yolları mutlak yollardır; yukarıda okunabilirlik için kısaltılmıştır.
Link to this sectiontune_scatter_plots.png#
Bu dosya, tune_results.ndjson içinden oluşturulan ve farklı hiperparametreler ile performans metrikleri arasındaki ilişkileri görselleştirmenize yardımcı olan dağılım grafiklerini içerir. Varsayılan değeri 0 olan hiperparametreler (aşağıdaki degrees ve shear gibi), çarpımsal mutasyon faktörünün sıfıra yakın bir değerden genişletilecek çok az şeye sahip olması nedeniyle başlangıç tohumlarından yalnızca yavaşça evrilebilir.
- Format: PNG
- Kullanım: Keşifsel veri analizi
Link to this sectionweights/#
Bu dizin, hiperparametre ayarlama süreci sırasındaki son ve en iyi iterasyonlar için kaydedilmiş PyTorch modellerini içerir.
last.pt: last.pt, eğitimin son döneminden (epoch) gelen ağırlıklardır.best.pt: best.pt, en iyi uygunluk puanını elde eden iterasyon için kullanılan ağırlıklardır.
Bu sonuçları kullanarak, gelecekteki model eğitimleri ve analizleri için daha bilinçli kararlar verebilirsin.
Link to this sectionSonuç#
Hyperparameter tuning in Ultralytics YOLO is both simple to launch and powerful under the hood, combining BLX-α crossover with log-normal mutation in a genetic algorithm. Following the loop outlined in this guide lets you systematically tune your model for better performance, then reuse the resulting best_hyperparameters.yaml to initialize future training runs. To scale tuning across parallel trials and more advanced search algorithms, continue with the Ray Tune integration guide, or run managed jobs with configurable hyperparameters and real-time metrics tracking on Ultralytics Platform via cloud training.
Daha derin içgörüler için Tuner sınıfı kaynak kodunu incele. Soruların veya özellik isteklerin varsa, GitHub veya Discord üzerinden ulaş.
Link to this sectionSSS#
Link to this sectionHiperparametre ayarlama sırasında Ultralytics YOLO için öğrenme oranını nasıl optimize ederim?#
lr0 parametresi ile bir başlangıç değeri belirle — genel değerler 0.001 ile 0.01 arasındadır — ve en optimum sonucu bulmak için optimizasyonun bunu mutate etmesine izin ver. Bunu model.tune() yöntemiyle otomatize edebilirsin. Ö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 yapılandırma sayfasına göz at.
Link to this sectionYOLO26'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 evrim kılavuzuna göz at.
Link to this sectionUltralytics 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.
Optimizasyon süresini etkili bir şekilde yönetmek için, Hiperparametre Optimizasyonuna Hazırlık bölümünde ele alındığı gibi önceden net bir optimizasyon bütçesi belirle. Bu, kaynak tahsisi ile optimizasyon hedeflerini dengelemene yardımcı olur.
Link to this sectionYOLO'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ı.
- Hassasiyet ve Geri Çağırma (Precision and Recall): Modelin gerçek pozitifleri yanlış pozitiflere ve yanlış negatiflere karşı tanımlamadaki doğruluğunu gösteren bireysel metrikler.
Bu metrikler, modelinin performansının farklı yönlerini anlamana yardımcı olur. Kapsamlı bir genel bakış için Ultralytics YOLO performans metrikleri kılavuzuna başvur.
Link to this sectionYOLO26 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, ayarlama 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.
To use Ray Tune with YOLO26, simply set the use_ray=True parameter in your model.tune() method call. For more details and examples, check out the Ray Tune integration guide.