Ultralytics YOLO ile Model Eğitimi#
Giriş#
Bir derin öğrenme modelini eğitmek, modele veri beslemeyi ve modelin doğru tahminler yapabilmesi için parametrelerini ayarlamayı içerir. Ultralytics YOLO26 içindeki Eğitim modu, nesne algılama modellerinin etkili ve verimli bir şekilde eğitilmesi için tasarlanmıştır ve modern donanım yeteneklerinden tamamen yararlanır. Bu kılavuz, YOLO26'nın güçlü özellik setini kullanarak kendi modellerini eğitmeye başlamak için ihtiyacın olan tüm detayları kapsamayı amaçlamaktadır. Eğer henüz Ultralytics yüklemediysen, Hızlı başlangıç kılavuzu ile başla.
Planlanan eğitim örnekleri için yayınlanmamış YOLO27 önizlemesine göz at.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Eğitim İçin Neden Ultralytics YOLO Seçmelisin?#
İşte YOLO26'nın Eğitim modunu tercih etmek için bazı ikna edici nedenler:
- Verimlilik: İster tek bir GPU kurulumunda ol ister birden fazla GPU üzerinde ölçeklendiriyor ol, donanımından en iyi şekilde yararlan.
- Çok Yönlülük: COCO, VOC ve ImageNet gibi hazır veri setlerinin yanı sıra özel veri setleri üzerinde de eğitim yap.
- Kullanıcı Dostu: Basit ama güçlü CLI ve Python arayüzleri ile anlaşılır bir eğitim deneyimi yaşa.
- Hiperparametre Esnekliği: Model performansını hassas bir şekilde ayarlamak için özelleştirilebilir geniş bir hiperparametre yelpazesi. Daha derin bir kontrol için eğiticinin kendisini özelleştirebilirsin.
- Bulut Eğitimi: Gerçek zamanlı metrikler ve otomatik kontrol noktası oluşturma özelliği ile Ultralytics Platform üzerinden bulut GPU'larında eğitim yap.
Eğitim Modunun Temel Özellikleri#
İşte YOLO26'nın Eğitim modunun dikkate değer bazı özellikleri:
- Otomatik Veri Seti İndirme: İndirme kaynağına sahip veri seti yapılandırmaları, ilk kullanımda otomatik olarak indirilir; örneğin
yolo train data=coco8.yaml. Desteklenen formatlar ve veri setleri için Veri setleri genel bakış bölümüne göz at. - Çoklu GPU Desteği: Süreci hızlandırmak için eğitim çabalarını 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 elde etmek için eğitim metriklerinin gerçek zamanlı takibi ve öğrenme sürecinin görselleştirilmesi.
Kullanım Örnekleri#
YOLO26n'yi COCO8 veri seti üzerinde 640 görsel boyutunda 100 dönem (epoch) boyunca eğit. Eğitim cihazı device argümanı kullanılarak belirtilebilir. Herhangi bir argüman iletilmezse, mevcut olduğunda device=0 GPU kullanılacak; 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 üzerinde, eğitimi bir betik olarak başlattığınızda bir RuntimeError alabilirsiniz. Bunu çözmek için eğitim kodunuzun önüne bir if __name__ == "__main__": bloğu ekleyin.
Cihaz otomatik olarak belirlenir. Bir GPU mevcutsa, 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ü üzerinden kullanılabilir. Çoklu GPU eğitimini etkinleştirmek için kullanmak istediğin GPU cihaz kimliklerini 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])Çoklu GPU eğitimi, torch>=2.4 için resmi PyTorch ikili dosyalarıyla Windows üzerinde çalışmaz. Ultralytics, randevu adımı PyTorch 2.4'ten bu yana varsayılan olarak libuv arka ucunu oluşturan bir TCPStore oluşturan torch.distributed.run aracılığıyla DDP başlatır ve resmi Windows ikili dosyaları libuv olmadan derlenmiştir. Eğitim hemen şu hata ile sonlanır:
RuntimeError: use_libuv was requested but PyTorch was built without libuv support
USE_LIBUV=0 ayarını yapmak bunu çözmez, çünkü randevu TCPStore öğesini doğrudan oluşturur ve bu kod yolu hiçbir zaman değişkeni okumaz. Birden fazla GPU kullanmak için Linux veya WSL2 üzerinde eğit veya Windows üzerinde device=0 ile tek bir GPU üzerinde eğit.
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 çalıştırır. Bu, standart CLI kullanımı ve değiştirilmemiş Python betikleri için sorunsuz çalışır.
Ancak, betiğin özel bileşenler içeriyorsa—özel bir eğitici, doğrulayıcı, veri seti veya artırma işlem hattı gibi—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.pyAMD GPU eğitimi, standart device=0 veya device=cuda:0 sözdizimiyle bir PyTorch ROCm derlemesi kullanır. Kurulum ve mevcut MIGraphX, DirectML ve Ryzen AI NPU destek durumu için AMD integration guide sayfasına bakın.
Intel GPU eğitimi device=xpu:0 kullanır veya XCCL sağlayan bir PyTorch derlemesi ile birden fazla XPU kimliği kullanır.
Huawei Ascend NPU Eğitimi#
Ultralytics, torch_npu aracılığıyla Huawei Ascend NPU'larda eğitimi ve doğrulamayı destekler. Ascend Extension for PyTorch installation guide kılavuzunu takip ederek birbiriyle uyumlu CANN, PyTorch ve torch_npu sürümlerini yükleyin, ardından Ultralytics'i başlatmadan önce CANN ortamını kaynak gösterin:
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 aktif NPU'yu kullanır. AutoBatch tek NPU eğitimi için kullanılabilirken, birden fazla NPU kimliği 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 sayfasına bakın.
Boşta Olan 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 gerektirmeden kaynak kullanımını optimize eder. Bu özellik, kullanım metriklerine ve VRAM mevcudiyetine 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 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ı modeller üzerinde birden fazla eğitim işi çalıştırırken özellikle değerlidir. Manuel müdahaleye gerek kalmadan optimum kaynak tahsisini garanti ederek değişen sistem koşullarına otomatik olarak uyum sağlar.
Apple Silicon MPS Eğitimi#
Ultralytics YOLO modellerine entegre edilen Apple silikon çip desteği ile, artık güçlü Metal Performance Shaders (MPS) çerçevesini kullanan cihazlarda modellerini eğitmen mümkündür. MPS, Apple'ın özel silikonu üzerinde hesaplama ve görsel işleme görevlerini yürütmek için yüksek performanslı bir yol sunar.
Apple silikon çiplerinde 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ı aracılığıyla nasıl yapabileceğine dair 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 with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Apple silikon çiplerinin hesaplama gücünden yararlanırken, bu özellik 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 göz at.
Kesintiye Uğrayan Eğitimlere Devam Etme#
Eğitime önceden kaydedilmiş bir durumdan devam etmek, derin öğrenme modelleriyle çalışırken çok önemli bir özelliktir. Bu, eğitim sürecinin beklenmedik bir şekilde kesintiye uğraması veya bir modeli yeni verilerle ya da daha fazla dönem boyunca eğitmeye devam etmek istediğin durumlar gibi çeşitli senaryolarda işe yarayabilir.
Eğitim devam ettirildiğinde Ultralytics YOLO, ağırlıkları son kaydedilen modelden yükler ve ayrıca optimizasyon durumunu, öğrenme hızı zamanlayıcısını, epoch numarasını ve veri setini geri yükler. Bu, eğitim sürecine kaldığı yerden sorunsuz bir şekilde devam etmeni sağlar. Kontrol noktasının veri seti yerine farklı bir veri setinde devam etmek için resume ile birlikte açık bir data= geçir.
train yöntemini çağırırken resume argümanını True olarak ayarlayarak ve kısmen eğitilmiş model ağırlıklarını içeren .pt dosyasının yolunu belirterek Ultralytics YOLO'da eğitime kolayca devam edebilirsin.
Aşağıda Python kullanarak ve komut satırı üzerinden kesintiye uğramış bir eğitime nasıl devam edileceğine dair bir örnek bulunmaktadı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 ayarlanarak, train fonksiyonu 'path/to/last.pt' dosyasında saklanan durumu kullanarak kaldığı yerden eğitime 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 dönemin sonunda veya save_period argümanı kullanılarak sabit aralıklarla kaydedildiğini unutma, bu nedenle bir eğitim çalışmasına devam etmek için en az 1 dönemi tamamlamalısın.
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 parti boyutu (batch size), öğrenme oranı, momentum ve ağırlık sönümlemesi yer alır. Ek olarak, optimizatör tercihi, kayıp fonksiyonu ve eğitim veri seti bileşimi eğitim sürecini etkileyebilir. Bu ayarlar üzerinde dikkatli bir şekilde ince ayar yapmak ve denemeler yapmak, performansı optimize etmek için çok önemlidir.
MuSGD Optimize Edicisi#
YOLO26'da MuSGD, standart SGD güncellemelerini Muon tarzı ortogonalleştirilmiş güncellemelerle birleştiren hibrit bir optimizatördür.
Ortogonalleştirilmiş Muon güncellemelerinin optimizasyonu dengelemeye yardımcı olabileceği daha uzun YOLO26 eğitim çalışmaları ve daha büyük veri setleri için önerilir.
Toplu normalleştirme ağırlıkları ve sapma (bias) terimleri gibi diğer tüm parametreler standart SGD üzerinde kalırken, yalnızca 2D doğrusal ağırlıklar ve 4D evrişimli filtreler (2D'ye yeniden şekillendirilmiş) SGD ile birlikte Muon tarzı güncellemeyi alır.
optimizer=auto kullanıldığında, Ultralytics daha uzun eğitim çalışmaları için (tipik olarak iterasyonlar > 10000 olduğunda) otomatik olarak MuSGD seçer. Daha kısa çalışmalar için eğitici AdamW'ye geri döner.
Örnek kullanım:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDImplementasyonu ultralytics/optim/muon.py içinde ve optimizatör otomatik seçim mantığını BaseTrainer.build_optimizer içinde incele.
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Eğitim için model dosyasını belirtir. Bir .pt önceden eğitilmiş modeline veya .yaml yapılandırma dosyasına giden yolu kabul eder. Model yapısını tanımlamak veya ağırlıkları başlatmak için gereklidir. |
data | str | None | Eğitim ve doğrulama verilerinin yollarını, sınıf adlarını ve sınıf sayısını içeren veri kümesi YAML dosyasının yolu (ör. coco8.yaml). Sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı (ör. imagenet10) kullanılır. |
epochs | int | 100 | Toplam eğitim epoch sayısı. Her epoch, veri kümesinin tamamı üzerinde tam bir geçişi temsil eder. Bu değerin ayarlanması eğitim süresini ve model performansını etkileyebilir. |
time | float | None | Saat cinsinden maksimum eğitim süresi. Ayarlanırsa epochs bağımsız değişkenini geçersiz kılar ve eğitimin belirtilen sürenin ardından otomatik olarak durmasını sağlar. Süreyle kısıtlı eğitim senaryolarında kullanışlıdır. |
patience | int | 100 | Eğitimi erken durdurmadan önce doğrulama metriklerinde iyileşme olmadan beklenecek epoch sayısı. Performans yatay seyrettiğinde eğitimi durdurarak aşırı öğrenmeyi önlemeye yardımcı olur. |
batch | int veya float | 16 | Toplu iş boyutu için üç mod vardır: tamsayı olarak ayarlama (ör. batch=16), GPU belleğinin %60'ının kullanılacağı 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, belirtilen değere eşit kenarlara sahip karelere yeniden boyutlandırılır (rect=False ise); YOLO modellerinde en-boy oranı korunur, ancak RT-DETR'de 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 etkinleştirir. Eğitimi sürdürmek veya model dağıtımı için kullanışlıdır. |
save_period | int | -1 | Model kontrol noktalarının epoch cinsinden belirtilen 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 kullanışlıdır. |
cache | bool | False | Veri kümesi görüntülerinin bellekte (True/ram), diskte (disk) önbelleğe alınmasını etkinleştirir veya önbelleğe almayı devre dışı bırakır (False). Artan bellek kullanımı karşılığında disk G/Ç'sini azaltarak eğitim hızını artırır. |
device | int veya str veya list | None | Eğitim için hesaplama cihazlarını belirtir: tek GPU (device=0), birden fazla GPU (device=[0,1]), CPU (device=cpu), Apple silicon için MPS (device=mps), Huawei Ascend NPU (device=npu:0 veya device=npu:0,1), boşta olan GPU'nun otomatik seçimi (device=-1) veya boşta olan birden fazla GPU'nun otomatik seçimi (device=[-1,-1]). |
workers | int | 8 | Veri yükleme için iş parçacığı sayısı (Multi-GPU eğitiminde her RANK başına). Veri ön işleme ve verilerin modele aktarılma hızını etkiler; özellikle çoklu GPU kurulumlarında kullanışlıdır. |
project | str | None | Eğitim çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerin düzenli biçimde depolanmasını sağlar. |
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 denemeler yapmak için kullanışlıdır. |
save_dir | str | None | Çalışma çıktılarının kaydedileceği tam dizini belirtir ve project/name birleşimini geçersiz kılar. Yol, otomatik olarak artırılmadan olduğu gibi kullanılır; bu nedenle ardışık çalışmalar aynı dizini yeniden kullanır. |
pretrained | bool veya str | True | Eğitime önceden eğitilmiş ağırlıklarla başlanıp başlanmayacağını belirler. Boolean bir değer veya yüklenecek ağırlıklara giden dize biçiminde bir yol 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 yapılırken, sınıf adlarının eşleştiği yerlerde önceden eğitilmiş sınıflandırma başlığı satırlarını yeni modele kopyalar; böylece örtüşen sınıflar öğrendikleri yanlılığı, başlık genişliği değişmemişse ağırlıklarıyla birlikte korur. Sınıf sayıları farklı olsa da aynı olsa da, sınıf sırası farklı olduğunda da uygulanır. |
optimizer | str | 'auto' | Eğitim için iyileştirici seçimi. Seçenekler arasında, eğitim yineleme sayısından AdamW veya MuSGD seçmek için kullanılan SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp veya auto bulunur. Yakınsama hızını ve kararlılığını etkiler. |
seed | int | 0 | Eğitim için rastgele tohum değerini ayarlar ve aynı yapılandırmalarla yapılan çalışmalar arasında sonuçların yeniden üretilebilir olmasını sağlar. |
deterministic | bool | True | Deterministik algoritmaların kullanılmasını zorunlu kılar; ancak deterministik olmayan algoritmalara getirilen kısıtlama nedeniyle yeniden üretilebilirliği sağlarken performansı ve hızı etkileyebilir. |
verbose | bool | True | Eğitim sırasında ayrıntılı çıktıyı etkinleştirir; ilerleme çubuklarını, epoch başına metrikleri ve ek eğitim bilgilerini konsolda görüntüler. |
single_cls | bool | False | Çok sınıflı veri kümelerindeki 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 veya sınıflandırmadan çok nesne varlığına odaklanılan durumlar için kullanışlıdır. |
classes | list[int] | None | Eğitim yapılacak sınıf kimliklerinin listesini belirtir. Eğitim sırasında belirli sınıfları filtrelemek ve yalnızca bunlara odaklanmak için kullanışlıdır. |
rect | bool | False | Minimum dolgulu stratejiyi etkinleştirir; bir toplu iş içindeki görüntüler, en uzun kenar imgsz değerine 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 | Her toplu işte imgsz değerini +/- multi_scale oranında rastgele değiştirir (ör. 0.25 -> 0.75x ile 1.25x arasında) ve değeri model stride 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ı kullanır ve öğrenme oranını epoch'lar boyunca kosinüs eğrisini izleyerek ayarlar. Daha iyi yakınsama için öğrenme oranını yönetmeye yardımcı olur. |
close_mosaic | int | 10 | Tamamlanmadan önce eğitimi kararlı hâle getirmek için son N epoch'ta mozaik veri artırmayı devre dışı bırakır. 0 olarak ayarlanması bu özelliği devre dışı bırakır. |
resume | bool | False | Eğitimi son kaydedilen kontrol noktasından sürdürür. Model ağırlıklarını, iyileştirici durumunu ve epoch sayısını otomatik olarak yükleyerek eğitime kesintisiz devam eder. |
amp | bool veya str | True | Eğitim hassasiyetini ayarlar: True veya "fp16" FP16 kullanır, "bf16" desteklenen CUDA cihazlarında BF16 kullanır ve False veya "fp32" FP32 kullanır. |
quantize | int veya str | None | Ağırlıkların INT8 dışa aktarımına tolerans göstermesini sağlamak için döngüde sahte nicemleme ile ince ayar yapan INT8 nicemleme farkındalıklı eğitim (QAT) için 8 (veya "int8") olarak ayarla. Bakınız: Quantization-Aware Training. |
fraction | float, int veya list | 1.0 | Veri kümesi alt kümesini oran/sayı veya [train, val, test] listesi olarak belirtir. 1 tam bölümü, 1 üzerindeki tamsayılar görüntü sayılarını ifade eder ve yalnızca isteğe bağlı test girdisi, hiçbiri anlamında 0/0.0 değerlerini kabul eder. İki öğeli listeler testi tam olarak korur. |
profile | bool | False | Eğitim sırasında ONNX ve TensorRT hızlarının profilini çıkarmayı etkinleştirir; model dağıtımını optimize etmek için kullanışlıdır. |
freeze | int veya list | None | Modelin ilk N katmanını veya dizin ya da modül adına göre belirli katmanları (23.cv2, başındaki model. olmadan) dondurarak eğitilebilir parametre sayısını azaltır. İnce ayar veya aktarım öğrenmesi için kullanışlıdır. |
lr0 | float | 0.01 | Başlangıç öğrenme oranı (yani SGD=1E-2, Adam=1E-3). Bu değerin ayarlanması optimizasyon süreci için kritik öneme sahiptir ve model ağırlıklarının ne kadar hızlı güncelleneceğini etkiler. |
lrf | float | 0.01 | Başlangıç oranının kesri olarak nihai öğrenme oranı = (lr0 * lrf); öğrenme oranı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 ne ölçüde katılacağını etkiler. |
weight_decay | float | 0.0005 | Büyük ağırlıkları cezalandırarak aşırı öğrenmeyi önleyen L2 düzenlileştirme terimi. |
warmup_epochs | float | 3.0 | Öğrenme oranı ısınması için epoch sayısı; eğitimin erken aşamasını kararlı hâle getirmek üzere öğrenme oranını düşük bir değerden başlangıç öğrenme oranına kademeli olarak yükseltir. |
warmup_momentum | float | 0.8 | Isınma aşaması için başlangıç momentumu; ısınma dönemi boyunca ayarlanan momentuma kademeli olarak uyum sağlar. |
warmup_bias_lr | float | 0.1 | Isınma aşamasında bias parametreleri için öğrenme oranı; ilk epoch'larda model eğitimini kararlı hâle getirmeye yardımcı olur. Varsayılan optimizer='auto' altında otomatik olarak 0.0 değerine ayarlanır; bu nedenle bunu kullanmak için bir iyileştiriciyi açıkça adlandırmalısın. |
distill_model | str | None | Bilgi damıtma için öğretmen model kontrol noktasına (ör. yolo26x.pt) giden yol. Ayarlandığında öğrenci model, dondurulmuş öğretmen tarafından yönlendirilen ek bir damıtma kaybıyla eğitilir. |
dis | float | 6.0 | Standart algılama 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 | Kayıp işlevindeki kutu kaybı bileşeninin ağırlığı; sınırlayıcı kutu koordinatlarının doğru tahmin edilmesine verilen önemi etkiler. |
cls | float | 0.5 | Toplam kayıp işlevindeki sınıflandırma kaybının ağırlığı; diğer bileşenlere kıyasla doğru sınıf tahmininin önemini etkiler. |
cls_pw | float | 0.0 | Ters sınıf sıklığını kullanarak 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ırmayı devre dışı bırakır, 1.0 tam ters sıklık ağırlıklandırması uygular. 0 ile 1 arasındaki değerler kısmi ağırlıklandırma sağlar. |
dfl | float | 1.5 | Kutu mesafesi regresyon teriminin ağırlığı: algılama başlığı reg_max > 1 kullanıyorsa dağılımsal odak kaybı (DFL), DFL içermeyen YOLO26'da (reg_max: 1) normalleştirilmiş kutu mesafelerinde L1 kaybı. |
pose | float | 12.0 | Poz tahmini için eğitilen modellerde poz kaybının ağırlığı; poz kilit noktalarının doğru tahmin edilmesine verilen önemi etkiler. |
kobj | float | 1.0 | Poz tahmini modellerinde kilit noktası nesne varlığı kaybının ağırlığı; algılama 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ığı; kilit noktalarının konumlandırma hassasiyetini etkiler. |
angle | float | 1.0 | obb modellerinde açı kaybının ağırlığı; yönlendirilmiş sınırlayıcı kutu açısı tahminlerinin hassasiyetini etkiler. |
dlog | float | 1.0 | Derinlik tahmini modellerinde ölçekten bağımsız logaritmik (SILog) kaybın ağırlığı; derinlik doğruluğunu yönlendiren birincil terimdir. |
dgrad | float | 0.5 | Derinlik tahmini modellerinde 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 tahmini modellerinde SILog kaybının varyans odaklama faktörü. 1.0, kaybı tamamen ölçekten bağımsız hâle getirirken 0.0 değeri bunu basit log-RMSE'ye indirger. |
nbs | int | 64 | Kayıp normalleştirmesi için nominal toplu iş 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 birleştirme sırasında küçük maske büyük maskenin üzerine yerleştirilir. |
mask_ratio | int | 4 | Eğitim sırasında kullanılan maskelerin çözünürlüğünü etkileyen, segmentasyon maskeleri için alt örnekleme oranı. |
dropout | float | 0.0 | Sınıflandırma görevlerinde düzenlileştirme için dropout oranı; eğitim sırasında birimleri rastgele çıkararak aşırı öğrenmeyi önler. |
val | bool | True | Eğitim sırasında doğrulamayı etkinleştirir ve model performansının ayrı bir veri kümesi üzerinde periyodik olarak değerlendirilmesini sağlar. |
nms | bool, isteğe bağlı | None | Epoch doğrulaması, kontrol noktası seçimi ve erken durdurma için kullanılan çıkarım başlığını seçer. None veya True, NMS ile bire-çok (one-to-many) kullanır; False, mevcut olduğunda NMS içermeyen başlığı kullanır. Her iki başlık da eğitim kayıplarını korur. |
plots | bool | True | Eğitim ve doğrulama metriklerinin yanı sıra tahmin örneklerinin grafiklerini oluşturup kaydeder; model performansı ve öğrenme ilerlemesi hakkında görsel içgörüler sunar. |
compile | bool veya str | False | PyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", False → devre dışı veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarıyla eager moda geri döner. |
channels_last | bool | None | Eğitim sırasında konvolüsyonlar için channels_last (NHWC) bellek biçimini kullanır. None, daha yavaş ölçüldüğü Windows haricinde, CUDA üzerinde PyTorch 1.11 veya newer ile bunu otomatik olarak etkinleştirir. False bunu devre dışı bırakır ve True açıkça bunu talep eder. PyTorch 1.10 ve older, CPU ve MPS varsayılan olarak NCHW kalır. |
max_det | int | 300 | Eğitim doğrulaması sırasında görsel başına maksimum algılama sayısı. detect, segment, pose ve OBB için, varsayılan 300 değeri, yalnızca etiketlenmiş nesne sayısı 300'ü aştığında en büyük train/val etiketli nesne sayısına çıkarılır. Diğer değerler sabit kalır; limiti aşmak bir uyarı tetikler. |
batch argümanı üç şekilde yapılandırılabilir:
- Sabit Parti Boyutu: Her partideki görsel sayısını doğrudan belirten bir tamsayı değeri (örneğin,
batch=16) ayarla. - Otomatik Mod (%60 GPU Belleği): Yaklaşık %60 CUDA belleği kullanımı için parti boyutunu otomatik olarak ayarlamak üzere
batch=-1kullan. - Kullanım Oranı ile Otomatik Mod: Belirtilen GPU belleği kullanım oranına göre parti boyutunu ayarlamak için bir kesir değeri (örneğin,
batch=0.70) ayarla. - OOM Otomatik Yeniden Deneme: İlk dönem sırasında bir CUDA bellek yetersizliği (out-of-memory) hatası oluşursa, eğitici otomatik olarak parti boyutunu yarıya indirir ve yeniden dener (en fazla 3 kez). Bu yalnızca tek GPU eğitimi için geçerlidir; çoklu GPU (DDP) eğitimi hatayı hemen fırlatacaktır.
- Uygun Değer Bulunamadı: Hiçbir aday toplu iş boyutu kullanılabilir bir profil oluşturmazsa AutoBatch, ilgisiz bir varsayılana sessizce geri dönmek yerine açık bir
RuntimeErrorhatası oluşturur.
Artırma (Augmentation) 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 esastır ve modelin görülmeyen 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:
| Bağımsız değişken | Tür | 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 çemberinin bir bölümü kadar ayarlayarak renk değişkenliği oluşturur. Modelin farklı aydınlatma koşullarına genelleme yapmasına yardımcı olur. classify için bu yalnızca auto_augment=None olduğunda uygulanır. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Görüntünün doygunluğunu bir oran kadar değiştirerek renklerin yoğunluğunu etkiler. Farklı çevre koşullarını benzetmek için kullanışlıdır. classify için bu yalnızca auto_augment=None olduğunda uygulanı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 oran kadar değiştirerek modelin çeşitli aydınlatma koşullarında iyi performans göstermesine yardımcı olur. classify için bu yalnızca auto_augment=None olduğunda uygulanır. |
degrees | float | 0 | detect, segment, semantic, depth, 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, semantic, depth, pose, obb | 0.0 - 1.0 | Görüntüyü görüntü boyutunun bir oranı kadar yatay ve dikey yönde öteleyerek kısmen görünen nesneleri algılamayı öğrenmeye yardımcı olur. |
scale | float | tuple | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 veya açıkça belirtilen bir (min, max) demeti (classify için değil) | Görüntüyü bir kazanç faktörüyle ölçeklendirerek kameradan farklı uzaklıklardaki nesneleri benzetir. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Görüntüyü belirtilen derece kadar keserek nesnelerin farklı açılardan görülmesinin etkisini taklit eder. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Görüntüye rastgele perspektif dönüşümü uygulayarak modelin nesneleri 3B uzayda anlama yeteneğini geliştirir. |
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ğı çevirerek 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 | Belirtilen olasılıkla görüntü kanallarını RGB'den BGR'ye çevirir; hatalı kanal sıralamasına karşı sağlamlığı 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ü tek bir görüntüde birleştirerek farklı sahne bileşimlerini ve nesne etkileşimlerini benzetir. Karmaşık sahne anlayışı için son derece etkilidir. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | İki görüntüyü ve etiketlerini harmanlayarak bileşik bir görüntü oluşturur. Etiket gürültüsü ve görsel değişkenlik sunarak 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 harmanlama oluşturur. Örtülme senaryoları oluşturarak modelin sağlamlığını artırır. |
copy_paste | float | 0 | segment, obb | 0.0 - 1.0 | Yapıştırılmaya uygun nesnelerin yapıştırılan oranıdır; flip bunları görüntü içinde aynalar, mixup ise bu değeri görüntüler arası uygulama olasılığı olarak da kullanır. |
copy_paste_mode | str | flip | segment, obb | - | Kullanılacak copy-paste stratejisini belirtir. Seçenekler arasında 'flip' ve 'mixup' bulunur. |
auto_augment | str | randaugment | classify | - | Model performansını görsel çeşitlilik yoluyla artırmak için önceden tanımlanmış bir artırma politikasını ('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ünün bölgelerini rastgele siler. |
augmentations | list | None | detect, segment, semantic, depth, 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 dönüşüm nesnelerinden oluşan bir liste kabul eder. |
Bu ayarlar, veri setinin ve eldeki görevin özel gereksinimlerini karşılayacak şekilde ayarlanabilir. Farklı değerler denemek, en iyi model performansını sağlayan optimum 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ük Kaydı#
Eğitim metrikleri, grafikleri ve kontrol noktaları her zaman çalıştırma dizinine yazılır ve Ultralytics bunları ayrıca yükleyip etkinleştirdiğiniz herhangi bir deney izleyicisine yayınlar: Comet, ClearML, TensorBoard, MLflow, Weights & Biases ve DVCLive. Her günlükçü Ultralytics settings aracılığıyla, örneğin yolo settings tensorboard=True ile açılıp kapatılır. En yaygın üç kurulum aşağıda gösterilmiştir.
Comet#
Comet, veri bilimcilerinin ve geliştiricilerin denemeleri 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ı (diffs) ve hiperparametre takibi gibi işlevler sunar.
Comet'i kullanmak için:
# pip install comet_ml
import comet_ml
comet_ml.init()Web sitelerindeki Comet hesabına giriş yapmayı ve API anahtarını almayı unutma. Denemelerini günlüğe kaydetmek için bunu ortam değişkenlerine veya betiğine eklemen gerekecektir.
ClearML#
ClearML, denemelerin 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 gerekecektir.
TensorBoard#
TensorBoard, TensorFlow için bir görselleştirme araç setidir. TensorFlow grafiğini görselleştirmeni, grafiğinin yürütülmesi hakkında nicel metrikler çizmeni ve içinden geçen görseller 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 eğitim loglarının kaydedildiği dizine yönlendirecektir.
Günlüğe kaydedicini ayarladıktan sonra, model eğitimine devam edebilirsin. Tüm eğitim metrikleri seçtiğin platformda otomatik olarak günlüğe kaydedilecek ve modelinin zaman içindeki performansını izlemek, farklı modelleri karşılaştırmak ve iyileştirme alanlarını belirlemek için bu loglara erişebilirsin.
Sırada Ne Var?#
Gerçek dünyadaki doğruluğunu kontrol etmek için eğitilmiş modelini ayrılmış verilerle doğrula, ardından ONNX, TensorRT veya başka bir dağıtım formatına aktar. COCO8 yerine kendi verilerin üzerinde mi eğitiyorsun? Önce Veri setleri kılavuzu ile verilerini biçimlendir.
SSS#
Evet. Ultralytics Platform bulut eğitimi, 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 nesne algılama modelini eğitmek için Python API'sini veya CLI'yı kullanabilirsin. Aşağıda her ikisi için bir örnek bulunmaktadır:
Tek GPU ve CPU Eğitimi Örneğifrom 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 detay için Eğitim Ayarları bölümüne göz at.
Ultralytics YOLO26'nın Eğitim modunun temel özellikleri şunları içerir:
- Otomatik Veri Seti İndirme: COCO, VOC ve ImageNet gibi standart veri setlerini otomatik olarak indirir.
- Çoklu GPU Desteği: Daha hızlı işleme için eğitimi birden fazla GPU üzerinde ölçeklendir.
- Hiperparametre Yapılandırması: YAML dosyaları veya CLI argümanları aracılığıyla hiperparametreleri ö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 ve ihtiyaçlarına göre özelleştirilebilir hale getirir. Daha fazla detay için Eğitim Modunun Temel Özellikleri bölümüne bak.
Kesintiye uğrayan bir eğitimi kaldığı yerden devam ettirmek için
resumeargümanınıTrueolarak ayarlayın ve son kaydedilen kontrol noktasının yolunu belirtin.Eğitime Devam Etme Örneğifrom 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 bölümünü incele.
Sınıf dengesizliği, eğitim verilerindeki bazı sınıfların diğerlerine göre önemli ölçüde daha az örneğe sahip olması durumunda ortaya çıkar. Bu durum, modelin nadir sınıflarda zayıf performans göstermesine neden olabilir. Ultralytics YOLO, bu sorunu çözmek için
cls_pwargümanı aracılığıyla sınıf ağırlıklandırmasını destekler.cls_pwargümanı, ters sınıf sıklığına dayalı olarak 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 sıklık ağırlıklandırması uygular0.0ve1.0arasındaki değerler: Orta düzeydeki dengesizlikler için kısmi ağırlıklandırma sağlar
Sınıf ağırlıkları
(1.0 / class_counts) ^ cls_pwolarak hesaplanır ve ortalamaları 1,0 olacak şekilde normalleştirilir.Dengesiz Veri Kümesi Üzerinde Eğitimfrom 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)İpucuOrta derecede dengesiz veri kümeleri için
cls_pw=0.25ile başla ve nadir sınıflar hala yetersiz performans gösteriyorsa1.0değerine yükselt. Ağırlık dağılımını doğrulamak için eğitim günlüklerinde hesaplanan sınıf ağırlıklarını kontrol edebilirsin.Evet, Ultralytics YOLO26, Metal Performance Shaders (MPS) altyapısını kullanarak Apple silikon çiplerinde eğitim yapmayı destekler. Eğitim cihazın olarak 'mps' belirt.
MPS Eğitimi Örneğifrom 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 detay için Apple Silicon MPS Training bölümüne göz at.
Ultralytics YOLO26; toplu iş boyutu, öğrenme oranı, epoch ve daha fazlası gibi çeşitli eğitim ayarlarını argümanlar aracılığıyla yapılandırmanı sağlar. İşte kısa bir genel bakış:
Bağımsız değişken Varsayılan Açıklama modelNoneEğitim için model dosyasının yolu. dataNoneEğitim için veri kümesi YAML dosyasının yolu (ör. coco8.yaml) veya sınıflandırma için bir veri kümesi dizini ya da adı (ör.imagenet10).epochs100Toplam eğitim epoch sayısı. batch16Tam sayı veya otomatik mod olarak ayarlanabilen toplu iş boyutu. imgsz640Eğitim için hedef görüntü boyutu. deviceNonecpu,0,0,1veyampsgibi eğitim için hesaplama cihazı/cihazları.saveTrueEğitim kontrol noktalarının ve son model ağırlıklarının kaydedilmesini etkinleştirir. Eğitim ayarları hakkında derinlemesine bir kılavuz için Train Settings bölümünü incele.