Ultralytics YOLO ile Model Eğitimi
Giriş
Bir derin öğrenme modelini eğitmek, ona veri beslemeyi ve doğru tahminler yapabilmesi için parametrelerini ayarlamayı içerir. Ultralytics YOLO26'daki Train modu, modern donanım yeteneklerinden tam olarak yararlanarak nesne algılama modellerinin etkili ve verimli bir şekilde eğitilmesi için tasarlanmıştır. Bu kılavuz, YOLO26'nın güçlü özellikler setini kullanarak kendi modellerini eğitmeye başlamak için ihtiyaç duyduğun tüm detayları kapsamayı amaçlamaktadır.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Neden Eğitim İçin Ultralytics YOLO'yu Seçmelisin?
İşte YOLO26'nın Train modunu tercih etmek için bazı ikna edici nedenler:
- Verimlilik: İster tek GPU'lu bir kurulumda ol, ister birden fazla GPU'da ölçekleme yapıyor ol, donanımından en iyi şekilde yararlan.
- Çok Yönlülük: COCO, VOC ve ImageNet gibi hazır veri setlerine ek olarak özel veri setlerinde de eğitim yap.
- Kullanıcı Dostu: Basit ama güçlü CLI ve Python arayüzleri ile anlaşılır bir eğitim deneyimi.
- Hiperparametre Esnekliği: Model performansını ince ayarlarla optimize etmek için geniş bir özelleştirilebilir hiperparametre yelpazesi. Daha derin bir kontrol için eğiticiyi (trainer) bizzat özelleştirebilirsin.
- Bulut Eğitimi: Gerçek zamanlı metrikler ve otomatik kontrol noktası (checkpointing) ile Ultralytics Platform üzerinden bulut GPU'larında eğitim yap.
Train Modunun Temel Özellikleri
Aşağıdakiler, YOLO26'nın Train modunun bazı dikkate değer özellikleridir:
- Otomatik Veri Seti İndirme: COCO, VOC ve ImageNet gibi standart veri setleri ilk kullanımda otomatik olarak indirilir.
- Çoklu GPU Desteği: Eğitim çabalarını süreci hızlandırmak için birden fazla GPU üzerinde sorunsuz bir şekilde ölçeklendir.
- Hiperparametre Yapılandırması: YAML yapılandırma dosyaları veya CLI argümanları aracılığıyla hiperparametreleri değiştirme seçeneği.
- Görselleştirme ve İzleme: Daha iyi içgörüler için eğitim metriklerinin gerçek zamanlı takibi ve öğrenme sürecinin görselleştirilmesi.
- COCO, VOC, ImageNet ve diğer birçok YOLO26 veri seti ilk kullanımda otomatik olarak indirilir, örneğin:
yolo train data=coco.yaml
Kullanım Örnekleri
YOLO26n'yi COCO8 veri setinde 640 görüntü boyutunda 100 epok boyunca eğit. Eğitim cihazı device argümanı kullanılarak belirlenebilir. Hiçbir argüman geçilmezse, mevcut olduğunda GPU device=0 kullanılacaktır; aksi takdirde device='cpu' kullanılacaktır. Eğitim argümanlarının tam listesi için aşağıdaki Argümanlar bölümüne bak.
Windows'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. Bir GPU mevcutsa, o kullanılacaktır (varsayılan CUDA cihazı 0); aksi takdirde eğitim CPU üzerinde başlayacaktır.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Çoklu GPU Eğitimi
Çoklu GPU eğitimi, eğitim yükünü birden fazla GPU'ya dağıtarak mevcut donanım kaynaklarının daha verimli kullanılmasını sağlar. Bu özellik hem Python API hem de komut satırı arayüzü aracılığıyla kullanılabilir. Çoklu GPU eğitimini etkinleştirmek için kullanmak istediğin GPU cihaz kimliklerini (ID) belirt.
2 GPU ile eğitmek için, 0 ve 1 numaralı CUDA cihazları şu komutları kullanır. Gerektiğinde ek GPU'lara genişlet.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])Birden fazla cihaz belirttiğinde (örneğin device=[0, 1]), Ultralytics dahili olarak yeni bir eğitici örneği oluşturur ve arka planda torch.distributed.run komutunu çalıştırır. Bu, standart CLI kullanımı ve değiştirilmemiş Python betikleri için sorunsuz çalışır.
Ancak, betiğin özel bir eğitici, doğrulayıcı, veri seti veya artırma (augmentation) hattı gibi özel bileşenler içeriyorsa, bu nesneler otomatik olarak serileştirilemez ve DDP alt süreçlerine aktarılamaz. Bu durumda, betiğini doğrudan torch.distributed.run ile başlatmalısın:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyBoştaki GPU Eğitimi
Boştaki GPU Eğitimi, çoklu GPU sistemlerinde en az kullanılan GPU'ların otomatik olarak seçilmesini sağlayarak manuel GPU seçimi olmadan kaynak kullanımını optimize eder. Bu özellik, kullanım metriklerine ve VRAM kullanılabilirliğine göre mevcut GPU'ları tanımlar.
Eğitim için en boşta olan GPU('ları) otomatik olarak seçmek ve kullanmak için -1 cihaz parametresini kullan. Bu, özellikle paylaşımlı bilgi işlem ortamlarında veya birden fazla kullanıcısı olan sunucularda yararlıdır.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])Otomatik seçim algoritması şu GPU'lara öncelik verir:
- Mevcut kullanım yüzdeleri daha düşük olanlar
- Daha yüksek kullanılabilir belleği (boş VRAM) olanlar
- Sıcaklığı ve güç tüketimi daha düşük olanlar
Bu özellik, paylaşımlı bilgi işlem ortamlarında veya farklı modellerde birden fazla eğitim işi çalıştırırken özellikle değerlidir. Değişen sistem koşullarına otomatik olarak uyum sağlar ve manuel müdahale olmaksızın en uygun kaynak tahsisini garanti eder.
Apple Silicon MPS Eğitimi
Ultralytics YOLO modellerine entegre edilen Apple silikon çip desteği ile, artık modellerini güçlü Metal Performance Shaders (MPS) çerçevesinden yararlanan cihazlarda eğitmen mümkün. MPS, Apple'ın özel silikonu üzerinde hesaplama ve görüntü işleme görevlerini yürütmek için yüksek performanslı bir yol sunar.
Apple silikon çipleri üzerinde eğitimi etkinleştirmek için, eğitim sürecini başlatırken cihazın olarak 'mps' belirtmelisin. Aşağıda bunu Python'da ve komut satırı üzerinden nasıl yapabileceğinle ilgili bir örnek yer almaktadır:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Apple silikon çiplerinin hesaplama gücünden yararlanırken, bu eğitim görevlerinin daha verimli işlenmesini sağlar. Daha ayrıntılı rehberlik ve gelişmiş yapılandırma seçenekleri için lütfen PyTorch MPS belgelerine başvur.
Kesintiye Uğrayan Eğitimlerin Devam Ettirilmesi
Derin öğrenme modelleriyle çalışırken daha önce kaydedilmiş bir durumdan eğitimi devam ettirmek çok önemli bir özelliktir. Bu, eğitim sürecinin beklenmedik şekilde kesintiye uğradığı veya bir modeli yeni verilerle veya daha fazla epok için eğitmek istediğin gibi çeşitli durumlarda kullanışlı olabilir.
Eğitim devam ettirildiğinde, Ultralytics YOLO ağırlıkları son kaydedilen modelden yükler ve ayrıca optimize edici durumunu, öğrenme oranı zamanlayıcısını ve epok numarasını geri yükler. Bu, eğitim sürecine kaldığı yerden sorunsuz bir şekilde devam etmeni sağlar.
You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.
Aşağıda, kesintiye uğrayan bir eğitimin Python'da ve komut satırı üzerinden nasıl devam ettirileceğine dair bir örnek yer almaktadır:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)resume=True ayarlandığında, train fonksiyonu 'path/to/last.pt' dosyasında saklanan durumu kullanarak eğitime kaldığı yerden devam edecektir. Eğer resume argümanı atlanırsa veya False olarak ayarlanırsa, train fonksiyonu yeni bir eğitim oturumu başlatacaktır.
Kontrol noktalarının varsayılan olarak her epok sonunda veya save_period argümanı kullanılarak sabit aralıklarla kaydedildiğini unutma, bu nedenle bir eğitim çalıştırmasını devam ettirmek için en az 1 epoku tamamlaman gerekir.
Eğitim Ayarları
YOLO modelleri için eğitim ayarları, eğitim süreci sırasında kullanılan çeşitli hiperparametreleri ve yapılandırmaları kapsar. Bu ayarlar modelin performansını, hızını ve doğruluğunu etkiler. Temel eğitim ayarları arasında batch size, öğrenme oranı, momentum ve weight decay bulunur. Ayrıca, optimize edici, kayıp fonksiyonu seçimi ve eğitim veri seti bileşimi eğitim sürecini etkileyebilir. Bu ayarlarla dikkatli bir şekilde ince ayar ve deneme yapmak, performansı optimize etmek için çok önemlidir.
MuSGD Optimize Edici
YOLO26'da, MuSGD standart SGD güncellemelerini Muon tarzı ortogonalleştirilmiş güncellemelerle birleştiren hibrit bir optimize edicidir.
Ortogonalleştirilmiş Muon güncellemelerinin optimizasyonu stabilize etmeye yardımcı olabileceği daha uzun YOLO26 eğitimleri ve daha büyük veri setleri için önerilir.
Yalnızca param.ndim >= 2 olan parametreler (evrişimsel ağırlıklar gibi) SGD ile birlikte Muon tarzı güncellemeyi alırken, batch normalization katmanları ve bias terimleri gibi daha düşük boyutlu parametreler standart SGD'de kalır.
optimizer=auto kullanıldığında, Ultralytics daha uzun eğitimler için (genellikle iterasyonlar > 10000 olduğunda) otomatik olarak MuSGD'yi seçer. Daha kısa çalıştırmalar için, eğitici AdamW'ye döner.
Örnek kullanım:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDultralytics/optim/muon.py dosyasındaki uygulamaya ve BaseTrainer.build_optimizer içindeki optimize edici otomatik seçim mantığına bak.
| Argüman | Tür | 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 kümesi yapılandırma dosyasına giden yol (örneğin, coco8.yaml). Bu dosya, eğitim ve doğrulama verilerine giden yollar, sınıf adları ve sınıf sayısı dahil olmak üzere veri kümesine özgü parametreleri içerir. |
epochs | int | 100 | Toplam eğitim dönemi sayısı. Her dönem, tüm veri kümesi üzerinde tam bir geçişi temsil eder. Bu değeri ayarlamak eğitim süresini ve model performansını etkileyebilir. |
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ıtlamalı eğitim senaryoları için yararlıdır. |
patience | int | 100 | Eğitimi erken durdurmadan önce doğrulama metriklerinde iyileşme olmadan beklenecek dönem sayısı. Performans durağanlaştığında eğitimi durdurarak aşırı uyumu önlemeye yardımcı olur. |
batch | int veya float | 16 | Üç moda sahip Toplu boyutu: tam sayı olarak ayarlanır (örneğin, batch=16), %60 GPU bellek kullanımı için otomatik mod (batch=-1) veya belirtilen kullanım oranıyla otomatik mod (batch=0.70). |
imgsz | int | 640 | Eğitim için hedef görüntü boyutu. Görüntüler, belirtilen değere eşit kenarlara sahip karelere yeniden boyutlandırılır (rect=False ise), YOLO modelleri için en boy oranını korur ancak RT-DETR için korumaz. Modelin doğruluğunu ve hesaplama karmaşıklığını etkiler. |
save | bool | True | Eğitim kontrol noktalarının ve nihai model ağırlıklarının kaydedilmesini sağlar. Eğitimi devam ettirmek veya model dağıtımı için yararlıdır. |
save_period | int | -1 | Dönem cinsinden belirtilen model kontrol noktalarını kaydetme sıklığı. -1 değeri bu özelliği devre dışı bırakır. Uzun eğitim oturumları sırasında ara modelleri kaydetmek için yararlıdır. |
cache | bool | False | Veri kümesi görüntülerinin bellekte (True/ram), diskte (disk) önbelleğe alınmasını sağlar veya devre dışı bırakır (False). Artan bellek kullanımı pahasına disk G/Ç'sini azaltarak eğitim hızını artırır. |
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 veya device=npu:0), veya en boş GPU'nun otomatik seçimi (device=-1) veya birden fazla boş 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). Özellikle çoklu GPU kurulumlarında yararlı olan veri ön işleme ve modele besleme hızını etkiler. |
project | str | None | Eğitim çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerin düzenli depolanmasına olanak tanır. |
name | str | None | Eğitim çalışmasının adı. Eğitim günlüklerinin ve çıktılarının depolandığı proje klasörü içinde bir alt dizin oluşturmak için kullanılır. |
exist_ok | bool | False | True ise, mevcut bir proje/ad dizininin üzerine yazılmasına izin verir. Önceki çıktıları manuel olarak temizlemeye gerek kalmadan yinelemeli deneyler için yararlıdır. |
pretrained | bool veya str | True | Eğitime önceden eğitilmiş ağırlıklarla mı başlanacağını belirler. Bir boole değeri veya yüklenecek ağırlıklara giden bir dize yolu olabilir. pretrained=False, model mimarisini korurken rastgele başlatılmış ağırlıklarla eğitim yapar. |
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 tohumu belirler, aynı yapılandırmalarla çalıştırmalar arasında sonuçların tekrarlanabilirliğini sağlar. |
deterministic | bool | True | Belirlenmiş algoritma kullanımını zorunlu kılar, tekrarlanabilirliği sağlar ancak belirlenmemiş 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, konsolda ilerleme çubuklarını, dönem başına metrikleri ve ek eğitim bilgilerini görüntüler. |
single_cls | bool | False | Eğitim sırasında çok sınıflı veri kümelerindeki tüm sınıfları tek bir sınıf olarak ele alır. İkili sınıflandırma görevleri veya sınıflandırmadan ziyade nesne varlığına odaklanırken yararlıdır. |
classes | list[int] | None | Eğitim yapılacak sınıf kimliklerinin bir listesini belirtir. Eğitim sırasında filtrelemek ve yalnızca belirli sınıflara odaklanmak için yararlıdır. |
rect | bool | False | Minimum dolgu stratejisini etkinleştirir—bir gruptaki görüntüler ortak bir boyuta ulaşmak için minimum düzeyde doldurulur, en uzun taraf imgsz değerine eşittir. Verimliliği ve hızı artırabilir ancak model doğruluğunu etkileyebilir. |
multi_scale | float | 0.0 | Her grupta imgsz değerini rastgele +/- multi_scale kadar değiştirir (örneğin 0.25 -> 0.75x ila 1.25x), model adım katlarına yuvarlar; 0.0 çok ölçekli eğitimi devre dışı bırakır. |
cos_lr | bool | False | Epoklar boyunca öğrenme hızını kosinüs eğrisine göre ayarlayan bir kosinüs öğrenme hızı zamanlayıcısı kullanır. Daha iyi yakınsama için öğrenme hızını yönetmeye yardımcı olur. |
close_mosaic | int | 10 | Eğitimi tamamlamadan önce stabilize etmek için son N epokta mozaik veri artırma işlemini devre dışı bırakır. 0 olarak ayarlamak bu özelliği kapatır. |
resume | bool | False | Eğitimi son kaydedilen kontrol noktasından devam ettirir. Model ağırlıklarını, optimize edici durumunu ve epok sayısını otomatik olarak yükleyerek eğitimi sorunsuz bir şekilde sürdürür. |
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 muhtemelen hızlandırır. |
fraction | float | 1.0 | Eğitim için kullanılacak veri kümesi oranını belirtir. Tam veri kümesinin bir alt kümesinde eğitim yapılmasına olanak tanır, bu deneyler için veya kaynaklar sınırlı olduğunda kullanışlıdır. |
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 faydalı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 kullanışlıdır. |
lr0 | float | 0.01 | Başlangıç öğrenme hızı (örn. SGD=1E-2, Adam=1E-3). Bu değeri ayarlamak, model ağırlıklarının ne kadar hızlı güncelleneceğini etkilediğinden optimizasyon süreci için kritiktir. |
lrf | float | 0.01 | Başlangıç hızının bir oranı olarak nihai öğrenme hızı = (lr0 * lrf), öğrenme hızını zaman içinde ayarlamak için zamanlayıcılarla birlikte kullanılır. |
momentum | float | 0.937 | SGD için momentum faktörü veya Adam iyileştiricileri için beta1, geçmiş gradyanların mevcut güncellemeye dahil edilmesini etkiler. |
weight_decay | float | 0.0005 | L2 düzenlileştirme terimi, aşırı öğrenmeyi (overfitting) önlemek için büyük ağırlıkları cezalandırır. |
warmup_epochs | float | 3.0 | Öğrenme hızı ısınması için epok sayısı; eğitimi erkenden stabilize etmek için öğrenme hızını düşük bir değerden başlangıç öğrenme hızına kademeli olarak artırır. |
warmup_momentum | float | 0.8 | Isınma aşaması için başlangıç momentumu; ısınma süresi boyunca ayarlanan momentuma kademeli olarak geçer. |
warmup_bias_lr | float | 0.1 | Isınma aşamasında sapma (bias) parametreleri için öğrenme hızı, başlangıç epoklarında 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ığı, diğer bileşenlere göre doğru sınıf tahmininin önemini etkiler. |
cls_pw | float | 0.0 | Ters sınıf frekansını kullanarak sınıf dengesizliğini ele almak için sınıf ağırlıklandırma gücü. 0.0 sınıf ağırlıklandırmayı devre dışı bırakır, 1.0 tam ters frekans ağırlıklandırmasını uygular. 0 ile 1 arasındaki değerler kısmi ağırlıklandırma sağlar. |
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ı doğru tahmin etmeye verilen önemi etkiler. |
kobj | float | 1.0 | Poz tahmini modellerinde anahtar nokta nesnellik kaybının ağırlığı, tespit güvenini poz doğruluğu ile dengeler. |
rle | float | 1.0 | Poz tahmini modellerinde kalıntı log-olabilirlik tahmini kaybının ağırlığı, anahtar nokta konumlandırmasının kesinliğini etkiler. |
angle | float | 1.0 | OBB modellerinde açı kaybının ağırlığı, yönlendirilmiş sınırlayıcı kutu açı tahminlerinin kesinliğini etkiler. |
nbs | int | 64 | Kaybın normalizasyonu için nominal yığın (batch) boyutu. |
overlap_mask | bool | True | Nesne maskelerinin eğitim için tek bir maskede birleştirilip birleştirilmeyeceğini veya her nesne için ayrı tutulup tutulmayacağını belirler. Örtüşme durumunda, daha küçük maske birleştirme sırasında daha büyük olanın üzerine yerleştirilir. |
mask_ratio | int | 4 | Segmentasyon maskeleri için örnekleme düşürme 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ştirir, ayrı bir veri kümesi üzerinde model performansının periyodik olarak değerlendirilmesine olanak tanır. |
plots | bool | True | Eğitim ve doğrulama metriklerinin grafiklerini ve tahmin örneklerini oluşturup kaydeder, model performansı ve öğrenme süreci hakkında görsel içgörüler sağlar. |
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 Batch Size: Batch başına görüntü sayısını doğrudan belirten bir tam sayı değeri ayarla (örneğin
batch=16). - Otomatik Mod (%60 GPU Belleği): Yaklaşık %60 CUDA bellek kullanımı için batch size'ı otomatik olarak ayarlamak üzere
batch=-1kullan. - Kullanım Oranı ile Otomatik Mod: Belirtilen GPU bellek kullanımı oranına göre batch size'ı ayarlamak için bir kesir değeri ayarla (örneğin
batch=0.70). - OOM Otomatik Yeniden Deneme: İlk epok sırasında bir CUDA bellek yetersizliği (out-of-memory) hatası oluşursa, eğitici otomatik olarak batch size'ı yarıya indirir ve yeniden dener (3 defaya kadar). Bu yalnızca tek GPU eğitimi için geçerlidir; çoklu GPU (DDP) eğitimi hatayı anında tetikleyecektir.
Artırma Ayarları ve Hiperparametreler
Artırma teknikleri, eğitim verilerine değişkenlik katarak YOLO modellerinin sağlamlığını ve performansını artırmak için gereklidir; bu, modelin görünmeyen verilere daha iyi genelleme yapmasına yardımcı olur. Aşağıdaki tablo, her bir artırma argümanının amacını ve etkisini özetlemektedir:
| Argüman | Tür | 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 kesri kadar ayarlar ve renk değişkenliği sağlar. Modelin farklı aydınlatma koşullarında genelleme yapmasına yardımcı olur. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Görüntünün doygunluğunu bir kesir kadar değiştirerek renklerin yoğunluğunu etkiler. Farklı çevresel koşulları simüle etmek için yararlıdır. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Görüntünün değerini (parlaklığını) bir kesir kadar değiştirerek modelin çeşitli aydınlatma koşullarında iyi performans göstermesine yardımcı olur. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | Görüntüyü belirtilen derece aralığında rastgele döndürerek 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ırarak kısmen görünür nesneleri algılamayı öğrenmeye yardımcı olur. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | Görüntüyü bir kazanç faktörü kadar ölçekleyerek kameradan farklı mesafelerdeki nesneleri simüle eder. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | Görüntüyü belirtilen derecede eğerek nesnelerin farklı açılardan görülmesi etkisini taklit eder. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | Görüntüye rastgele bir perspektif dönüşümü uygulayarak modelin 3B uzaydaki nesneleri anlama yeteneğini geliştirir. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | Görüntüyü belirtilen olasılıkla baş aşağı çevirerek 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 seti çeşitliliğini artırmak için yararlı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şı sağlamlığı artırmak için yararlıdır. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | Dört eğitim görüntüsünü tek bir görüntüde birleştirerek farklı sahne kompozisyonlarını ve nesne etkileşimlerini simüle eder. Karmaşık sahnelerin anlaşılması için oldukça etkilidir. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | İki görüntüyü ve bunların etiketlerini harmanlayarak kompozit bir görüntü oluşturur. Etiket gürültüsü ve görsel değişkenlik ekleyerek modelin genelleme yeteneğini geliştirir. |
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 koruyan kısmi bir harman oluşturur. Tıkanıklık 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 | Modeli daha az belirgin özelliklere odaklanmaya teşvik etmek için eğitim sırasında görüntü 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 listesini kabul eder. |
Bu ayarlar, veri kümesinin ve eldeki görevin özel gereksinimlerini karşılamak için ayarlanabilir. Farklı değerlerle denemeler yapmak, en iyi model performansını sağlayan optimal artırma stratejisini bulmaya yardımcı olabilir.
Eğitim artırma işlemleri hakkında daha fazla bilgi için referans bölümüne göz at.
Günlüğe Kaydetme (Logging)
Bir YOLO26 modeli eğitirken, modelin performansını zaman içinde takip etmeyi değerli bulabilirsin. Günlüğe kaydetme (logging) burada devreye girer. Ultralytics YOLO üç tür günlük kaydedici (logger) için destek sunar - Comet, ClearML ve TensorBoard.
Bir günlük kaydedici kullanmak için, yukarıdaki kod parçacığındaki açılır menüden onu seç ve çalıştır. Seçilen günlük kaydedici kurulacak ve başlatılacaktır.
Comet
Comet, veri bilimcilerin ve geliştiricilerin deneyleri ve modelleri takip etmelerini, karşılaştırmalarını, açıklamalarını ve optimize etmelerini sağlayan bir platformdur. Gerçek zamanlı metrikler, kod farkları (diffs) ve hiperparametre takibi gibi işlevler sunar.
Comet kullanmak için:
# pip install comet_ml
import comet_ml
comet_ml.init()Web sitelerinden Comet hesabına giriş yapmayı ve API anahtarını almayı unutma. Deneylerini günlüğe kaydetmek için bunu ortam değişkenlerine veya betiğine eklemen gerekecek.
ClearML
ClearML, deneylerin takibini otomatikleştiren ve kaynakların verimli bir şekilde paylaşılmasına yardımcı olan açık kaynaklı bir platformdur. Ekiplerin ML çalışmalarını daha verimli bir şekilde yönetmelerine, yürütmelerine ve yeniden üretmelerine yardımcı olmak için tasarlanmıştır.
ClearML kullanmak için:
# pip install clearml
import clearml
clearml.browser_login()Bu betiği çalıştırdıktan sonra, tarayıcıda ClearML hesabına giriş yapman ve oturumunun kimliğini doğrulaman gerekecek.
TensorBoard
TensorBoard, TensorFlow için bir görselleştirme araç setidir. TensorFlow grafiğini görselleştirmeni, grafiğinin yürütülmesiyle ilgili nicel metrikleri çizmeni ve içinden geçen görüntüler gibi ek verileri göstermeni sağlar.
Google Colab içinde TensorBoard kullanmak için:
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 adresinden görüntüle.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryBu, TensorBoard'u yükleyecek ve eğitim günlüklerinin kaydedildiği dizine yönlendirecektir.
Günlük kaydedicini ayarladıktan sonra model eğitimine devam edebilirsin. Tüm eğitim metrikleri seçtiğin platforma otomatik olarak kaydedilecek ve modelinin performansını zaman içinde izlemek, farklı modelleri karşılaştırmak ve iyileştirme alanlarını belirlemek için bu günlüklere erişebilirsin.
SSS
Yerel bir GPU olmadan eğitim yapabilir miyim?
Evet. Ultralytics Platform, başlaman için ücretsiz kredilerle bulut eğitimini destekler. Veri kümeni yükle, bir model ve GPU seç ve doğrudan tarayıcı üzerinden eğitim yap. Ayrıntılar için bulut eğitimi kılavuzuna bak.
Ultralytics YOLO26 kullanarak nasıl bir nesne algılama modeli eğitebilirim?
Ultralytics YOLO26 kullanarak bir nesne algılama modeli eğitmek için Python API'sini veya CLI'yı kullanabilirsin. Aşağıda her ikisi için birer örnek verilmiştir:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Daha fazla ayrıntı için Eğitim Ayarları bölümüne bak.
Ultralytics YOLO26'nın Eğitim modunun temel özellikleri nelerdir?
Ultralytics YOLO26'nın Eğitim modunun temel özellikleri şunlardır:
- Otomatik Veri Kümesi İndirme: COCO, VOC ve ImageNet gibi standart veri kümelerini otomatik olarak indirir.
- Çoklu GPU Desteği: Daha hızlı işlem için eğitimi birden fazla GPU üzerinde ölçeklendirir.
- Hiperparametre Yapılandırması: Hiperparametreleri YAML dosyaları veya CLI argümanları aracılığıyla özelleştir.
- Görselleştirme ve İzleme: Daha iyi içgörüler için eğitim metriklerinin gerçek zamanlı takibi.
Bu özellikler eğitimi verimli hale getirir ve ihtiyaçlarına göre özelleştirilebilir kılar. Daha fazla ayrıntı için Eğitim Modunun Temel Özellikleri bölümüne bak.
Ultralytics YOLO26'da yarıda kesilmiş bir oturumdan eğitimi nasıl devam ettirebilirim?
Yarıda kesilmiş bir oturumdan eğitime devam etmek için resume argümanını True olarak ayarla ve son kaydedilen kontrol noktasının (checkpoint) yolunu belirt.
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)Daha fazla bilgi için Yarıda Kesilen Eğitimlerin Devam Ettirilmesi bölümüne göz at.
Dengesiz bir veri kümesinde nasıl model eğitebilirim?
Sınıf dengesizliği, eğitim verilerinde bazı sınıfların diğerlerine göre önemli ölçüde daha az örneğe sahip olduğunda ortaya çıkar. Bu, modelin nadir sınıflarda düşük performans göstermesine neden olabilir. Ultralytics YOLO, bu sorunu çözmek için cls_pw argümanı aracılığıyla sınıf ağırlıklandırmasını destekler.
cls_pw argümanı, sınıf ağırlıklandırma gücünü ters sınıf frekansına göre kontrol eder:
cls_pw=0.0(varsayılan): Sınıf ağırlıklandırmayı devre dışı bırakı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
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 yükselt. Ağırlık dağılımını doğrulamak için eğitim günlüklerindeki hesaplanmış sınıf ağırlıklarını kontrol edebilirsin.
Apple silikon çiplerinde YOLO26 modellerini eğitebilir miyim?
Evet, Ultralytics YOLO26, Metal Performance Shaders (MPS) çerçevesinden yararlanarak Apple silikon çiplerinde eğitimi destekler. Eğitim cihazın olarak 'mps' belirt.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Daha fazla ayrıntı için Apple Silicon MPS Eğitimi bölümüne bak.
Yaygın eğitim ayarları nelerdir ve bunları nasıl yapılandırabilirim?
Ultralytics YOLO26, toplu iş boyutu (batch size), öğrenme oranı, dönemler (epochs) ve daha fazlası gibi çeşitli eğitim ayarlarını argümanlar aracılığıyla yapılandırmana olanak tanır. İşte kısa bir özet:
| Argü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 ayarlanabilen 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 nihai model ağırlıklarının kaydedilmesini sağlar. |
Eğitim ayarlarıyla ilgili derinlemesine bir kılavuz için Eğitim Ayarları bölümüne bak.