Ultralytics YOLO ile Model Eğitimi#
Giriş#
Derin öğrenme modeli eğitmek, doğru tahminlerde bulunabilmesi için modele veri vermeyi ve parametrelerini ayarlamayı içerir. Ultralytics YOLO26'nın Train modu, modern donanımın yeteneklerinden tam olarak yararlanarak nesne algılama modellerini etkili ve verimli biçimde eğitmek üzere tasarlanmıştır. Bu kılavuz, YOLO26'nın güçlü özelliklerinden yararlanarak kendi modellerini eğitmeye başlaman için gereken tüm ayrıntıları açıklamayı amaçlar. Ultralytics'i henüz yüklemediysen Hızlı Başlangıç kılavuzuyla başla.
Planlanan eğitim örnekleri için yayımlanmamış YOLO27 önizlemesine göz at.
İzle: Google Colab'de Özel Veri Kümenle YOLO Modeli Nasıl Eğitilir.
Eğitim için neden Ultralytics YOLO'yu seçmelisin?#
YOLO26'nın Train modunu tercih etmek için bazı güçlü nedenler şunlardır:
- Verimlilik: Tek GPU'lu bir kurulum kullanıyor veya birden fazla GPU arasında ölçeklendirme yapıyor ol; donanımından en iyi şekilde yararlan.
- Çok yönlülük: COCO, VOC ve ImageNet gibi kullanıma hazır veri kümelerinin yanı sıra özel veri kümeleriyle de eğitim yap.
- Kullanım kolaylığı: Sorunsuz bir eğitim deneyimi için basit ama güçlü CLI ve Python arayüzleri.
- Hiperparametre Esnekliği: Model performansını hassas biçimde ayarlamak için geniş bir özelleştirilebilir hiperparametre yelpazesi. Daha fazla kontrol için eğitim aracının kendisini özelleştirebilirsin.
- Bulut Eğitimi: Gerçek zamanlı ölçümler ve otomatik kontrol noktası kaydıyla Ultralytics Platform üzerinden bulut GPU'larında eğitim yap.
Train Modunun Temel Özellikleri#
YOLO26'nın Train modunun öne çıkan bazı özellikleri şunlardır:
- Otomatik Veri Kümesi İndirme: İndirme kaynağı belirtilmiş veri kümesi yapılandırmaları ilk kullanımda otomatik olarak indirilir; örneğin
yolo train data=coco8.yaml. Desteklenen biçimler ve veri kümeleri için Veri kümelerine genel bakış sayfasına göz at. - Çoklu GPU Desteği: Süreci hızlandırmak için eğitim çalışmalarını birden fazla GPU'ya sorunsuzca ölçeklendir.
- Hiperparametre Yapılandırması: Hiperparametreleri YAML yapılandırma dosyaları veya CLI bağımsız değişkenleri üzerinden değiştirme seçeneği.
- Görselleştirme ve İzleme: Daha iyi içgörüler elde etmek için eğitim ölçümlerini gerçek zamanlı takip et ve öğrenme sürecini görselleştir.
Kullanım Örnekleri#
COCO8 veri kümesinde YOLO26n'yi 640 görüntü boyutunda 100 epoch boyunca eğit. Eğitim aygıtını device bağımsız değişkeniyle belirtebilirsin. Herhangi bir bağımsız değişken verilmezse kullanılabilir olduğunda GPU device=0, aksi takdirde device='cpu' kullanılır. Eğitim bağımsız değişkenlerinin tam listesi için aşağıdaki Bağımsız Değişkenler bölümüne bak.
Windows'ta eğitimi betik olarak başlatırken RuntimeError hatası alabilirsin. Sorunu çözmek için eğitim kodundan önce bir if __name__ == "__main__": bloğu ekle.
Aygıt otomatik olarak belirlenir. Bir GPU varsa kullanılır (varsayılan CUDA aygıtı 0); aksi takdirde eğitim CPU'da başlar.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.yaml") # YAML'den yeni bir model oluştur
model = YOLO("yolo26n.pt") # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # YAML'den oluştur ve ağırlıkları aktar
# Modeli eğit
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 aygıt kimliklerini belirt.
2 GPU ile eğitim yapmak için CUDA aygıtları 0 ve 1'i kullanarak aşağıdaki komutları çalıştır. Gerektikçe başka GPU'lar da ekle.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt") # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
# Modeli 2 GPU ile eğit
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Modeli en az meşgul olan iki GPU ile eğit
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])torch>=2.4 için resmi PyTorch wheel paketleriyle Windows'ta çoklu GPU eğitimi çalışmaz. Ultralytics, DDP'yi torch.distributed.run üzerinden başlatır; bu aracın buluşma adımı, PyTorch 2.4'ten beri varsayılan olarak libuv arka ucunu kullanan bir TCPStore oluşturur ve resmi Windows wheel paketleri libuv olmadan derlenmiştir. Eğitim hemen şu hatayla sonlanır:
RuntimeError: use_libuv was requested but PyTorch was built without libuv support
USE_LIBUV=0 ayarını yapmak sorunu çözmez; çünkü buluşma işlemi TCPStore öğesini doğrudan oluşturur ve bu kod yolu değişkeni hiç okumaz. Birden fazla GPU kullanmak için Linux'ta veya WSL2 üzerinde eğitim yap ya da Windows'ta device=0 ile tek GPU'da eğitim yap.
Birden fazla aygıt belirttiğinde (ör. device=[0, 1]), Ultralytics dahili olarak yeni bir eğitim aracı örneği başlatır ve arka planda torch.distributed.run komutunu yürütür. Bu yöntem standart CLI kullanımı ve değiştirilmemiş Python betikleriyle sorunsuz çalışır.
Ancak betiğinde özel eğitim aracı, doğrulayıcı, veri kümesi veya artırma hattı gibi özel bileşenler varsa bu nesneler otomatik olarak serileştirilip 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öz dizimiyle PyTorch ROCm derlemesini kullanır. ROCm kurulumu, çoklu GPU eğitimi, AMP notları ve dışa aktarılan modellerde MIGraphX çıkarımı hakkında bilgi için AMD entegrasyon kılavuzuna göz at.
Intel GPU eğitimi device=xpu:0 kullanır; birden fazla XPU kimliği içinse XCCL sağlayan bir PyTorch derlemesi gerekir.
Huawei Ascend NPU Eğitimi#
Ultralytics, Huawei Ascend NPU'larda eğitim ve doğrulamayı torch_npu üzerinden destekler. PyTorch için Ascend Extension kurulum kılavuzunu izleyerek CANN, PyTorch ve torch_npu sürümlerinin birbiriyle uyumlu olanlarını yükle; ardından Ultralytics'i başlatmadan önce CANN ortamını kaynakla:
source /usr/local/Ascend/ascend-toolkit/set_env.shfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Tek Ascend NPU'da eğitim yap
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")
# HCCL ile iki Ascend NPU'da eğitim yap
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")AMP, doğrulama, kontrol noktası kaydı ve sürdürme dahil standart eğitim özellikleri etkin NPU'yu kullanır. AutoBatch tek NPU ile eğitimde kullanılabilirken birden fazla NPU kimliği HCCL üzerinden dağıtılmış eğitimi başlatır. Eğitim sonrasında model dışa aktarma ve dağıtım hakkında bilgi için Huawei Ascend entegrasyon kılavuzuna bak.
Boştaki GPU ile Eğitim#
Boştaki GPU ile Eğitim, çoklu GPU sistemlerinde kullanımı en düşük GPU'ların otomatik olarak seçilmesini sağlayarak elle GPU seçmeye gerek kalmadan kaynak kullanımını iyileştirir. Bu özellik, kullanım ölçümlerine ve VRAM kullanılabilirliğine göre uygun GPU'ları belirler.
Eğitim için en az meşgul GPU'ları otomatik olarak seçip kullanmak üzere -1 aygıt parametresini kullan. Bu özellik, paylaşımlı bilgi işlem ortamlarında veya birden fazla kullanıcının bulunduğu sunucularda özellikle kullanışlıdır.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt") # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
# En az meşgul tek GPU'yu kullanarak eğitim yap
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# En az meşgul iki GPU'yu kullanarak eğitim yap
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 fazla kullanılabilir bellek (boş VRAM)
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 elle müdahale gerektirmeden kaynakların en uygun şekilde tahsis edilmesini sağlar.
Apple Silicon MPS Eğitimi#
Apple silicon çiplerinin Ultralytics YOLO modellerine entegre edilen desteği sayesinde artık modellerini güçlü Metal Performance Shaders (MPS) çerçevesini kullanan aygıtlarda eğitebilirsin. MPS, Apple'ın özel silicon çiplerinde hesaplama ve görüntü işleme görevlerini yürütmek için yüksek performanslı bir yöntem sunar.
Apple silicon çiplerinde eğitimi etkinleştirmek için eğitim sürecini başlatırken aygıt olarak 'mps' belirtmelisin. Aşağıda bunu Python ile ve komut satırı üzerinden yapmaya yönelik bir örnek bulabilirsin:
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt") # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
# Modeli MPS ile eğit
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Apple silicon çiplerinin işlem gücünden yararlanmak, eğitim görevlerinin daha verimli işlenmesini sağlar. Daha ayrıntılı yönergeler ve gelişmiş yapılandırma seçenekleri için PyTorch MPS belgelerine başvur.
Kesintiye Uğrayan Eğitimleri Sürdürme#
Derin öğrenme modelleriyle çalışırken eğitimi daha önce kaydedilmiş bir durumdan sürdürmek kritik bir özelliktir. Eğitim sürecinin beklenmedik şekilde kesintiye uğraması veya modeli yeni verilerle ya da daha fazla epoch boyunca eğitmeye devam etmek istemen gibi çeşitli durumlarda bu özellik işine yarayabilir.
Eğitim sürdürüldüğünde Ultralytics YOLO, ağırlıkları son kaydedilen modelden yükler; ayrıca optimizer durumunu, öğrenme hızı zamanlayıcısını, epoch numarasını ve veri kümesini geri yükler. Böylece eğitim sürecine kesildiği yerden sorunsuzca devam edebilirsin. Checkpoint'tekinden farklı bir veri kümesiyle devam etmek için resume ile birlikte açıkça bir data= ilet.
Kısmen eğitilmiş model ağırlıklarını içeren .pt dosyasının yolunu belirterek ve train yöntemini çağırırken resume bağımsız değişkenini True olarak ayarlayarak 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 verilmiştir:
from ultralytics import YOLO
# Bir model yükle
model = YOLO("path/to/last.pt") # kısmen eğitilmiş bir modeli yükle
# Eğitime devam et
results = model.train(resume=True)resume=True ayarlandığında train işlevi, 'path/to/last.pt' dosyasında saklanan durumu kullanarak eğitime kaldığı yerden devam eder. resume bağımsız değişkeni belirtilmezse veya False olarak ayarlanırsa train işlevi yeni bir eğitim oturumu başlatır.
Checkpoint'lerin varsayılan olarak her epoch sonunda veya save_period bağımsız değişkeni kullanılarak belirli aralıklarla kaydedildiğini unutma; bu nedenle bir eğitim çalışmasına devam edebilmek için en az 1 epoch'u tamamlaman gerekir.
Eğitim Ayarları#
YOLO modellerinin eğitim ayarları, eğitim sürecinde kullanılan çeşitli hiperparametreleri ve yapılandırmaları kapsar. Bu ayarlar modelin performansını, hızını ve doğruluğunu etkiler. Temel eğitim ayarları arasında batch boyutu, öğrenme hızı, momentum ve ağırlık çürümesi bulunur. Ayrıca optimizer seçimi, kayıp işlevi ve eğitim veri kümesinin bileşimi de eğitim sürecini etkileyebilir. Performansı en iyi hâle getirmek için bu ayarları dikkatlice ayarlamak ve denemeler yapmak kritik önem taşır.
MuSGD Optimizer#
YOLO26'da MuSGD, standart SGD güncellemelerini Muon tarzı ortogonalleştirilmiş güncellemelerle birleştiren hibrit bir optimizer'dır.
Ortogonalleştirilmiş Muon güncellemelerinin optimizasyonu kararlı hâle getirmeye yardımcı olabileceği daha uzun YOLO26 eğitim çalışmaları ve daha büyük veri kümeleri için önerilir.
Yalnızca 2B doğrusal ağırlıklar ve 2B biçiminde yeniden şekillendirilmiş 4B evrişim filtreleri, SGD ile birlikte Muon tarzı güncellemeyi alır; batch normalizasyon ağırlıkları ve bias terimleri gibi diğer tüm parametreler standart SGD'de kalır.
optimizer=auto kullanıldığında Ultralytics, daha uzun eğitim çalışmaları için (genellikle iterations > 10000 olduğunda) MuSGD'yi otomatik olarak seçer. Daha kısa çalışmalar için trainer, AdamW'ye geri döner. auto modunda trainer öğrenme hızını da seçer; bu nedenle kullanıcı tarafından sağlanan lr0 yok sayılır. Bu ayarları elle denetlemek için açıkça bir optimizer seç; örneğin optimizer=AdamW lr0=0.001.
Kullanım örneği:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDUygulamayı ultralytics/optim/muon.py içinde, optimizer'ın otomatik seçim mantığını ise BaseTrainer.build_optimizer içinde görebilirsin.
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Eğitim için model dosyasını belirtir. Önceden eğitilmiş bir .pt modele 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 turu sayısı. Her tur, tüm veri kümesinin baştan sona bir kez işlenmesini ifade 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üreden sonra otomatik olarak durmasını sağlar. Zaman kısıtlaması olan eğitim senaryolarında kullanışlıdır. |
patience | int | 100 | Eğitimin erken durdurulmasından önce doğrulama metriklerinde iyileşme olmadan beklenecek tur sayısı. Performans sabitlendiğinde eğitimi durdurarak aşırı öğrenmeyi önlemeye yardımcı olur. |
batch | int veya float | 16 | Yığın boyutu için üç mod bulunur: bir tam sayı (ör. batch=16) olarak ayarlama, GPU belleğinin %60'ını kullanmaya yönelik otomatik mod (batch=-1) veya kullanım oranı belirtilen otomatik mod (batch=0.70). |
imgsz | int | 640 | Eğitim için hedef görüntü boyutu. Görüntüler, kenar uzunlukları belirtilen değere eşit karelere yeniden boyutlandırılır (rect=False ise); YOLO modellerinde en-boy oranı korunur, 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 sağlar. Eğitime devam etmek veya model dağıtımı için kullanışlıdır. |
save_period | int | -1 | Model kontrol noktalarının kaydedilme sıklığını tur cinsinden belirtir. -1 değeri bu özelliği devre dışı bırakır. Uzun eğitim süreçlerinde ara modelleri kaydetmek için kullanışlıdır. |
cache | bool veya str | False | Veri kümesi görüntülerinin bellekte (True/ram) veya diskte (disk) önbelleğe alınmasını sağlar ya da önbelleğe almayı devre dışı bırakır (False). Bellek kullanımını artırma pahasına disk G/Ç işlemlerini azaltarak eğitim hızını artırır. |
device | int veya str veya list | None | Eğitim için hesaplama aygıtları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), Intel XPU (device=xpu:0), boşta olan GPU'yu (device=-1) veya birden fazla boşta GPU'yu (device=[-1,-1]) otomatik seçme. |
workers | int | 8 | Veri yüklemeye yönelik iş parçacığı sayısı (çoklu GPU eğitiminde her RANK için). Veri ön işlemenin ve modele aktarımın 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ı denemelerin düzenli biçimde saklanmasını sağlar. |
name | str | None | Eğitim çalışmasının adı. Eğitim günlüklerinin ve çıktılarının saklandığı proje klasöründe bir alt dizin oluşturmak için kullanılır. |
exist_ok | bool | False | True ise mevcut bir proje/ad dizininin üzerine yazılmasını sağlar. Önceki çıktıları elle temizlemeye gerek kalmadan yinelemeli denemeler yapmayı kolaylaştırı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 olduğu gibi kullanılır, otomatik olarak numaralandırılmaz; bu nedenle art arda yapılan çalışmalar aynı dizini kullanır. |
pretrained | bool veya str | True | Eğitimin önceden eğitilmiş ağırlıklarla başlatılıp başlatılmayacağını belirler. Boole değeri veya yüklenecek ağırlıklara giden bir yol olarak belirtilebilir. pretrained=False, model mimarisini korurken rastgele başlatılmış ağırlıklarla eğitim yapar. |
cls_remap | bool | True | Veri kümeleri arasında ince ayar yaparken, sınıf adları eşleştiği durumlarda önceden eğitilmiş sınıflandırma başlığı satırlarını yeni modele kopyalar; böylece örtüşen sınıflar öğrendikleri bias değerlerini ve başlık genişliği değişmediğinde ağırlıklarını da korur. Sınıf sayıları farklı olsa da aynı olup sınıf sıraları değişse de uygulanır. |
optimizer | str | 'auto' | Eğitim için kullanılacak optimizasyon algoritmasını seçer. Seçenekler arasında SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp veya eğitim yineleme sayısına göre AdamW ya da MuSGD seçmek için auto bulunur. Yakınsama hızını ve kararlılığını etkiler. |
seed | int | 0 | Eğitim için rastgelelik tohumunu ayarlayarak aynı yapılandırmalarla yapılan çalışmalarda sonuçların yeniden üretilebilir olmasını sağlar. |
deterministic | bool | True | Belirleyici algoritmaların kullanılmasını zorunlu kılar. Bu, yeniden üretilebilirliği sağlar ancak belirleyici olmayan algoritmaların kısıtlanması nedeniyle performansı ve hızı etkileyebilir. |
verbose | bool | True | Eğitim sırasında ayrıntılı çıktıyı etkinleştirir; ilerleme çubuklarını, her tur için 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örevlerinde veya sınıflandırma yerine nesnenin varlığına odaklanırken 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ı filtreleyip yalnızca bunlara odaklanmak için kullanışlıdır. |
rect | bool | False | Minimum dolgu stratejisini etkinleştirir—bir gruptaki görüntüler, uzun kenar imgsz değerine eşit olacak şekilde ortak bir boyuta ulaşmaları için minimum düzeyde doldurulur. Verimliliği ve hızı artırabilir ancak model doğruluğunu etkileyebilir. Standart YOLO eğiticisi, bu ayardan bağımsız olarak detect, segment, pose ve OBB doğrulaması için rect=True kullanır. |
multi_scale | float | 0.0 | Her yığında imgsz değerini +/- multi_scale kadar rastgele değiştirir (ör. 0.25 -> 0.75x ile 1.25x arasına); model adım boyutunun 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ı turlar 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 | Eğitim tamamlanmadan önce kararlılığı artırmak için son N turda mozaik veri artırmayı devre dışı bırakır. 0 olarak ayarlanması bu özelliği kapatır. |
resume | bool | False | Eğitime kaydedilmiş son kontrol noktasından devam eder. Model ağırlıklarını, optimizasyon algoritmasının durumunu ve tur sayısını otomatik yükleyerek eğitimi kesintisiz sürdürür. |
amp | bool veya str | True | Eğitim duyarlığını ayarlar: True veya "fp16" FP16 kullanır, "bf16" desteklenen CUDA aygıtlarında BF16 kullanır, False veya "fp32" ise FP32 kullanır. |
quantize | int veya str | None | INT8 nicelik duyarlı eğitim (QAT) için 8 (veya "int8") olarak ayarla. Bu yöntem, ağırlıkların INT8 dışa aktarımını desteklemesi için eğitim döngüsünde sahte nicemleme kullanarak ince ayar yapar. Nicelik Duyarlı Eğitim sayfasına bak. |
fraction | float, int veya list | 1.0 | Veri kümesinin alt kümesini oran/sayı veya [train, val, test] listesi olarak belirtir. 1 tüm bölümü ifade eder, 1 üzerindeki tam sayılar görüntü sayısıdır ve yalnızca isteğe bağlı test girdisi yok anlamına gelen 0/0.0 değerlerini kabul eder. İki öğeli listeler test bölümünün tamamını korur. |
profile | bool | False | Model dağıtımını optimize etmek için kullanışlı olan ONNX ve TensorRT hızlarının eğitim sırasında profillenmesini sağlar. |
freeze | int veya list | None | Modelin ilk N katmanını veya dizine ya da modül adına göre belirli katmanları (23.cv2, baştaki model. olmadan) dondurarak eğitilebilir parametre sayısını azaltır. İnce ayar veya aktarım öğrenimi için kullanışlıdır. |
lr0 | float | 0.01 | İlk öğrenme oranı (yani SGD=1E-2, Adam=1E-3). Varsayılan optimizer='auto' altında yok sayılır; kullanmak için bir optimizasyon algoritmasını açıkça belirt. |
lrf | float | 0.01 | Son öğrenme oranını ilk oranın kesri olarak ayarlar = (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 optimizasyon algoritmaları için beta1 değeridir; geçmiş gradyanların mevcut güncellemeye ne ölçüde katılacağını 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 süresinin tur sayısı. Eğitimin başlangıcında kararlılık sağlamak için öğrenme oranını düşük bir değerden ilk öğrenme oranına kademeli olarak yükseltir. |
warmup_momentum | float | 0.8 | Isınma aşamasının başlangıç momentumu; ısınma süresi boyunca ayarlanan momentuma kademeli olarak ulaşır. |
warmup_bias_lr | float | 0.1 | Isınma aşamasında bias parametreleri için öğrenme oranı; ilk turlarda model eğitimini kararlı hâle getirmeye yardımcı olur. Varsayılan optimizer='auto' altında otomatik olarak 0.0 değerine ayarlanır; kullanmak için bir optimizasyon algoritmasını açıkça belirt. |
distill_model | str | None | Bilgi damıtma için öğretmen modeli kontrol noktası yolu (ör. yolo26x.pt). Ayarlandığında öğrenci modeli, dondurulmuş öğretmenin yönlendirdiği ek bir damıtma kaybıyla eğitilir. |
dis | float | 6.0 | Standart tespit kayıplarına eklenen damıtma kaybının ağırlığı. Daha yüksek değerler öğretmenin özellik rehberliğinin etkisini artırır. |
box | float | 7.5 | Kayıp fonksiyonundaki kutu kaybı bileşeninin ağırlığı; sınırlayıcı kutu koordinatlarını doğru tahmin etmeye ne kadar önem verileceğini belirler. |
cls | float | 0.5 | Toplam kayıp fonksiyonundaki 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 kuvveti. 0.0 sınıf ağırlıklandırmasını 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 uzaklığı regresyon teriminin ağırlığı: tespit başlığı reg_max > 1 kullanıyorsa dağılım odaklı kayıp (DFL), DFL içermeyen YOLO26'da (reg_max: 1) normalize edilmiş kutu uzaklıkları üzerinde L1 kaybı. |
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 modellerindeki anahtar nokta nesne olasılığı kaybının ağırlığı; tespit güveniyle poz doğruluğu arasında denge kurar. |
rle | float | 1.0 | Poz tahmini modellerindeki artık log-olabilirlik tahmini kaybının ağırlığı; anahtar noktaların konumlandırma hassasiyetini etkiler. |
angle | float | 1.0 | OBB modellerindeki 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 belirleyen temel terimdir. |
dgrad | float | 0.5 | Derinlik tahmini modellerindeki gradyan kaybının ağırlığı; derinlik kenarlarındaki hataları cezalandırır ve yüzey sınırlarının daha keskin olmasını sağlar. |
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 kaybı standart log-RMSE'ye indirger. |
nbs | int | 64 | Kayıp normalizasyonu için nominal yığın 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. Maskeler örtüştüğünde 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 maskesi alt örnekleme oranı. Tahmin edilen maskelerin çözünürlüğünü değiştirmez. |
dropout | float | 0.0 | Sınıflandırma görevlerinde düzenlileştirme için kullanılan dropout oranı; eğitim sırasında birimleri rastgele devre dışı bırakarak aşırı öğrenmeyi önler. |
val | bool | True | Eğitim sırasında doğrulamayı etkinleştirerek model performansının ayrı bir veri kümesinde düzenli olarak değerlendirilmesini sağlar. |
nms | bool, isteğe bağlı | None | Tur 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 başlığını kullanır; False ise kullanılabilir 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 kaydederek model performansı ve öğrenme ilerleyişi hakkında görsel bilgiler sunar. |
compile | bool veya str | False | PyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", devre dışı bırakmak için False veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa uyarı vererek eager moda geri döner. |
channels_last | bool | None | Eğitim sırasında evrişimler için channels_last (NHWC) bellek biçimini kullanır. None, daha yavaş olduğu ölçüldüğünden Windows dışında PyTorch 1.11 veya daha yenisiyle CUDA'da bunu otomatik etkinleştirir. False devre dışı bırakır, True ise açıkça etkinleştirilmesini ister. CPU veya MPS üzerinde eğitim her zaman NCHW biçiminde kalır (True uyarıyla yok sayılır). |
max_det | int | 300 | Eğitim doğrulaması sırasında görüntü başına en fazla tespit sayısı. Detect, segment, pose ve OBB için varsayılan 300 değeri, yalnızca eğitim/doğrulama etiketli nesne sayısı 300'ü aştığında bu en yüksek sayıya çıkar. Diğer değerler sabit kalır; sınırın aşılması uyarı oluşturur. |
batch bağımsız değişkeni üç şekilde yapılandırılabilir:
- Sabit Batch Boyutu: Doğrudan batch başına görüntü sayısını belirtmek için bir tam sayı değeri ayarla (ör.
batch=16). - Otomatik Mod (%60 GPU Belleği): Batch boyutunu CUDA belleğinin yaklaşık %60'ının kullanılacağı şekilde otomatik olarak ayarlamak için
batch=-1kullan. - Kullanım Oranıyla Otomatik Mod: Batch boyutunu belirtilen GPU belleği kullanım oranına göre ayarlamak için bir kesir değeri belirle (ör.
batch=0.70). - OOM Otomatik Yeniden Deneme: İlk epoch sırasında CUDA belleğinin yetersiz olduğuna dair bir hata oluşursa trainer, batch boyutunu otomatik olarak yarıya indirir ve yeniden dener (en fazla 3 kez). Bu yalnızca tek GPU ile eğitim için geçerlidir; çoklu GPU (DDP) eğitimi hatayı hemen verir.
- Uygun Boyut Bulunamadı: Kullanılabilir bir profil sağlayan aday yığın boyutu bulunamazsa AutoBatch, ilgisiz bir varsayılan değere sessizce dönmek yerine anlaşılır bir
RuntimeErrorhatası verir.
Veri Artırma Ayarları ve Hiperparametreler#
Veri artırma teknikleri, eğitim verisine çeşitlilik kazandırarak YOLO modellerinin sağlamlığını ve performansını iyileştirmek, modelin daha önce görmediği verilere daha iyi genelleme yapmasına yardımcı olmak için gereklidir. Aşağıdaki tabloda her veri artırma bağımsız değişkeninin amacı ve etkisi açıklanmaktadır:
| 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 belirli bir kesri kadar ayarlayarak renk çeşitliliği sağlar. Modelin farklı ışık 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 belirli bir kesir kadar değiştirerek renklerin yoğunluğunu etkiler. Farklı çevre koşullarını simüle etmek 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 | Modelin çeşitli ışık koşullarında iyi performans göstermesine yardımcı olmak için görüntünün değerini (parlaklığını) belirli bir kesir kadar değiştirir. 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 farklı yönelimlerde tanıma becerisini geliştirir. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Kısmen görünen nesneleri tespit etmeyi öğrenmeye yardımcı olmak için görüntüyü görüntü boyutunun belirli bir kesri kadar yatay ve dikey olarak kaydırır. |
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ç katsayısına göre ölçekleyerek kameraya farklı uzaklıklardaki nesneleri simüle eder. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Nesnelerin farklı açılardan görüntülenme etkisini taklit etmek için görüntüyü belirtilen derece kadar keser. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Modelin nesneleri 3B uzayda anlama becerisini geliştirmek için görüntüye rastgele perspektif dönüşümü uygular. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Nesnenin özelliklerini etkilemeden veri çeşitliliğini artırmak için görüntüyü belirtilen olasılıkla baş aşağı çevirir. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Simetrik nesneleri öğrenmek ve veri kümesi çeşitliliğini artırmak için görüntüyü belirtilen olasılıkla soldan sağa çevirir. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Yanlış kanal sıralamasına karşı sağlamlığı artırmak için görüntü kanallarını belirtilen olasılıkla RGB'den BGR'ye çevirir. |
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 düzenlerini ve nesne etkileşimlerini simüle eder. Karmaşık sahneleri anlamada son derece etkilidir. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | İki görüntüyü ve bunların etiketlerini harmanlayarak bileşik bir görüntü oluşturur. Etiket gürültüsü ve görsel çeşitlilik ekleyerek modelin genelleme becerisini geliştirir. |
cutmix | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | İki görüntünün bölümlerini birleştirerek ayrı bölgeleri koruyan kısmi bir harmanlama oluşturur. Örtülme durumları oluşturarak modelin sağlamlığını artırır. |
copy_paste | float | 0 | segment, semantic, obb | 0.0 - 1.0 | Yapıştırılmaya uygun nesnelerin yapıştırılma oranı; flip nesneleri 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, semantic, obb | - | 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ını ('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 bazı 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'si). Özel artırma ihtiyaçları için dönüşüm nesnelerinden oluşan bir liste kabul eder. |
Bu ayarlar, veri kümesinin ve görevin özel gereksinimlerini karşılayacak şekilde düzenlenebilir. Farklı değerlerle denemeler yapmak, en iyi model performansını sağlayan ideal veri artırma stratejisini bulmana yardımcı olabilir.
Eğitimde kullanılan veri artırma işlemleri hakkında daha fazla bilgi için başvuru bölümüne bak.
Günlük Kaydı#
Eğitim metrikleri, grafikler ve checkpoint'ler her zaman çalıştırma dizinine yazılır. Ultralytics bunları ayrıca yükleyip etkinleştirdiğin tüm deney izleyicilerine aktarır: Comet, ClearML, TensorBoard, MLflow, Weights & Biases ve DVCLive. Her günlükçü, örneğin yolo settings tensorboard=True ile Ultralytics ayarları üzerinden etkinleştirilip devre dışı bırakılır. En yaygın üç yapılandırma aşağıda gösterilmiştir.
Comet#
Comet, veri bilimcilerin ve geliştiricilerin deneyleri ve modelleri izlemesine, karşılaştırmasına, açıklamasına ve optimize etmesine olanak tanıyan bir platformdur. Gerçek zamanlı metrikler, kod farklılıkları ve hiperparametre takibi gibi işlevler sunar.
Comet'i kullanmak için:
# pip install comet_ml
import comet_ml
comet_ml.login()Comet hesabında oturum açıp API anahtarını web sitelerinden almayı unutma. Deneylerini kaydetmek için bu anahtarı ortam değişkenlerine veya betiğine eklemen gerekir.
ClearML#
ClearML, deneylerin takibini otomatikleştiren ve kaynakların verimli şekilde paylaşılmasına yardımcı olan açık kaynaklı bir platformdur. Ekiplerin ML çalışmalarını daha verimli biçimde yönetmesine, yürütmesine ve yeniden üretmesine yardımcı olmak için tasarlanmıştır.
ClearML'yi kullanmak için:
# pip install clearml
import clearml
clearml.browser_login()Bu betiği çalıştırdıktan sonra tarayıcıda ClearML hesabında oturum açman ve oturumunu doğrulaman gerekir.
TensorBoard#
TensorBoard, TensorFlow için bir görselleştirme araç setidir. TensorFlow grafiğini görselleştirmene, grafiğin çalışmasına ilişkin nicel metrikleri çizdirmene ve grafikten geçen görüntüler gibi ek verileri görüntülemene olanak tanır.
Google Colab ortamında TensorBoard'u 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 konumunda görüntüle.
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryBu işlem TensorBoard'u yükler ve eğitim günlüklerinin kaydedildiği dizine yönlendirir.
Günlükçünü ayarladıktan sonra model eğitimine başlayabilirsin. Tüm eğitim metrikleri seçtiğin platformda otomatik olarak günlüğe kaydedilir. Modelinin zaman içindeki performansını izlemek, farklı modelleri karşılaştırmak ve iyileştirme alanlarını belirlemek için bu günlükleri inceleyebilirsin.
Sırada ne var?#
Gerçek dünya doğruluğunu kontrol etmek için eğittiğin modeli eğitimde kullanılmamış verilerle doğrula, ardından ONNX, TensorRT veya başka bir dağıtım biçimine aktar. COCO8 yerine kendi verilerinle mi eğitim yapıyorsun? Önce Veri Kümeleri kılavuzuyla biçimlendir.
Sık Sorulan Sorular#
Evet. Ultralytics Platform bulut eğitimi, başlamak için ücretsiz krediler sunar. Veri kümeni yükle, bir model ve GPU seç, ardından doğrudan tarayıcıdan eğitim yap.
Ultralytics YOLO26 ile nesne algılama modeli eğitmek için Python API'sini veya CLI'yi kullanabilirsin. Aşağıda her iki yönteme de bir örnek verilmiştir:
Tek GPU ve CPU Eğitim Örneğifrom ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Önceden eğitilmiş bir model yükle (eğitim için önerilir) # Modeli eğit results = model.train(data="coco8.yaml", epochs=100, imgsz=640)Daha fazla bilgi için Eğitim Ayarları bölümüne bak.
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 dağıtır.
- Hiperparametre Yapılandırması: Hiperparametreleri YAML dosyaları veya CLI bağımsız değişkenleriyle özelleştirir.
- Görselleştirme ve İzleme: Daha iyi içgörüler için eğitim metriklerini gerçek zamanlı olarak izler.
Bu özellikler eğitimi ihtiyaçlarına göre verimli ve özelleştirilebilir hâle getirir. Daha fazla bilgi için Eğitim Modunun Temel Özellikleri bölümüne bak.
Kesintiye uğramış bir oturumdan eğitime devam etmek için
resumebağımsız değişkeniniTrueolarak ayarla ve son kaydedilen checkpoint'in yolunu belirt.Eğitime Devam Etme Örneğifrom ultralytics import YOLO # Kısmen eğitilmiş modeli yükle model = YOLO("path/to/last.pt") # Eğitime devam et results = model.train(resume=True)Daha fazla bilgi için Kesintiye Uğramış Eğitimlere Devam Etme bölümüne bak.
Sınıf dengesizliği, eğitim verilerindeki bazı sınıfların diğerlerine kıyasla çok daha az örneğe sahip olması durumunda ortaya çıkar. Bu durum, modelin nadir sınıflarda kötü performans göstermesine neden olabilir. Ultralytics YOLO, bu sorunu gidermek için
cls_pwbağımsız değişkeni aracılığıyla sınıf ağırlıklandırmasını destekler.cls_pwbağımsız değişkeni, ters sınıf sıklığına göre sınıf ağırlıklandırmasının gücünü denetler:cls_pw=0.0(varsayılan): Sınıf ağırlıklandırmasını devre dışı bırakırcls_pw=1.0: Ters sıklık ağırlıklandırmasını tam olarak uygular0.0ile1.0arasındaki değerler: Orta düzeyde dengesizlik için kısmi ağırlıklandırma sağlar
Sınıf ağırlıkları
(1.0 / class_counts) ^ cls_pwolarak hesaplanır ve ortalamaları 1.0 olacak şekilde normalleştirilir.Dengesiz Veri Kümesinde Eğitimfrom ultralytics import YOLO # Önceden eğitilmiş bir modeli yükle model = YOLO("yolo26n.pt") # Aşırı dengesiz veriler için tam sınıf ağırlıklandırmasıyla eğitim yap results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0) # Ya da orta düzeyde dengesizlik için kısmi ağırlıklandırma (0.25) kullan results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)İpucuOrta düzeyde dengesiz veri kümeleri için
cls_pw=0.25ile başla; nadir sınıflar hâlâ düşük 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) çerçevesini kullanarak Apple silicon yongalarında eğitimi destekler. Eğitim cihazı olarak 'mps' belirt.
MPS Eğitim Örneğifrom ultralytics import YOLO # Önceden eğitilmiş bir modeli yükle model = YOLO("yolo26n.pt") # Modeli Apple silicon çipinde eğit (M1/M2/M3/M4) results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Daha fazla bilgi için Apple Silicon MPS ile Eğitim bölümüne bak.
Ultralytics YOLO26; batch boyutu, öğrenme hızı, epoch sayısı ve daha fazlası gibi çeşitli eğitim ayarlarını bağımsız değişkenlerle yapılandırmana olanak tanır. İşte kısa bir özet:
Bağımsız değişken Varsayılan Açıklama modelNoneEğitim için model dosyasının yolu. dataNoneVeri kümesi YAML dosyasının yolu (ör. coco8.yaml) veya sınıflandırma için veri kümesi dizini ya da adı (ör.imagenet10).epochs100Toplam eğitim epoch sayısı. batch16Tam sayı olarak veya otomatik modda ayarlanabilen batch boyutu. imgsz640Eğitim için hedef görüntü boyutu. deviceNoneEğitim için kullanılacak cpu,0,0,1veyampsgibi hesaplama aygıtları.saveTrueEğitim checkpoint'lerinin 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.