तंत्रिका नेटवर्क का उपयोग कर छवियों का स्टाइलकरण: कोई रहस्यवाद, बस मटान। ओस्टाग्राम: कल-आधारित सेवा, कलात्मक उत्कृष्ट कृतियों में फोटो और गहने का संयोजन न्यूरालेट चित्र खींचता है

तंत्रिका नेटवर्क का उपयोग कर छवियों का स्टाइलकरण: कोई रहस्यवाद, बस मटान। ओस्टाग्राम: कल-आधारित सेवा, कलात्मक उत्कृष्ट कृतियों में फोटो और गहने का संयोजन न्यूरालेट चित्र खींचता है
तंत्रिका नेटवर्क का उपयोग कर छवियों का स्टाइलकरण: कोई रहस्यवाद, बस मटान। ओस्टाग्राम: कल-आधारित सेवा, कलात्मक उत्कृष्ट कृतियों में फोटो और गहने का संयोजन न्यूरालेट चित्र खींचता है

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

यह लगभग होता है: एल्गोरिदम तस्वीरों का विश्लेषण करता है, उन टुकड़ों को ढूंढता है जो उसे किसी भी परिचित वस्तुओं को याद दिलाता है - और छवि को इन डेटा के अनुसार विकृत करता है।

सबसे पहले, परियोजना को एक खुले कोड के रूप में पोस्ट किया गया था, और फिर इंटरनेट पर बनाई गई ऑनलाइन सेवाएं, उसी सिद्धांत पर बनाई गई थीं। सबसे सुविधाजनक और सबसे लोकप्रिय में से एक गहरी सपना जनरेटर है: यहां एक छोटी फोटो प्रोसेसिंग में केवल 15 सेकंड लगते हैं (इससे पहले के उपयोगकर्ताओं को एक घंटे से अधिक इंतजार करना पड़ता था)।

ऐसी छवियों को बनाने के लिए तंत्रिका नेटवर्क कैसे सीखते हैं? और क्यों, वैसे, क्या उन्हें कहा जाता है?

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

शतरंज खेलने के लिए एल्गोरिदम, उदाहरण के लिए, शतरंज के खेल का विश्लेषण करें। चीनी गेम में Google डीपमिंड से एक ही एल्गोरिदम अल्फागो - जिसे एक सफलता के रूप में माना जाता था, क्योंकि यह बहुत मुश्किल है और शतरंज से अधिक इसके लायक है।

    तंत्रिका नेटवर्क के सरलीकृत मॉडल के साथ खेलना और इसके सिद्धांतों को समझना बेहतर है।

    YouTube में व्यक्तिगत हाथ से एक श्रृंखला भी है रोलर्स कितने तंत्रिका नेटवर्क काम करते हैं।

एक और लोकप्रिय सेवा ड्रीमस्कोप है, जो न केवल कुत्तों का सपना देख सकती है, बल्कि विभिन्न सुरम्य शैलियों की नकल भी कर सकती है। यहां छवि प्रसंस्करण भी बहुत सरल और जल्दी (लगभग 30 सेकंड) होता है।

जाहिर है, सेवा का एल्गोरिदमिक हिस्सा तंत्रिका शैली कार्यक्रम का एक संशोधन है, जिसे हम पहले से ही कर रहे हैं।

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

इसके अलावा, यहां रंग केवल 1 मिनट लगता है।

वही विकास कंपनी ने एक ऐसी सेवा भी लॉन्च की जो चित्रों में विभिन्न प्रकार की वस्तुओं को पहचानती है।

ये सेवाएं सिर्फ मजाकिया मनोरंजन लग सकती हैं, लेकिन वास्तव में सबकुछ अधिक दिलचस्प है। लोगों के कलाकारों के अभ्यास में नई प्रौद्योगिकियों को शामिल किया गया है और कला के बारे में हमारे विचारों को बदल दिया गया है। शायद, जल्द ही लोगों को कारों और रचनात्मकता के क्षेत्र में प्रतिस्पर्धा करना होगा।

छवियों को पहचानने के लिए एल्गोरिदम सिखाएं - वह कार्य जिस पर कृत्रिम बुद्धि के डेवलपर्स लंबे समय से लड़ रहे हैं। इसलिए, कुत्तों के आकाश में पुरानी तस्वीरों को खींचे जाने वाले कार्यक्रमों को एक बड़ी और मनोरंजक प्रक्रिया का हिस्सा माना जा सकता है।

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


अभ्यर्थी नेटवर्क को देखना और समझना (28 नवंबर 2013)

सबसे पहले, लेखकों का उल्लेख करने के लायक है जिसमें लेखकों यह दिखाने में सक्षम थे कि तंत्रिका नेटवर्क एक काला बॉक्स नहीं है, लेकिन काफी व्याख्या योग्य चीज (वैसे, आज ही इसे न केवल कंप्यूटर के लिए संक्रामक नेटवर्क के बारे में कहा जा सकता है दृष्टि)। लेखकों ने सीखने का फैसला किया कि छिपी हुई परतों के न्यूरॉन्स की सक्रियता की व्याख्या कैसे करें, इसके लिए उन्होंने कई साल पहले प्रस्तावित deconvolutorary तंत्रिका नेटवर्क (deconvnet) का उपयोग किया था (वैसे, एक ही ज़ाइलर और फर्गस, जो लेखकों और यह हैं प्रकाशन)। Deconvolutionary नेटवर्क वास्तव में एक ही नेटवर्क है जो आवेग और ब्लॉगिंग के साथ है, लेकिन रिवर्स ऑर्डर में लागू होता है। मूल deconvnet ऑपरेशन में, नेटवर्क का उपयोग शिक्षक के बिना छवियों को उत्पन्न करने के लिए प्रशिक्षण मोड में किया गया था। इस बार, लेखकों ने मूल छवि के लिए नेटवर्क पर सीधे मार्ग के बाद प्राप्त संकेतों से विपरीत पास के लिए इसे लागू किया। नतीजतन, यह एक ऐसी छवि बदल जाती है जिसे सिग्नल के रूप में व्याख्या किया जा सकता है जिसके कारण न्यूरॉन्स पर इस सक्रियण का कारण बनता है। स्वाभाविक रूप से, सवाल उठता है: एक संकल्प और nonlinearity के माध्यम से विपरीत मार्ग कैसे बनाया जाए? और विशेष रूप से अधिकतम खींचने के माध्यम से, यह निश्चित रूप से एक उल्टे ऑपरेशन नहीं है। सभी तीन घटकों पर विचार करें।

रिवर्स रिले।

एक सक्रियण समारोह के रूप में संक्रामक नेटवर्क में अक्सर उपयोग किया जाता है Relu (x) \u003d अधिकतम (0, x)जो परत पर सभी सक्रियण नकारात्मक नहीं बनाता है। तदनुसार, जब nonlinearity के माध्यम से मार्ग, नकारात्मक परिणाम प्राप्त करने के लिए भी आवश्यक है। इसके लिए, लेखक एक ही रिलेयू का उपयोग करने की पेशकश करते हैं। थानो आर्किटेक्चर के दृष्टिकोण से, ऑपरेशन के ढाल के समारोह को ओवरराइड करना आवश्यक है (एक असीम मूल्यवान लैपटॉप लाजगान की व्यंजनों में है, वहां से आप संशोधित बैकप्रॉप कक्षा के लिए क्या विवरण संभाल लेंगे)।

कक्षा ZEILERBACKPROP (modifiedbackprop): def grads (स्वयं, इनपुट, out_grads): (inp,) \u003d इनपुट (grd,) \u003d out_grads #return (grd * (grd\u003e 0) .astype (inp.dtype),) # स्पष्ट रूप से सुधार वापसी (self.nonlinearity (grd),) # दिए गए nonlinearity का उपयोग करें

रिवर्स ड्रिल

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


Stride \u003d 1 के साथ कटौती

Stride \u003d 1 के साथ कटौती रिवर्स संस्करण

स्ट्राइड \u003d 2 के साथ कटौती

स्ट्राइड \u003d 2 के साथ कटौती रिवर्स संस्करण

रिवर्स पुलिंग

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



परिणाम

विज़ुअलाइजेशन एल्गोरिदम बेहद सरल है:

  1. प्रत्यक्ष पास करें।
  2. हमारे लिए ब्याज की परत का चयन करें।
  3. एक या अधिक न्यूरॉन्स की सुरक्षित सक्रियण और बाकी को रीसेट करें।
  4. रिवर्स आउटपुट बनाएं।

नीचे दी गई छवि में प्रत्येक ग्रे स्क्वायर फ़िल्टर विज़ुअलाइजेशन (जिसे एक संकल्प के लिए उपयोग किया जाता है) या एक न्यूरॉन के वजन से मेल खाता है, और प्रत्येक रंगीन तस्वीर मूल छवि का हिस्सा है जो संबंधित न्यूरॉन को सक्रिय करती है। स्पष्टता के लिए, एक परत के अंदर न्यूरॉन्स विषयगत समूहों में समूहित होते हैं। आम तौर पर, यह अचानक था कि तंत्रिका नेटवर्क वास्तव में जानता है कि हेवबेल और वेज़ेल ने विजुअल सिस्टम की संरचना के बारे में क्या लिखा है, जिसके लिए 1 9 81 में नोबेल पुरस्कार को सम्मानित किया गया था। इस लेख के लिए धन्यवाद, हमें प्रत्येक परत पर एक संक्रामक तंत्रिका नेटवर्क सीखने का एक दृश्य प्रतिनिधित्व प्राप्त हुआ। यह ज्ञान है जो आपको बाद में जेनरेट की गई छवि की सामग्री में हेरफेर करने की अनुमति देगा, लेकिन इससे पहले, निम्नलिखित कुछ वर्षों में "राजद्रोह" तंत्रिका नेटवर्क के तरीकों में सुधार पारित किया गया है। इसके अलावा, लेख के लेखकों ने विश्लेषण करने का एक तरीका प्रस्तावित किया कि सर्वोत्तम परिणाम प्राप्त करने के लिए एक संक्रामक तंत्रिका नेटवर्क आर्किटेक्चर का निर्माण करना बेहतर है (हालांकि, इमेजनेट 2013 उन्होंने जीत नहीं की थी, लेकिन शीर्ष पर पहुंचे; अद्यतन।: ताकी जीतने के लिए बाहर निकलता है, क्लारिफाई वे हैं, वे हैं)।


विजुअलाइजेशन फिच


Deconvnet का उपयोग करके सक्रियण को देखने का एक उदाहरण यहां दिया गया है, आज यह परिणाम पहले से ही ऐसा है, लेकिन फिर यह एक सफलता थी।


Deconvnet का उपयोग कर लाभकारी मानचित्र

गहरे अंदरूनी संक्षेप में नेटवर्क: छवि वर्गीकरण मॉडल और आधार मानचित्रों को विज़ुअलाइज़ करना (1 9 अप्रैल 2014)

यह आलेख एक संक्रामक तंत्रिका नेटवर्क में संलग्न ज्ञान को देखने के तरीकों के अध्ययन के लिए समर्पित है। लेखक ग्रेडियेंट वंश के आधार पर दृश्यता के दो तरीके प्रदान करते हैं।

कक्षा मॉडल विजुअलाइजेशन

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



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


def comple_saliency_function: "" "इनपुट छवियों के किसी दिए गए मिनीबैच के लिए आधारभूत मानचित्रों की गणना करने के लिए एक समारोह को संकलित करता है।" "" inp \u003d net ["इनपुट"]। Intut_var outp \u003d lasagne.layers.get_output (नेट ["एफसी 8 "], निर्धारक \u003d सही) max_outp \u003d t.max (upp, axis \u003d 1) teniany \u003d theano.grad (max_outp.sum (), wrt \u003d inp) max_class \u003d t.argmax (uxp, axis \u003d 1) Theno वापसी। समारोह ()

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

  1. शून्य की प्रारंभिक छवि को प्रारंभ करें।
  2. इस छवि पर व्युत्पन्न के मूल्य की गणना करें।
  3. परिणामी छवि को व्युत्पन्न से जोड़कर छवि को बदलें।
  4. वापस बिंदु 2 या एक चक्र से बाहर निकलें।

ऐसी ऐसी छवियां प्राप्त की जाती हैं:




और यदि आप एक वास्तविक तस्वीर की पहली छवि को प्रारंभ करते हैं और एक ही प्रक्रिया चलाते हैं? लेकिन प्रत्येक पुनरावृत्ति पर, हम एक यादृच्छिक वर्ग का चयन करेंगे, बाकी को रीसेट करेंगे और व्युत्पन्न के मूल्य की गणना करेंगे, तो यह इतना गहरा सपना होगा।


सावधानी 60 एमबी


कुत्ते और आंखों का इतना सामना क्यों? सबकुछ सरल है: 1000 वर्गों से लगभग 200 कुत्तों की स्थिति में, उनकी आंखें हैं। साथ ही साथ कई कक्षाएं जहां लोगों के पास है।

प्रतिभूति निष्कर्षण

यदि यह प्रक्रिया वास्तविक तस्वीर द्वारा प्रारंभ की जाती है, तो पहले पुनरावृत्ति के बाद रुकें और व्युत्पन्न के मूल्य से इंकार कर दें, फिर हमें मूल रूप से किस चीज को जोड़कर ऐसी छवि प्राप्त होगी, हम चयनित वर्ग के सक्रियण के मूल्य को बढ़ाएंगे ।


व्युत्पन्न का उपयोग कर आधार मानचित्र


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

सादगी के लिए स्ट्रिंग: सभी संक्रामक नेट (13 अप्रैल 2015)

यह आलेख आमतौर पर विज़ुअलाइजेशन के बारे में बात नहीं करता है, बल्कि एक बड़े स्ट्रॉ के साथ पुलिया कनवॉल्यूशन के प्रतिस्थापन से गुणवत्ता की हानि नहीं होती है। लेकिन उनके शोध के उप-उत्पाद के रूप में, लेखकों ने इस सुविधा को देखने का एक नया तरीका पेश किया, जिसे उन्होंने मॉडल सीखने के बारे में अधिक सटीक विश्लेषण पर लागू किया। उनका विचार निम्नानुसार है: यदि हम सिर्फ व्युत्पन्न करते हैं, तो deconvolutions के साथ, इन इनपुट छवि पर जो विशेषताएं शून्य से कम हैं (इनपुट छवि के लिए RELU का उपयोग) deconvolution के दौरान वापस नहीं है। और यह इस तथ्य की ओर जाता है कि पूर्ववर्ती मूल्यों पर नकारात्मक मूल्य दिखाई देते हैं। दूसरी तरफ, यदि आप deconvnet का उपयोग करते हैं, तो एक और RELU को RELU व्युत्पन्न से लिया जाता है - यह आपको नकारात्मक मूल्यों को वापस नहीं ले सकता है, लेकिन जैसा कि आपने परिणाम देखा है, यह "इतना" निकलता है। लेकिन क्या होगा यदि आप इन दो तरीकों को गठबंधन करते हैं?




कक्षा GUIDEDBACKPROP (modifiedbackprop): डीईएफ ग्रेड (स्वयं, इनपुट, out_grads): (inp,) \u003d इनपुट (grd,) \u003d out_grads dtype \u003d inp.dtype वापसी (grd * (inp\u003e 0) .astype (dtype) * (जीआरडी \u003e 0) .astype (dtype),)

फिर यह एक पूरी तरह से साफ और व्याख्यात्मक छवि बदल जाता है।


निर्देशित बैकप्रोपैगेशन का उपयोग कर आधार मानचित्र

गहरे जाना।

अब आइए इसके बारे में सोचें, यह हमें क्या देता है? मुझे आपको याद दिलाएं कि प्रत्येक कोचिंग लेयर एक ऐसा फ़ंक्शन है जो त्रि-आयामी टेंसर प्राप्त करता है और आउटपुट के लिए आउटपुट भी एक त्रि-आयामी टेंसर देता है, शायद एक और आयामीता डी एक्स। डब्ल्यू एक्स। एच; डीईपीटीई परत में न्यूरॉन्स की संख्या है, उनमें से प्रत्येक एक प्लेट (फीचर मानचित्र) उत्पन्न करता है डब्ल्यूइग्थ एक्स। एचआठ।


आइए वीजीजी -19 नेटवर्क पर निम्नलिखित प्रयोग को पकड़ने का प्रयास करें:



conv1_2।

हां, आप लगभग कुछ भी नहीं देखते हैं, क्योंकि नुस्खा क्षेत्र बहुत छोटा है, यह क्रमशः 3x3 का दूसरा संकल्प है, कुल क्षेत्र 5x5 है। लेकिन बढ़ रहा है, हम देखेंगे कि सुविधा सिर्फ एक ढाल डिटेक्टर है।




conv3_3।


conv4_3।


conv5_3।


पूल 5।


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


conv1_1


conv2_2।


conv4_3।


आप कई छवियों के लिए एक और पूर्ण सक्रियण डेटाबेस डाउनलोड कर सकते हैं और।

कलात्मक शैली का एक तंत्रिका एल्गोरिदम (2 सितंबर 2015)

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

सामग्री हानि।

जैसा कि पहले ही उल्लेख किया गया है, तंत्रिका नेटवर्क की प्रत्येक परत कुछ आयाम के त्रि-आयामी टेंसर का उत्पादन करती है।




वैसे मैं।प्रवेश द्वार के रूप में परत। फिर अगर हम इनपुट छवि के बीच भारित राशि diffications को कम करते हैं और कुछ छवि जिसके लिए हम प्रयास करते हैं सी।, तो यह ठीक से पता चला कि आपको क्या चाहिए। शायद।



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


# एक शोर छवि जेनरेटेड_Image.Set_Value (Floatx (np.random.uniforiform (-128, 128, (1, 3, image_w, image_w)) के साथ आरंभ करें)) x0 \u003d ingenated_image.get_value ()। Astype ("Float64") xs \u003d xS.append (x0) # ऑप्टिमाइज़ करें, समय-समय पर परिणाम की बचत (8): प्रिंट (i) scipy.optimize.fmin_l_bfgs_b (eval_loss, x0.flatten (), fprime \u003d eval_grad, maxfun \u003d 40) x0 \u003d generated_image.get_value ()। Astype ("Float64") xS.Append (x0)

अगर हम इस तरह के फ़ंक्शन का अनुकूलन शुरू करते हैं, तो हम तुरंत लक्ष्य के समान एक छवि प्राप्त करते हैं। अब हम कुछ सामग्री छवि के समान छवियों को फिर से बना सकते हैं।


सामग्री हानि: COV4_2



प्रक्रिया का इष्टतीमीकरण




प्राप्त छवि की दो विशेषताओं को नोटिस करना आसान है:

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

शुरुआती परतों को जोड़कर तुरंत फूलों के साथ स्थिति को ठीक करता है।


सामग्री हानि: conv1_1, conv2_1, conv4_2


मुझे उम्मीद है कि इस बिंदु की उम्मीद है कि आप महसूस कर सकते हैं कि आप सफेद शोर से एक छवि पर क्या विकृत किए जाएंगे।

शैली की कमी।

और इसलिए हम सबसे दिलचस्प हो गए: हमारे बारे में शैली को पारित करने के बारे में क्या? शैली क्या है? जाहिर है, शैली यह नहीं है कि हमने सामग्री हानि "ई में अनुकूलित किया है, क्योंकि सुविधाओं की स्थानिक पदों के बारे में बहुत सारी जानकारी है। इसलिए पहली बात यह है कि इस जानकारी को प्राप्त प्रतिनिधित्व से प्राप्त करने के लिए किसी भी तरह से है प्रत्येक परत।


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




फिर स्टाइल लॉस निम्नानुसार दर्ज किया गया है, जहां एस - यह शैली के साथ कुछ छवि है:



चलो विन्सेंट के लिए कोशिश करते हैं? हम सिद्धांत रूप में प्राप्त करते हैं, कुछ उम्मीद है कि वैन गोग की शैली में शोर है, सुविधाओं के स्थानिक स्थान के बारे में जानकारी पूरी तरह से खो गई है।


विंसेंट




और क्या होगा यदि आप शैली की बजाय एक फोटो डालते हैं? यह पहले से ही परिचित सुविधाओं, परिचित रंगों को बाहर निकलता है, लेकिन स्थानिक स्थिति पूरी तरह से खो जाती है।


स्टाइल लॉस के साथ फोटो


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




सरल शैली हानि

संयुक्त हानि

स्वाभाविक रूप से, लागत के इन दो कार्यों को मिश्रण करने की इच्छा उत्पन्न होती है। फिर हम सफेद शोर से उत्पन्न होंगे कि सामग्री-छवि से संकेत होंगे (जिसमें स्थानिक निर्देशांक के लिए बाध्यकारी है), और "शैली" संकेत जो स्थानिक निर्देशांक से बंधे नहीं हैं, वे मौजूद होंगे, यानी हमें उम्मीद है कि सामग्री की सामग्री का विवरण उनके स्थानों से बरकरार रहेगा, लेकिन वांछित शैली के साथ फिर से शुरू हो जाएगा।



वास्तव में, एक नियमितकर्ता भी है, लेकिन हम इसे सादगी के लिए परिभाषित करेंगे। यह अगले प्रश्न का उत्तर देने के लिए बनी हुई है: अनुकूलित करते समय किस प्रकार की परतें (वजन) उपयोग करती हैं? और मुझे डर है कि मेरे पास इस प्रश्न का उत्तर नहीं है, और लेख के लेखकों को भी। उनके पास निम्नलिखित का उपयोग करने का प्रस्ताव है, लेकिन इसका मतलब यह नहीं है कि एक और संयोजन खराब, बहुत अधिक खोज स्थान काम करेगा। एकमात्र नियम जो मॉडल की समझ से आता है: पड़ोसी परतों को लेने का कोई मतलब नहीं है, क्योंकि वे एक-दूसरे से संकेतों को अलग नहीं करेंगे, क्योंकि शैली को प्रत्येक समूह conv * _1 से एक परत के माध्यम से जोड़ा जाता है।


# हानि कार्य हानि \u003d # सामग्री हानि हानि \u003d # सामग्री हानि हानि (0.001 * content_loss (photo_features, gen_features, "conv4_2")) # शैली हानि घाटे। Append (0.2e6 * style_loss (art_features, gen_features, "conv1_1") (Art_features, gen_features, "conv2_1")) हानि। Append (0.2e6 * style_loss (art_features, gen_features, "conv3_1")) हानि 0.2E6 * STYLE_LOSS (art_features, gen_features, "conv5_1")) # कुल विविधता पेनल्टी लॉस। एपेंड (0.1E-7 * TOTAL_VARIAT_LOSS (जेनरेटेड_IMAGE)) TOTAL_LOSS \u003d SUM (हानि)

अंतिम मॉडल को निम्नलिखित रूप में दर्शाया जा सकता है।




लेकिन वैन गोग के साथ घरों का नतीजा।



प्रक्रिया को नियंत्रित करने का प्रयास

आइए पिछले लेखों को पहले से ही दो साल पहले याद रखें, अन्य वैज्ञानिकों ने जांच की कि वास्तव में तंत्रिका नेटवर्क क्या सीखता है। इन सभी लेखों के साथ सशस्त्र, आप विभिन्न शैलियों, विभिन्न छवियों, विभिन्न परमिट और आकारों की विशेषताओं के विज़ुअलाइज़ेशन को ठीक कर सकते हैं, और यह समझने की कोशिश करते हैं कि कौन से वजन लेना है। लेकिन परतों की टाइलिंग भी पूरी तरह से नियंत्रित नहीं होती है कि क्या हो रहा है। यहां समस्या अधिक वैचारिक है: हम उस समारोह को अनुकूलित नहीं कर रहे हैं! आप कैसे पूछते हैं? जवाब सरल है: यह सुविधा एक अवशिष्ट को कम करती है ... ठीक है, आप समझते हैं। लेकिन हम वास्तव में क्या चाहते हैं कि हम छवि पसंद करते हैं। सामग्री और शैली की हानि सुविधाओं का उत्तल संयोजन इस तथ्य का एक उपाय नहीं है कि हमारा दिमाग सुंदर मानता है। यह ध्यान दिया गया कि यदि आप बहुत लंबे समय तक स्टाइलिज़ेशन जारी रखते हैं, तो लागत कार्य स्वाभाविक रूप से नीचे और नीचे गिरता है, लेकिन परिणाम की सौंदर्य सौंदर्य तेजी से गिर जाती है।




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


रंग और सुविधाओं के आकार के हेरफेर का एक उदाहरण


और आप एक शैली के रूप में एक साधारण छवि ले सकते हैं



परिणाम








और यहां एक विजेट है, लेकिन केवल वांछित बनावट के साथ

बनावट नेटवर्क: बनावट और स्टाइलिज्ड छवियों के फ़ीड-फॉरवर्ड संश्लेषण (10 मार्च 2016)

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




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



रीयल-टाइम स्टाइल ट्रांसफर और सुपर-रेज़ोल्यूशन के लिए अवधारणात्मक नुकसान (27 मार्च 2016)

जैसा कि नाम से देखा जा सकता है, उन लेखकों जो जनरेटिंग नेटवर्क के विचार के साथ केवल 17 दिनों के लिए देर हो चुकी थीं, छवि संकल्प में वृद्धि में लगे हुए थे। वे स्पष्ट रूप से अंतिम घटना पर अवशिष्ट शिक्षा की सफलता से प्रेरित थे।




तदनुसार, अवशिष्ट ब्लॉक और विन्यास ब्लॉक।



इस प्रकार, अब हमारे हाथों में स्टाइलिज़ेशन को नियंत्रित करने के अलावा एक त्वरित जनरेटर भी है (इन दो लेखों के लिए धन्यवाद, एक छवि का पीढ़ी का समय एमएस के साथ मापा जाता है)।

समापन

विचार किए गए लेखों और लेखकों के कोड से जानकारी हमने पहले वीडियो स्टाइलिज़ेशन एप्लिकेशन को स्टाइल करने के लिए एक और एप्लिकेशन बनाने के लिए एक प्रारंभिक बिंदु के रूप में उपयोग किया:



ऐसा कुछ उत्पन्न करें।


अगस्त 2015 तक, ट्यूबिंगेन विश्वविद्यालय के जर्मन शोधकर्ताओं ने प्रसिद्ध कलाकारों की शैली की अपनी पसंद को अन्य तस्वीरों में प्रस्तुत किया, सेवाओं को प्रकट होना शुरू हुआ कि इस अवसर का मुद्रीकरण किया गया था। पश्चिमी बाजार में उन्हें लॉन्च किया गया था, और रूसी पर - उनकी पूर्ण प्रति।

बुकमार्क करने के लिए

इस तथ्य के बावजूद कि ओस्टग्राम दिसंबर में लॉन्च हुआ था, उन्होंने अप्रैल के मध्य में सोशल नेटवर्क्स में लोकप्रियता हासिल करना शुरू कर दिया। साथ ही, 1 9 अप्रैल को VKontakte में परियोजना में एक हजार से भी कम लोग थे।

सेवा का उपयोग करने के लिए, आपको दो छवियों को तैयार करने की आवश्यकता है: एक तस्वीर संसाधित की जानी चाहिए, और मूल तस्वीर पर ओवरलेइंग के लिए शैली के उदाहरण के साथ एक तस्वीर।

सेवा में एक मुफ्त संस्करण है: यह तस्वीर के सबसे लंबे समय के साथ 600 पिक्सेल तक न्यूनतम संकल्प में एक छवि बनाता है। उपयोगकर्ता को फोटो पर लागू फ़िल्टर के पुनरावृत्तियों में से केवल एक परिणाम प्राप्त होता है।

भुगतान संस्करण दो: प्रीमियम सबसे लंबे समय तक 700 पिक्सल तक एक तस्वीर देता है और तंत्रिका नेटवर्क (अधिक पुनरावृत्तियों, अधिक दिलचस्प और अधिक गहन प्रसंस्करण) के 600 पुनरावृत्तियों की छवि पर लागू होता है। ऐसा एक स्नैपशॉट 50 रूबल होगा।

एचडी संस्करण में, आप पुनरावृत्तियों की संख्या निर्धारित कर सकते हैं: 100 में 50 रूबल होंगे, और 1000 - 250 रूबल होंगे। इस मामले में, छवि में सबसे लंबे समय तक 1200 पिक्सल तक का संकल्प होगा, और इसका उपयोग कैनवास पर प्रिंट करने के लिए किया जा सकता है: ओस्टग्राम 1800 रूबल से डिलीवरी के साथ ऐसी सेवा प्रदान करता है।

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

टीजे ने परियोजना के वाणिज्यिक निदेशक से संपर्क किया जो एंड्री द्वारा पेश किया गया था। उनके अनुसार, ओस्टाग्राम इंस्टापेंटिंग से पहले दिखाई दिया, लेकिन उन्हें वीआईपीआर्ट नामक एक समान परियोजना से प्रेरित किया गया।

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

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

परियोजना के दर्शक प्रति दिन एक हजार लोगों के बारे में हैं, हालांकि, कुछ दिनों में वह विदेशी मीडिया से संक्रमण की कीमत पर 40 हजार लोगों तक पहुंच गईं, जिन्होंने पहले ही परियोजना को घरेलू (ओस्टग्राम भी यूरोपीय डीजे के साथ बढ़ने में कामयाब रहे) पर ध्यान दिया था। । रात में, जब यातायात कम होता है, तो छवि प्रसंस्करण 5 मिनट में हो सकती है, और एक घंटे तक कब्जा करने के लिए दिन।

यदि पहले विदेशी उपयोगकर्ताओं को छवि प्रसंस्करण (रूस के साथ शुरू करने के लिए मुद्रीकरण शुरू करने के लिए) तक पहुंच सीमित हो, तो अब ओस्टाग्राम पहले से ही पश्चिमी दर्शकों पर भरोसा कर रहा है।

आज तक, भुगतान की संभावनाएं सशर्त हैं। यदि प्रत्येक उपयोगकर्ता ने 10 रूबल को संसाधित करने के लिए भुगतान किया था, तो शायद यह उबलता होगा। [...]

हमें अपने देश में मुद्रीकरण करना बहुत मुश्किल है: हम एक सप्ताह तक इंतजार करने के लिए तैयार हैं, लेकिन इसके लिए एक पैसा नहीं देंगे। इसके लिए यूरोपियन अधिक अनुकूल हैं - उठाने, गुणवत्ता में सुधार के लिए भुगतान करने के मामले में - इसलिए, अभिविन्यास बाजार में जाता है।

आंद्रेई, प्रतिनिधि ओस्टाग्राम

एंड्रीई के अनुसार, ओस्टाग्राम टीम समाज में एक बड़ी पूर्वाग्रह के साथ साइट के एक नए संस्करण पर काम कर रही है: "यह एक प्रसिद्ध सेवा के समान होगा, लेकिन क्या करना है।" इस परियोजना को पहले से ही रूस में फेसबुक के प्रतिनिधियों में दिलचस्पी थी, लेकिन बिक्री पर वार्ता से पहले सेवा तक नहीं पहुंचा।

सेवा के उदाहरण

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