Link to this sectionEn İ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.
If you have questions about your training results we recommend you provide the maximum amount of information possible if you expect a helpful response, including results plots (train losses, val losses, P, R, mAP), PR curve, confusion matrix, training mosaics, test results and dataset statistics images such as labels.png. All of these are located in your project/name directory, typically yolov5/runs/train/exp.
YOLOv5 eğitimlerinden en iyi sonuçları almak isteyen kullanıcılar için aşağıda kapsamlı bir kılavuz hazırladık.
Link to this sectionVeri 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 doğruluğu. Etiketler her bir nesneyi sıkıca sarmalıdır. 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 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ğrulaması. Etiketlerinin doğru göründüğünü doğrulamak için eğitim başlangıcında
train_batch*.jpgdosyasına göz at; örneğin örnek mozaiğ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.
Link to this sectionModel Seçimi#
YOLOv5x ve YOLOv5x6 gibi daha büyük modeller neredeyse her durumda daha iyi sonuçlar verecektir ancak daha fazla parametreye sahiptirler, eğitim için daha fazla CUDA belleği gerektirirler ve çalışmaları daha yavaştır. Mobil dağıtımlar için YOLOv5s/m, bulut dağıtımları için YOLOv5l/x öneriyoruz. Tüm modellerin tam karşılaştırması için README tablomuzu incele.

-
Önceden eğitilmiş ağırlıklarla başla. Küçük ve orta ölçekli veri setleri için önerilir (örneğin VOC, VisDrone, GlobalWheat). Model adını
--weightsargümanına geçir. 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 setleri için önerilir (örneğin COCO, Objects365, OIv6). İlgilendiğin model mimarisi YAML dosyasını, boş bir
--weights ''argümanıyla birlikte geçir: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
Link to this sectionEğitim Ayarları#
Herhangi bir şeyi değiştirmeden önce, bir performans temeli oluşturmak için önce varsayılan ayarlarla eğitim yap. train.py ayarlarının tam listesi train.py argparser dosyasında bulunabilir.
- Epochs. 300 epoch ile başla. Eğer bu erken aşırı öğrenmeye (overfitting) yol açarsa, epoch sayısını azaltabilirsin. Eğer 300 epoch'tan sonra aşırı öğrenme gerçekleşmezse, daha uzun süre, örneğin 600, 1200 vb. epoch kadar eğitim yap.
- Görüntü boyutu. COCO,
--img 640yerel çözünürlüğünde eğitilir, ancak veri setindeki çok sayıdaki küçük nesne nedeniyle--img 1280gibi daha yüksek çözünürlüklerde eğitilmekten fayda sağlayabilir. Eğer çok fazla küçük nesne varsa, özel veri setleri yerel veya daha yüksek çözünürlükte eğitilmekten yarar görecektir. En iyi çıkarım sonuçları, eğitimin çalıştırıldığı--imgdeğerinin aynısında elde edilir; yani--img 1280ile eğitirsen, test ve tespit işlemlerini de--img 1280ile yapmalısın. - Batch size. Donanımının izin verdiği en büyük
--batch-sizedeğerini kullan. Küçük batch boyutları zayıf batch normalizasyon istatistikleri üretir ve bunlardan kaçınılmalıdır. GPU'n için en uygun batch boyutunu otomatik olarak seçmek için--batch-size -1kullanabilirsin. - Learning rate. Varsayılan öğrenme oranı çizelgesi çoğu durumda iyi çalışır. Daha hızlı yakınsama için, öğrenme oranını epoch'lar boyunca kosinüs eğrisini takip ederek kademeli olarak azaltan kosinüs öğrenme oranı çizelgesini etkinleştirmek için
--cos-lrbayrağını kullanmayı deneyebilirsin. - Data augmentation. YOLOv5 includes various augmentation techniques like mosaic, which combines multiple training images. Adjust augmentation strength via the
mosaichyperparameter in your--hypfile to help stabilize training. - 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, artırma hiperparametrelerini artırmak, aşırı öğrenmeyi azaltacak ve geciktirecek, daha uzun eğitimlere ve daha yüksek nihai mAP değerlerine olanak tanıyacaktır.
hyp['obj']gibi kayıp bileşeni kazancı hiperparametrelerindeki azalma, bu belirli kayıp bileşenlerinde aşırı öğrenmeyi azaltmaya yardımcı olacaktır. Bu hiperparametreleri optimize etmenin otomatik bir yöntemi için Hiperparametre Evrimi Kılavuzumuza göz at. - Mixed precision eğitimi. YOLOv5, desteklenen bir GPU algılandığında Otomatik Karma Hassasiyeti (AMP) otomatik olarak etkinleştirir, böylece 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,3kullan; bu, eğitim süresini önemli ölçüde azaltabilir. - Erken durdurma. Doğrulama metrikleri 50 epoch boyunca iyileşmezse eğitimi durdurmak, zaman kazanmak ve aşırı öğrenmeyi önlemek için
--patience 50kullan.
Link to this sectionİleri Düzey Optimizasyon Teknikleri#
- Transfer learning. Özel veri setleri için, önceden eğitilmiş ağırlıklarla başla ve modeli özel 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 performans kaybı olmadan model boyutunu küçültmek için modelini budamayı düşün.
- Model ensemble. Kritik uygulamalar için, farklı konfigürasyonlara sahip birden fazla model eğit ve doğruluk oranını artırmak için tahminlerini birleştir.
- Test-time augmentation. Giriş görüntüsünün artırılmış sürümlerinden elde edilen sonuçları ortalayarak tahmin doğruluğunu artırmak için
--augmentile çıkarım sırasında TTA'yı etkinleştir.
Link to this sectionDaha Fazla Okuma#
Daha fazlasını öğrenmek istersen, başlangıç için iyi bir kaynak, tüm ML alanlarında geniş ölçüde uygulanan eğitim için harika fikirlere sahip Karpathy'nin 'Neural Networks Eğitimi için Tarif' (Recipe for Training Neural Networks) adlı yazısı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, tüm mevcut parametrelerin kapsamlı açıklamalarını sunan Ultralytics train ayarları dokümantasyonuna başvur.
İyi şanslar 🍀, başka soruların olursa bize bildir!
Link to this sectionSSS#
Link to this sectionModelimin aşırı öğrenip öğrenmediğini nasıl anlarım?#
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.
Link to this sectionYOLOv5 eğitimi için en uygun batch boyutu nedir?#
En uygun 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. Bellek hatası almadan donanımının kaldırabileceği en büyük batch boyutunu kullan. Kurulumun için en uygun batch boyutunu otomatik olarak belirlemek için --batch-size -1 kullanabilirsin.
Link to this sectionYOLOv5 eğitimini nasıl hızlandırabilirim?#
Eğitimi hızlandırmak için şunları dene: --device 0,1,2,3 ile birden fazla GPU kullanmak, --cache ile veri setini önbelleğe almak ve batch boyutunu optimize etmek (karma hassasiyet, 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.
