En İyi Antrenman Sonuçları için İpuçları
📚 Bu kılavuz, YOLOv5 🚀 ile en iyi mAP ve eğitim sonuçlarının nasıl üretileceğini açıklamaktadır.
Veri setinizin yeterince büyük ve iyi etiketlenmiş olması koşuluyla, çoğu zaman modellerde veya eğitim ayarlarında hiçbir değişiklik yapmadan iyi sonuçlar elde edilebilir. İlk başta iyi sonuçlar alamazsanız, iyileştirmek için atabileceğiniz adımlar olabilir, ancak her zaman kullanıcıların herhangi bir değişiklik yapmadan önce tüm varsayılan ayar larla eğitim almasını öneririz. Bu, bir performans taban çizgisi oluşturmaya ve iyileştirme alanlarını tespit etmeye yardımcı olur.
Eğitim sonuçlarınız hakkında sorularınız varsa mümkün olan maksimum miktarda bilgi vermenizi öneririz Sonuç grafikleri (tren kayıpları, val kayıpları, P, R, mAP), PR eğrisi dahil olmak üzere yararlı bir yanıt bekliyorsanız, karışıklık matrisi, eğitim mozaikleri, test sonuçları ve labels.png gibi veri kümesi istatistik görüntüleri. Bunların hepsi sizin project/name
dizini, tipik olarak yolov5/runs/train/exp
.
YOLOv5 eğitimlerinde en iyi sonuçları almak isteyen kullanıcılar için aşağıda tam 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 (etiketli nesne) önerilir
- Görüntü çeşitliliği. Konuşlandırılan ortamı temsil etmelidir. Gerçek dünya kullanım durumları için günün farklı zamanlarından, farklı mevsimlerden, farklı hava koşullarından, farklı ışıklardan, farklı açılardan, farklı kaynaklardan (çevrimiçi olarak kazınmış, yerel olarak toplanmış, farklı kameralar) vb. görüntüler öneririz.
- Etiket tutarlılığı. Tüm resimlerdeki tüm sınıfların tüm örnekleri etiketlenmelidir. Kısmi etiketleme işe yaramayacaktır.
- 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 nesnenin etiketi eksik olmamalıdır.
- Etiket doğrulama. Görünüm
train_batch*.jpg
Etiketlerinizin doğru göründüğünü doğrulamak için tren başlangıcında, örn. örnek Mozaik. - Arka plan görüntüleri. Arka plan görüntüleri, Yanlış Pozitifleri (FP) azaltmak için bir veri kümesine eklenen ve nesne içermeyen görüntülerdir. FP'leri azaltmaya yardımcı olması için yaklaşık %0-10 arka plan görüntüsü öneriyoruz (COCO'da referans olarak 1000 arka plan görüntüsü vardır, toplamın %1'i). Arka plan görüntüleri için etiket gerekmez.
Model Seçimi
YOLOv5x ve YOLOv5x6 gibi daha büyük modeller neredeyse tüm durumlarda daha iyi sonuçlar üretecektir, ancak daha fazla parametreye sahiptir, eğitmek için daha fazla CUDA bellek gerektirir ve daha yavaş çalışır. Mobil dağıtımlar için YOLOv5s/m'yi, bulut dağıtımları için YOLOv5l/x'i öneriyoruz. Tüm modellerin tam bir karşılaştırması için README tablomuza bakın.
- Önceden eğitilmiş ağırlıklardan başlayın. Küçük ve orta ölçekli veri kümeleri için önerilir (örn. VOC, VisDrone, GlobalWheat). Modelin adını, modelin
--weights
argüman. Modeller otomatik olarak en son YOLOv5 sürümü.
python train.py --data custom.yaml --weights yolov5s.pt
yolov5m.pt
yolov5l.pt
yolov5x.pt
custom_pretrained.pt
- Sıfırdan başlayın. Büyük veri kümeleri için önerilir (örn. COCO, Objects365, OIv6). İlgilendiğiniz model mimarisi YAML'ını boş bir
--weights ''
Tartışma:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
yolov5m.yaml
yolov5l.yaml
yolov5x.yaml
Eğitim Ayarları
Herhangi bir değişiklik yapmadan önce, bir performans taban çizgisi oluşturmak için önce varsayılan ayarlarla eğitin. train.py ayarlarının tam listesi train.py argparser'da bulunabilir.
- Çağlar. 300 dönem ile başlayın. Eğer bu erken uyum sağlarsa, epokları azaltabilirsiniz. Aşırı uyum 300 epoktan sonra gerçekleşmezse, daha uzun süre eğitin, yani 600, 1200 vb. epoklar.
- Resim boyutu. COCO şu çözünürlükte eğitim verir
--img 640
Bununla birlikte, veri kümesindeki yüksek miktardaki küçük nesneler nedeniyle, aşağıdaki gibi daha yüksek çözünürlüklerde eğitimden faydalanabilir--img 1280
. Çok sayıda küçük nesne varsa, özel veri kümeleri yerel veya daha yüksek çözünürlükte eğitimden fayda sağlayacaktır. En iyi çıkarım sonuçları aynı çözünürlükte elde edilir--img
eğitimin yürütüldüğü gibi, yani eğer--img 1280
de test etmeli ve tespit etmelisiniz.--img 1280
. - Parti büyüklüğü. En büyüğünü kullanın
--batch-size
donanımınızın izin verdiği kadar. Küçük yığın boyutları zayıf yığın normu istatistikleri üretir ve bundan kaçınılmalıdır. - Hiperparametreler. Varsayılan hiperparametreler hyp.scratch-low.yaml. Herhangi birini değiştirmeyi düşünmeden önce varsayılan hiperparametrelerle eğitim yapmanızı öneririz. Genel olarak, artırma hiperparametrelerinin artırılması aşırı uyumu azaltacak ve geciktirecek, daha uzun eğitimlere ve daha yüksek nihai mAP'ye izin verecektir. Kayıp bileşeni kazanç hiperparametrelerindeki azalma
hyp['obj']
bu belirli kayıp bileşenlerinde aşırı uyumu azaltmaya yardımcı olacaktır. Bu hiperparametreleri optimize etmenin otomatik bir yöntemi için bkz. Hiperparametre Evrimi Eğitimi.
Daha Fazla Okuma
Daha fazla bilgi edinmek isterseniz, Karpathy'nin ' Sinir Ağlarını Eğitmek İçin Reçete' adlı kitabı başlangıç için iyi bir yerdir; bu kitapta tüm makine öğrenimi alanlarında geçerli olan eğitim için harika fikirler vardır: https://karpathy.github.io/2019/04/25/recipe/
İyi şanslar 🍀 ve başka sorularınız olursa bize bildirin!