Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
İlk YOLO modelini eğit·Eğit·Ders 6/10
Dersbaşlangıç düzeyi

İlk Modelini Eğit

Tek bir çağrıyla veri kümen üzerinde YOLO26'ya ince ayar yap, canlı eğitim günlüğünü satır satır oku ve çalıştırma klasöründe best.pt ile önemli grafikleri bul.

Bir algılayıcıyı sıfırdan eğitmek günler ve devasa veri kümeleri gerektirir. Önceden eğitilmiş bir YOLO26'ya yaklaşık yüz görüntüyle ince ayar yapmak, dizüstü bilgisayar CPU'sunda yaklaşık bir dakika sürer; çünkü aktarım öğrenimi, modelin kenarlar, şekiller ve nesneler hakkında zaten bildiklerini yeniden kullanır.

Bu derste hap veri kümesi üzerinde eğitim yapacak, mAP50-95 değerinin sıfıra yakın bir başlangıç seviyesinden on epoch'ta 0.66'ya yükselişini izleyecek ve günlükten bir çalıştırmanın sağlıklı mı yoksa zamanını boşa mı harcadığını erkenden anlamayı öğreneceksin.

Sonuç

YOLO26 ince ayar çalıştırması başlatabilir, epoch başına günlükten çalıştırmanın sağlıklı olup olmadığını değerlendirebilir ve çalıştırma klasöründe ihtiyacın olan kontrol noktasını ve grafikleri bulabilirsin.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. CPU'da YOLO('yolo26n.pt').train(data='my_dataset/data.yaml', epochs=10, imgsz=320, name='pills_v1').

  2. GPU'da bunun yerine varsayılanları kullan: epochs=100, imgsz=640.

  3. Sağlıklı günlük: kayıplar düşer, mAP50-95 yükselir, kesinlik ve duyarlılık dengede kalır.

  4. Önce train_batch0.jpg dosyasını aç; sonrasındaki her şey için weights/best.pt kullan.

Uygulamalı

Uygulamalı Örnek: Hap Algılayıcıyı Eğit#

Ultralytics Platform eğitim iletişim kutusu, bulutta eğitim çalıştırması için model, veri kümesi, epoch ve GPU seçeneklerini içeren Cloud sekmesi

Ultralytics Platform'un Yeni Model Eğit iletişim kutusu, aşağıdaki kodla aynı seçenekleri sorar — temel model, veri kümesi, epoch sayısı, görüntü boyutu — ve bunları ya bulut GPU'larında çalıştırır ya da eşleşen yerel komutu oluşturur. Bu ayarlarla dizüstü bilgisayar CPU'sunda eğitim yaklaşık bir dakikada tamamlanır:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # COCO üzerinde önceden eğitilmiş
results = model.train(data="my_dataset/data.yaml", epochs=10, imgsz=320, name="pills_v1")
print(results.save_dir)

CLI ve Python eşdeğerdir. epochs=10 ve imgsz=320 CPU çalıştırmalarını kısa tutar; GPU'da ikisini de kaldırıp varsayılanları (epochs=100, imgsz=640) kullan, çünkü daha fazla epoch ve piksel neredeyse her zaman işe yarar. Eğit modu bu döngüyü senin için çalıştırır:

Günlüğü Satır Satır Oku#

İlk ve son iki epoch'a kısaltılmış gerçek çıktı:

optimizer: AdamW(lr=0.002, momentum=0.9) with parameter groups ...
Using 92 train, 23 val images for fraction=1.0 at imgsz=320
      Epoch    GPU_mem   box_loss   cls_loss    l1_loss  Instances       Size
       1/10         0G      1.818      3.899   0.008805        206        320: 100% 6/6 3.3s
                   all         23        399      0.957      0.805      0.927      0.548
       2/10         0G      1.434      3.291   0.006285        208        320: 100% 6/6 4.4s
                   all         23        399      0.953      0.911      0.964      0.592
       ...
       9/10         0G      1.121      1.103   0.005143        194        320: 100% 6/6 5.0s
                   all         23        399      0.949      0.957      0.975      0.656
      10/10         0G      1.174      1.125   0.005068        212        320: 100% 6/6 5.1s
                   all         23        399       0.97      0.957      0.977      0.659
10 epochs completed in 0.015 hours.
  • optimizer: AdamW(lr=0.002 ...): varsayılan optimizer=auto senin için eniyileyiciyi ve öğrenme oranını seçti.
  • Using 92 train, 23 val images: bunların veri kümenle eşleştiğini doğrula. Daha düşük sayı, atlanan görüntüler olduğu anlamına gelir.
  • GPU_mem 0G: CPU'da eğitim yapılıyor. GPU'da burada bellek kullanımını görürdün; GPU'lu bir makinede 0G görünüyorsa GPU kullanılmıyor demektir.
  • Her epoch'un ilk satırı: eğitim bölümü için üç kayıp, son gruptaki etiketli nesne sayısı (Instances) ve görüntü boyutu.
  • Her epoch'un all satırı: doğrulama bölümündeki kesinlik, duyarlılık, mAP50 ve mAP50-95. İzlemen gereken satır budur.
SütunAnlamıSağlıklı eğilim
box_lossTahmin edilen kutuların etiketli kutulardan ne kadar uzakta olduğuDüşer, sonra yataylaşır
cls_lossSınıf puanlarının ne kadar hatalı olduğuDüşer, sonra yataylaşır
l1_lossYOLO26'nın doğrudan kutu koordinatı hatasıDüşer
P, RDoğrulama bölümündeki kesinlik ve duyarlılıkYükselir ve dengede kalır
mAP50, mAP50-95Algılama kalitesi; mAP50-95 ayrıca sıkı kutuları ödüllendirirYükselir, sonra yataylaşır

Burada mAP50-95, 0.0002 başlangıç değerinden bir epoch sonra 0.548'e, on epoch sonra 0.659'a yükseldi. Kesinlik 4. epoch'ta 0.80'e düştü ve toparlandı: 23 doğrulama görüntüsünde tekil epoch'lar gürültülüdür, bu yüzden tek bir satırı değil eğilimi değerlendir. Çalıştırma devam ederken kullanabileceğin karar kuralları:

  • Kayıplar düşüyor ve mAP yükseliyorsa: çalıştırmayı sürdür.
  • Kayıplar 1. epoch'tan beri sabitse: Ctrl+C ile durdur ve etiketleri ve YAML dosyasını kontrol et.
  • Kesinlik duyarlılıktan çok yüksekse: model temkinlidir ve nesneleri kaçırır. Duyarlılık kesinlikten çok yüksekse: gerçekte olmayan şeyleri algılar.
  • mAP birçok epoch boyunca sabitse: daha fazla epoch işe yaramaz; verileri veya imgsz değerini değiştir.

Üç kayıp, YOLO26'nın kayıp fonksiyonunun bileşenleridir; performans metrikleri kılavuzu her metriği ayrıntılı biçimde açıklar.

Çalıştırmanın Oluşturduğu Dosyaları Bul#

Her şey runs/detect/pills_v1/ konumuna kaydedilir:

DosyaKullanım amacı
weights/best.ptEpoch'lar boyunca en iyi doğrulama başarımına sahip kontrol noktası; çıkarım ve dışa aktarma için kullan
weights/last.ptEn son kontrol noktası; kesintiye uğrayan çalıştırmayı sürdürmek için kullanılır
args.yamlÇalıştırmada kullanılan tüm argümanlar; yeniden üretmek için
results.csv, results.pngEpoch başına kayıplar ve metrikler; hem veri hem grafik olarak
labels.jpgSınıf sayıları ve kutu boyutu ile konum histogramları
train_batch*.jpgEtiketleri çizilmiş artırılmış eğitim grupları
val_batch*_labels.jpg, val_batch*_pred.jpgDoğrulama görüntülerindeki gerçek değerler ve tahminler
confusion_matrix*.png, Box*_curve.pngKarışıklık matrisi ile kesinlik, duyarlılık, F1 ve PR eğrileri

Başka bir şey yapmadan önce train_batch0.jpg dosyasını aç. Kutular nesnelerin üzerine oturmuyorsa etiketler yanlıştır ve hiçbir epoch sayısı bunu düzeltemez.

Önce Bu Argümanları Değiştir#

ArgümanVarsayılanNe zaman değiştirilmeli
epochs100Kısa CPU deneyleri veya aşırı öğrenmeye başlayan küçük veri kümeleri (düşür); hâlâ gelişen büyük veri kümeleri (yükselt, 200–300)
imgsz640Küçük nesneler (1024 veya 1280'e yükselt) ya da CPU deneyleri (düşür)
batch16Grup boyutu: bellek yetersiz hatalarında düşür veya GPU belleğinin yaklaşık %60'ına göre otomatik boyutlandırmak için -1 kullan
patience100Doğrulama başarımı N epoch boyunca iyileşmediğinde erken durdur; örneğin patience=20
deviceotomatikcpu, mps, 0 gibi bir GPU indeksi veya [0, 1] gibi birden çok GPU kullanmaya zorla
nametrainHer zaman: çalıştırmaları neyin değiştiğine göre adlandır
model.train(data="my_dataset/data.yaml", epochs=200, imgsz=1024, batch=-1, patience=20, name="pills_v1_1024")

Erken durdurma: eğitim hatası düşmeye devam ederken doğrulama hatası en düşük seviyeye iner ve doğrulama doğruluğu zirveye çıkar; bu nokta durdurma zamanını gösterir

patience için varsayılan 100 değeri, 100 epoch'luk bir çalıştırmanın erken durmayacağı anlamına gelir. Daha düşük bir değer, yukarıdaki eğrilerin durması gerektiğini gösterdiği yerde takılan çalıştırmayı bitirir; her iki durumda da best.pt korunur.

Birden fazla GPU varsa device=[0, 1, 2, 3] gibi bir liste geçir: Ultralytics senin için dağıtık veri paralel (DDP) eğitimi başlatır, batch GPU'lar genelindeki toplamı belirtir ve eğitim varsayılan olarak karma duyarlılık kullanır (amp=True). Çalıştırma dizüstü bilgisayarının kapasitesini aştığında aynı veri kümesi ve argümanlar Ultralytics Platform'da bulut GPU'larında çalışır; bu konu Çalıştırmaları Eğit, Oku ve İnce Ayar Yap bölümünde ele alınır.

Bu Hatalardan Kaçın#

Yanlışlıkla sıfırdan eğitim yapmak

Belirti: Küçük bir veri kümesinde birçok epoch sonrasında mAP sıfıra yakın. Neden: Model yolo26n.pt yerine yolo26n.yaml kaynağından (rastgele ağırlıklarla) geldi. Çözüm: Her zaman önceden eğitilmiş bir .pt ile başla. Sıfırdan eğitim yalnızca omurga araştırmaları veya çok büyük veri kümeleri için avantaj sağlar.

GPU belleği yetersiz

Belirti: İlk epoch'ta CUDA out of memory. Çözüm: batch değerini yarıya indir veya AutoBatch'in sığacak bir boyut seçmesi için batch=-1 değerini ayarla. imgsz değerini düşürmek de yardımcı olur, ancak modelin görebileceklerini değiştirir.

last.pt değil, best.pt'yi dağıt

last.pt son epoch'tur ve önceki epoch'lardan daha kötü olabilir. best.pt, doğrulama uygunluk değerinin en iyi olduğu epoch'tur; doğrulaman, dışa aktarman ve dağıtman gereken epoch budur.

Model eğitimi ipuçları kılavuzu kalan argümanları, hiperparametre ayarlama kılavuzu ise öğrenme oranı taramalarını ve genetik eniyileyiciyi ele alır. İnce ayar kılavuzu katmanları dondurmayı açıklar.

Dene

yolo26n.pt modelini my_dataset/data.yaml üzerinde epochs=10, imgsz=320, name='pills_v1' ile eğit (veya GPU'da varsayılanları kullan). Kısa bir çalıştırma raporu teslim et: önceki dersteki başlangıç değerinin yanında son mAP50 ve mAP50-95 değerleri, mAP50-95'in belirgin biçimde iyileşmeyi bıraktığı epoch ve train_batch0.jpg içindeki kutuların hapların üzerine oturup oturmadığına dair evet ya da hayır.

Commit
git add -A && git commit -m "feat(model): trained first pill detector"
Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • runs/detect/pills_v1/weights/best.pt mevcut.

  • Raporundaki son mAP50-95 değeri, önceden eğitilmiş başlangıç değerinden belirgin biçimde yüksek.

  • train_batch0.jpg ve results.png dosyalarını kontrol ettin ve mAP'in nerede yataylaştığını not ettin.

Çözümü göster
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="my_dataset/data.yaml", epochs=10, imgsz=320, name="pills_v1")
print(results.save_dir)  # runs/detect/pills_v1
Baseline (yolo26n.pt, no pill class): mAP50 0.001, mAP50-95 0.0002
pills_v1 (10 epochs, imgsz 320, CPU, ~1 min): mAP50 0.977, mAP50-95 0.659
Plateau: mAP50-95 gains shrink after epoch 8 (0.649 -> 0.656 -> 0.659)
train_batch0.jpg: yes, boxes sit on the pills

Kesin değerler donanıma ve paket sürümüne göre biraz değişir.

Sırada ne var

Eğitilmiş bir modelin ve öne çıkan tek bir sayın var. Sırada modeli doğru şekilde doğrulamak ve nerede başarısız olduğunu bulmak var.

İlerlemeni kaydetmek için giriş yap