सामग्री पर जाएं

सर्वश्रेष्ठ प्रशिक्षण परिणामों के लिए युक्तियाँ

📚 यह मार्गदर्शिका बताती है कि सर्वोत्तम एमएपी और प्रशिक्षण परिणाम कैसे तैयार किए जाएं YOLOv5 🚀.

अधिकांश समय अच्छे परिणाम मॉडल या प्रशिक्षण सेटिंग्स में बिना किसी बदलाव के प्राप्त किए जा सकते हैं, बशर्ते आपका डेटासेट पर्याप्त रूप से बड़ा और अच्छी तरह से लेबल किया गया हो। यदि पहली बार में आपको अच्छे परिणाम नहीं मिलते हैं, तो ऐसे कदम हैं जिन्हें आप सुधारने में सक्षम हो सकते हैं, लेकिन हम हमेशा किसी भी बदलाव पर विचार करने से पहले उपयोगकर्ताओं को सभी डिफ़ॉल्ट सेटिंग्स के साथ पहले प्रशिक्षित करने की सलाह देते हैं। यह सुधार के लिए एक प्रदर्शन आधार रेखा और स्पॉट क्षेत्रों को स्थापित करने में मदद करता है।

यदि आपके पास अपने प्रशिक्षण परिणामों के बारे में प्रश्न हैं हम अनुशंसा करते हैं कि आप अधिकतम संभव जानकारी प्रदान करें यदि आप परिणाम भूखंडों (ट्रेन नुकसान, वैल नुकसान, पी, आर, एमएपी), पीआर वक्र, भ्रम मैट्रिक्स, प्रशिक्षण मोज़ाइक, परीक्षण के परिणाम और डेटासेट आँकड़े छवियों जैसे लेबल.png सहित एक सहायक प्रतिक्रिया की उम्मीद करते हैं। ये सभी आपके में स्थित हैं project/name निर्देशिका, आमतौर पर yolov5/runs/train/exp.

हमने उन उपयोगकर्ताओं के लिए एक पूर्ण मार्गदर्शिका तैयार की है जो अपने पर सर्वोत्तम परिणाम प्राप्त करना चाहते हैं YOLOv5 नीचे प्रशिक्षण।

डेटासेट

  • प्रति वर्ग छवियां। ≥ प्रति वर्ग 1500 छवियों की सिफारिश की
  • प्रति वर्ग उदाहरण। ≥ प्रति वर्ग 10000 उदाहरण (लेबल ऑब्जेक्ट) अनुशंसित
  • छवि विविधता। तैनात पर्यावरण का प्रतिनिधि होना चाहिए। वास्तविक दुनिया के उपयोग के मामलों के लिए हम दिन के अलग-अलग समय, अलग-अलग मौसम, अलग-अलग मौसम, अलग-अलग प्रकाश, अलग-अलग कोण, अलग-अलग स्रोतों (ऑनलाइन स्क्रैप, स्थानीय रूप से एकत्रित, अलग-अलग कैमरे) आदि से छवियों की सलाह देते हैं।
  • लेबल स्थिरता। सभी छवियों में सभी वर्गों के सभी उदाहरणों को लेबल किया जाना चाहिए। आंशिक लेबलिंग काम नहीं करेगी।
  • लेबल सटीकता। लेबल को प्रत्येक ऑब्जेक्ट को बारीकी से घेरना चाहिए। किसी ऑब्जेक्ट और उसके बाउंडिंग बॉक्स के बीच कोई स्थान मौजूद नहीं होना चाहिए। किसी भी ऑब्जेक्ट में लेबल नहीं होना चाहिए।
  • लेबल सत्यापन। देखना train_batch*.jpg ट्रेन पर यह सत्यापित करने के लिए शुरू करें कि आपके लेबल सही दिखाई देते हैं, यानी देखें उदाहरण मोजे़क।
  • पृष्ठभूमि छवियां। पृष्ठभूमि छवियां ऐसी छवियां होती हैं जिनमें कोई ऑब्जेक्ट नहीं होता है जो गलत सकारात्मकता (एफपी) को कम करने के लिए डेटासेट में जोड़े जाते हैं। हम FPs को कम करने में मदद करने के लिए लगभग 0-10% पृष्ठभूमि छवियों की अनुशंसा करते हैं (COCO में संदर्भ के लिए 1000 पृष्ठभूमि छवियां हैं, कुल का 1%)। पृष्ठभूमि छवियों के लिए किसी लेबल की आवश्यकता नहीं है।

कोको विश्लेषण

मॉडल चयन

YOLOv5x और YOLOv5x6 जैसे बड़े मॉडल लगभग सभी मामलों में बेहतर परिणाम देंगे, लेकिन अधिक पैरामीटर हैं, प्रशिक्षित करने के लिए अधिक CUDA मेमोरी की आवश्यकता होती है, और चलाने में धीमे होते हैं। मोबाइल परिनियोजन के लिए हम YOLOv5s/m की अनुशंसा करते हैं, क्लाउड परिनियोजन के लिए हम YOLOv5l/x की अनुशंसा करते हैं। सभी मॉडलों की पूरी तुलना के लिए हमारी README तालिका देखें।

YOLOv5 मॉडल

python train.py --data custom.yaml --weights yolov5s.pt
                                             yolov5m.pt
                                             yolov5l.pt
                                             yolov5x.pt
                                             custom_pretrained.pt
  • स्क्रैच से शुरू करें। बड़े डेटासेट के लिए अनुशंसित (यानी कोको, ऑब्जेक्ट्स365, ओआईवी6). उस मॉडल आर्किटेक्चर YAML को पास करें जिसमें आप रुचि रखते हैं, एक खाली के साथ --weights '' युक्ति:
python train.py --data custom.yaml --weights '' --cfg yolov5s.yaml
                                                      yolov5m.yaml
                                                      yolov5l.yaml
                                                      yolov5x.yaml

प्रशिक्षण सेटिंग्स

कुछ भी संशोधित करने से पहले, प्रदर्शन आधार रेखा स्थापित करने के लिए डिफ़ॉल्ट सेटिंग्स के साथ पहले ट्रेन करें। train.py सेटिंग्स की पूरी सूची train.py आर्गपार्सर में पाई जा सकती है।

  • युग। 300 युगों से शुरू करें। यदि यह जल्दी खत्म हो जाता है तो आप युगों को कम कर सकते हैं। यदि 300 युगों के बाद ओवरफिटिंग नहीं होती है, तो लंबी ट्रेन, यानी 600, 1200 आदि युगों।
  • छवि का आकार। COCO के मूल संकल्प पर गाड़ियों --img 640, हालांकि डेटासेट में छोटी वस्तुओं की उच्च मात्रा के कारण यह उच्च रिज़ॉल्यूशन पर प्रशिक्षण से लाभ उठा सकता है जैसे कि --img 1280. यदि कई छोटी वस्तुएं हैं तो कस्टम डेटासेट देशी या उच्च रिज़ॉल्यूशन पर प्रशिक्षण से लाभान्वित होंगे। सर्वोत्तम अनुमान परिणाम एक ही समय में प्राप्त किए जाते हैं --img जैसा कि प्रशिक्षण पर चलाया गया था, यानी यदि आप पर प्रशिक्षण लेते हैं --img 1280 आपको परीक्षण और पता लगाना भी चाहिए --img 1280.
  • बैच का आकार। सबसे बड़े का उपयोग करें --batch-size कि आपका हार्डवेयर अनुमति देता है। छोटे बैच आकार खराब बैचनॉर्म आँकड़े उत्पन्न करते हैं और इससे बचा जाना चाहिए।
  • हाइपरपैरामीटर। डिफ़ॉल्ट हाइपरपैरामीटर में हैं hyp.scratch-low.yaml. हम अनुशंसा करते हैं कि आप किसी को संशोधित करने के बारे में सोचने से पहले डिफ़ॉल्ट हाइपरपैरामीटर के साथ प्रशिक्षित करें। सामान्य तौर पर, वृद्धि हाइपरपैरामीटर ओवरफिटिंग को कम और देरी करेंगे, जिससे लंबे समय तक प्रशिक्षण और उच्च अंतिम एमएपी की अनुमति मिलेगी। हानि घटक में कमी जैसे हाइपरपैरामीटर प्राप्त करती है hyp['obj'] उन विशिष्ट हानि घटकों में ओवरफिटिंग को कम करने में मदद करेगा। इन हाइपरपैरामीटर को अनुकूलित करने की एक स्वचालित विधि के लिए, हमारे देखें हाइपरपरमीटर इवोल्यूशन ट्यूटोरियल.

अग्रिम पठन

यदि आप अधिक जानना चाहते हैं, तो शुरू करने के लिए एक अच्छी जगह कारपाथी की 'प्रशिक्षण तंत्रिका नेटवर्क के लिए पकाने की विधि' है, जिसमें प्रशिक्षण के लिए महान विचार हैं जो सभी एमएल डोमेन में व्यापक रूप से लागू होते हैं: https://karpathy.github.io/2019/04/25/recipe/

शुभकामनाएँ 🍀 और यदि आपके कोई अन्य प्रश्न हैं तो हमें बताएं!



2023-11-12 बनाया गया, अपडेट किया गया 2024-01-12
लेखक: ग्लेन-जोचर (3)

टिप्पणियाँ