क्यों गहरी छवि सीखने में वर्तमान छवि के बजाय डेटासेट की छवि को घटाकर छवियों को सामान्य किया जाता है?


88

छवियों को सामान्य करने के कुछ तरीके हैं, लेकिन अधिकांश इन दो तरीकों का उपयोग करते हैं:

  1. सभी छवियों पर गणना किए गए चैनल प्रति माध्य घटाएं (जैसे VGG_ILSVRC_16_layers )
  2. सभी छवियों पर गणना की गई पिक्सेल / चैनल द्वारा घटाव (जैसे CNN_S , कैफ का संदर्भ नेटवर्क भी देखें )

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

पियरे सेरमेट ने 3.3.3 में कहा है कि स्थानीय कंट्रास्ट सामान्यीकरण जो प्रति-छवि आधारित होगा, लेकिन मैंने इसे किसी भी उदाहरण / ट्यूटोरियल में नहीं देखा है जो मैंने देखा है। मैंने एक दिलचस्प Quora प्रश्न और शी-शेन वी के पद को भी देखा है, लेकिन वे ऊपर दिए गए दोनों दृष्टिकोणों का समर्थन नहीं करते।

मैं वास्तव में क्या याद कर रहा हूँ? क्या यह एक रंग सामान्यीकरण का मुद्दा है या क्या कोई ऐसा पेपर है जो वास्तव में समझाता है कि इतने सारे लोग इस दृष्टिकोण का उपयोग क्यों करते हैं?


मुझे उत्तर नहीं पता है, लेकिन क्या आपने प्रत्येक विधि की कोशिश की है? क्या उनके प्रदर्शन में कोई अंतर है?
user112758

@ user112758 - उन्हें लागू करना थोड़ा दर्दनाक है (विशेष रूप से बाय-पिक्सेल के लिए) और मेरा अनुभव है कि प्रति छवि सामान्य करना ठीक काम करता है लेकिन मेरा डेटा उस प्रतिनिधि नहीं है। मैं सामान्यीकरण के साथ प्रयोग करने की कोशिश करूँगा लेकिन मुझे इन सामान्य (मेरे दिमाग में) अजीब सामान्यीकरण प्रक्रियाओं के पीछे की प्रेरणा सुनने की उत्सुकता है।
मैक्स गॉर्डन

ठीक है, शायद आप इसे कैफ Google समूह कैफ गीथहब मुद्दों में पूछ सकते हैं। मुझे लगता है कि इस विषय पर अधिक विशेषज्ञ होंगे।
user112758

जवाबों:


58

डेटासेट को घटाना मतलब डेटा को "केंद्र" करना है। इसके अतिरिक्त, आप आदर्श रूप से उस सुविधा या पिक्सेल के स्टीवर्ड द्वारा विभाजित करना चाहते हैं, साथ ही यदि आप प्रत्येक सुविधा मान को z- स्कोर पर सामान्य करना चाहते हैं।

उन दोनों कामों को करने का कारण यह है क्योंकि हमारे नेटवर्क को प्रशिक्षित करने की प्रक्रिया में, हम इन प्रारंभिक आदानों को गुणा (वेट) और इन प्रारंभिक आदानों को जोड़ने जा रहे हैं ताकि सक्रियता पैदा हो सके ताकि हम फिर से ग्रेडिएटर्स के साथ बैकप्रोपोगेट करें। मॉडल को प्रशिक्षित करें।

हम इस प्रक्रिया में प्रत्येक सुविधा के लिए एक समान श्रेणी चाहते हैं ताकि हमारे ग्रेडिएंट नियंत्रण से बाहर न हों (और हमें केवल एक वैश्विक सीखने की दर गुणक की आवश्यकता है)।

एक और तरीका है जिसके बारे में आप सोच सकते हैं कि यह डीप लर्निंग नेटवर्क है जो परंपरागत रूप से कई मापदंडों को साझा करता है - यदि आपने अपने इनपुट को इस तरह से स्केल नहीं किया है जिसके परिणामस्वरूप समान रूप से-राउंडेड फीचर वैल्यू (यानी: संपूर्ण डेटा ओवर को घटाना मतलब) साझा करना नहीं होगा बहुत आसानी से हो सकता है क्योंकि छवि के एक हिस्से का वजन wबहुत अधिक है और दूसरे के लिए यह बहुत छोटा है।

आप कुछ सीएनएन मॉडल में देखेंगे कि प्रति-छवि व्हाइटनिंग का उपयोग किया जाता है, जो आपकी सोच की रेखाओं के साथ अधिक है।


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

यदि आप स्वीकार करते हैं कि बैच सामान्यीकरण अच्छा है, तो आप पहले से ही वहां हैं। जब आप बैच को सामान्य करते हैं तो एकमात्र कारण यह होता है कि आप मेमोरी में पूर्ण डेटासेट फिट नहीं कर सकते हैं या आप प्रशिक्षण वितरित कर रहे हैं (अक्सर एक ही मुद्दा)। इसलिए हमारे पास बैच हैं।
लॉलेरकोस्टर

मैंने सोचा था कि बैच भी स्टोकेस्टिक क्रमिक वंश के लिए नींव हैं। यहां तक ​​कि अगर मैं स्मृति में सब कुछ फिट कर सकता हूं, तो मैं प्रत्येक युग के बाद मापदंडों को अधिक बार अपडेट करना चाहता हूं।
मैक्स गॉर्डन

3
वो हैं। और आप चाहे जितनी बार चाहें अपडेट कर सकते हैं - विश्लेषणात्मक निहितार्थ समान हैं जो धीरे-धीरे वंश के बारे में बहुत अच्छा और मापनीय है। कारण यह है कि हम स्टोकेस्टिक ग्रेडिएंट डिसेंट का उपयोग करते हैं (इनपुट इनपुट ऑर्डर + बैचिंग) ग्रेडिएंट स्पेस के माध्यम से हमारी पहाड़ी चढ़ाई को सुचारू करना है। एक बिंदु को देखते हुए हम वास्तव में सुनिश्चित नहीं हो सकते हैं कि हमारा अपडेट हमें स्थानीय मैक्सिमा की दिशा में धकेल देगा, हालांकि यदि आप पर्याप्त अंक चुनते हैं, तो यह संभावना अधिक हो जाती है (उम्मीद में)।
लॉरेंकोस्टर

2
यह कैसे एक समान श्रेणी में सुविधाएँ प्राप्त करने में मदद करता है? अगर मेरी दो छवियां हैं, तो 0 से 255 तक की एक और पिक्सेल मानों में 0 से 50 तक की है, जो कि 50 और 15 की औसत के साथ है। नॉर्मलाइज़िंग से मुझे इमेज 1 से -3.3 से 13.6 तक और इमेज 2 से लेकर -3.3 से 0. वे अभी भी एक ही पैमाने पर नहीं हैं।
डैनियल

9

बैच सामान्य होने से पहले, प्रत्येक चैनल (R, G, B) के लिए शून्य माध्य के आसपास डेटा को केन्द्रित करने के लिए प्रति चैनल घटाव का उपयोग किया जाता था। यह आमतौर पर नेटवर्क को तेजी से सीखने में मदद करता है क्योंकि ग्रेडिएंट प्रत्येक चैनल के लिए समान रूप से कार्य करता है। मुझे संदेह है कि यदि आप बैच सामान्यीकरण का उपयोग करते हैं, तो प्रति चैनल का अर्थ है घटाव पूर्व-प्रसंस्करण कदम वास्तव में आवश्यक नहीं है क्योंकि आप प्रति मिनी-बैच को सामान्य कर रहे हैं।


1
"मुझे संदेह है कि यदि आप बैच सामान्यीकरण का उपयोग करते हैं, तो प्रति चैनल का अर्थ है घटाव पूर्व-प्रसंस्करण कदम वास्तव में आवश्यक नहीं है क्योंकि आप प्रति मिनी-बैच को सामान्य कर रहे हैं।" लेकिन बैच मानदंड से तात्पर्य आपके नेटवर्क की परतों में भार को सामान्य करने से है ... वास्तविक इनपुट छवियों से नहीं। ये 2 अलग-अलग चीजें हैं।
मोनिका हेडडेक

4

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


4

इसे उपयोग करने से पहले डेटा का प्रीप्रोसेसिंग कहा जाता है। आप कई तरीकों से प्रक्रिया कर सकते हैं, लेकिन एक शर्त है कि आपको प्रत्येक डेटा को समान फ़ंक्शन X_preproc = f (X) के साथ संसाधित करना चाहिए और यह f (।) स्वयं डेटा पर निर्भर नहीं होना चाहिए, इसलिए यदि आप वर्तमान छवि का उपयोग करते हैं तो इसे संसाधित करने का मतलब है वर्तमान छवि तब आपका f (X) वास्तव में f (X, छवि) होगा और आप ऐसा नहीं चाहते हैं।

आप जिस छवि के विपरीत सामान्यीकरण की बात कर रहे थे, वह एक अलग उद्देश्य के लिए है। छवि विपरीत सामान्यीकरण सुविधा में मदद करेगा।

लेकिन ऊपर f (।) सभी विशेषताओं को एक-दूसरे के बराबर रखने से अनुकूलन पर मदद करेगा (लगभग-लगभग)

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