YOLO Vision 2026:

Ultralytics YOLO ile Model Eğitimi#

Ultralytics YOLO ecosystem and integrations

Giriş#

Bir deep learning modelini eğitmek, modelin doğru tahminler yapabilmesi için ona veri beslemeyi ve parametrelerini ayarlamayı içerir. Ultralytics YOLO26 içindeki Train modu, modern donanım yeteneklerinden tam olarak yararlanarak nesne tespiti modellerinin etkili ve verimli bir şekilde eğitilmesi için tasarlanmıştır. Bu kılavuz, YOLO26'nın güçlü özellik setini kullanarak kendi modellerinizi eğitmeye başlamanız için gereken tüm ayrıntıları kapsamayı amaçlamaktadır. Henüz Ultralytics yüklemediyseniz, Quickstart guide ile başlayın.



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

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

YOLO26'nın Eğitme modunu tercih etmen için bazı ikna edici nedenler şunlardır:

  • Verimlilik: İster tek GPU'lu bir kurulumda ol, ister birden fazla GPU'ya ölçekleniyor 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 eğitim yap.
  • Kullanıcı Dostu: Basit ama güçlü CLI ve Python arayüzleri ile doğrudan bir eğitim deneyimi.
  • Hiperparametre Esnekliği: Model performansını hassas bir şekilde ayarlamak için geniş bir yelpazede özelleştirilebilir hiperparametreler. Daha derin bir kontrol için customize the trainer özelliğini kullanabilirsin.
  • Bulut Eğitimi: Gerçek zamanlı metrikler ve otomatik kontrol noktası kaydı ile Ultralytics Platform üzerinden bulut GPU'larında eğit.

Eğitme Modunun Temel Özellikleri#

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

  • Otomatik Veri Seti İndirme: İndirme kaynağı içeren veri seti yapılandırmaları, ilk kullanımda otomatik olarak indirilir (ör. yolo train data=coco8.yaml). Desteklenen formatlar ve veri setleri için Datasets overview sayfasına göz at.
  • Çoklu GPU Desteği: Süreci hızlandırmak için eğitim çalışmalarını birden fazla GPU üzerinde sorunsuz bir şekilde ölçekle.
  • 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.

Kullanım Örnekleri#

COCO8 veri seti üzerinde YOLO26n modelini 640 görsel boyutunda 100 epochs boyunca eğit. Eğitim cihazı device argümanı kullanılarak belirtilebilir. Hiçbir argüman geçirilmezse, uygun olduğunda device=0 GPU 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ın.

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

Windows'ta, eğitimi bir betik olarak başlatırken bir RuntimeError alabilirsin. Sorunu çözmek için eğitim kodunuzun önüne bir if __name__ == "__main__": bloğu ekleyin.

Tek GPU ve CPU Eğitim Örneği

Cihaz otomatik olarak belirlenir. Eğer 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'lerini) belirt.

Çoklu GPU Eğitim Örneği

2 GPU ile eğitmek için, CUDA cihazları 0 ve 1 ş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 (ör. device=[0, 1]), Ultralytics dahili olarak yeni bir eğitici örneği başlatır ve arka planda torch.distributed.run çalıştırır. Bu, standart CLI kullanımı ve üzerinde değişiklik yapılmamış Python betikleri için sorunsuz bir şekilde çalışır.

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

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

AMD GPU eğitimi, standart device=0 veya device=cuda:0 sözdizimi ile bir PyTorch ROCm derlemesi kullanır. Kurulum ve mevcut MIGraphX, DirectML ve Ryzen AI NPU destek durumu için AMD integration guide kılavuzuna bakın.

Intel GPU eğitimi, device=xpu:0 veya XCCL sağlayan bir PyTorch derlemesi ile birden fazla XPU ID'si kullanır.

Huawei Ascend NPU Eğitimi#

Ultralytics, torch_npu üzerinden Huawei Ascend NPU'larında eğitim ve doğrulamayı destekler. Ascend Extension for PyTorch kurulum kılavuzunu takip ederek birbiriyle uyumlu CANN, PyTorch ve torch_npu sürümlerini kur, ardından Ultralytics'i başlatmadan önce CANN ortamını yükle:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
Ascend NPU Eğitimi Örneği
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

AMP, doğrulama, kontrol noktası oluşturma ve devam ettirme dahil olmak üzere standart eğitim özellikleri etkin NPU'yu kullanır. AutoBatch tek NPU'lu eğitim için kullanılabilirken, birden fazla NPU ID'si HCCL aracılığıyla dağıtık eğitimi başlatır. Eğitimden sonra model dışa aktarımı ve dağıtımı için Huawei Ascend integration guide kılavuzuna bakın.

Boşta Olan (Idle) GPU Eğitimi#

Boşta Olan 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şta Olan GPU Eğitim Örneği

Eğitim için en boşta duran GPU'ları otomatik olarak seçmek ve kullanmak için -1 cihaz parametresini kullan. Bu, özellikle paylaşılan bilgi işlem ortamlarında veya birden fazla kullanıcısı olan sunucularda çok faydalı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 özelliklere sahip GPU'lara öncelik verir:

  1. Daha düşük mevcut kullanım yüzdeleri
  2. Daha yüksek kullanılabilir bellek (boş VRAM)
  3. Daha düşük sıcaklık ve güç tüketimi

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ğlayarak, manuel müdahale olmaksızın en uygun kaynak tahsisini sağlar.

Apple Silicon MPS Eğitimi#

Ultralytics YOLO modellerine entegre edilen Apple silicon çip desteği ile, artık güçlü Metal Performance Shaders (MPS) çerçevesini kullanan cihazlarda modellerini 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 silicon çiplerinde eğitimi etkinleştirmek için, eğitim sürecini başlatırken cihazın olarak 'mps' belirtmelisin. Python'da ve komut satırı aracılığıyla bunu nasıl yapabileceğine dair bir örnek aşağıdadı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 documentation belgesine başvurun.

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 bir şekilde kesintiye uğradığı durumlarda veya bir modeli yeni verilerle ya da daha fazla epoch boyunca eğitmek istediğinde çeşitli senaryolarda kullanışlı olabilir.

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

Kısmen eğitilmiş model ağırlıklarını içeren .pt dosyasının yolunu belirtip train yöntemini çağırırken resume argümanını True olarak ayarlayarak Ultralytics YOLO'da eğitimi kolayca devam ettirebilirsin.

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

Eğitimi 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 ayarlayarak, train fonksiyonu 'path/zu/last.pt' dosyasında depolanan durumu kullanarak kaldığı yerden eğitime devam edecektir. 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 epoch'un sonunda veya save_period argümanı kullanılarak sabit aralıklarla kaydedildiğini unutmayın; bu nedenle bir eğitim çalışmasını devam ettirmek için en az 1 epoch tamamlamalısın.

Eğitim Ayarları#

YOLO modelleri için eğitim ayarları, eğitim sürecinde kullanılan çeşitli hiperparametreleri ve yapılandırmaları kapsar. Bu ayarlar modelin performansını, hızını ve accuracy değerini etkiler. Temel eğitim ayarları arasında batch boyutu, öğrenme hızı, momentum ve ağırlık sönümlemesi yer alır. Ek olarak, optimizer seçimi, loss function ve eğitim veri seti kompozisyonu eğitim sürecini etkileyebilir. Bu ayarlarda dikkatli bir şekilde ayarlama ve denemeler yapmak, performansı optimize etmek için çok önemlidir.

MuSGD Optimize Edici#

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

Ortogonalize edilmiş 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 2D doğrusal ağırlıklar ve (2D'ye yeniden şekillendirilmiş) 4D evrişimli filtreler SGD ile birlikte Muon tarzı güncelleme alırken; toplu normalleştirme (batch normalization) ağırlıkları ve sapma (bias) terimleri gibi diğer tüm parametreler standart SGD'de kalır.

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

Kullanım örneği:

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

ultralytics/optim/muon.py içindeki uygulamaya ve BaseTrainer.build_optimizer içindeki optimizer otomatik seçim mantığına bakın.

ArgümanTipVarsayılanAçıklama
modelstrNoneEğitim için model dosyasını belirtir. .pt önceden eğitilmiş model veya .yaml yapılandırma dosyası için bir yol kabul eder. Model yapısını tanımlamak veya ağırlıkları başlatmak için gereklidir.
datastrNoneEğitim ve validation data yollarını, sınıf adlarını ve sınıf sayısını içeren veri seti YAML dosyasına (ör. coco8.yaml) giden yol. Sınıflandırma için bunun yerine bir veri seti dizini veya yerleşik bir veri seti adı (ör. imagenet10) kullanılır.
epochsint100Toplam eğitim epoch sayısı. Her epoch, tüm veri kümesi üzerinden 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 argüman epochs argümanını geçersiz kılar ve eğitimin belirtilen süreden sonra otomatik olarak durmasını sağlar. Zaman kısıtlı eğitim senaryoları için kullanışlıdır.
patienceint100Eğitimi erken durdurmadan önce doğrulama metriklerinde iyileşme olmadan beklenecek epoch sayısı. Performans plato çizdiğinde eğitimi durdurarak aşırı öğrenmeyi önlemeye yardımcı olur.
batchint veya float16Yığın boyutu, üç mod ile: bir tamsayı olarak ayarlanmış (örn. batch=16), %60 GPU bellek kullanımı için otomatik mod (batch=-1) veya belirtilen kullanım oranına sahip otomatik mod (batch=0.70).
imgszint640Eğitim için hedef görüntü boyutu. Görüntüler, kenarları belirtilen değere eşit (eğer rect=False ise) kareler olacak şekilde yeniden boyutlandırılır; YOLO modelleri için en-boy oranı korunur ancak RT-DETR için korunmaz. Model 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ğitime devam etmek veya model dağıtımı için kullanışlıdır.
save_periodint-1Model kontrol noktalarının kaydedilme sıklığı, epoch cinsinden belirtilir. -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ülerini bellekte (True/ram), diskte (disk) önbelleğe almayı etkinleştirir 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:0 veya device=npu:0,1) veya boşta duran GPU'nun (device=-1) ya da birden fazla boşta GPU'nun (device=[-1,-1]) otomatik seçimi.
workersint8Veri yükleme için işçi iş parçacığı sayısı (Çoklu GPU eğitimi durumunda RANK başına). Veri ön işleme hızını ve modele beslemeyi etkiler, özellikle çoklu GPU kurulumlarında faydalıdır.
projectstrNoneEğitim çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerin düzenli bir şekilde saklanmasına olanak tanır.
namestrNoneEğitim çalışmasının adı. Proje klasörü içinde eğitim günlüklerinin ve çıktılarının depolandığı bir alt dizin oluşturmak için kullanılır.
exist_okboolFalseEğer True ise, mevcut bir proje/isim dizininin üzerine yazılmasına izin verir. Önceki çıktıları manuel olarak temizlemeye gerek kalmadan yinelemeli denemeler yapmak için yararlıdır.
save_dirstrNoneproject/name kombinasyonunu geçersiz kılarak, çalıştırma çıktılsının kaydedildiği tam dizini belirtir. Yol, otomatik artırma yapılmadan olduğu gibi kullanılır, bu nedenle ardışık çalıştırmalar aynı dizini yeniden kullanır.
pretrainedbool veya strTrueEğitime önceden eğitilmiş ağırlıklarla başlayıp başlamayacağını belirler. Bir boolean değer 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.
cls_remapboolTrueVeri kümeleri arasında ince ayar yaparken, sınıf adlarının eşleştiği her yerde önceden eğitilmiş sınıflandırma kafası satırlarını yeni modele kopyalar, böylece çakışan sınıflar öğrenilen sapmalarını ve kafa genişliği değişmediğinde ağırlıklarını korur. Sınıf sayıları farklı olduğunda veya farklı bir sınıf sırasıyla eşleştiğinde de geçerlidir.
optimizerstr'auto'Eğitim için optimizör 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 yer alır. Yakınsama hızını ve kararlılığını etkiler.
seedint0Eğitim için rastgele tohum değerini ayarlar, aynı yapılandırmalarla yapılan çalışmalarda sonuçların tekrarlanabilirliğini sağlar.
deterministicboolTrueBelirlenmiş algoritma kullanımını zorunlu kılar, tekrarlanabilirliği sağlar ancak belirlenmiş olmayan algoritmalar üzerindeki kısıtlama nedeniyle performansı ve hızı etkileyebilir.
verboseboolTrueEğitim sırasında ayrıntılı çıktıyı etkinleştirir; ilerleme çubuklarını, dönem başı metriklerini ve konsolda ek eğitim bilgilerini görüntüler.
single_clsboolFalseÇok sınıflı veri setlerindeki tüm sınıfları eğitim sırasında tek bir sınıf olarak ele alır. İkili sınıflandırma görevleri için veya sınıflandırmadan ziyade nesne varlığına odaklanırken yararlıdır.
classeslist[int]NoneEğitimde kullanılacak sınıf kimliklerinin listesini belirtir. Eğitim sırasında yalnızca belirli sınıfları filtrelemek ve bunlara odaklanmak için yararlıdır.
rectboolFalseMinimum dolgu stratejisini etkinleştirir — bir yandaki görüntüler ortak bir boyuta ulaşmak için minimum düzeyde doldurulur ve en uzun kenar imgsz değerine eşit olur. Verimliliği ve hızı artırabilir ancak model doğruluğunu etkileyebilir.
multi_scalefloat0.0Model adım katlarına yuvarlayarak, her yığını imgsz değerini +/- multi_scale (örn. 0.25 -> 0.75x ile 1.25x arası) oranında rastgele değiştirir; 0.0 çok ölçekli eğitimi devre dışı bırakır.
cos_lrboolFalseEpoch'lar boyunca bir kosinüs eğrisini takip ederek öğrenme hızını ayarlayan bir kosinüs öğrenme hızı planlayıcısı kullanır. Daha iyi yakınsama için öğrenme hızını yönetmeye yardımcı olur.
close_mosaicint10Tamamlanmadan önce eğitimi dengelemek için son N epoch'ta mozaik veri artırmayı devre dışı bırakır. 0 olarak ayarlamak bu özelliği devre dışı bırakır.
resumeboolFalseEğitime son kaydedilen kontrol noktasından devam eder. Model ağırlıklarını, optimize edici durumunu ve dönem sayısını otomatik olarak yükleyerek eğitime sorunsuz bir şekilde devam etmeni sağlar.
ampboolTrueOtomatik Karma Hassasiyet (AMP) eğitimini etkinleştirerek bellek kullanımını azaltır ve doğruluk üzerinde minimum etkiyle eğitimi olası biçimde hızlandırır.
fractionfloat1.0Eğitim için kullanılacak veri seti oranını belirtir. Deneyler veya kaynakların sınırlı olduğu durumlar için yararlı olan tam veri setinin bir alt kümesi üzerinde eğitime olanak tanı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 yararlı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 aktarımlı öğrenme için kullanışlıdır.
lr0float0.01Başlangıç öğrenme hızı (yani SGD=1E-2, Adam=1E-3). Bu değerin ayarlanması, model ağırlıklarının ne kadar hızlı güncellendiğini etkileyerek optimizasyon süreci için çok önemlidir.
lrffloat0.01Zaman içinde öğrenme hızını ayarlamak için planlayıcılarla birlikte kullanılan, başlangıç oranının bir kesri olarak nihai öğrenme hızı = (lr0 * lrf).
momentumfloat0.937SGD için momentum faktörü veya Adam optimizörleri için beta1, mevcut güncellemada geçmiş gradyanların dahil edilmesini etkiler.
weight_decayfloat0.0005Aşırı öğrenmeyi önlemek için büyük ağırlıklara ceza veren L2 düzenlileştirme terimi.
warmup_epochsfloat3.0Öğrenme oranı ısınma dönemleri sayısı; eğitimi erkenden stabilize etmek için öğrenme oranını düşük bir değerden başlangıç öğrenme oranı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 uyarlanır.
warmup_bias_lrfloat0.1Isınma aşamasında sapma (bias) parametreleri için öğrenme oranı, ilk dönemlerde model eğitimini stabilize etmeye yardımcı olur.
distill_modelstrNoneBilgi damıtma için bir öğretmen model kontrol noktasına (örn. yolo26x.pt) giden yol. Ayarlandığında, öğrenci model dondurulmuş öğretmen tarafından yönlendirilen ekstra bir damıtma kaybı ile eğitilir.
disfloat6.0Standart tespit kayıplarına eklenen damıtma kaybının ağırlığı. Daha yüksek değerler, öğretmenin özellik rehberliğinin etkisini artırır.
boxfloat7.5loss function içindeki kutu kaybı bileşeninin ağırlığı; bounding box koordinatlarının doğru bir şekilde tahmin edilmesine ne kadar önem verileceğini etkiler.
clsfloat0.5Toplam kayıp fonksiyonundaki sınıflandırma kaybının ağırlığı, doğru sınıf tahmininin diğer bileşenlere göre önemini etkiler.
cls_pwfloat0.0Ters sınıf sıklığı kullanılarak sınıf dengesizliğini ele almak için sınıf ağırlıklandırma üssü. 0.0 sınıf ağırlıklandırmasını 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.5Kutu kenar mesafelerini regresyonla hesaplayan bir sınırlayıcı kutu yerelleştirme terimi olan dağılım odak kaybının (DFL) ağırlığı.
posefloat12.0Poz tahmini için eğitilen modellerde poz kaybının ağırlığı, poz anahtar noktalarının doğru tahmin edilmesine verilen önemi etkiler.
kobjfloat1.0Poz tahmini modellerinde anahtar nokta nesnellik (objectness) kaybının ağırlığı, tespit güveni ile poz doğruluğunu dengeler.
rlefloat1.0Poz tahmini modellerinde artık log-olabilirlik tahmini kaybının ağırlığı, anahtar nokta yerelleştirme hassasiyetini etkiler.
anglefloat1.0Obb modellerinde açı kaybının ağırlığı, yönlendirilmiş sınırlayıcı kutu açı tahminlerinin hassasiyetini etkiler.
dlogfloat1.0Derinlik doğruluğunu sağlayan birincil terim olan derinlik tahmini modellerindeki ölçek değişmez logaritmik (SILog) kaybın ağırlığı.
dgradfloat0.5Derinlik tahmini modellerindeki gradyan kaybının ağırlığı; derinlik kenarlarındaki hataları cezalandırır ve daha keskin yüzey sınırlarını teşvik eder.
dlamfloat1.0Derinlik tahmin modellerindeki SILog kaybetme varyans odak faktörü. 1.0 kaybı tamamen ölçekten bağımsız hale getirirken, 0.0 bunu düz log-RMSE'ye indirger.
nbsint64Kaybın normalizasyonu için nominal grup boyutu.
overlap_maskboolTrueNesne maskelerinin eğitim için tek bir maske halinde birleştirilip birleştirilmeyeceğini veya her nesne için ayrı tutulacağını belirler. Çakışma durumunda, birleştirme sırasında daha küçük maske, daha büyük olanın üzerine bindirilir.
mask_ratioint4Segmentasyon maskeleri için aşağı örnekleme (downsample) 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ştirerek model performansının ayrı bir veri setinde periyodik olarak değerlendirilmesini sağlar.
plotsboolTrueEğitim ve doğrulama metriklerinin grafiklerini ve tahmin örneklerini oluşturup kaydeder, model performansı ve öğrenme ilerleyişine ilişkin görsel içgörüler sağlar.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True"default", False → devre dışı bırakma veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarı ile eager moduna geri döner.
channels_lastboolFalseEğitim sırasında evrişimler için channels_last (NHWC) bellek biçimini kullanır, sonuçlarda hiçbir değişiklik olmadan CUDA Tensor Core GPU'larını hızlandırır. Hiçbir fayda sağlamadığı CPU ve MPS üzerinde otomatik olarak yoksayılır.
max_detint300Eğitimin doğrulama aşamasında tutulan maksimum nesne sayısını belirtir.
Grup Boyutu Ayarları Hakkında Not

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

  • Sabit Batch Size: Batch başına düşen görsel sayısını doğrudan belirterek bir tamsayı değeri ayarlayın (ör. batch=16).
  • Oto Mod (%60 GPU Belleği): Yaklaşık %60 CUDA belleği kullanımı için batch boyutunu otomatik olarak ayarlamak üzere batch=-1 kullan.
  • Kullanım Oranlı Oto Mod: GPU belleği kullanımının belirtilen oranına göre batch boyutunu ayarlamak için bir kesir değeri ayarlayın (ör. batch=0.70).
  • OOM Otomatik Yeniden Deneme: İlk dönem sırasında bir CUDA bellek yetersizliği hatası oluşursa, eğitmen otomatik olarak grup boyutunu yarıya indirir ve yeniden dener (3 defaya kadar). Bu sadece tek GPU eğitimi için geçerlidir; çoklu GPU (DDP) eğitimi hatayı anında verir.

Artırma Ayarları ve Hiperparametreler#

training data içine değişkenlik katarak YOLO modellerinin dayanıklılığını ve performansını artırmak ve modelin görülmeyen verilere daha iyi genelleme yapmasına yardımcı olmak için artırma teknikleri çok önemlidir. Aşağıdaki tablo, her bir artırma argümanının amacını ve etkisini özetlemektedir:

ArgümanTipVarsayılanDesteklenen GörevlerAralıkAçıklama
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Görüntünün tonunu renk çarkının bir fraksiyonu kadar ayarlar ve renk değişkenliği katar. Modelin farklı aydınlatma koşullarında genelleme yapmasına yardımcı olur.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Görüntünün doygunluğunu bir fraksiyon 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, semantic, depth, classify, pose, obb0.0 - 1.0Görüntünün değerini (parlaklığını) bir fraksiyon kadar değiştirir, modelin çeşitli aydınlatma koşullarında iyi performans göstermesine yardımcı olur.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Görüntüyü belirtilen derece aralığında rastgele döndürür, böylece modelin nesneleri çeşitli yönelimlerde tanıma yeteneğini geliştirir.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Görüntüyü görüntü boyutunun bir kesri kadar yatay ve dikey olarak kaydırır, bu da kısmen görünen nesneleri tespit etmeyi öğrenmeye yardımcı olur.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1Görüntüyü bir kazanç faktörüyle ölçeklendirir, böylece kameradan farklı mesafelerdeki nesneleri simüle eder.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Görüntüyü belirtilen bir derecede eğerek, nesnelerin farklı açılardan görülme etkisini taklit eder.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.0 - 0.001Görüntüye rastgele bir perspektif dönüşümü uygular, modelin 3D uzaydaki nesneleri anlama yeteneğini artırır.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Görüntüyü belirtilen olasılıkla baş aşağı çevirir, nesnenin özelliklerini etkilemeden veri değişkenliğini artırır.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Görüntüyü belirtilen olasılıkla soldan sağa çevirir, simetrik nesneleri öğrenmek ve veri kümesi çeşitliliğini artırmak için kullanışlıdır.
bgrfloat0detect, segment, semantic, depth, pose, obb0.0 - 1.0Görüntü kanallarını belirtilen olasılıkla RGB'den BGR'ye çevirir, yanlış kanal sıralamasına karşı dayanıklılığı artırmak için kullanışlıdır.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Dört eğitim görüntüsünü bir araya getirerek farklı sahne kompozisyonlarını ve nesne etkileşimlerini simüle eder. Karmaşık sahneleri anlamada oldukça etkilidir.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0İki görüntüyü ve 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 korurken kısmi bir karışım oluşturur. Tıkanma 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.0Modelin daha az belirgin özelliklere odaklanmasını teşvik etmek için eğitim sırasında görüntünün bölgelerini rastgele siler.
augmentationslistNonedetect, segment, semantic, 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 listesi kabul eder.

Bu ayarlar, veri kümesinin ve mevcut görevin özel gereksinimlerini karşılayacak şekilde ayarlanabilir. Farklı değerlerle denemeler yapmak, en iyi model performansını sağlayan en uygun artırma stratejisini bulmaya yardımcı olabilir.

Bilgi

Eğitim artırma işlemleri hakkında daha fazla bilgi için reference section bölümüne bakın.

Günlükleme#

Bir YOLO26 modelini eğitirken, modelin zaman içindeki performansını takip etmek değerli olabilir. Günlüğe kaydetme (logging) burada devreye girer. Ultralytics YOLO üç tür günlük kaydediciyi destekler - Comet, ClearML ve TensorBoard.

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

Comet#

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

Comet'i kullanmak için:

Örnek
# pip install comet_ml
import comet_ml

comet_ml.init()

Web sitelerinde Comet hesabına giriş yapmayı ve API anahtarını almayı unutma. Deneylerini günlüklemek 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önetmesine, yürütmesine ve yeniden üretmesine yardımcı olmak için tasarlanmıştır.

ClearML'i 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 oturumunu doğrulaman gerekecek.

TensorBoard#

TensorBoard, TensorFlow için bir görselleştirme araç setidir. TensorFlow grafiğinizi görselleştirmenize, grafiğinizin yürütülmesi hakkında nicel metrikler çizmenize ve içinden geçen görseller gibi ek verileri göstermenize olanak tanır.

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ın ve sonuçları localhost:6006 adresinde görüntüleyin.

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

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

Günlükleyicini kurduktan sonra model eğitimine devam edebilirsin. Tüm eğitim metrikleri seçtiğin platformda otomatik olarak günlüklenecek ve modelinin performansını zaman içinde izlemek, farklı modelleri karşılaştırmak ve iyileştirilmesi gereken alanları belirlemek için bu günlüklere erişebilirsin.

Sırada ne var#

Gerçek dünyadaki doğruluğunu kontrol etmek için eğitilmiş modelinizi ayrılmış (held-out) verilerle Validate edin, ardından ONNX, TensorRT veya başka bir dağıtım formatına export edin. COCO8 yerine kendi verilerinizle mi eğitiyorsunuz? Önce Datasets guide ile biçimlendirin.

SSS#

Yerel GPU olmadan eğitim yapabilir miyim?#

Evet. Ultralytics Platform cloud training, başlamak için ücretsiz krediler içerir. Veri setini yükle, bir model ve GPU seç ve doğrudan tarayıcıdan eğit.

Ultralytics YOLO26 kullanarak bir object detection modelini nasıl eğitirim?#

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 bir örnek bulunmaktadır:

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 Train Settings bölümüne başvurun.

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'ya ölçeklendirir.
  • Hiperparametre Yapılandırması: Hiperparametreleri YAML dosyaları veya CLI argümanları aracılığıyla özelleştirir.
  • 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 ve ihtiyaçlarınıza göre özelleştirilebilir hale getirir. Daha fazla ayrıntı için Key Features of Train Mode bölümüne bakın.

Ultralytics YOLO26'da kesintiye uğrayan bir oturumdan eğitime nasıl devam ederim?#

Kesintiye uğrayan bir oturumdan eğitime devam etmek için resume argümanını True olarak ayarlayın ve son kaydedilen kontrol noktasının yolunu belirtin.

Eğitimi 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 Resuming Interrupted Trainings hakkındaki bölüme göz atın.

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

Sınıf dengesizliği, eğitim verilerinizdeki bazı sınıfların diğerlerine göre önemli ölçüde daha az örneğe sahip olması durumunda ortaya çıkar. Bu, modelin nadir sınıflarda zayıf 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ı, ters sınıf frekansına dayalı sınıf ağırlıklandırma gücünü kontrol eder:

  • cls_pw=0.0 (varsayılan): Sınıf ağırlıklandırmasını 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

Sınıf ağırlıkları (1.0 / class_counts) ^ cls_pw olarak hesaplanır ve ortalamaları 1.0'a eşit olacak şekilde normalleştirilir.

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 düzeyde dengesiz veri setleri 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 loglarındaki hesaplanan sınıf ağırlıklarını kontrol edebilirsin.

Apple silikon çiplerde YOLO26 modellerini eğitebilir miyim?#

Evet, Ultralytics YOLO26, Metal Performance Shaders (MPS) çerçevesinden yararlanarak Apple silikon çiplerde 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 Training bölümüne başvurun.

Yaygın eğitim ayarları nelerdir ve bunları nasıl yapılandırırım?#

Ultralytics YOLO26, toplu iş boyutu (batch size), öğrenme oranı, dönem sayısı (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 seti YAML dosyasının yolu (örn. coco8.yaml) veya sınıflandırma için bir veri seti dizini veya adı (örn. imagenet10).
epochs100Toplam eğitim dönemi sayısı.
batch16Tamsayı veya otomatik mod olarak ayarlanabilir 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 son model ağırlıklarının kaydedilmesini etkinleştirir.

Eğitim ayarları hakkında derinlemesine bir kılavuz için Train Settings bölümüne göz at.

Yorumlar