Ultralytics YOLO ile Model Eğitimi

Ultralytics YOLO ecosystem and integrations

Giriş

Bir derin öğrenme modelini eğitmek, ona veri beslemeyi ve doğru tahminler yapabilmesi için parametrelerini ayarlamayı içerir. Ultralytics YOLO26'daki Train modu, modern donanım yeteneklerinden tam olarak yararlanarak nesne algılama modellerinin etkili ve verimli bir şekilde eğitilmesi için tasarlanmıştır. Bu kılavuz, YOLO26'nın güçlü özellikler setini kullanarak kendi modellerini eğitmeye başlamak için ihtiyaç duyduğun tüm detayları kapsamayı amaçlamaktadır.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

Neden Eğitim İçin Ultralytics YOLO'yu Seçmelisin?

İşte YOLO26'nın Train modunu tercih etmek için bazı ikna edici nedenler:

  • Verimlilik: İster tek GPU'lu bir kurulumda ol, ister birden fazla GPU'da ölçekleme yapıyor ol, donanımından en iyi şekilde yararlan.
  • Çok Yönlülük: COCO, VOC ve ImageNet gibi hazır veri setlerine ek olarak özel veri setlerinde de eğitim yap.
  • Kullanıcı Dostu: Basit ama güçlü CLI ve Python arayüzleri ile anlaşılır bir eğitim deneyimi.
  • Hiperparametre Esnekliği: Model performansını ince ayarlarla optimize etmek için geniş bir özelleştirilebilir hiperparametre yelpazesi. Daha derin bir kontrol için eğiticiyi (trainer) bizzat özelleştirebilirsin.
  • Bulut Eğitimi: Gerçek zamanlı metrikler ve otomatik kontrol noktası (checkpointing) ile Ultralytics Platform üzerinden bulut GPU'larında eğitim yap.

Train Modunun Temel Özellikleri

Aşağıdakiler, YOLO26'nın Train modunun bazı dikkate değer özellikleridir:

  • Otomatik Veri Seti İndirme: COCO, VOC ve ImageNet gibi standart veri setleri ilk kullanımda otomatik olarak indirilir.
  • Çoklu GPU Desteği: Eğitim çabalarını süreci hızlandırmak için birden fazla GPU üzerinde sorunsuz bir şekilde ölçeklendir.
  • Hiperparametre Yapılandırması: YAML yapılandırma dosyaları veya CLI argümanları aracılığıyla hiperparametreleri değiştirme seçeneği.
  • Görselleştirme ve İzleme: Daha iyi içgörüler için eğitim metriklerinin gerçek zamanlı takibi ve öğrenme sürecinin görselleştirilmesi.
İpucu
  • COCO, VOC, ImageNet ve diğer birçok YOLO26 veri seti ilk kullanımda otomatik olarak indirilir, örneğin: yolo train data=coco.yaml

Kullanım Örnekleri

YOLO26n'yi COCO8 veri setinde 640 görüntü boyutunda 100 epok boyunca eğit. Eğitim cihazı device argümanı kullanılarak belirlenebilir. Hiçbir argüman geçilmezse, mevcut olduğunda GPU device=0 kullanılacaktır; aksi takdirde device='cpu' kullanılacaktır. Eğitim argümanlarının tam listesi için aşağıdaki Argümanlar bölümüne bak.

Windows Çoklu İşlem (Multi-Processing) Hatası

Windows'ta, eğitimi bir betik olarak başlatırken bir RuntimeError alabilirsin. Bunu çözmek için eğitim kodundan önce bir if __name__ == "__main__": bloğu ekle.

Tek GPU ve CPU Eğitim Örneği

Cihaz otomatik olarak belirlenir. Bir GPU mevcutsa, o kullanılacaktır (varsayılan CUDA cihazı 0); aksi takdirde eğitim CPU üzerinde başlayacaktır.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Çoklu GPU Eğitimi

Çoklu GPU eğitimi, eğitim yükünü birden fazla GPU'ya dağıtarak mevcut donanım kaynaklarının daha verimli kullanılmasını sağlar. Bu özellik hem Python API hem de komut satırı arayüzü aracılığıyla kullanılabilir. Çoklu GPU eğitimini etkinleştirmek için kullanmak istediğin GPU cihaz kimliklerini (ID) belirt.

Çoklu GPU Eğitim Örneği

2 GPU ile eğitmek için, 0 ve 1 numaralı CUDA cihazları şu komutları kullanır. Gerektiğinde ek GPU'lara genişlet.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Özel Kod ile Çoklu GPU Eğitimi

Birden fazla cihaz belirttiğinde (örneğin device=[0, 1]), Ultralytics dahili olarak yeni bir eğitici örneği oluşturur ve arka planda torch.distributed.run komutunu çalıştırır. Bu, standart CLI kullanımı ve değiştirilmemiş Python betikleri için sorunsuz çalışır.

Ancak, betiğin özel bir eğitici, doğrulayıcı, veri seti veya artırma (augmentation) hattı gibi özel bileşenler içeriyorsa, bu nesneler otomatik olarak serileştirilemez ve DDP alt süreçlerine aktarılamaz. Bu durumda, betiğini doğrudan torch.distributed.run ile başlatmalısın:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

Boştaki GPU Eğitimi

Boştaki GPU Eğitimi, çoklu GPU sistemlerinde en az kullanılan GPU'ların otomatik olarak seçilmesini sağlayarak manuel GPU seçimi olmadan kaynak kullanımını optimize eder. Bu özellik, kullanım metriklerine ve VRAM kullanılabilirliğine göre mevcut GPU'ları tanımlar.

Boştaki GPU Eğitimi Örneği

Eğitim için en boşta olan GPU('ları) otomatik olarak seçmek ve kullanmak için -1 cihaz parametresini kullan. Bu, özellikle paylaşımlı bilgi işlem ortamlarında veya birden fazla kullanıcısı olan sunucularda yararlıdır.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

Otomatik seçim algoritması şu GPU'lara öncelik verir:

  1. Mevcut kullanım yüzdeleri daha düşük olanlar
  2. Daha yüksek kullanılabilir belleği (boş VRAM) olanlar
  3. Sıcaklığı ve güç tüketimi daha düşük olanlar

Bu özellik, paylaşımlı bilgi işlem ortamlarında veya farklı modellerde birden fazla eğitim işi çalıştırırken özellikle değerlidir. Değişen sistem koşullarına otomatik olarak uyum sağlar ve manuel müdahale olmaksızın en uygun kaynak tahsisini garanti eder.

Apple Silicon MPS Eğitimi

Ultralytics YOLO modellerine entegre edilen Apple silikon çip desteği ile, artık modellerini güçlü Metal Performance Shaders (MPS) çerçevesinden yararlanan cihazlarda eğitmen mümkün. MPS, Apple'ın özel silikonu üzerinde hesaplama ve görüntü işleme görevlerini yürütmek için yüksek performanslı bir yol sunar.

Apple silikon çipleri üzerinde eğitimi etkinleştirmek için, eğitim sürecini başlatırken cihazın olarak 'mps' belirtmelisin. Aşağıda bunu Python'da ve komut satırı üzerinden nasıl yapabileceğinle ilgili bir örnek yer almaktadır:

MPS Eğitim Örneği
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Apple silikon çiplerinin hesaplama gücünden yararlanırken, bu eğitim görevlerinin daha verimli işlenmesini sağlar. Daha ayrıntılı rehberlik ve gelişmiş yapılandırma seçenekleri için lütfen PyTorch MPS belgelerine başvur.

Kesintiye Uğrayan Eğitimlerin Devam Ettirilmesi

Derin öğrenme modelleriyle çalışırken daha önce kaydedilmiş bir durumdan eğitimi devam ettirmek çok önemli bir özelliktir. Bu, eğitim sürecinin beklenmedik şekilde kesintiye uğradığı veya bir modeli yeni verilerle veya daha fazla epok için eğitmek istediğin gibi çeşitli durumlarda kullanışlı olabilir.

Eğitim devam ettirildiğinde, Ultralytics YOLO ağırlıkları son kaydedilen modelden yükler ve ayrıca optimize edici durumunu, öğrenme oranı zamanlayıcısını ve epok numarasını geri yükler. Bu, eğitim sürecine kaldığı yerden sorunsuz bir şekilde devam etmeni sağlar.

You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.

Aşağıda, kesintiye uğrayan bir eğitimin Python'da ve komut satırı üzerinden nasıl devam ettirileceğine dair bir örnek yer almaktadır:

Eğitim Devam Ettirme Örneği
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

resume=True ayarlandığında, train fonksiyonu 'path/to/last.pt' dosyasında saklanan durumu kullanarak eğitime kaldığı yerden devam edecektir. Eğer resume argümanı atlanırsa veya False olarak ayarlanırsa, train fonksiyonu yeni bir eğitim oturumu başlatacaktır.

Kontrol noktalarının varsayılan olarak her epok sonunda veya save_period argümanı kullanılarak sabit aralıklarla kaydedildiğini unutma, bu nedenle bir eğitim çalıştırmasını devam ettirmek için en az 1 epoku tamamlaman gerekir.

Eğitim Ayarları

YOLO modelleri için eğitim ayarları, eğitim süreci sırasında kullanılan çeşitli hiperparametreleri ve yapılandırmaları kapsar. Bu ayarlar modelin performansını, hızını ve doğruluğunu etkiler. Temel eğitim ayarları arasında batch size, öğrenme oranı, momentum ve weight decay bulunur. Ayrıca, optimize edici, kayıp fonksiyonu seçimi ve eğitim veri seti bileşimi eğitim sürecini etkileyebilir. Bu ayarlarla dikkatli bir şekilde ince ayar ve deneme yapmak, performansı optimize etmek için çok önemlidir.

MuSGD Optimize Edici

YOLO26'da, MuSGD standart SGD güncellemelerini Muon tarzı ortogonalleştirilmiş güncellemelerle birleştiren hibrit bir optimize edicidir.

Ortogonalleştirilmiş Muon güncellemelerinin optimizasyonu stabilize etmeye yardımcı olabileceği daha uzun YOLO26 eğitimleri ve daha büyük veri setleri için önerilir.

Yalnızca param.ndim >= 2 olan parametreler (evrişimsel ağırlıklar gibi) SGD ile birlikte Muon tarzı güncellemeyi alırken, batch normalization katmanları ve bias terimleri gibi daha düşük boyutlu parametreler standart SGD'de kalır.

optimizer=auto kullanıldığında, Ultralytics daha uzun eğitimler için (genellikle iterasyonlar > 10000 olduğunda) otomatik olarak MuSGD'yi seçer. Daha kısa çalıştırmalar için, eğitici AdamW'ye döner.

Örnek kullanım:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

ultralytics/optim/muon.py dosyasındaki uygulamaya ve BaseTrainer.build_optimizer içindeki optimize edici otomatik seçim mantığına bak.

ArgümanTürVarsayılanAçıklama
modelstrNoneEğitim için model dosyasını belirtir. Bir .pt önceden eğitilmiş modeline veya bir .yaml yapılandırma dosyasına giden bir yolu kabul eder. Model yapısını tanımlamak veya ağırlıkları başlatmak için gereklidir.
datastrNoneVeri kümesi yapılandırma dosyasına giden yol (örneğin, coco8.yaml). Bu dosya, eğitim ve doğrulama verilerine giden yollar, sınıf adları ve sınıf sayısı dahil olmak üzere veri kümesine özgü parametreleri içerir.
epochsint100Toplam eğitim dönemi sayısı. Her dönem, tüm veri kümesi üzerinde tam bir geçişi temsil eder. Bu değeri ayarlamak eğitim süresini ve model performansını etkileyebilir.
timefloatNoneSaat cinsinden maksimum eğitim süresi. Ayarlanırsa, bu epochs argümanını geçersiz kılar ve eğitimin belirtilen süreden sonra otomatik olarak durmasını sağlar. Zaman kısıtlamalı eğitim senaryoları için yararlıdır.
patienceint100Eğitimi erken durdurmadan önce doğrulama metriklerinde iyileşme olmadan beklenecek dönem sayısı. Performans durağanlaştığında eğitimi durdurarak aşırı uyumu önlemeye yardımcı olur.
batchint veya float16Üç moda sahip Toplu boyutu: tam sayı olarak ayarlanır (örneğin, batch=16), %60 GPU bellek kullanımı için otomatik mod (batch=-1) veya belirtilen kullanım oranıyla otomatik mod (batch=0.70).
imgszint640Eğitim için hedef görüntü boyutu. Görüntüler, belirtilen değere eşit kenarlara sahip karelere yeniden boyutlandırılır (rect=False ise), YOLO modelleri için en boy oranını korur ancak RT-DETR için korumaz. Modelin doğruluğunu ve hesaplama karmaşıklığını etkiler.
saveboolTrueEğitim kontrol noktalarının ve nihai model ağırlıklarının kaydedilmesini sağlar. Eğitimi devam ettirmek veya model dağıtımı için yararlıdır.
save_periodint-1Dönem cinsinden belirtilen model kontrol noktalarını kaydetme sıklığı. -1 değeri bu özelliği devre dışı bırakır. Uzun eğitim oturumları sırasında ara modelleri kaydetmek için yararlıdır.
cacheboolFalseVeri kümesi görüntülerinin bellekte (True/ram), diskte (disk) önbelleğe alınmasını sağlar veya devre dışı bırakır (False). Artan bellek kullanımı pahasına disk G/Ç'sini azaltarak eğitim hızını artırır.
deviceint veya str veya listNoneEğitim için hesaplama cihazını/cihazlarını belirtir: tek bir GPU (device=0), çoklu GPU'lar (device=[0,1]), CPU (device=cpu), Apple silikon için MPS (device=mps), Huawei Ascend NPU (device=npu veya device=npu:0), veya en boş GPU'nun otomatik seçimi (device=-1) veya birden fazla boş GPU (device=[-1,-1])
workersint8Veri yükleme için çalışan iş parçacığı sayısı (Çoklu GPU eğitimi ise RANK başına). Özellikle çoklu GPU kurulumlarında yararlı olan veri ön işleme ve modele besleme hızını etkiler.
projectstrNoneEğitim çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerin düzenli depolanmasına olanak tanır.
namestrNoneEğitim çalışmasının adı. Eğitim günlüklerinin ve çıktılarının depolandığı proje klasörü içinde bir alt dizin oluşturmak için kullanılır.
exist_okboolFalseTrue ise, mevcut bir proje/ad dizininin üzerine yazılmasına izin verir. Önceki çıktıları manuel olarak temizlemeye gerek kalmadan yinelemeli deneyler için yararlıdır.
pretrainedbool veya strTrueEğitime önceden eğitilmiş ağırlıklarla mı başlanacağını belirler. Bir boole değeri veya yüklenecek ağırlıklara giden bir dize yolu olabilir. pretrained=False, model mimarisini korurken rastgele başlatılmış ağırlıklarla eğitim yapar.
optimizerstr'auto'Eğitim için optimize edici seçimi. Seçenekler arasında SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp veya model yapılandırmasına göre otomatik seçim için auto bulunur. Yakınsama hızını ve kararlılığını etkiler.
seedint0Eğitim için rastgele tohumu belirler, aynı yapılandırmalarla çalıştırmalar arasında sonuçların tekrarlanabilirliğini sağlar.
deterministicboolTrueBelirlenmiş algoritma kullanımını zorunlu kılar, tekrarlanabilirliği sağlar ancak belirlenmemiş algoritmalar üzerindeki kısıtlama nedeniyle performansı ve hızı etkileyebilir.
verboseboolTrueEğitim sırasında ayrıntılı çıktıyı etkinleştirir, konsolda ilerleme çubuklarını, dönem başına metrikleri ve ek eğitim bilgilerini görüntüler.
single_clsboolFalseEğitim sırasında çok sınıflı veri kümelerindeki tüm sınıfları tek bir sınıf olarak ele alır. İkili sınıflandırma görevleri veya sınıflandırmadan ziyade nesne varlığına odaklanırken yararlıdır.
classeslist[int]NoneEğitim yapılacak sınıf kimliklerinin bir listesini belirtir. Eğitim sırasında filtrelemek ve yalnızca belirli sınıflara odaklanmak için yararlıdır.
rectboolFalseMinimum dolgu stratejisini etkinleştirir—bir gruptaki görüntüler ortak bir boyuta ulaşmak için minimum düzeyde doldurulur, en uzun taraf imgsz değerine eşittir. Verimliliği ve hızı artırabilir ancak model doğruluğunu etkileyebilir.
multi_scalefloat0.0Her grupta imgsz değerini rastgele +/- multi_scale kadar değiştirir (örneğin 0.25 -> 0.75x ila 1.25x), model adım katlarına yuvarlar; 0.0 çok ölçekli eğitimi devre dışı bırakır.
cos_lrboolFalseEpoklar boyunca öğrenme hızını kosinüs eğrisine göre ayarlayan bir kosinüs öğrenme hızı zamanlayıcısı kullanır. Daha iyi yakınsama için öğrenme hızını yönetmeye yardımcı olur.
close_mosaicint10Eğitimi tamamlamadan önce stabilize etmek için son N epokta mozaik veri artırma işlemini devre dışı bırakır. 0 olarak ayarlamak bu özelliği kapatır.
resumeboolFalseEğitimi son kaydedilen kontrol noktasından devam ettirir. Model ağırlıklarını, optimize edici durumunu ve epok sayısını otomatik olarak yükleyerek eğitimi sorunsuz bir şekilde sürdürür.
ampboolTrueOtomatik Karma Hassasiyet (AMP) eğitimini etkinleştirir, bellek kullanımını azaltır ve doğruluk üzerinde minimum etkiyle eğitimi muhtemelen hızlandırır.
fractionfloat1.0Eğitim için kullanılacak veri kümesi oranını belirtir. Tam veri kümesinin bir alt kümesinde eğitim yapılmasına olanak tanır, bu deneyler için veya kaynaklar sınırlı olduğunda kullanışlıdır.
profileboolFalseEğitim sırasında ONNX ve TensorRT hızlarının profillenmesini etkinleştirir, model dağıtımını optimize etmek için faydalıdır.
freezeint veya listNoneModelin ilk N katmanını veya dizine göre belirtilen katmanları dondurarak eğitilebilir parametre sayısını azaltır. İnce ayar veya transfer öğrenimi için kullanışlıdır.
lr0float0.01Başlangıç öğrenme hızı (örn. SGD=1E-2, Adam=1E-3). Bu değeri ayarlamak, model ağırlıklarının ne kadar hızlı güncelleneceğini etkilediğinden optimizasyon süreci için kritiktir.
lrffloat0.01Başlangıç hızının bir oranı olarak nihai öğrenme hızı = (lr0 * lrf), öğrenme hızını zaman içinde ayarlamak için zamanlayıcılarla birlikte kullanılır.
momentumfloat0.937SGD için momentum faktörü veya Adam iyileştiricileri için beta1, geçmiş gradyanların mevcut güncellemeye dahil edilmesini etkiler.
weight_decayfloat0.0005L2 düzenlileştirme terimi, aşırı öğrenmeyi (overfitting) önlemek için büyük ağırlıkları cezalandırır.
warmup_epochsfloat3.0Öğrenme hızı ısınması için epok sayısı; eğitimi erkenden stabilize etmek için öğrenme hızını düşük bir değerden başlangıç öğrenme hızına kademeli olarak artırır.
warmup_momentumfloat0.8Isınma aşaması için başlangıç momentumu; ısınma süresi boyunca ayarlanan momentuma kademeli olarak geçer.
warmup_bias_lrfloat0.1Isınma aşamasında sapma (bias) parametreleri için öğrenme hızı, başlangıç epoklarında model eğitimini stabilize etmeye yardımcı olur.
boxfloat7.5Kayıp fonksiyonunda kutu kaybı bileşeninin ağırlığı, sınırlayıcı kutu koordinatlarını doğru tahmin etmeye ne kadar önem verildiğini etkiler.
clsfloat0.5Toplam kayıp fonksiyonundaki sınıflandırma kaybının ağırlığı, diğer bileşenlere göre doğru sınıf tahmininin önemini etkiler.
cls_pwfloat0.0Ters sınıf frekansını kullanarak sınıf dengesizliğini ele almak için sınıf ağırlıklandırma gücü. 0.0 sınıf ağırlıklandırmayı devre dışı bırakır, 1.0 tam ters frekans ağırlıklandırmasını uygular. 0 ile 1 arasındaki değerler kısmi ağırlıklandırma sağlar.
dflfloat1.5Belirli YOLO sürümlerinde ince taneli sınıflandırma için kullanılan dağılım odak kaybının (distribution focal loss) ağırlığı.
posefloat12.0Poz tahmini için eğitilen modellerde poz kaybının ağırlığı, poz anahtar noktalarını doğru tahmin etmeye verilen önemi etkiler.
kobjfloat1.0Poz tahmini modellerinde anahtar nokta nesnellik kaybının ağırlığı, tespit güvenini poz doğruluğu ile dengeler.
rlefloat1.0Poz tahmini modellerinde kalıntı log-olabilirlik tahmini kaybının ağırlığı, anahtar nokta konumlandırmasının kesinliğini etkiler.
anglefloat1.0OBB modellerinde açı kaybının ağırlığı, yönlendirilmiş sınırlayıcı kutu açı tahminlerinin kesinliğini etkiler.
nbsint64Kaybın normalizasyonu için nominal yığın (batch) boyutu.
overlap_maskboolTrueNesne maskelerinin eğitim için tek bir maskede birleştirilip birleştirilmeyeceğini veya her nesne için ayrı tutulup tutulmayacağını belirler. Örtüşme durumunda, daha küçük maske birleştirme sırasında daha büyük olanın üzerine yerleştirilir.
mask_ratioint4Segmentasyon maskeleri için örnekleme düşürme oranı, eğitim sırasında kullanılan maskelerin çözünürlüğünü etkiler.
dropoutfloat0.0Sınıflandırma görevlerinde düzenlileştirme için dropout oranı, eğitim sırasında birimleri rastgele atlayarak aşırı öğrenmeyi önler.
valboolTrueEğitim sırasında doğrulamayı etkinleştirir, ayrı bir veri kümesi üzerinde model performansının periyodik olarak değerlendirilmesine olanak tanır.
plotsboolTrueEğitim ve doğrulama metriklerinin grafiklerini ve tahmin örneklerini oluşturup kaydeder, model performansı ve öğrenme süreci hakkında görsel içgörüler sağlar.
compilebool veya strFalseEnables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True"default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported.
max_detint300Eğitimin doğrulama aşamasında tutulan maksimum nesne sayısını belirtir.
Yığın (Batch) boyutu ayarları hakkında not

batch argümanı üç şekilde yapılandırılabilir:

  • Sabit Batch Size: Batch başına görüntü sayısını doğrudan belirten bir tam sayı değeri ayarla (örneğin batch=16).
  • Otomatik Mod (%60 GPU Belleği): Yaklaşık %60 CUDA bellek kullanımı için batch size'ı otomatik olarak ayarlamak üzere batch=-1 kullan.
  • Kullanım Oranı ile Otomatik Mod: Belirtilen GPU bellek kullanımı oranına göre batch size'ı ayarlamak için bir kesir değeri ayarla (örneğin batch=0.70).
  • OOM Otomatik Yeniden Deneme: İlk epok sırasında bir CUDA bellek yetersizliği (out-of-memory) hatası oluşursa, eğitici otomatik olarak batch size'ı yarıya indirir ve yeniden dener (3 defaya kadar). Bu yalnızca tek GPU eğitimi için geçerlidir; çoklu GPU (DDP) eğitimi hatayı anında tetikleyecektir.

Artırma Ayarları ve Hiperparametreler

Artırma teknikleri, eğitim verilerine değişkenlik katarak YOLO modellerinin sağlamlığını ve performansını artırmak için gereklidir; bu, modelin görünmeyen verilere daha iyi genelleme yapmasına yardımcı olur. Aşağıdaki tablo, her bir artırma argümanının amacını ve etkisini özetlemektedir:

ArgümanTürVarsayılanDesteklenen GörevlerAralıkAçıklama
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0Görüntünün tonunu renk çarkının bir kesri kadar ayarlar ve renk değişkenliği sağlar. Modelin farklı aydınlatma koşullarında genelleme yapmasına yardımcı olur.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Görüntünün doygunluğunu bir kesir kadar değiştirerek renklerin yoğunluğunu etkiler. Farklı çevresel koşulları simüle etmek için yararlıdır.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Görüntünün değerini (parlaklığını) bir kesir kadar değiştirerek modelin çeşitli aydınlatma koşullarında iyi performans göstermesine yardımcı olur.
degreesfloat0detect, segment, pose, obb0.0 - 180Görüntüyü belirtilen derece aralığında rastgele döndürerek modelin nesneleri çeşitli yönelimlerde tanıma yeteneğini geliştirir.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Görüntüyü görüntü boyutunun bir kesri kadar yatay ve dikey olarak kaydırarak kısmen görünür nesneleri algılamayı öğrenmeye yardımcı olur.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Görüntüyü bir kazanç faktörü kadar ölçekleyerek kameradan farklı mesafelerdeki nesneleri simüle eder.
shearfloat0detect, segment, pose, obb-180 - +180Görüntüyü belirtilen derecede eğerek nesnelerin farklı açılardan görülmesi etkisini taklit eder.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Görüntüye rastgele bir perspektif dönüşümü uygulayarak modelin 3B uzaydaki nesneleri anlama yeteneğini geliştirir.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Görüntüyü belirtilen olasılıkla baş aşağı çevirerek nesnenin özelliklerini etkilemeden veri değişkenliğini artırır.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Görüntüyü belirtilen olasılıkla soldan sağa çevirir; simetrik nesneleri öğrenmek ve veri seti çeşitliliğini artırmak için yararlıdır.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Görüntü kanallarını belirtilen olasılıkla RGB'den BGR'ye çevirir; yanlış kanal sıralamasına karşı sağlamlığı artırmak için yararlıdır.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Dört eğitim görüntüsünü tek bir görüntüde birleştirerek farklı sahne kompozisyonlarını ve nesne etkileşimlerini simüle eder. Karmaşık sahnelerin anlaşılması için oldukça etkilidir.
mixupfloat0detect, segment, pose, obb0.0 - 1.0İki görüntüyü ve bunların etiketlerini harmanlayarak kompozit bir görüntü oluşturur. Etiket gürültüsü ve görsel değişkenlik ekleyerek modelin genelleme yeteneğini geliştirir.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0İki görüntünün bölümlerini birleştirerek belirgin bölgeleri koruyan kısmi bir harman oluşturur. Tıkanıklık senaryoları yaratarak modelin dayanıklılığını artırır.
copy_pastefloat0segment0.0 - 1.0Nesne örneklerini artırmak için nesneleri görüntüler arasında kopyalayıp yapıştırır.
copy_paste_modestrflipsegment-Kullanılacak copy-paste stratejisini belirtir. Seçenekler arasında 'flip' ve 'mixup' bulunur.
auto_augmentstrrandaugmentclassify-Görsel çeşitlilik yoluyla model performansını artırmak için önceden tanımlanmış bir artırma politikası ('randaugment', 'autoaugment' veya 'augmix') uygular.
erasingfloat0.4classify0.0 - 1.0Modeli daha az belirgin özelliklere odaklanmaya teşvik etmek için eğitim sırasında görüntü bölgelerini rastgele siler.
augmentationslist``detect, segment, pose, obb-Gelişmiş veri artırma için özel Albumentations dönüşümleri (yalnızca Python API). Özel artırma ihtiyaçları için bir dönüşüm nesneleri listesini kabul eder.

Bu ayarlar, veri kümesinin ve eldeki görevin özel gereksinimlerini karşılamak için ayarlanabilir. Farklı değerlerle denemeler yapmak, en iyi model performansını sağlayan optimal artırma stratejisini bulmaya yardımcı olabilir.

Bilgi

Eğitim artırma işlemleri hakkında daha fazla bilgi için referans bölümüne göz at.

Günlüğe Kaydetme (Logging)

Bir YOLO26 modeli eğitirken, modelin performansını zaman içinde takip etmeyi değerli bulabilirsin. Günlüğe kaydetme (logging) burada devreye girer. Ultralytics YOLO üç tür günlük kaydedici (logger) için destek sunar - Comet, ClearML ve TensorBoard.

Bir günlük kaydedici kullanmak için, yukarıdaki kod parçacığındaki açılır menüden onu seç ve çalıştır. Seçilen günlük kaydedici kurulacak ve başlatılacaktır.

Comet

Comet, veri bilimcilerin ve geliştiricilerin deneyleri ve modelleri takip etmelerini, karşılaştırmalarını, açıklamalarını ve optimize etmelerini sağlayan bir platformdur. Gerçek zamanlı metrikler, kod farkları (diffs) ve hiperparametre takibi gibi işlevler sunar.

Comet kullanmak için:

Örnek
# pip install comet_ml
import comet_ml

comet_ml.init()

Web sitelerinden Comet hesabına giriş yapmayı ve API anahtarını almayı unutma. Deneylerini günlüğe kaydetmek için bunu ortam değişkenlerine veya betiğine eklemen gerekecek.

ClearML

ClearML, deneylerin takibini otomatikleştiren ve kaynakların verimli bir şekilde paylaşılmasına yardımcı olan açık kaynaklı bir platformdur. Ekiplerin ML çalışmalarını daha verimli bir şekilde yönetmelerine, yürütmelerine ve yeniden üretmelerine yardımcı olmak için tasarlanmıştır.

ClearML kullanmak için:

Örnek
# pip install clearml
import clearml

clearml.browser_login()

Bu betiği çalıştırdıktan sonra, tarayıcıda ClearML hesabına giriş yapman ve oturumunun kimliğini doğrulaman gerekecek.

TensorBoard

TensorBoard, TensorFlow için bir görselleştirme araç setidir. TensorFlow grafiğini görselleştirmeni, grafiğinin yürütülmesiyle ilgili nicel metrikleri çizmeni ve içinden geçen görüntüler gibi ek verileri göstermeni sağlar.

Google Colab içinde TensorBoard kullanmak için:

Örnek
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

TensorBoard'u yerel olarak kullanmak için aşağıdaki komutu çalıştır ve sonuçları localhost:6006 adresinden görüntüle.

Örnek
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Bu, TensorBoard'u yükleyecek ve eğitim günlüklerinin kaydedildiği dizine yönlendirecektir.

Günlük kaydedicini ayarladıktan sonra model eğitimine devam edebilirsin. Tüm eğitim metrikleri seçtiğin platforma otomatik olarak kaydedilecek ve modelinin performansını zaman içinde izlemek, farklı modelleri karşılaştırmak ve iyileştirme alanlarını belirlemek için bu günlüklere erişebilirsin.

SSS

Yerel bir GPU olmadan eğitim yapabilir miyim?

Evet. Ultralytics Platform, başlaman için ücretsiz kredilerle bulut eğitimini destekler. Veri kümeni yükle, bir model ve GPU seç ve doğrudan tarayıcı üzerinden eğitim yap. Ayrıntılar için bulut eğitimi kılavuzuna bak.

Ultralytics YOLO26 kullanarak nasıl bir nesne algılama modeli eğitebilirim?

Ultralytics YOLO26 kullanarak bir nesne algılama modeli eğitmek için Python API'sini veya CLI'yı kullanabilirsin. Aşağıda her ikisi için birer örnek verilmiştir:

Tek GPU ve CPU Eğitim Örneği
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Daha fazla ayrıntı için Eğitim Ayarları bölümüne bak.

Ultralytics YOLO26'nın Eğitim modunun temel özellikleri nelerdir?

Ultralytics YOLO26'nın Eğitim modunun temel özellikleri şunlardır:

  • Otomatik Veri Kümesi İndirme: COCO, VOC ve ImageNet gibi standart veri kümelerini otomatik olarak indirir.
  • Çoklu GPU Desteği: Daha hızlı işlem için eğitimi birden fazla GPU üzerinde ölçeklendirir.
  • Hiperparametre Yapılandırması: Hiperparametreleri YAML dosyaları veya CLI argümanları aracılığıyla özelleştir.
  • Görselleştirme ve İzleme: Daha iyi içgörüler için eğitim metriklerinin gerçek zamanlı takibi.

Bu özellikler eğitimi verimli hale getirir ve ihtiyaçlarına göre özelleştirilebilir kılar. Daha fazla ayrıntı için Eğitim Modunun Temel Özellikleri bölümüne bak.

Ultralytics YOLO26'da yarıda kesilmiş bir oturumdan eğitimi nasıl devam ettirebilirim?

Yarıda kesilmiş bir oturumdan eğitime devam etmek için resume argümanını True olarak ayarla ve son kaydedilen kontrol noktasının (checkpoint) yolunu belirt.

Eğitim Devam Ettirme Örneği
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

Daha fazla bilgi için Yarıda Kesilen Eğitimlerin Devam Ettirilmesi bölümüne göz at.

Dengesiz bir veri kümesinde nasıl model eğitebilirim?

Sınıf dengesizliği, eğitim verilerinde bazı sınıfların diğerlerine göre önemli ölçüde daha az örneğe sahip olduğunda ortaya çıkar. Bu, modelin nadir sınıflarda düşük performans göstermesine neden olabilir. Ultralytics YOLO, bu sorunu çözmek için cls_pw argümanı aracılığıyla sınıf ağırlıklandırmasını destekler.

cls_pw argümanı, sınıf ağırlıklandırma gücünü ters sınıf frekansına göre kontrol eder:

  • cls_pw=0.0 (varsayılan): Sınıf ağırlıklandırmayı devre dışı bırakır
  • cls_pw=1.0: Tam ters frekans ağırlıklandırması uygular
  • 0.0 ile 1.0 arasındaki değerler: Orta düzeyde dengesizlik için kısmi ağırlıklandırma sağlar

The class weights are computed as (1.0 / class_counts) ^ cls_pw and normalized so their mean equals 1.0.

Dengesiz Veri Kümesinde Eğitim
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
İpucu

Orta derecede dengesiz veri kümeleri için cls_pw=0.25 ile başla ve nadir sınıflar hala düşük performans gösteriyorsa 1.0 değerine yükselt. Ağırlık dağılımını doğrulamak için eğitim günlüklerindeki hesaplanmış sınıf ağırlıklarını kontrol edebilirsin.

Apple silikon çiplerinde YOLO26 modellerini eğitebilir miyim?

Evet, Ultralytics YOLO26, Metal Performance Shaders (MPS) çerçevesinden yararlanarak Apple silikon çiplerinde eğitimi destekler. Eğitim cihazın olarak 'mps' belirt.

MPS Eğitim Örneği
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Daha fazla ayrıntı için Apple Silicon MPS Eğitimi bölümüne bak.

Yaygın eğitim ayarları nelerdir ve bunları nasıl yapılandırabilirim?

Ultralytics YOLO26, toplu iş boyutu (batch size), öğrenme oranı, dönemler (epochs) ve daha fazlası gibi çeşitli eğitim ayarlarını argümanlar aracılığıyla yapılandırmana olanak tanır. İşte kısa bir özet:

ArgümanVarsayılanAçıklama
modelNoneEğitim için model dosyasının yolu.
dataNoneVeri kümesi yapılandırma dosyasının yolu (örneğin, coco8.yaml).
epochs100Toplam eğitim dönemi sayısı.
batch16Tamsayı veya otomatik mod olarak ayarlanabilen toplu iş boyutu.
imgsz640Eğitim için hedef görüntü boyutu.
deviceNonecpu, 0, 0,1 veya mps gibi eğitim için hesaplama cihazı/cihazları.
saveTrueEğitim kontrol noktalarının ve nihai model ağırlıklarının kaydedilmesini sağlar.

Eğitim ayarlarıyla ilgili derinlemesine bir kılavuz için Eğitim Ayarları bölümüne bak.

Yorumlar