अब सवाल यह है कि ऐसे बड़े इमेज साइज को कैसे हैंडल किया जाए जहां डाउनस्मैपलिंग के कोई विशेषाधिकार न हों
मुझे लगता है कि downsampling द्वारा आप CNN में पारित करने से पहले इनपुट नीचे स्केलिंग का मतलब है । संकेंद्रित परत एक नेटवर्क के भीतर छवि को नीचे उतारने की अनुमति देती है, एक बड़ी स्ट्राइड चुनकर, जो अगली परतों के लिए संसाधनों को बचाने जा रही है। वास्तव में, यह वही करना है, अन्यथा आपका मॉडल GPU में फिट नहीं होगा।
1) क्या ऐसी बड़ी छवियों को संभालने के लिए कोई तकनीक है जिसे प्रशिक्षित किया जाना है?
आमतौर पर शोध छवियों को एक प्रतिध्वनि आकार के पैमाने पर रखते हैं। लेकिन अगर यह आपके लिए कोई विकल्प नहीं है, तो आपको अपने सीएनएन को प्रतिबंधित करना होगा। शुरुआती परतों में डाउनसमलिंग के अलावा, मैं आपको एफसी लेयर (जो आमतौर पर अधिकांश मापदंडों को लेता हूं) को कंफर्टेबल लेयर के पक्ष में निकालने की सलाह दूंगा । इसके अलावा, आपको प्रत्येक युग में अपना डेटा स्ट्रीम करना होगा, क्योंकि यह आपके GPU में फिट नहीं होगा।
ध्यान दें कि इस में से कोई भी प्रारंभिक परतों में भारी कम्प्यूटेशनल लोड को नहीं रोकेगा, बिल्कुल इसलिए क्योंकि इनपुट इतना बड़ा है: कनविक्शन एक महंगा ऑपरेशन है और पहली परतें प्रत्येक फॉरवर्ड और बैकवर्ड पास में बहुत सारे प्रदर्शन करेगी । संक्षेप में, प्रशिक्षण धीमा होगा।
2) क्या बैच आकार का उपयोग करने के लिए उचित है?
यहाँ एक और समस्या है। एक एकल छवि लेता है 2400x2400x3x4
(प्रति पिक्सेल 3 चैनल और 4 बाइट्स) जो ~ 70Mb है, इसलिए आप शायद ही एक बैच आकार 10. बर्दाश्त कर सकते हैं। अधिक वास्तविक रूप से 5 होगा। ध्यान दें कि अधिकांश मेमोरी सीएनएन मापदंडों द्वारा ली जाएगी। मुझे लगता है कि इस मामले में यह 32-बिट के बजाय 16-बिट मान का उपयोग करके आकार को कम करता है - इस तरह आप बैचों को दोगुना करने में सक्षम होंगे।
3) क्या हार्डवेयर संसाधनों में कोई वृद्धि या कमी लेने की कोई सावधानी है जो मैं कर सकता हूं?
आपकी अड़चन GPU मेमोरी है। यदि आप एक और GPU खरीद सकते हैं, तो इसे प्राप्त करें और उन पर नेटवर्क को विभाजित करें। GPU मेमोरी की तुलना में बाकी सब कुछ महत्वहीन है।