Ultralytics YOLO27: Bekleme listesine katıl.
Başla

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

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

Veri kümen yeterince büyük ve iyi etiketlenmişse, çoğu zaman modellerde veya eğitim ayarlarında değişiklik yapmadan iyi sonuçlar alabilirsin. İlk denemende iyi sonuç alamazsan iyileştirme için uygulayabileceğin adımlar olabilir; ancak değişiklikleri değerlendirmeden önce her zaman varsayılan ayarların tümüyle eğitim yapmanı öneririz. Bu, performans için bir temel oluşturup iyileştirilebilecek alanları belirlemene yardımcı olur.

Eğitim sonuçların hakkında soruların varsa, yararlı bir yanıt alabilmek için mümkün olduğunca fazla bilgi ver. Eğitim kayıpları, doğrulama kayıpları, P, R ve mAP sonuç grafiklerini; PR eğrisini; karışıklık matrisini; eğitim mozaiklerini; test sonuçlarını ve labels.png gibi veri kümesi istatistiklerini içeren görüntüleri paylaş. Bunların tümü project/name dizininde, genellikle yolov5/runs/train/exp konumunda bulunur.

Aşağıdaki bölümlerde YOLOv5 eğitim sonuçlarını etkileyen temel etkenler ele alınır.

Veri kümesi#

  • Sınıf başına görsel. Sınıf başına ≥ 1500 görsel önerilir
  • Sınıf başına örnek. Sınıf başına ≥ 10000 örnek (etiketlenmiş nesne) önerilir
  • Görsel çeşitliliği. Dağıtım ortamını temsil etmelidir. Gerçek dünyadaki 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 toplanmış, yerel olarak derlenmiş, farklı kameralarla çekilmiş vb.) görseller kullanmanı öneririz.
  • Etiket tutarlılığı. Tüm görsellerdeki tüm sınıfların tüm örnekleri etiketlenmelidir. Kısmi etiketleme işe yaramaz.
  • Etiket doğruluğu. Etiketler her nesneyi yakından çevrelemelidir. Bir nesne ile sınırlayıcı kutusu arasında boşluk olmamalıdır. Hiçbir nesne etiketsiz bırakılmamalıdır.
  • Eğitim/doğrulama bölme disiplini. Aşırı iyimser metrikleri önlemek için doğrulama ve test görsellerinin eğitim kümesinde hiç yer almadığından emin ol. Bölümler arasındaki sınıf dağılımlarını benzer tut.
  • Etiketleri doğrulama. Etiketlerinin doğru göründüğünü doğrulamak için eğitim başlangıcında train_batch*.jpg mozaiklerini görüntüle.
  • Arka plan görselleri. Arka plan görselleri, yanlış pozitifleri (FP) azaltmak için veri kümesine eklenen, nesne içermeyen görsellerdir. Yanlış pozitifleri azaltmaya yardımcı olmak için yaklaşık %0-10 oranında arka plan görseli kullanmanı öneririz (referans olması açısından COCO'da toplamın %1'ine denk gelen 1000 arka plan görseli bulunur). Arka plan görselleri için etiket gerekmez.

COCO dataset class distribution analysis

Model Seçimi#

YOLOv5x ve YOLOv5x6 gibi daha büyük modeller, neredeyse her durumda daha iyi sonuçlar verir; ancak daha fazla parametreye sahiptir, eğitim için daha fazla CUDA belleği gerektirir ve daha yavaş çalışır. Mobil dağıtımlar için YOLOv5s/m, bulut dağıtımları için YOLOv5l/x modellerini öneririz.

YOLOv5 model size, speed and mAP comparison chart

  • Önceden eğitilmiş ağırlıklarla başla. Küçük ve orta büyüklükteki veri kümeleri için önerilir (ör. VOC, VisDrone, GlobalWheat). Model adını --weights bağımsız değişkenine ver. Modeller en son YOLOv5 sürümünden 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 kümeleri için önerilir (ör. COCO, Objects365, OIv6). İlgilendiğin model mimarisinin YAML dosyasını, boş bir --weights '' bağımsız değişkeniyle birlikte belirt:

    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 değişiklik yapmadan önce, bir performans başlangıç noktası oluşturmak için önce varsayılan ayarlarla eğitim yap. train.py ayarlarının tam listesi train.py argparser'ında bulunabilir.

  • Epoch sayısı. 300 epoch ile başla. Model erken aşamada aşırı öğrenirse epoch sayısını azaltabilirsin. 300 epoch sonrasında aşırı öğrenme görülmüyorsa eğitimi, örneğin 600 veya 1200 epoch boyunca sürdür.
  • Görüntü boyutu. COCO, --img 640 doğal çözünürlüğünde eğitilir; ancak veri kümesindeki küçük nesne sayısı fazla olduğundan --img 1280 gibi daha yüksek çözünürlüklerde eğitimden fayda görebilir. Çok sayıda küçük nesne içeren özel veri kümeleri, doğal veya daha yüksek çözünürlükte eğitimden fayda görür. En iyi çıkarım sonuçları, eğitimde kullanılan --img ile aynı boyutta elde edilir. Örneğin --img 1280 boyutunda eğitim yaparsan test ve algılama işlemlerini de --img 1280 boyutunda yapmalısın.
  • Yığın boyutu. Donanımının desteklediği en büyük --batch-size değerini kullan. Küçük yığın boyutları, zayıf yığın normalizasyonu istatistiklerine yol açar ve bunlardan kaçınılmalıdır. GPU'n için en uygun yığın boyutunu otomatik olarak seçmek üzere --batch-size -1 kullanabilirsin.
  • Öğrenme oranı. Varsayılan öğrenme oranı zamanlaması çoğu durumda iyi çalışır. Daha hızlı yakınsama için --cos-lr bayrağını kullanarak kosinüs öğrenme oranı zamanlamasını etkinleştirebilirsin; bu yöntem epoch'lar boyunca kosinüs eğrisini izleyerek öğrenme oranını kademeli olarak düşürür.
  • Veri artırma. YOLOv5, birden fazla eğitim görselini birleştiren mozaik gibi çeşitli veri artırma teknikleri içerir. Eğitimi kararlı hâle getirmeye yardımcı olmak için --hyp dosyandaki mosaic hiperparametresiyle veri artırma düzeyini ayarla.
  • Hiperparametreler. Varsayılan hiperparametreler hyp.scratch-low.yaml dosyasındadır. Herhangi bir değişiklik yapmayı düşünmeden önce varsayılan hiperparametrelerle eğitim yapmanı öneririz. Genel olarak veri artırma hiperparametrelerini artırmak aşırı uyumu azaltıp geciktirerek daha uzun eğitimlere ve daha yüksek son mAP değerlerine olanak tanır. hyp['obj'] gibi loss bileşeni katsayısı hiperparametrelerini azaltmak, ilgili loss bileşenlerindeki aşırı uyumu azaltmaya yardımcı olur. Bu hiperparametreleri otomatik olarak optimize etme yöntemi için Hiperparametre Evrimi Öğreticimize bak.
  • Karma duyarlıklı eğitim. Desteklenen bir GPU algılandığında YOLOv5 Otomatik Karma Duyarlılığı (AMP) otomatik olarak etkinleştirir; böylece model doğruluğundan ödün vermeden eğitim hızlanır ve bellek kullanımı azalır.
  • Çoklu GPU ile eğitim. Birden fazla GPU'n varsa, eğitim süresini önemli ölçüde azaltabilecek Dağıtık Veri Paralel eğitimi python -m torch.distributed.run --nproc_per_node 4 train.py ... --device 0,1,2,3 ile başlat.
  • Erken durdurma. Doğrulama metrikleri 50 epoch boyunca iyileşmezse eğitimi durdurmak, zaman kazanmak ve aşırı uyumu önlemek için --patience 50 kullan.

Gelişmiş Optimizasyon Teknikleri#

  • Aktarım öğrenimi. Özel veri kümeleri için önceden eğitilmiş ağırlıklarla başla ve modeli belirli görevine uyarlamak üzere isteğe bağlı olarak --freeze ile katmanları dondur.
  • Model budama. Eğitimden sonra, doğrulukta çok az kayıp yaşarken gereksiz ağırlıkları sıfırlamak için modelini budamayı düşün; ardından hız kazanımlarından yararlanmak için modeli seyreklik farkındalığına sahip bir çalışma zamanı ortamında kullanıma sun.
  • Model topluluğu. Kritik uygulamalarda farklı yapılandırmalarla birden fazla model eğit ve daha yüksek doğruluk elde etmek için tahminlerini birleştir.
  • Test zamanı artırımı. Girdi görüntüsünün çevrilmiş ve yeniden ölçeklendirilmiş sürümlerinden elde edilen tahminleri birleştirerek tahmin doğruluğunu artırmak için çıkarım sırasında TTA'yı --augment ile etkinleştir.

Ek Okumalar#

Daha fazla bilgi edinmek istersen, başlangıç için Karpathy'nin Sinir Ağlarını Eğitme Reçetesi iyi bir kaynaktır; bu kaynakta, tüm makine öğrenimi alanlarında geniş ölçüde geçerli eğitim fikirleri yer alır.

İyi şanslar; başka soruların olursa bize bildir.

Sık Sorulan Sorular#

  • Eğitim kaybı azalmaya devam ederken doğrulama kaybı artmaya başlarsa modelin aşırı öğreniyor olabilir. Doğrulama mAP değerini izle: eğitim kaybı iyileşmeyi sürdürürken bu değer sabitlenir veya düşerse aşırı öğrenmenin işaretidir. Çözümler arasında daha fazla eğitim verisi eklemek, veri artırmayı artırmak veya düzenlileştirme teknikleri uygulamak yer alır.

  • En uygun yığın boyutu GPU belleğine bağlıdır. Daha büyük yığın boyutları genellikle daha iyi yığın normalizasyonu istatistikleri ve eğitim kararlılığı sağlar. Bellek yetersizliği yaşamadan donanımının destekleyebileceği en büyük yığın boyutunu kullan. Kurulumun için en uygun yığın boyutunu otomatik olarak belirlemek üzere --batch-size -1 kullanabilirsin.

  • Eğitimi hızlandırmak için şunları dene: DDP ile birden fazla GPU kullan, veri kümeni --cache ile önbelleğe al ve toplu iş boyutunu optimize et (desteklenen GPU'larda karma duyarlık otomatik olarak etkinleştirilir). Mutlak doğruluk kritik değilse YOLOv5s gibi daha küçük bir model varyantı kullanmayı da değerlendirebilirsin.

Katkıda Bulunanlar

Yorumlar

Bir soru sor, sonuçlarını paylaş veya başka birine yardım et.