2017-01-28 8 views
15

मैं अपने मॉडल को प्रशिक्षित करने की कोशिश कर रहा हूं जो छवियों को वर्गीकृत करता है। मेरी समस्या यह है कि उनके पास अलग-अलग आकार हैं। क्या उन छवियों को आकार देने के बिना उन्हें प्रशिक्षित करने की कोई संभावना है।छवियों को प्रशिक्षित करने के लिए, जब उनके पास अलग-अलग आकार होते हैं?

+1

कृपया दिखाएं कि आपने अभी तक क्या प्रयास किया है और आपके लिए क्या काम नहीं कर रहा है। –

+0

और बाम वहां प्राप्ति v4 का कोड चला जाता है। मैं उस ऑफ-द-शेल्फ टिप्पणी से असहमत हूं। थोड़ा और इनपुट अच्छा होगा - जैसे कि हम किस तरह के नेट के बारे में बात कर रहे हैं - लेकिन डाउनवॉट्स बिल्कुल उचित नहीं हैं। वह _is_ एक असली समस्या है। – sunside

+0

सवाल यह है कि ImageNet उनके छवि डेटा को प्रशिक्षण के लिए उपयोगी कैसे प्रारूपित करता है? – mskw

उत्तर

36

आपने यह नहीं कहा कि आप किस आर्किटेक्चर के बारे में बात कर रहे हैं। चूंकि आपने कहा है कि आप छवियों को वर्गीकृत करना चाहते हैं, मुझे लगता है कि यह आंशिक रूप से पूरी तरह से जुड़ा हुआ है, आंशिक रूप से पूरी तरह से जुड़े नेटवर्क जैसे एलेक्सनेट, गूगलेनेट आदि। सामान्य रूप से, आपके प्रश्न का उत्तर उस नेटवर्क प्रकार पर निर्भर करता है जिसके साथ आप काम कर रहे हैं।

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

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

हैं कि आपकी समस्या है, यहाँ कुछ चीजें आप क्या कर सकते हैं:

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

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

सिर्फ कुचलने, here's प्रसिद्ध इंसेप्शन नेटवर्क के पूर्व प्रसंस्करण पाइप लाइन का एक टुकड़ा के बारे में देखभाल के लिए नहीं है के रूप में:

# This resizing operation may distort the images because the aspect 
# ratio is not respected. We select a resize method in a round robin 
# fashion based on the thread number. 
# Note that ResizeMethod contains 4 enumerated resizing methods. 

# We select only 1 case for fast_mode bilinear. 
num_resize_cases = 1 if fast_mode else 4 
distorted_image = apply_with_random_selector(
    distorted_image, 
    lambda x, method: tf.image.resize_images(x, [height, width], method=method), 
    num_cases=num_resize_cases) 

वे इसके बारे में पूरी तरह से अवगत हैं और वैसे भी करते हैं।

आप कितनी दूर चाहते हैं या जाने की जरूरत पर निर्भर करता है, वहाँ वास्तव में एक कागज here दृश्य मान्यता है कि उन्हें एक बहुत ही खास तरह से प्रसंस्करण द्वारा मनमाने ढंग से आकार के आदानों संभालती के लिए दीप कनवल्शन नेटवर्क में स्थानिक पिरामिड पूलिंग कहा जाता है।

0

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

संबंधित मुद्दे

 संबंधित मुद्दे