Link to this sectionUltralytics YOLO ile Model Eğitimi#
Link to this sectionGiriş#
Bir derin öğrenme modelini eğitmek, ona veri beslemeyi ve doğru tahminler yapabilmesi için parametrelerini ayarlamayı içerir. Ultralytics YOLO26'daki Eğitme 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 ayrıntıları kapsamayı amaçlamaktadır.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Link to this sectionEğ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ı ince ayar yapmak için çok çeşitli özelleştirilebilir hiperparametreler. Daha derin bir kontrol için, eğiticiyi (trainer) bizzat özelleştirebilirsin.
- Bulut Eğitimi: Gerçek zamanlı metrikler ve otomatik kontrol noktası kaydı (checkpointing) ile Ultralytics Platform üzerinden bulut GPU'larda eğitim yap.
Link to this sectionEğitme Modunun Temel Özellikleri#
Aşağıdakiler, YOLO26'nın Eğitme 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: 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.
- COCO, VOC, ImageNet ve diğer birçok YOLO26 veri seti ilk kullanımda otomatik olarak indirilir, örn.
yolo train data=coco.yaml
Link to this sectionKullanım Örnekleri#
COCO8 veri setinde, 640 görüntü boyutunda 100 epoch boyunca YOLO26n 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. Tüm eğitim argümanlarının tam listesi için aşağıdaki Argümanlar bölümüne bak.
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.
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)Link to this sectionÇ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 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 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.pyLink to this sectionBoş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 olan GPU('ları) otomatik olarak seçmek ve kullanmak için -1 cihaz parametresini kullan. Bu, paylaşımlı bilgi işlem ortamlarında veya birden fazla kullanıcısı olan sunucularda özellikle 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 ö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.
Link to this sectionApple 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 silicon ç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 dokümantasyonuna başvur.
Link to this sectionKesintiye 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 ağırlıkları son kaydedilen modelden yükler ve ayrıca optimize edici durumunu, öğrenme oranı 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.
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.
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 olarak ayarladığında, train işlevi '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 işlevi 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 unutma, bu nedenle bir eğitim çalışmasını devam ettirmek için en az 1 epoch tamamlaman gerekir.
Link to this sectionEğ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 boyutu, öğrenme oranı, momentum ve ağırlık çürümesi (weight decay) bulunur. Ek olarak, optimize edici, kayıp işlevi ve eğitim veri seti bileşimi seçimi, eğitim sürecini etkileyebilir. Bu ayarlarla dikkatli bir şekilde ince ayar yapmak ve denemeler yapmak, performansı optimize etmek için çok önemlidir.
Link to this sectionMuSGD 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 param.ndim >= 2 olan parametreler (evrişim ağırlıkları gibi) SGD ile birlikte Muon tarzı güncellemeyi alırken, toplu normalleştirme katmanları ve yanlılık terimleri gibi daha düşük boyutlu parametreler standart SGD'de kalır.
optimizer=auto kullanıldığında, Ultralytics daha uzun eğitim süreçleri için (genellikle iterasyonlar > 10000 olduğunda) otomatik olarak MuSGD'yi seçer. Daha kısa süreçler için eğitici AdamW'ye geri döner.
Kullanım örneği:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDultralytics/optim/muon.py dosyasındaki uygulamaya ve BaseTrainer.build_optimizer dosyasındaki optimize edici otomatik seçim mantığına bak.
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Eğ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. |
data | str | None | Veri seti yapılandırma dosyasına giden yol (örn. 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 setine özgü parametreleri içerir. |
epochs | int | 100 | Toplam eğitim epoch sayısı. Her epoch, tüm veri seti üzerinde 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 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 yararlıdır. |
patience | int | 100 | Eğitimi erkenden durdurmadan önce doğrulama metriklerinde iyileşme olmadan beklenecek epoch sayısı. Performans durağanlaştığında eğitimi durdurarak aşırı uyumu önlemeye yardımcı olur. |
batch | int veya float | 16 | Batch boyutu, üç mod ile: tam sayı olarak ayarla (örn. batch=16), %60 GPU bellek kullanımı için otomatik mod (batch=-1) veya belirtilen kullanım oranı ile otomatik mod (batch=0.70). |
imgsz | int | 640 | Eğitim için hedef görüntü boyutu. Görüntüler, belirtilen değere eşit kenarlı karelere yeniden boyutlandırılır (rect=False ise), YOLO modelleri için en boy oranını korur ancak RT-DETR için korumaz. 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 etkinleştirir. Eğitimi devam ettirmek veya model dağıtımı için yararlı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 seti 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 I/O'sunu 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), birden fazla GPU (device=[0,1]), CPU (device=cpu), Apple silicon için MPS (device=mps), Huawei Ascend NPU (device=npu veya device=npu:0) veya en boşta olan GPU'nun otomatik seçimi (device=-1) ya da birden fazla boşta olan GPU (device=[-1,-1]) |
workers | int | 8 | Veri yükleme için çalışan iş parçacığı sayısı (Çoklu GPU eğitimi ise RANK başına). Veri ön işleme hızını ve modele beslemeyi etkiler, özellikle çoklu GPU kurulumlarında yararlı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. |
pretrained | bool veya str | True | Eğitime önceden eğitilmiş ağırlıklarla mı başlanacağını belirler. Bir boolean değeri veya yüklenecek ağırlıkların dize yolu olabilir. pretrained=False, model mimarisini korurken rastgele başlatılmış ağırlıklarla eğitir. |
optimizer | str | '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. |
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 gruptaki görüntüler, en uzun kenarları imgsz'ye eşit olacak şekilde ortak bir boyuta ulaşmak için minimum düzeyde doldurulur. Verimliliği ve hızı artırabilir ancak model doğruluğunu etkileyebilir. |
multi_scale | float | 0.0 | imgsz değerini her grupta +/- multi_scale oranında (örneğin 0.25 -> 0.75x ila 1.25x) rastgele değiştirir ve model adımı katlarına yuvarlar; 0.0 çok ölçekli eğitimi devre dışı bırakır. |
cos_lr | bool | False | Kosinüs öğrenme oranı zamanlayıcısını kullanarak öğrenme oranını dönemler boyunca bir kosinüs eğrisini izleyecek şekilde ayarlar. Daha iyi yakınsama için öğrenme oranını yönetmeye yardımcı olur. |
close_mosaic | int | 10 | Tamamlanmadan önce eğitimi stabilize etmek için son N dönemde mozaik veri artırma işlemini devre dışı bırakır. 0 olarak ayarlanması bu özelliği kapatı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ştirir, bellek kullanımını azaltır ve doğruluk üzerinde minimum etkiyle eğitimi hızlandırabilir. |
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 transfer öğrenimi için yararlıdır. |
lr0 | float | 0.01 | Başlangıç öğrenme oranı (örneğin SGD=1E-2, Adam=1E-3). Bu değeri ayarlamak, model ağırlıklarının ne kadar hızlı güncelleneceğini etkileyerek optimizasyon süreci için kritik öneme sahiptir. |
lrf | float | 0.01 | Başlangıç oranının bir fraksiyonu olarak nihai öğrenme oranı = (lr0 * lrf), zaman içinde öğrenme oranını ayarlamak için zamanlayıcılarla birlikte kullanılır. |
momentum | float | 0.937 | SGD için momentum faktörü veya Adam optimize ediciler için beta1, geçmiş gradyanların mevcut güncellemeye dahil edilmesini etkiler. |
weight_decay | float | 0.0005 | Aşırı öğrenmeyi önlemek için büyük ağırlıkları cezalandıran 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. |
box | float | 7.5 | Kayı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. |
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 frekansını kullanarak sınıf dengesizliğini yönetmek 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. |
dfl | float | 1.5 | Belirli 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ığı. |
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. |
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 | Enables 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_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 Grup Boyutu: Grup başına görüntü sayısını doğrudan belirten bir tam sayı değeri (örneğin
batch=16) ayarla. - Otomatik Mod (%60 GPU Belleği): Yaklaşık %60 CUDA bellek kullanımı için grup boyutunu otomatik olarak ayarlamak üzere
batch=-1kullan. - Kullanım Oranı ile Otomatik Mod: GPU bellek kullanımının belirtilen oranına göre grup boyutunu ayarlamak için bir fraksiyon değeri (örneğin
batch=0.70) ayarla. - 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.
Link to this sectionArtı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, böylece modelin görülmemiş 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üman | Tip | Varsayılan | Desteklenen Görevler | Aralık | Açıklama |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 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, pose, obb, classify | 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, pose, obb, classify | 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, 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, 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, pose, obb, classify | 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, 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, 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, pose, obb, classify | 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, pose, obb, classify | 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, 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, 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, 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 | `` | 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 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 referans bölümüne bakın.
Link to this sectionGünlükleme#
Bir YOLO26 modeli eğitirken, modelin zaman içindeki performansını takip etmeyi değerli bulabilirsin. Günlükleme burada devreye girer. Ultralytics YOLO, üç tür günlükleyiciye destek sağlar: 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.
Link to this sectionComet#
Comet, veri bilimcilerin ve geliştiricilerin deneyleri ve modelleri izlemelerine, karşılaştırmalarına, açıklamalarına ve optimize etmelerine olanak tanıyan 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.
Link to this sectionClearML#
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 çoğaltmalarına 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.
Link to this sectionTensorBoard#
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:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryTensorBoard'u yerel olarak kullanmak için aşağıdaki komutu çalıştır ve sonuçları localhost:6006 adresinde görüntüle.
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.
Link to this sectionSSS#
Link to this sectionYerel 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ıdan eğit. Ayrıntılar için bulut eğitimi kılavuzuna bak.
Link to this sectionUltralytics YOLO26 kullanarak bir nesne algılama 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 Eğitim Ayarları bölümüne bak.
Link to this sectionUltralytics 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ına göre özelleştirilebilir hale getirir. Daha fazla ayrıntı için Eğitim Modunun Temel Özellikleri bölümüne bak.
Link to this sectionUltralytics 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 ayarla ve son kaydedilen kontrol noktasının yolunu belirt.
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 Kesintiye Uğrayan Eğitimlere Devam Etme bölümüne göz at.
Link to this sectionDengesiz bir veri kümesinde nasıl model eğitirim?#
Sınıf dengesizliği, eğitim verilerinde bazı sınıfların diğerlerinden ö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ırmayı 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ırmayı devre dışı bırakırcls_pw=1.0: Tam ters frekans ağırlıklandırması uygular0.0ile1.0arasındaki değerler: Orta dereceli 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.
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 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 çıkar. Ağırlık dağılımını doğrulamak için hesaplanan sınıf ağırlıklarını eğitim günlüklerinden kontrol edebilirsin.
Link to this sectionApple 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 Eğitimi bölümüne bak.
Link to this sectionYaygı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 kümesi yapılandırma dosyasının yolu (örneğin, coco8.yaml). |
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ı(ları). |
save | True | Eğitim kontrol noktalarının ve son model ağırlıklarının kaydedilmesini etkinleştirir. |
Eğitim ayarları hakkında ayrıntılı bir kılavuz için Eğitim Ayarları bölümüne bak.