En İyi YOLOv5 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
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ş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
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 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 ölçüde. Küçük parti boyutları zayıf üretir toplu normalleştirme istatistikler ve kaçınılmalıdır. Kullanabileceğiniz--batch-size -1
GPU'nuz için en uygun parti boyutunu otomatik olarak seçmek için. - Öğrenme oranı. Varsayılan öğrenme hızı programı çoğu durumda iyi çalışır. Daha hızlı yakınsama için şunları kullanmayı deneyebilirsiniz
--cos-lr
bayrağı, epoklar boyunca bir kosinüs eğrisini takip ederek öğrenme oranını kademeli olarak azaltan kosinüs öğrenme oranı zamanlamasını etkinleştirmek için kullanılır. - Veri artırımı. YOLOv5 , birden fazla eğitim görüntüsünü birleştiren mozaik gibi çeşitli büyütme teknikleri içerir. Son birkaç epok için şunları kullanmayı düşünün
--close-mosaic 10
eğitimi stabilize etmeye yardımcı olabilecek mozaik büyütmeyi devre dışı bırakmak için. - 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. - Karışık hassas eğitim. ile karma hassas eğitimi etkinleştirin
--amp
Model doğruluğundan ödün vermeden eğitimi hızlandırmak ve bellek kullanımını azaltmak için. - Çoklu GPU eğitimi. Birden fazla GPU'nuz varsa
--device 0,1,2,3
eğitim süresini önemli ölçüde azaltabilecek şekilde dağıtmak. - Erken durma. Kullanım
--patience 50
doğrulama metrikleri 50 epok boyunca iyileşmezse eğitimi durdurmak için zaman kazandırır ve aşırı uyumu önler.
İleri Optimizasyon Teknikleri
- Transfer öğrenimi. Özel veri kümeleri için, önceden eğitilmiş ağırlıklarla başlayın ve modeli özel görevinize uyarlamak için eğitim sırasında katmanları kademeli olarak çözün.
- Model budama. Eğitimden sonra, gereksiz ağırlıkları kaldırmak ve önemli bir performans kaybı olmadan model boyutunu azaltmak için modelinizi budamayı düşünün.
- Model topluluğu. Kritik uygulamalar için, farklı konfigürasyonlara sahip birden fazla modeli eğitin ve gelişmiş doğruluk için tahminlerini birleştirin.
- Test süresi artırımı. ile çıkarım sırasında TTA'yı etkinleştirin
--augment
Giriş görüntüsünün artırılmış sürümlerinden elde edilen sonuçların ortalamasını alarak tahmin doğruluğunu artırmak için.
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/
Eğitim ayarları ve yapılandırmaları hakkında daha ayrıntılı bilgi için, mevcut tüm parametrelerin kapsamlı açıklamalarını sağlayan Ultralytics eğitim ayarları belgelerine bakın.
İyi şanslar 🍀 ve başka sorularınız olursa bize bildirin!
SSS
Modelimin aşırı uyum sağlayıp sağlamadığını nasıl anlarım?
Doğrulama kaybı artmaya başlarken eğitim kaybı azalmaya devam ederse modeliniz aşırı uyum sağlıyor olabilir. Doğrulama mAP'sini izleyin - eğitim kaybı iyileşmeye devam ederken plato haline gelir veya azalırsa, bu aşırı uyumun bir işaretidir. Çözümler arasında daha fazla eğitim verisi eklemek, veri artırımını artırmak veya düzenlileştirme tekniklerini uygulamak yer alır.
YOLOv5 eğitimi için en uygun parti büyüklüğü nedir?
Optimum yığın boyutu GPU belleğinize bağlıdır. Daha büyük yığın boyutları genellikle daha iyi yığın normalleştirme istatistikleri ve eğitim kararlılığı sağlar. Bellek tükenmeden donanımınızın kaldırabileceği en büyük toplu iş boyutunu kullanın. Kullanabileceğiniz --batch-size -1
kurulumunuz için en uygun parti boyutunu otomatik olarak belirlemek için.
YOLOv5 eğitimini nasıl hızlandırabilirim?
Eğitimi hızlandırmak için şunları deneyin: karma hassas eğitimi etkinleştirerek --amp
ile birden fazla GPU kullanarak --device 0,1,2,3
ile veri kümenizi önbelleğe alın --cache
ve parti boyutunuzu optimize edin. Mutlak doğruluk kritik değilse YOLOv5s gibi daha küçük bir model varyantı kullanmayı da düşünün.