YOLO Vision 2026:

En İyi YOLOv5 Eğitim Sonuçları için İpuçları#

📚 Bu kılavuz, YOLOv5 ile en iyi mAP ve eğitim sonuçlarını nasıl elde edeceğini açıklar 🚀.

Çoğu zaman, veri setin yeterince büyük ve iyi etiketlenmiş olması şartıyla, modellerde veya eğitim ayarlarında herhangi bir değişiklik yapmadan iyi sonuçlar elde edilebilir. İlk seferde iyi sonuçlar alamazsan, iyileştirme yapmak için uygulayabileceğin adımlar olabilir; ancak kullanıcılarımıza, herhangi bir değişiklik yapmayı düşünmeden önce her zaman tüm varsayılan ayarlarla eğitim yapmalarını öneriyoruz. Bu, bir performans temeli oluşturmana ve iyileştirilecek alanları tespit etmene yardımcı olur.

Eğer eğitim sonuçlarınla ilgili soruların varsa, faydalı bir yanıt bekliyorsan mümkün olan en fazla bilgiyi sağlamanı öneririz; buna sonuç grafikleri (eğitim kayıpları, doğrulama kayıpları, P, R, mAP), PR eğrisi, confusion matrix, eğitim mozayikleri, test sonuçları ve labels.png gibi veri seti istatistik görüntüleri dahildir. Bunların tümü project/name dizininde, tipik olarak yolov5/runs/train/exp konumunda yer alır.

YOLOv5 eğitimlerinden en iyi sonuçları almak isteyen kullanıcılar için aşağıda kapsamlı bir kılavuz hazırladık.

Veri Seti#

  • Sınıf başına görüntü. Sınıf başına ≥ 1500 görüntü önerilir
  • Sınıf başına örnek. Sınıf başına ≥ 10000 örnek (etiketlenmiş nesne) önerilir
  • Görüntü çeşitliliği. Dağıtım ortamını temsil etmelidir. Gerçek dünya kullanım durumları için günün farklı saatlerinden, farklı mevsimlerden, farklı hava koşullarından, farklı ışıklandırmalardan, farklı açılardan ve farklı kaynaklardan (çevrimiçi taranmış, yerel olarak toplanmış, farklı kameralar vb.) görüntüler öneriyoruz.
  • Etiket tutarlılığı. Tüm görüntülerdeki tüm sınıflara ait tüm örnekler etiketlenmelidir. Kısmi etiketleme işe yaramayacaktır.
  • Etiket accuracy. Etiketler her nesneyi yakından çevrelemelidir. Bir nesne ile bounding box arasında boşluk olmamalıdır. Hiçbir nesnenin etiketi eksik olmamalıdır.
  • Eğitim/doğrulama ayrımı disiplini. Aşırı iyimser metriklerden kaçınmak için doğrulama ve test görüntülerinin eğitim setinde asla görünmediğinden emin ol. Sınıf dağılımlarını bölümler arasında benzer tut.
  • Etiket doğrulama. Etiketlerinin doğru göründüğünü doğrulamak için eğitim başlangıcında train_batch*.jpg öğesini görüntüle; yani example mozayiğine bak.
  • Arka plan görüntüleri. Arka plan görüntüleri, Yanlış Pozitifleri (FP) azaltmak için veri setine eklenen, nesne içermeyen görüntülerdir. FP'leri azaltmaya yardımcı olması için yaklaşık %0-10 oranında arka plan görüntüsü öneriyoruz (COCO referans olarak 1000 arka plan görüntüsü içerir, bu toplamın %1'idir). Arka plan görüntüleri için etiket gerekmez.

COCO veri seti sınıf dağılımı analizi

Model Seçimi#

YOLOv5x ve YOLOv5x6 gibi daha büyük modeller neredeyse her durumda daha iyi sonuçlar üretir, ancak daha fazla parametreye sahiptir, eğitmek için daha fazla CUDA belleği gerektirir ve çalıştırılması daha yavaştır. Mobil dağıtımlar için YOLOv5s/m, bulut dağıtımları için YOLOv5l/x önermekteyiz. Tüm modellerin tam bir karşılaştırması için README table kısmına göz at.

YOLOv5 Models

  • Ön eğitilmiş ağırlıklarla başla. Küçük ve orta ölçekli veri setleri için önerilir (yani VOC, VisDrone, GlobalWheat). Modelin adını --weights argümanına aktar. Modeller latest YOLOv5 release üzerinden otomatik olarak indirilir.

    python train.py --data custom.yaml --weights yolov5s.pt
    python train.py --data custom.yaml --weights yolov5m.pt
    python train.py --data custom.yaml --weights yolov5l.pt
    python train.py --data custom.yaml --weights yolov5x.pt
    python train.py --data custom.yaml --weights custom_pretrained.pt
  • Sıfırdan başla. Büyük veri setleri için önerilir (yani COCO, Objects365, OIv6). İlgilendiğin model mimarisi YAML dosyasını, boş bir --weights '' argümanıyla birlikte aktar:

    python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5m.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5l.yaml
    python train.py --data custom.yaml --weights '' --cfg yolov5x.yaml

Eğitim Ayarları#

Herhangi bir şeyi değiştirmeden önce, bir performans tabanı oluşturmak için önce varsayılan ayarla eğitim yap. train.py ayarlarının tam listesi train.py argparser içinde bulunabilir.

  • Epochs. 300 epoch ile başla. Bu erken aşamada aşırı öğrenmeye (overfitting) yol açarsa epoch sayısını azaltabilirsin. 300 epoch sonrasında overfitting gerçekleşmezse, daha uzun süre yani 600, 1200 vb. epoch eğitim yap.
  • Görsel boyutu. COCO, --img 640 yerel çözünürlüğünde eğitilir, ancak veri setindeki yüksek küçük nesne miktarı nedeniyle --img 1280 gibi daha yüksek çözünürlüklerde eğitilmekten fayda sağlayabilir. Çok fazla küçük nesne varsa, özel veri setleri yerel veya daha yüksek çözünürlükte eğitim yapmaktan fayda görecektir. En iyi çıkarım sonuçları, eğitimin çalıştırıldığı --img ile aynı değerde elde edilir; yani --img 1280 ile eğitim yapıyorsan, testi ve tespiti de --img 1280 üzerinde yapmalısın.
  • Batch size. Donanımının izin verdiği en büyük --batch-size değerini kullan. Küçük batch boyutları zayıf batch normalization istatistikleri üretir ve kaçınılmalıdır. GPU'n için en uygun batch boyutunu otomatik olarak seçmek üzere --batch-size -1 kullanabilirsin.
  • Learning rate. Varsayılan öğrenme hızı programı çoğu durumda iyi çalışır. Daha hızlı yakınsama için, epoch'lar boyunca bir kosinüs eğrisini takip ederek öğrenme hızını kademeli olarak düşüren kosinüs öğrenme hızı planlamasını etkinleştirmek üzere --cos-lr bayrağını kullanmayı deneyebilirsin.
  • Veri artırımı. YOLOv5, birden fazla eğitim görüntüsünü birleştiren mozaik gibi çeşitli artırım teknikleri içerir. Eğitimin stabilize olmasına yardımcı olmak için --hyp dosyanındaki mosaic hiperparametresi aracılığıyla artırım gücünü ayarla.
  • Hiperparametreler. Varsayılan hiperparametreler hyp.scratch-low.yaml içindedir. Herhangi birini değiştirmeyi düşünmeden önce varsayılan hiperparametrelerle eğitim yapmanızı öneririz. Genel olarak, artırma hiperparametrelerini artırmak aşırı öğrenmeyi azaltacak ve geciktirecektir, bu da daha uzun eğitimlere ve daha yüksek nihai mAP değerlerine olanak tanır. hyp['obj'] gibi kayıp bileşeni kazanç hiperparametrelerindeki azalma, bu belirli kayıp bileşenlerinde aşırı öğrenmeyi azaltmaya yardımcı olacaktır. Bu hiperparametreleri optimize etmek için otomatik bir yöntem için Hyperparameter Evolution Tutorial bölümümüze bakın.
  • Mixed precision eğitimi. YOLOv5, desteklenen bir GPU algılandığında Automatic Mixed Precision (AMP) özelliğini otomatik olarak etkinleştirerek model doğruluğundan ödün vermeden eğitimi hızlandırır ve bellek kullanımını azaltır.
  • Çoklu GPU eğitimi. Birden fazla GPU'n varsa, eğitimi aralarında dağıtmak için --device 0,1,2,3 kullan; bu, eğitim süresini önemli ölçüde azaltabilir.
  • Erken durdurma. Doğrulama metrikleri 50 epoch boyunca gelişmezse eğitimi durdurmak için --patience 50 kullan; bu, zaman kazandırır ve aşırı öğrenmeyi (overfitting) önler.

İleri Düzey Optimizasyon Teknikleri#

  • Transfer learning. Özelleştirilmiş veri setleri için ön eğitilmiş ağırlıklarla başla ve modeli belirli görevine uyarlamak için eğitim sırasında katmanların dondurmasını kademeli olarak kaldır.
  • Model pruning. Eğitimden sonra, gereksiz ağırlıkları kaldırmak ve önemli bir performans kaybı yaşamadan model boyutunu küçültmek için modelini budamayı (pruning) düşün.
  • Model ensemble. Kritik uygulamalar için, farklı konfigürasyonlara sahip birden fazla model eğit ve iyileştirilmiş doğruluk için tahminlerini birleştir.
  • Test-time augmentation. Girdi görüntüsünün artırılmış versiyonlarından elde edilen sonuçların ortalamasını alarak tahmin doğruluğunu artırmak için çıkarım sırasında --augment ile TTA'yı etkinleştir.

Daha Fazla Okuma#

Daha fazla bilgi edinmek istersen, başlamak için iyi bir yer tüm ML alanlarında geniş bir şekilde geçerli olan harika eğitim fikirlerine sahip olan Karpathy'nin 'Recipe for Training Neural Networks' çalışmasıdır: https://karpathy.github.io/2019/04/25/recipe/

Eğitim ayarları ve konfigürasyonları hakkında daha ayrıntılı bilgi için, mevcut tüm parametrelerin kapsamlı açıklamalarını sunan Ultralytics train settings documentation sayfasına bakın.

İyi şanslar 🍀, başka soruların olursa bize bildir!

SSS#

  • Eğitim kaybı azalmaya devam ederken doğrulama kaybı artmaya başlıyorsa modelin aşırı öğreniyor olabilir. Doğrulama mAP değerini izle; eğer eğitim kaybı iyileşmeye devam ederken bu değer düzleşir veya azalırsa, bu bir aşırı öğrenme işaretidir. Çözümler arasında daha fazla eğitim verisi eklemek, veri artırmayı artırmak veya düzenlileştirme tekniklerini uygulamak yer alır.

  • Optimum batch boyutu GPU belleğine bağlıdır. Daha büyük batch boyutları genellikle daha iyi batch normalizasyon istatistikleri ve eğitim kararlılığı sağlar. Donanımınızın bellek aşımı yapmadan kaldırabileceği en büyük batch boyutunu kullanın. Kurulumunuz için optimum batch boyutunu otomatik olarak belirlemek amacıyla --batch-size -1 kullanabilirsiniz.

  • Eğitimi hızlandırmak için şunları deneyin: --device 0,1,2,3 ile birden fazla GPU kullanmak, veri setinizi --cache ile önbelleğe almak ve batch boyutunuzu optimize etmek (karma duyarlılık/mixed precision desteklenen GPU'larda otomatik olarak etkinleştirilir). Ayrıca mutlak doğruluk kritik değilse YOLOv5s gibi daha küçük bir model varyantı kullanmayı düşünün.

Katkıda Bulunanlar

Yorumlar