योलो हानि फ़ंक्शन स्पष्टीकरण


16

मैं योलो वी 2 लॉस फंक्शन को समझने की कोशिश कर रहा हूं:

λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]+λcoordi=0S2j=0B1ijobj[(wiw^i)2+(hih^i)2]+i=0S2j=0B1ijobj(CiC^i)2+λnoobji=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobjcclasses(pi(c)p^i(c))2

यदि कोई भी व्यक्ति कार्य का विवरण दे सकता है।


5
कोई भी आपको संदर्भ के बिना मदद नहीं कर सकता है ... कम से कम हमें बताएं कि यह किस कागज से है।
बोदोनोविक

1
"मुझे समझ नहीं आया" और "फ़ंक्शन का विस्तार करें" अत्यधिक व्यापक हैं। कृपया विशेष प्रश्नों की पहचान करने का प्रयास करें। ध्यान दें कि पहले से ही योलो से संबंधित कई प्रश्न हैं , जिनमें से कुछ आप जो चाहते हैं उसके कम से कम भाग के साथ आपको प्रदान कर सकते हैं
Glen_b -Reinstate Monica

1
यदि आप इस उत्कृष्ट स्पष्टीकरण से स्पष्ट नहीं हैं, तो मैं अपना उत्तर जोड़ूंगा
अक्कल ११

1
इस ब्लॉग में यहाँ पर योलो और योलोव 2 की विस्तृत ग्राफिक व्याख्या है। यह नुकसान फ़ंक्शन के संबंध में प्रश्न का उत्तर देता है। यदि यह भिखारियों और अधिक उन्नत उपयोगकर्ताओं के लिए बहुत उपयोगी है।
MBoaretto

जवाबों:


18

विभिन्न शब्दों की व्याख्या:

  • 3 स्थिरांकों की हानि समारोह के एक और पहलू को ध्यान में रखने के लिए बस स्थिरांक हैं। पहले शब्द में अधिक महत्व रखने के लिए लेख में सर्वोच्च हैλ सी आर डीλλcoord
  • YOLO की भविष्यवाणी एक वेक्टर है: प्रत्येक ग्रिड सेल के लिए bbox की भविष्यवाणी और प्रत्येक ग्रिड सेल के लिए क्लास की भविष्यवाणी (जहाँ कक्षाओं की संख्या है)। सेल I के बॉक्स j के 5 bbox आउटपुट bbox x_ , ऊँचाई , चौड़ाई और एक विश्वास सूचकांकबी सी सी x मैं जे वाई मैं जे एच मैं जे डब्ल्यू मैं जे सी मैं jSS(B5+C)BCCxij yijhijwijCij
  • मुझे लगता है कि एक टोपी के साथ मान लेबल से पढ़े जाने वाले असली हैं और एक टोपी के बिना भविष्यवाणी वाले हैं। तो प्रत्येक bbox लिए विश्वास स्कोर के लिए लेबल से वास्तविक मूल्य क्या है ? यह लेबल से एक के साथ अनुमानित बाउंडिंग बॉक्स के संघ पर चौराहा है।C^ij
  • आई1iobj है जब वहाँ सेल में एक वस्तु है और अन्यत्र1i0
  • ji1ij 1 n o o b j i j i1ijobj "अर्थ है कि सेल में बॉक्स भविष्यवक्ता बाउंडिंग वें उस पूर्वानुमान के लिए जिम्मेदार है।" दूसरे शब्दों में, यह बराबर है यदि सेल में कोई ऑब्जेक्ट है और इस सेल के वें भविष्यवक्ताओं का विश्वास इस सेल के सभी भविष्यवाणियों में सबसे अधिक है। लगभग समान है सिवाय इसके कि यह मान 1 है जब सेल में कोई वस्तु नहीं हैji1ij1ijnoobji

ध्यान दें कि मैंने प्रत्येक bbox भविष्यवाणियों के लिए दो अनुक्रमित और उपयोग किया है , यह लेख में ऐसा नहीं है क्योंकि हमेशा एक कारक होता है या इसलिए कोई अस्पष्ट व्याख्या नहीं है : चुना गया उस सेल में उच्चतम आत्मविश्वास स्कोर के अनुरूप है।ij1ijobj1ijnoobjj

राशि के प्रत्येक शब्द की अधिक सामान्य व्याख्या:

  1. यह शब्द कोशिकाओं के केंद्र के खराब स्थानीयकरण को दंडित करता है
  2. यह शब्द गलत ऊंचाई और चौड़ाई के साथ बाउंडिंग बॉक्स को दंडित करता है। वर्गमूल मौजूद है ताकि छोटे बाउंडिंग बॉक्स में एरर्स बड़े बाउंडिंग बॉक्स में त्रुटियों की तुलना में अधिक दंडात्मक हो।
  3. यह शब्द ऑब्जेक्ट के बीच IOU के बराबर आत्मविश्वास स्कोर बनाने की कोशिश करता है और एक वस्तु होने पर भविष्यवाणी होती है
  4. सेल में कोई वस्तु नहीं होने पर आत्मविश्वास स्कोर को करीब लाने की कोशिश करता है0
  5. यह एक सरल वर्गीकरण नुकसान है (लेख में नहीं समझाया गया है)

1
क्या दूसरा बिंदु माना जाता है B*(5+C)? कम से कम YOLO v3 के मामले में।
साचिन्रुक

@sachinruk यह मूल YOLO के बीच मॉडल में परिवर्तन को दर्शाता है और यह v2 और v3 है।
डेविड रिफ़ेली

12

λसीआरΣमैं=0एस2Σजे=0बी1मैंजेजे[(एक्समैं-एक्स^मैं)2+(yमैं-y^मैं)2]+λसीआरΣमैं=0एस2Σजे=0बी1मैंजेजे[(wमैं-w^मैं)2+(मैं-^मैं)2]+Σमैं=0एस2Σजे=0बी1मैंजेजे(सीमैं-सी^मैं)2+λnजेΣमैं=0एस2Σजे=0बी1मैंजेnजे(सीमैं-सी^मैं)2+Σमैं=0एस21मैंजेΣसीसीएलरोंरोंरों(पीमैं(सी)-पी^मैं(सी))2

क्या YOLOv2 लॉस फ़ंक्शन डरावना नहीं लगता है? यह वास्तव में नहीं है! यह सबसे बोल्डेस्ट, स्मार्टेस्ट लॉस फंक्शन में से एक है।

आइए पहले देखें कि नेटवर्क वास्तव में क्या भविष्यवाणी करता है।

यदि हम पुनर्कथन करते हैं, तो YOLOv2 13x13 फीचर मैप पर डिटेक्ट करता है, इसलिए कुल मिलाकर, हमारे पास 169 मैप्स / सेल हैं।

हमारे पास 5 एंकर बॉक्स हैं। प्रत्येक एंकर बॉक्स के लिए हमें एंकर बॉक्स के लिए ऑब्जेक्ट-कॉन्फिडेंस स्कोर (चाहे कोई भी वस्तु मिली हो?), 4 निर्देशांक ( टीएक्स,टीy,टीw, और टी ) और 20 शीर्ष कक्षाएं चाहिए। यह क्रूडली 20 निर्देशांक, 5 आत्मविश्वास स्कोर, और सभी 5 एंकर बॉक्स भविष्यवाणियों के लिए 100 वर्ग की संभावनाओं के रूप में देखा जा सकता है।

हमारे पास चिंता करने के लिए कुछ चीजें हैं:

  • एक्समैं,yमैं , जो लंगर बॉक्स के केंद्रक का स्थान है
  • wमैं,मैं , जो कि एंकर बॉक्स की चौड़ाई और ऊंचाई है
  • सीमैं , जो किऑब्जेक्शन है, यानी किसी वस्तु या वस्तु का आत्मविश्वास स्कोर है और नहीं
  • पीमैं(सी) , जो कि वर्गीकरण नुकसान है।
  • हमें किसी ऑब्जेक्ट का पता लगाने के लिए न केवल नेटवर्क को प्रशिक्षित करने की आवश्यकता है अगर किसी सेल में कोई ऑब्जेक्ट है, तो हमें नेटवर्क को दंडित करने की भी आवश्यकता है, अगर किसी सेल में ऑब्जेक्ट की भविष्यवाणी करता है, जब कोई भी नहीं था। हम इसे कैसे करते हैं? (हम एक मुखौटा का उपयोग 𝟙मैंजे और 𝟙मैंnजे ) प्रत्येक कोशिका के लिए। तो मूल रूप से वहाँ एक वस्तु थी 𝟙मैंजे है 1 और अन्य कोई वस्तु कोशिकाएं होती हैं 0. 𝟙मैंnजे का सिर्फ उल्टा होता है 𝟙मैंजे, जहां यह 1 है अगर सेल में कोई ऑब्जेक्ट नहीं था और अगर वहाँ था तो 0।
  • हम सभी 169 कोशिकाओं के लिए ऐसा करने की जरूरत है, और
  • हमें इसे 5 बार करने की आवश्यकता है (प्रत्येक एंकर बॉक्स के लिए)।

वर्गीकरण हानि को छोड़कर सभी नुकसान माध्य-चुकता त्रुटियां हैं, जो क्रॉस-एन्ट्रापी फ़ंक्शन का उपयोग करता है।

अब, इमेज में कोड को ब्रेक करते हैं।

  • हमें प्रत्येक एंकर बॉक्स के लिए नुकसान की गणना करने की आवश्यकता है (कुल 5)

    • Σजे=0बी इस भाग को दर्शाता है, जहाँ B = 4 (5 - 1, क्योंकि सूचकांक 0 से शुरू होता है)
  • हमें 13x13 कोशिकाओं में से प्रत्येक के लिए ऐसा करने की आवश्यकता है जहां एस = 12 (क्योंकि हम 0 से सूचकांक शुरू करते हैं)

    • Σमैं=0एस2 इस भाग को दर्शाता है।
  • 𝟙मैंजेजे जब वहाँ सेल में एक वस्तु है 1 हैमैं, और 0।

  • 𝟙मैंजेnजे 1 है जब कोशिकामैंमें कोई वस्तु नहीं है, तो 0।
  • 𝟙मैंजे 1 तब होता है जब किसी विशेष वर्ग की भविष्यवाणी की जाती है, और 0।
  • λ स्थिर हैं। λ का पता लगाने पर अधिक ध्यान केंद्रित करने के लिए निर्देशांक के लिए उच्चतम है (याद रखें, YOLOv2 में, हम पहले इसे मान्यता के लिए प्रशिक्षित करते हैं और फिर पहचान के लिए, मान्यता के लिए भारी दंड देना समय की बर्बादी है, बल्कि हम सर्वश्रेष्ठ बाउंडिंग बॉक्स प्राप्त करने पर ध्यान केंद्रित करते हैं!)
  • हम यह भी देख सकते हैं कि wमैं,मैं वर्ग-रूट के अंतर्गत है। यह छोटे बाउंडिंग बॉक्स को दंडित करने के लिए किया जाता है क्योंकि हमें बड़ी वस्तुओं (लेखक की कॉल) की तुलना में छोटी वस्तुओं पर बेहतर पूर्वानुमान की आवश्यकता होती है। नीचे दी गई सारणी देखें और देखें कि "वर्गमूल" विधि का अनुसरण करने पर छोटे मान कैसे अधिक सजा दिए जाते हैं (विभक्ति बिंदु पर देखें जब हमारे पास इनपुट मान के रूप में 0.3 और 0.2 है) (PS: मैंने var1 के अनुपात को रखा है। और var2 केवल स्पष्टीकरण के लिए):

        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

डरावना नहीं है, है ना!

अधिक जानकारी के लिए यहां पढ़ें ।


1
क्या मुझे 0 के बजाय 1 से j और योग शुरू करना चाहिए?
webbertiger

1
हां, यह सही है कि वेबर्टिगर, तदनुसार उत्तर को अपडेट कर चुके हैं। धन्यवाद!
आरशरवन

Isant 1 जब बाउंडिंग बॉक्स j के सेल i में कोई ऑब्जेक्ट होता है? और सभी जम्मू के लिए नहीं? हम कैसे चुनते हैं जो एक को सेट करें और बाकी को शून्य पर। यानी सही पैमाना / एंकर क्या है जहां इसे चालू किया जाता है। 1मैंजेजे
साचिन्रुक

1
मेरा मानना ​​है कि S अभी भी 13 वर्ष का होना चाहिए लेकिन यदि योग 0 में शुरू होता है तो इसे में समाप्त होना चाहिएएस2-1
जूलियन

3
@ श्रवण, आप कहते हैं: "सभी नुकसान मतलब-चुकता त्रुटियां हैं, वर्गीकरण नुकसान को छोड़कर, जो क्रॉस-एन्ट्रापी फ़ंक्शन का उपयोग करता है"। क्या आप समझाएँगे? इस समीकरण में, यह एमएसई के रूप में भी दिखता है। अग्रिम धन्यवाद
जूलियन

3

आपका नुकसान फ़ंक्शन 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


1

यहाँ मेरा स्टडी नोट है

  1. हानि फ़ंक्शन: राशि-चुकता त्रुटि

    λसीआर=5
    λnजे

  2. प्रत्येक आज्ञापालन के लिए केवल एक बाउंडिंग बॉक्स जिम्मेदार होना चाहिए। हम एक भविष्यवक्ता को एक ऐसी वस्तु की भविष्यवाणी करने के लिए जिम्मेदार मानते हैं जिसके आधार पर भविष्यवाणी में जमीनी सच्चाई के साथ उच्चतम वर्तमान IOU है।

ए। बाउंड बॉक्स से नुकसान समन्वय (x, y) ध्यान दें कि नुकसान एक ग्रिड सेल से एक बाउंडिंग बॉक्स से आता है। भले ही जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।

{λसीआरΣमैं=0एस2[(एक्समैं-एक्स^मैं)2+(yमैं-yमैं^)2]जिम्मेदार बाउंडिंग बॉक्स0 अन्य

ख। चौड़ाई w और ऊँचाई h से हानि। ध्यान दें कि नुकसान एक ग्रिड सेल से एक बाउंडिंग बॉक्स से आता है, भले ही ऑब्जेक्ट जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।

{λसीआरΣमैं=0एस2[(wमैं-w^मैं)2+(मैं-^मैं)2]जिम्मेदार बाउंडिंग बॉक्स0 अन्य

सी। प्रत्येक बाउंड बॉक्स में आत्मविश्वास से नुकसान। ऐसा नहीं है कि नुकसान एक ग्रिड सीएल से एक बाउंडिंग बॉक्स से आता है, भले ही ऑब्जेक्ट जमीनी सच्चाई के रूप में ग्रिड सेल में न हो।

{Σमैं=0एस2(सीमैं-सी^मैं)2ग्रिड सेल और जिम्मेदार बाउंडिंग बॉक्स में objλnजेΣमैं=0एस2(सीमैं-सी^मैं)2obj ग्रिड सेल और जिम्मेदार बाउंडिंग बॉक्स में नहीं0अन्य

{Σमैं=0एस2Σसीसीएलरोंरोंरों(पीमैं(सी)-पी^मैं(सी))2ग्रिड सेल में obj0अन्य

हानि फ़ंक्शन केवल वर्गीकरण को दंडित करता है यदि ग्रिड सेल में obj मौजूद है। अगर यह बॉक्स ग्राउंड बॉक्स (उच्चतम IOU) के लिए जिम्मेदार है, तो यह बाउंडिंग बॉक्स समन्वय को भी दंडित करता है


कागज में 'सी' के बारे में प्रश्न, आत्मविश्वास IOU द्वारा गुणा की गई वस्तु-या-कोई वस्तु मूल्य नहीं है; क्या यह केवल परीक्षण के समय के लिए है या इसका उपयोग प्रशिक्षण लागत समारोह के लिए भी किया जाता है? मुझे लगा कि हम आउटपुट और लेबल से सिर्फ C मान घटाते हैं (जैसे हमने ग्रिड मानों के साथ किया था), लेकिन यह गलत है?
मूंदड़ा

0

आपके द्वारा लिखा गया नुकसान का फॉर्मूला मूल 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 देखें)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.