Ultralytics YOLO Hiperparametre Ayarlama Kılavuzu
Giriş
Hiperparametre ayarlama, yalnızca tek seferlik bir kurulum değil, doğruluk, kesinlik ve duyarlılık gibi makine öğrenimi modeli 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 fonksiyonu türleri gibi mimari ayrıntılara kadar çeşitlilik gösterebilir. Ultralytics Platform ayrıca yapılandırılabilir hiperparametreler ve gerçek zamanlı metrik takibi ile bulut eğitimi süreçlerini destekler.
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 sırasında sabit kalırlar. İşte Ultralytics YOLO'da yaygın olarak ayarlanan bazı hiperparametreler:
- Öğrenme Oranı
lr0: Kayıp fonksiyonunda minimuma doğru ilerlerken her yinelemedeki adım boyutunu belirler. - Yığın 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 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 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.
- Çaprazlama (Crossover): Her yineleme, şimdiye kadar görülen en yüksek uygunluğa sahip dokuz adede kadar yapılandırmadan genleri, uygunluk ağırlıklı ebeveyn seçimi ile BLX-α çaprazlaması kullanarak birleştirir.
- Mutasyon: Yeniden birleştirilen aday, daha sonra her bir 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 0,2'den 0,1'e doğrusal olarak azalır, böylece algoritma erken aşamalarda geniş kapsamlı keşif yapar ve yakınsadıkça hassaslaşır. 1. yinelemede çaprazlama yapılacak ebeveyn bulunmadığından, 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 hesaplama açısından yoğun olabilir.
İlgili Adımlar
Hiperparametreleri Başlat
Makul bir dizi başlangıç hiperparametresi ile başla. Bu, Ultralytics YOLO tarafından belirlenen varsayılan hiperparametreler olabileceği gibi, alan bilgin veya önceki deneyimlerine dayanan değerler de olabilir.
Hiperparametreleri Mutasyona Uğrat
Mevcut sete dayalı yeni bir hiperparametre seti oluşturmak için _mutate yöntemini kullan. Tuner sınıfı bu süreci otomatik olarak yönetir.
Modeli Eğit
Eğitim, mutasyona uğramış hiperparametre seti kullanılarak gerçekleştirilir. Eğitim performansı daha sonra seçtiğin metrikler kullanılarak değerlendirilir.
Modeli Değerlendir
Modelin performansını değerlendirmek için AP50, F1-skoru veya özel metrikler gibi ölçütler kullan. Değerlendirme süreci, mevcut hiperparametrelerin öncekilerden daha iyi olup olmadığını belirlemeye yardımcı olur.
Sonuçları Günlüğe Kaydet
Gelecekte başvurmak için hem performans metriklerini hem de ilgili hiperparametreleri günlüğe kaydetmen çok önemlidir. Ultralytics YOLO, bu sonuçları otomatik olarak NDJSON formatında kaydeder.
Tekrarla
Süreç, belirlenen yineleme sayısına ulaşılana veya performans metriği tatmin edici olana kadar tekrarlanır. Her yineleme, önceki çalışmalardan elde edilen bilgiler üzerine inşa edilir.
Varsayılan Arama Uzayı Açıklaması
Aşağıdaki tablo, YOLO26'daki hiperparametre ayarlama için varsayılan arama uzayı parametrelerini listeler. Her parametre, (min, max) demeti ile tanımlanan belirli bir değer aralığına sahiptir.
| Parametre | Tür | Değer Aralığı | Açıklama |
|---|---|---|---|
lr0 | float | (1e-5, 1e-2) | Eğitim başlangıcındaki ilk öğrenme oranı. Düşük değerler daha kararlı bir eğitim sağlar ancak yakınsama daha yavaş olur |
lrf | float | (0.01, 1.0) | lr0'ın bir fraksiyonu olarak nihai öğrenme oranı faktörü. Eğitim sırasında öğrenme oranının ne kadar düşeceğini 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 düzenlileştirme faktörü. Daha büyük değerler daha güçlü düzenlileştirme sağlar |
warmup_epochs | float | (0.0, 5.0) | Doğrusal öğrenme oranı ısınması (warmup) için dönem 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 fonksiyonunda sınırlayıcı kutu (bbox) kayıp ağırlığı. Kutu regresyonu ile sınıflandırmayı dengeler |
cls | float | (0.1, 4.0) | Toplam kayıp fonksiyonunda 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 üzerindeki ağırlığı artırır |
dfl | float | (0.4, 12.0) | Toplam kayıp fonksiyonunda 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 renk tonu (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 döndürme artırması. Modelin nesne yönelimine karşı değişmez hale gelmesine yardımcı olur |
translate | float | (0.0, 0.9) | Görüntü boyutunun bir fraksiyonu olarak maksimum öteleme artırması. Nesne konumuna karşı dayanıklılığı artırır |
scale | float | (0.0, 0.95) | Rastgele ölçeklendirme artırma aralığı. Modelin nesneleri farklı boyutlarda algılamasına yardımcı olur |
shear | float | (0.0, 10.0) | Derece cinsinden maksimum eğme (shear) artırması. 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ü yansıtma olasılığı. Havadan çekilen/tepeden görünüm görüntüler için kullanışlıdır |
fliplr | float | (0.0, 1.0) | Yatay görüntü yansıtma 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 konusunda 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) | Copy-paste artırma kullanma olasılığı. Örnek bölümleme (instance segmentation) performansını iyileştirmeye yardımcı olur |
close_mosaic | float | (0.0, 10.0) | Tamamlanmadan önce eğitimi dengelemek için son N dönemde mozaiği devre dışı bırakır |
Özel Arama Uzayı Örneği
Here's how to define a search space and use the model.tune() method to utilize the Tuner class for hyperparameter tuning of YOLO26n on COCO8 for 30 epochs with an AdamW optimizer and skipping plotting, checkpointing and validation other than on final epoch for faster Tuning.
Bu örnek yalnızca 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 elde etmek için ayarlama, karşılaştırılabilir veri setleri, dönemler ve artırmalar dahil olmak üzere tam eğitimdekine benzer ayarlar altında gerçekleştirilmelidir. Hızlı ayarlama, parametreleri daha hızlı yakınsamaya veya kısa vadeli doğrulama kazanımlarına karşı önyargılı hale getirebilir, bu da genel geçerliliği bozabilir.
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ğrayan Bir Hiperparametre Ayarlama Oturumunu Devam Ettirme
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)Results
Hiperparametre ayarlama sürecini başarıyla tamamladıktan sonra, ayarlama sonuçlarını içeren birkaç dosya ve dizin elde edeceksin. Aşağıda her biri açıklanmıştır:
Dosya Yapısı
Sonuçların dizin yapısı şu şekilde görünecektir. train1/ gibi eğitim dizinleri, bireysel ayarlama yinelemelerini, yani bir hiperparametre seti ile eğitilmiş bir modeli içerir. tune/ dizini ise 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.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.
-
Biçim: 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, fitness değerinin yineleme sayısına karşı değişimini gösteren bir grafiktir. Genetik algoritmanın zaman içinde nasıl performans gösterdiğini görselleştirmenize yardımcı olur.
- Biçim: 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ıştırma yineleme başına bir nokta gösterir ve çok veri kümeli bir çalıştırma, yineleme başına veri kümesi başına bir nokta gösterir.
- Noktalı bir "düzleştirilmiş ortalama" çizgisi, yineleme başına en üst düzey fitness değerleri üzerinde Gauss yumuşatma (
sigma=3) olarak hesaplanır.
tune_results.ndjson
Her ayarlama yinelemesinin ayrıntılı sonuçlarını içeren bir NDJSON dosyası. Her satır, toplam fitness, ayarlanmış hiperparametreler ve veri kümesi başına metrikleri içeren bir JSON nesnesidir. Tek veri kümeli ve çok veri kümeli ayarlamalar aynı dosya biçimini kullanır.
- Biçim: NDJSON
- Kullanım: Yineleme başına sonuç takibi.
- Örnek:
Okunabilirlik için aşağıda güzel biçimlendirilmiş (pretty-printed) bir örnek gösterilmiştir. Asıl .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"
}
}En üst düzey fitness, veri kümesi başına fitness değerlerinin aritmetik ortalamasıdır. Tek veri kümeli ayarlama için datasets sözlüğü, fitness değeri en üst düzey fitness değerine eşit olan bir girdiye sahiptir. Tamamlanan her yineleme için bir JSON nesnesi kaydedilir. Asıl save_dirs yolları mutlak yollardır; yukarıda okunabilirlik için kısaltılmışlardır.
tune_scatter_plots.png
Bu dosya, tune_results.ndjson dosyasından oluşturulan, farklı hiperparametreler ile performans metrikleri arasındaki ilişkileri görselleştirmenize yardımcı olan dağılım grafikleri içerir. Varsayılan değeri 0 olan hiperparametreler (örneğin, aşağıdaki degrees ve shear), çarpanlı mutasyon faktörü sıfıra yakın bir değerden genişleyecek çok az şeye sahip olduğundan, başlangıç değerlerinden yalnızca yavaşça evrilebilir.
- Biçim: PNG
- Kullanım: Keşifsel veri analizi
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 döneminden (epoch) kalan ağırlıklardır.best.pt: best.pt, en iyi fitness puanına ulaşan yineleme için olan ağırlıklardır.
Bu sonuçları kullanarak, gelecekteki model eğitimlerin ve analizlerin için daha bilinçli kararlar alabilirsin. Modelinin ne kadar iyi performans gösterdiğini ve onu daha nasıl geliştirebileceğini anlamak için bu artefaktlara başvurmaktan çekinme.
Sonuç
Ultralytics YOLO'daki hiperparametre ayarlama süreci, BLX-α çaprazlamasını log-normal mutasyonla birleştiren genetik algoritma tabanlı yaklaşımı sayesinde basitleştirilmiş ancak güçlüdür. Bu kılavuzda belirtilen adımları izlemek, daha iyi performans elde etmek için modelini sistematik olarak ayarlamana yardımcı olacaktır.
Daha Fazla Okuma
- Vikipedi'de Hiperparametre Optimizasyonu
- YOLOv5 Hiperparametre Evrimi Kılavuzu
- Ray Tune ve YOLO26 ile Verimli Hiperparametre Ayarlama
Daha derinlemesine içgörüler için Tuner sınıfı kaynak kodunu ve beraberindeki belgeleri inceleyebilirsin. Herhangi bir sorun, özellik isteğin olursa veya daha fazla yardıma ihtiyacın duyarsan, GitHub veya Discord üzerinden bize ulaşmaktan çekinme.
SSS
Hiperparametre ayarlama sırasında Ultralytics YOLO için öğrenme oranını nasıl optimize edebilirim?
Ultralytics YOLO için öğrenme oranını optimize etmek amacıyla, lr0 parametresini kullanarak bir başlangıç öğrenme oranı ayarlayarak başla. Yaygın değerler 0.001 ile 0.01 arasında değişir. Hiperparametre ayarlama sürecinde, bu değer en uygun ayarı bulmak için mutasyona uğratılacaktır. Bu süreci otomatikleştirmek için model.tune() yöntemini kullanabilirsin. Ö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.
YOLO26'da hiperparametre ayarlama için genetik algoritma kullanmanın avantajları nelerdir?
Ultralytics YOLO26'daki genetik algoritmalar, hiperparametre alanını keşfetmek için sağlam bir yöntem sunar ve bu da oldukça optimize edilmiş bir model performansına yol açar. Temel avantajlar şunlardır:
- Verimli Arama: BLX-α çaprazlaması, en yüksek fitness değerine sahip ebeveynlerden gelen genleri birleştirirken, log-normal mutasyon yeni adayları keşfetmek için sonucu değiştirir.
- 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 fitness 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.
Ultralytics YOLO için hiperparametre ayarlama süreci ne kadar sürer?
Ultralytics YOLO ile hiperparametre ayarlama için gereken süre, veri kümesinin boyutu, model mimarisinin karmaşıklığı, yineleme sayısı ve mevcut hesaplama kaynakları gibi çeşitli faktörlere büyük ölçüde bağlıdır. Örneğin, COCO8 gibi bir veri kümesinde YOLO26n'yi 30 dönem (epoch) boyunca ayarlamak, donanıma bağlı olarak birkaç saatten günlere kadar sürebilir.
Ayarlama süresini etkin bir şekilde yönetmek için önceden net bir ayarlama bütçesi tanımla (dahili bölüm bağlantısı). 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 (recall) harmonik ortalaması.
- Hassasiyet ve Geri Çağırma (Precision and Recall): Modelin doğru pozitifleri, yanlış pozitiflere ve yanlış negatiflere karşı belirlemedeki 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.
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, 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.