Ultralytics YOLO ile Model Eğitimi#
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'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.
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.
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])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.pyAMD 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.shfrom 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.
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:
- Daha düşük mevcut kullanım yüzdeleri
- Daha yüksek kullanılabilir bellek (boş VRAM)
- 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:
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:
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=MuSGDultralytics/optim/muon.py içindeki uygulamaya ve BaseTrainer.build_optimizer içindeki optimizer otomatik seçim mantığına bakın.
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Eğ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. |
data | str | None | Eğ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. |
epochs | int | 100 | Toplam 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. |
time | float | None | Saat 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. |
patience | int | 100 | Eğ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. |
batch | int veya float | 16 | Yığı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). |
imgsz | int | 640 | Eğ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. |
save | bool | True | Eğ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_period | int | -1 | Model 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. |
cache | bool | False | Veri 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. |
device | int veya str veya list | None | Eğ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. |
workers | int | 8 | Veri 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. |
project | str | None | Eğitim çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerin düzenli bir şekilde saklanmasına olanak tanır. |
name | str | None | Eğ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_ok | bool | False | Eğ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_dir | str | None | project/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. |
pretrained | bool veya str | True | Eğ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_remap | bool | True | Veri 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. |
optimizer | str | '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. |
seed | int | 0 | Eğitim için rastgele tohum değerini ayarlar, aynı yapılandırmalarla yapılan çalışmalarda sonuçların tekrarlanabilirliğini sağlar. |
deterministic | bool | True | Belirlenmiş 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. |
verbose | bool | True | Eğ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_cls | bool | False | Ç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. |
classes | list[int] | None | Eğ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. |
rect | bool | False | Minimum 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_scale | float | 0.0 | Model 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_lr | bool | False | Epoch'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_mosaic | int | 10 | Tamamlanmadan ö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. |
resume | bool | False | Eğ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. |
amp | bool | True | Otomatik 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. |
fraction | float | 1.0 | Eğ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. |
profile | bool | False | Eğ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. |
freeze | int veya list | None | Modelin 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. |
lr0 | float | 0.01 | Baş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. |
lrf | float | 0.01 | Zaman 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). |
momentum | float | 0.937 | SGD için momentum faktörü veya Adam optimizörleri için beta1, mevcut güncellemada geçmiş gradyanların dahil edilmesini etkiler. |
weight_decay | float | 0.0005 | Aşırı öğrenmeyi önlemek için büyük ağırlıklara ceza veren L2 düzenlileştirme terimi. |
warmup_epochs | float | 3.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_momentum | float | 0.8 | Isınma aşaması için başlangıç momentumu, ısınma süresi boyunca ayarlanan momentuma kademeli olarak uyarlanır. |
warmup_bias_lr | float | 0.1 | Isınma aşamasında sapma (bias) parametreleri için öğrenme oranı, ilk dönemlerde model eğitimini stabilize etmeye yardımcı olur. |
distill_model | str | None | Bilgi 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. |
dis | float | 6.0 | Standart 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. |
box | float | 7.5 | loss 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. |
cls | float | 0.5 | Toplam 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_pw | float | 0.0 | Ters 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. |
dfl | float | 1.5 | Kutu kenar mesafelerini regresyonla hesaplayan bir sınırlayıcı kutu yerelleştirme terimi olan dağılım odak kaybının (DFL) ağırlığı. |
pose | float | 12.0 | Poz tahmini için eğitilen modellerde poz kaybının ağırlığı, poz anahtar noktalarının doğru tahmin edilmesine verilen önemi etkiler. |
kobj | float | 1.0 | Poz tahmini modellerinde anahtar nokta nesnellik (objectness) kaybının ağırlığı, tespit güveni ile poz doğruluğunu dengeler. |
rle | float | 1.0 | Poz tahmini modellerinde artık log-olabilirlik tahmini kaybının ağırlığı, anahtar nokta yerelleştirme hassasiyetini etkiler. |
angle | float | 1.0 | Obb modellerinde açı kaybının ağırlığı, yönlendirilmiş sınırlayıcı kutu açı tahminlerinin hassasiyetini etkiler. |
dlog | float | 1.0 | Derinlik doğruluğunu sağlayan birincil terim olan derinlik tahmini modellerindeki ölçek değişmez logaritmik (SILog) kaybın ağırlığı. |
dgrad | float | 0.5 | Derinlik 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. |
dlam | float | 1.0 | Derinlik 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. |
nbs | int | 64 | Kaybın normalizasyonu için nominal grup boyutu. |
overlap_mask | bool | True | Nesne 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_ratio | int | 4 | Segmentasyon maskeleri için aşağı örnekleme (downsample) oranı, eğitim sırasında kullanılan maskelerin çözünürlüğünü etkiler. |
dropout | float | 0.0 | Sınıflandırma görevlerinde düzenlileştirme için dropout oranı, eğitim sırasında birimleri rastgele atlayarak aşırı öğrenmeyi önler. |
val | bool | True | Eğitim sırasında doğrulamayı etkinleştirerek model performansının ayrı bir veri setinde periyodik olarak değerlendirilmesini sağlar. |
plots | bool | True | Eğ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. |
compile | bool veya str | False | PyTorch 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_last | bool | False | Eğ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_det | int | 300 | Eğitimin doğrulama aşamasında tutulan maksimum nesne sayısını belirtir. |
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=-1kullan. - 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üman | Tip | Varsayılan | Desteklenen Görevler | Aralık | Açıklama |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Gö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_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Gö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_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Gö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. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Gö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. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Gö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. |
scale | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 | Görüntüyü bir kazanç faktörüyle ölçeklendirir, böylece kameradan farklı mesafelerdeki nesneleri simüle eder. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Görüntüyü belirtilen bir derecede eğerek, nesnelerin farklı açılardan görülme etkisini taklit eder. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Görüntüye rastgele bir perspektif dönüşümü uygular, modelin 3D uzaydaki nesneleri anlama yeteneğini artırır. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Görüntüyü belirtilen olasılıkla baş aşağı çevirir, nesnenin özelliklerini etkilemeden veri değişkenliğini artırır. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Gö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. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Gö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. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Dö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. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.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. |
cutmix | float | 0 | detect, segment, pose, obb | 0.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_paste | float | 0 | segment | 0.0 - 1.0 | Nesne örneklerini artırmak için nesneleri görüntüler arasında kopyalayıp yapıştırır. |
copy_paste_mode | str | flip | segment | - | Kullanılacak copy-paste stratejisini belirtir. Seçenekler arasında 'flip' ve 'mixup' bulunur. |
auto_augment | str | randaugment | classify | - | Görsel çeşitlilik yoluyla model performansını artırmak için önceden tanımlanmış bir artırma politikası ('randaugment', 'autoaugment' veya 'augmix') uygular. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Modelin 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. |
augmentations | list | None | detect, 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.
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:
# 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:
# 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:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryTensorBoard'u yerel olarak kullanmak için aşağıdaki komutu çalıştırın ve sonuçları localhost:6006 adresinde görüntüleyin.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryBu, 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:
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.
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ırcls_pw=1.0: Tam ters frekans ağırlıklandırması uygular0.0ile1.0arası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.
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)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.
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üman | Varsayılan | Açıklama |
|---|---|---|
model | None | Eğitim için model dosyasının yolu. |
data | None | Veri seti YAML dosyasının yolu (örn. coco8.yaml) veya sınıflandırma için bir veri seti dizini veya adı (örn. imagenet10). |
epochs | 100 | Toplam eğitim dönemi sayısı. |
batch | 16 | Tamsayı veya otomatik mod olarak ayarlanabilir toplu iş boyutu. |
imgsz | 640 | Eğitim için hedef görüntü boyutu. |
device | None | cpu, 0, 0,1 veya mps gibi eğitim için hesaplama cihazı/cihazları. |
save | True | Eğ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.