मैं योलो वी 2 लॉस फंक्शन को समझने की कोशिश कर रहा हूं:
यदि कोई भी व्यक्ति कार्य का विवरण दे सकता है।
मैं योलो वी 2 लॉस फंक्शन को समझने की कोशिश कर रहा हूं:
यदि कोई भी व्यक्ति कार्य का विवरण दे सकता है।
जवाबों:
विभिन्न शब्दों की व्याख्या:
ध्यान दें कि मैंने प्रत्येक bbox भविष्यवाणियों के लिए दो अनुक्रमित और उपयोग किया है , यह लेख में ऐसा नहीं है क्योंकि हमेशा एक कारक होता है या इसलिए कोई अस्पष्ट व्याख्या नहीं है : चुना गया उस सेल में उच्चतम आत्मविश्वास स्कोर के अनुरूप है।
राशि के प्रत्येक शब्द की अधिक सामान्य व्याख्या:
B*(5+C)
? कम से कम YOLO v3 के मामले में।
क्या YOLOv2 लॉस फ़ंक्शन डरावना नहीं लगता है? यह वास्तव में नहीं है! यह सबसे बोल्डेस्ट, स्मार्टेस्ट लॉस फंक्शन में से एक है।
आइए पहले देखें कि नेटवर्क वास्तव में क्या भविष्यवाणी करता है।
यदि हम पुनर्कथन करते हैं, तो YOLOv2 13x13 फीचर मैप पर डिटेक्ट करता है, इसलिए कुल मिलाकर, हमारे पास 169 मैप्स / सेल हैं।
हमारे पास 5 एंकर बॉक्स हैं। प्रत्येक एंकर बॉक्स के लिए हमें एंकर बॉक्स के लिए ऑब्जेक्ट-कॉन्फिडेंस स्कोर (चाहे कोई भी वस्तु मिली हो?), 4 निर्देशांक ( और ) और 20 शीर्ष कक्षाएं चाहिए। यह क्रूडली 20 निर्देशांक, 5 आत्मविश्वास स्कोर, और सभी 5 एंकर बॉक्स भविष्यवाणियों के लिए 100 वर्ग की संभावनाओं के रूप में देखा जा सकता है।
हमारे पास चिंता करने के लिए कुछ चीजें हैं:
वर्गीकरण हानि को छोड़कर सभी नुकसान माध्य-चुकता त्रुटियां हैं, जो क्रॉस-एन्ट्रापी फ़ंक्शन का उपयोग करता है।
अब, इमेज में कोड को ब्रेक करते हैं।
हमें प्रत्येक एंकर बॉक्स के लिए नुकसान की गणना करने की आवश्यकता है (कुल 5)
हमें 13x13 कोशिकाओं में से प्रत्येक के लिए ऐसा करने की आवश्यकता है जहां एस = 12 (क्योंकि हम 0 से सूचकांक शुरू करते हैं)
जब वहाँ सेल में एक वस्तु है 1 है, और 0।
var1 | var2 | (var1 - var2) ^ 2 | (sqrtvar1 - sqrtvar2) ^ 2
0.0300 | आवारा | 9.99e-05 | 0.001
0.0330 | 0.022 | 0.00012 | 0.0011
0.0693 | 0.046 | 0.000533 | .००,२३३
0.2148 | 0.143 | 0.00512 | .००,७२३
0.3030 | 0.202 | 0.01 | 0.01
0.8808 | 0.587 | 0.0862 | 0.0296
4.4920 | 2.994 | 2.2421 | 0.1512
डरावना नहीं है, है ना!
अधिक जानकारी के लिए यहां पढ़ें ।
आपका नुकसान फ़ंक्शन YOLO v1 के लिए है न कि YOLO v2 के लिए। मैं भी दो नुकसान कार्यों में अंतर के साथ उलझन में था और लगता है जैसे कई लोग हैं: https://groups.google.com/forum/## .topic / darknet / TJ4dN9R4iJk
YOLOv2 पेपर YOLOv1 से आर्किटेक्चर के अंतर को निम्नानुसार समझाता है:
हम YOLO (v1) से पूरी तरह से जुड़े परतों को हटाते हैं और बाउंडिंग बॉक्स की भविष्यवाणी करने के लिए एंकर बॉक्स का उपयोग करते हैं ... जब हम एंकर बॉक्स में जाते हैं तो हम स्थानिक स्थान से वर्ग भविष्यवाणी तंत्र को भी कम कर देते हैं और इसके बजाय एंकरबॉक्स के लिए वर्ग और ऑब्जेक्ट का अनुमान लगाते हैं।
मैं YOLOv2 के नुकसान फ़ंक्शन पर एक अनुमान लगाने और यहां चर्चा करने का प्रयास करता हूं: https://fairyonice.github.io/Part_4_Object_Detection_with_Yolo_using_VOC_2012_data_loss.html
यहाँ मेरा स्टडी नोट है
हानि फ़ंक्शन: राशि-चुकता त्रुटि
प्रत्येक आज्ञापालन के लिए केवल एक बाउंडिंग बॉक्स जिम्मेदार होना चाहिए। हम एक भविष्यवक्ता को एक ऐसी वस्तु की भविष्यवाणी करने के लिए जिम्मेदार मानते हैं जिसके आधार पर भविष्यवाणी में जमीनी सच्चाई के साथ उच्चतम वर्तमान IOU है।
ए। बाउंड बॉक्स से नुकसान समन्वय (x, y) ध्यान दें कि नुकसान एक ग्रिड सेल से एक बाउंडिंग बॉक्स से आता है। भले ही जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।
ख। चौड़ाई w और ऊँचाई h से हानि। ध्यान दें कि नुकसान एक ग्रिड सेल से एक बाउंडिंग बॉक्स से आता है, भले ही ऑब्जेक्ट जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।
सी। प्रत्येक बाउंड बॉक्स में आत्मविश्वास से नुकसान। ऐसा नहीं है कि नुकसान एक ग्रिड सीएल से एक बाउंडिंग बॉक्स से आता है, भले ही ऑब्जेक्ट जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।
हानि फ़ंक्शन केवल वर्गीकरण को दंडित करता है यदि ग्रिड सेल में obj मौजूद है। अगर यह बॉक्स ग्राउंड बॉक्स (उच्चतम IOU) के लिए जिम्मेदार है, तो यह बाउंडिंग बॉक्स समन्वय को भी दंडित करता है
आपके द्वारा लिखा गया नुकसान का फॉर्मूला मूल YOLO पेपर लॉस का है, न कि v2, या v3 लॉस का।
संस्करणों के बीच कुछ प्रमुख अंतर हैं। मेरा सुझाव है कि कागजात पढ़ना, या कोड कार्यान्वयन की जांच करना। कागजात: v2 , v3 ।
कुछ प्रमुख अंतर जिन पर मैंने गौर किया:
वर्ग संभावना प्रति बाउंडिंग बॉक्स की गणना की जाती है (इसलिए आउटपुट अब S S (B * 5 + C) के बजाय S ∗ S (B * (5 + C) है।
बाउंडिंग बॉक्स निर्देशांक का अब एक अलग प्रतिनिधित्व है
V3 में वे 3 अलग-अलग "तराजू" में 3 बक्से का उपयोग करते हैं
आप नुक्सान का सही-सही विवरण प्राप्त करने का प्रयास कर सकते हैं, या तो अजगर / केरेस कार्यान्वयन v2 , v3 (फ़ंक्शन yolo_loss के लिए देखें) या सीधे c कार्यान्वयन v3 (delta_yolo_box पर नज़र डालें, और delta_yolo_class देखें)।