Ray Tune ve YOLO11 ile Verimli Hiperparametre Ayarlama
Hiperparametre ayarlama, optimum hiperparametre kümesini keşfederek en yüksek model performansına ulaşmada hayati öneme sahiptir. Bu, farklı hiperparametrelerle denemeler yapmayı ve her denemenin performansını değerlendirmeyi içerir.
Ultralytics YOLO11 ve Ray Tune ile İyileştirmeyi Hızlandırın
Ultralytics YOLO11, YOLO11 model hiperparametrelerinin optimizasyonunu kolaylaştırarak hiperparametre ayarlaması için Ray Tune'u içerir. Ray Tune ile ayarlama sürecini hızlandırmak için gelişmiş arama stratejilerini, paralelliği ve erken durdurmayı kullanabilirsiniz.
Ray Tune
Ray Tune, verimlilik ve esneklik için tasarlanmış bir hiperparametre ayarlama kütüphanesidir. Çeşitli arama stratejilerini, paralelliği ve erken durdurma stratejilerini destekler ve Ultralytics YOLO11 dahil olmak üzere popüler makine öğrenimi çerçeveleriyle sorunsuz bir şekilde entegre olur.
Weights & Biases ile Entegrasyon
YOLO11 ayrıca, ayarlama sürecini izlemek için isteğe bağlı olarak Weights & Biases ile entegrasyona olanak tanır.
Kurulum
Gerekli paketleri kurmak için şunu çalıştırın:
Kurulum
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"
# Optionally install W&B for logging
pip install wandb
Kullanım
Kullanım
from ultralytics import YOLO
# Load a YOLO11n model
model = YOLO("yolo11n.pt")
# Start tuning hyperparameters for YOLO11n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)
tune()
Yöntem Parametreleri
tune()
YOLO11'deki yöntem, Ray Tune ile hiperparametre ayarlaması için kullanımı kolay bir arayüz sağlar. Ayarlama sürecini özelleştirmenize olanak tanıyan çeşitli argümanları kabul eder. Aşağıda her bir parametrenin ayrıntılı açıklaması bulunmaktadır:
Parametre | Tür | Açıklama | Varsayılan Değer |
---|---|---|---|
data |
str |
Tuner'ı çalıştırmak için veri kümesi yapılandırma dosyası (YAML formatında). Bu dosya, eğitim ve doğrulama verileri yollarının yanı sıra veri kümesine özgü diğer ayarları da belirtmelidir. | |
space |
dict, optional |
Ray Tune için hiperparametre arama uzayını tanımlayan bir sözlük. Her anahtar bir hiperparametre adına karşılık gelir ve değer, ayarlama sırasında keşfedilecek değer aralığını belirtir. Sağlanmazsa, YOLO11 çeşitli hiperparametrelerle varsayılan bir arama uzayı kullanır. | |
grace_period |
int, optional |
Ray Tune'daki ASHA zamanlayıcısı için epoch cinsinden tolerans süresi. Zamanlayıcı, bu epoch sayısından önce hiçbir denemeyi sonlandırmaz ve modelin erken durdurma konusunda bir karar vermeden önce minimum düzeyde eğitilmesine olanak tanır. | 10 |
gpu_per_trial |
int, optional |
Ayarlama 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. Sağlanmazsa, ayarlayıcı mevcut tüm GPU'ları kullanır. | None |
iterations |
int, optional |
Ayarlama sırasında çalıştırılacak maksimum deneme sayısı. Bu parametre, test edilen toplam hiperparametre kombinasyonu sayısını kontrol etmeye yardımcı olarak ayarlama işleminin süresiz olarak çalışmamasını sağlar. | 10 |
**train_args |
dict, optional |
'a iletilecek ek argümanlar train() metodu ayarlama sırasında. Bu argümanlar, eğitim epok sayısı gibi ayarları içerebilir, yığın boyutu, ve diğer eğitime özgü yapılandırmalar. |
{} |
Bu parametreleri özelleştirerek, hiperparametre optimizasyon sürecini özel ihtiyaçlarınıza ve mevcut hesaplama kaynaklarınıza uyacak şekilde ince ayar yapabilirsiniz.
Varsayılan Arama Alanı Açıklaması
Aşağıdaki tabloda, Ray Tune ile YOLO11'de hiperparametre ayarlama için varsayılan arama alanı parametreleri listelenmektedir. Her parametrenin, tarafından tanımlanan belirli bir değer aralığı vardır. tune.uniform()
.
Parametre | Aralık | Açıklama |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
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. |
lrf |
tune.uniform(0.01, 1.0) |
Eğitim sonunda öğrenme oranının ne kadar azalacağını belirleyen nihai öğrenme oranı faktörü. |
momentum |
tune.uniform(0.6, 0.98) |
Eğitimi hızlandırmaya ve yerel minimumların üstesinden gelmeye yardımcı olan optimize edici için momentum faktörü. |
weight_decay |
tune.uniform(0.0, 0.001) |
Büyük ağırlık değerlerini cezalandırarak aşırı öğrenmeyi önleyen düzenlileştirme parametresi. |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Erken eğitimi dengelemek için kademeli olarak artan öğrenme oranına sahip dönem sayısı. |
warmup_momentum |
tune.uniform(0.0, 0.95) |
Isınma periyodu boyunca kademeli olarak artan başlangıç momentum değeri. |
box |
tune.uniform(0.02, 0.2) |
Modeldeki yerelleştirme doğruluğunu dengeleyen sınırlayıcı kutu kayıp bileşeninin ağırlığı. |
cls |
tune.uniform(0.2, 4.0) |
Modeldeki sınıflandırma tahmin doğruluğunu dengeleyen sınıflandırma kayıp bileşeninin ağırlığı. |
hsv_h |
tune.uniform(0.0, 0.1) |
Modelin genelleştirilmesine yardımcı olmak için renk değişkenliği sağlayan ton artırma aralığı. |
hsv_s |
tune.uniform(0.0, 0.9) |
Sağlamlığı artırmak için renk yoğunluğunu değiştiren doygunluk artırma aralığı. |
hsv_v |
tune.uniform(0.0, 0.9) |
Modelin çeşitli aydınlatma koşullarında performans göstermesine yardımcı olan değer (parlaklık) artırma aralığı. |
degrees |
tune.uniform(0.0, 45.0) |
Döndürülmüş nesnelerin tanınmasını iyileştiren, derece cinsinden döndürme artırma aralığı. |
translate |
tune.uniform(0.0, 0.9) |
Görüntüleri yatay ve dikey olarak kaydıran çeviri artırma aralığı. |
scale |
tune.uniform(0.0, 0.9) |
Farklı mesafelerdeki nesneleri simüle eden ölçekleme artırma aralığı. |
shear |
tune.uniform(0.0, 10.0) |
Perspektif kaymalarını simüle eden, derece cinsinden kırpma artırma aralığı. |
perspective |
tune.uniform(0.0, 0.001) |
3B bakış açısı değişikliklerini simüle eden perspektif artırma aralığı. |
flipud |
tune.uniform(0.0, 1.0) |
Veri kümesi çeşitliliğini artıran dikey çevirme artırma olasılığı. |
fliplr |
tune.uniform(0.0, 1.0) |
Simetrik nesneler için kullanışlı olan yatay çevirme artırma olasılığı. |
mosaic |
tune.uniform(0.0, 1.0) |
Dört görüntüyü tek bir eğitim örneğinde birleştiren mozaik artırma olasılığı. |
mixup |
tune.uniform(0.0, 1.0) |
İki görüntüyü ve etiketlerini birlikte harmanlayan Mixup artırma olasılığı. |
cutmix |
tune.uniform(0.0, 1.0) |
Kısmi olarak tıkanmış nesnelerin tespitini iyileştirirken görüntü bölgelerini birleştiren, yerel özellikleri koruyan Cutmix artırma olasılığı. |
copy_paste |
tune.uniform(0.0, 1.0) |
Örnek çeşitliliğini artırmak için nesneleri görüntüler arasında aktaran kopyala-yapıştır artırma olasılığı. |
Özel Arama Alanı Örneği
Bu örnekte, Ray Tune ve YOLO11 ile hiperparametre ayarlaması için özel bir arama alanı nasıl kullanılacağını gösteriyoruz. Özel bir arama alanı sağlayarak, ayarlama sürecini ilgilenilen belirli hiperparametrelere odaklayabilirsiniz.
Kullanım
from ray import tune
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo11n.pt")
# Run Ray Tune on the model
result_grid = model.tune(
data="coco8.yaml",
space={"lr0": tune.uniform(1e-5, 1e-1)},
epochs=50,
use_ray=True,
)
Yukarıdaki kod parçasında, "yolo11n.pt" önceden eğitilmiş ağırlıklarıyla bir YOLO modeli oluşturuyoruz. Ardından, tune()
"coco8.yaml" ile veri kümesi yapılandırmasını belirten yöntem. Başlangıç öğrenme oranı için özel bir arama alanı sağlıyoruz lr0
"lr0" anahtarına ve değerine sahip bir sözlük kullanarak tune.uniform(1e-5, 1e-1)
. Son olarak, dönem sayısı gibi ek eğitim argümanlarını doğrudan ayarlama yöntemine şu şekilde iletiyoruz: epochs=50
.
Ray Tune ile Kesintiye Uğramış Bir Hiperparametre Ayarlama Oturumuna Devam Etme
Kesintiye uğramış bir Ray Tune oturumuna şunu ileterek devam edebilirsiniz: resume=True
. İsteğe bağlı olarak dizini geçirebilirsiniz name
Ray Tune tarafından kullanılan runs/{task}
devam etmek için. Aksi takdirde, son kesintiye uğrayan oturuma devam eder. Şunu sağlamanıza gerek yoktur: iterations
ve space
ancak eğitim argümanlarının geri kalanını da tekrar sağlamanız gerekir, buna şunlar da dahildir: data
ve epochs
.
Kullanarak resume=True
ile model.tune()
from ultralytics import YOLO
# Define a YOLO model
model = YOLO("yolo11n.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)
Ray 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 isteyebilirsiniz. Bu kılavuz, bu sonuçları işlemek ve analiz etmek için yaygın iş akışlarında size yol gösterecektir.
Tune Deney Sonuçlarını Bir Dizinden Yükleme
Ayarlama deneyi çalıştırıldıktan sonra tuner.fit()
, sonuçları bir dizinden yükleyebilirsiniz. Bu, özellikle ilk eğitim komut dosyası çıktıktan sonra analizi gerçekleştiriyorsanız kullanışlı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()
Temel Deney Düzeyi Analizi
Denemelerin nasıl performans gösterdiğine dair bir genel bakış edinin. Denemeler sırasında herhangi bir hata olup olmadığını hızlıca kontrol edebilirsiniz.
if result_grid.errors:
print("One or more trials failed!")
else:
print("No errors!")
Temel Deneme Düzeyi Analizi
Bireysel deneme hiperparametre yapılandırmalarına ve bildirilen son metriklere erişin.
for i, result in enumerate(result_grid):
print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")
Bir Deneme İçin Raporlanan Metriklerin Tüm Geçmişini Çizme
Metriklerin zaman içinde nasıl geliştiğini görmek için her deneme için bildirilen metriklerin geçmişini çizebilirsiniz.
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()
Özet
Bu belgede, Ultralytics kullanarak Ray Tune ile çalıştırılan deneylerin sonuçlarını analiz etmek için yaygın iş akışlarını ele aldık. Temel adımlar, deney sonuçlarını bir dizinden yüklemek, temel deney düzeyi ve deneme düzeyi analizi yapmak ve metrikleri çizmek.
Hiperparametre ayarlama deneylerinizden en iyi şekilde yararlanmak için Ray Tune'un Sonuçları Analiz Et belgeleri sayfasına bakarak daha fazlasını keşfedin.
SSS
Ray Tune kullanarak YOLO11 modelimin hiperparametrelerini nasıl ayarlarım?
Ray Tune'u kullanarak Ultralytics YOLO11 modelinizin hiperparametrelerini ayarlamak için şu adımları izleyin:
-
Gerekli paketleri kurun:
pip install -U ultralytics "ray[tune]" pip install wandb # optional for logging
-
YOLO11 modelinizi yükleyin ve ayarlamaya başlayın:
from ultralytics import YOLO # Load a YOLO11 model model = YOLO("yolo11n.pt") # Start tuning with the COCO8 dataset result_grid = model.tune(data="coco8.yaml", use_ray=True)
Bu, modelinizin hiperparametrelerini verimli bir şekilde optimize etmek için Ray Tune'un gelişmiş arama stratejilerini ve paralelliğini kullanır. Daha fazla bilgi için Ray Tune belgelerine göz atın.
Ray Tune ile YOLO11 ayarlaması için varsayılan hiperparametreler nelerdir?
Ultralytics YOLO11, Ray Tune ile ayarlama için aşağıdaki varsayılan hiperparametreleri kullanır:
Parametre | Değer Aralığı | Açıklama |
---|---|---|
lr0 |
tune.uniform(1e-5, 1e-1) |
Başlangıç öğrenme oranı |
lrf |
tune.uniform(0.01, 1.0) |
Son öğrenme oranı faktörü |
momentum |
tune.uniform(0.6, 0.98) |
Momentum |
weight_decay |
tune.uniform(0.0, 0.001) |
Ağırlık azalması |
warmup_epochs |
tune.uniform(0.0, 5.0) |
Isınma epoch'ları |
box |
tune.uniform(0.02, 0.2) |
Kutu kayıp ağırlığı |
cls |
tune.uniform(0.2, 4.0) |
Sınıf kayıp ağırlığı |
hsv_h |
tune.uniform(0.0, 0.1) |
Renk tonu artırma aralığı |
translate |
tune.uniform(0.0, 0.9) |
Öteleme artırma aralığı |
Bu hiperparametreler, özel ihtiyaçlarınıza uyacak şekilde özelleştirilebilir. Eksiksiz bir liste ve daha fazla ayrıntı için Hiperparametre Ayarlama kılavuzuna bakın.
Weights & Biases'ı YOLO11 model ayarlamalarımla nasıl entegre edebilirim?
Weights & Biases'ı (W&B) Ultralytics YOLO11 ayarlama sürecinizle entegre etmek için:
-
W&B'yi kurun:
pip install wandb
-
Ayarlama betiğinizi değiştirin:
import wandb from ultralytics import YOLO wandb.init(project="YOLO-Tuning", entity="your-entity") # Load YOLO model model = YOLO("yolo11n.pt") # Tune hyperparameters result_grid = model.tune(data="coco8.yaml", use_ray=True)
Bu kurulum, ayarlama sürecini izlemenize, hiperparametre yapılandırmalarını takip etmenize ve sonuçları W&B'de görselleştirmenize olanak tanır.
YOLO11 ile hiperparametre optimizasyonu için neden Ray Tune kullanmalıyım?
Ray Tune, hiperparametre optimizasyonu için çok sayıda avantaj sunar:
- Gelişmiş Arama Stratejileri: Verimli parametre araması için Bayes Optimizasyonu ve HyperOpt gibi algoritmalar kullanır.
- Paralellik: Birden çok denemenin paralel yürütülmesini destekler, bu da ayarlama sürecini önemli ölçüde hızlandırır.
- Erken Durdurma: Performansı düşük denemeleri erken sonlandırmak ve böylece hesaplama kaynaklarından tasarruf etmek için ASHA gibi stratejiler kullanır.
Ray Tune, Ultralytics YOLO11 ile sorunsuz bir şekilde entegre olarak, 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ın.
YOLO11 hiperparametre ayarlaması için özel bir arama alanı nasıl tanımlayabilirim?
Ray Tune ile YOLO11 hiperparametre ayarlamanız için özel bir arama alanı tanımlamak için:
from ray import tune
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)
Bu, ayarlama işlemi 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 bakın.