2015-10-16 8 views
6

कैफे का उपयोग करते समय, छवियों वाले प्रशिक्षण डेटासेट बनाने के लिए हमें एलएमडीबी जैसे विशेष प्रारूप में डेटाबेस बनाने की आवश्यकता है, लेकिन छवियों के कैफे बैच को पास करने के लिए कोई विकल्प है उदाहरण के लिए vector<cv::Mat>?कैफे + ओपनसीवी बिना एलएमडीबी

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

उत्तर

6

कैफे हमारे द्वारा उपयोग की जाने वाली इनपुट परत के आधार पर कई प्रकार के इनपुट ले सकता है। इनपुट विधियों कि उपलब्ध हैं से कुछ हैं:

  1. डाटा
  2. MemoryData
  3. HDF5Data
  4. ImageData आदि

मॉडल फ़ाइल में, पहले ही परत है कि आप पाते हैं Layer type: Data होगा, जो इनपुट विधि के रूप में lmdb or leveldb का उपयोग किया गया था। इन डेटाबेस में छवियों के एक सेट का रूपांतरण बहुत आसान है क्योंकि कैफे पहले से ही छवियों को बदलने के लिए टूल प्रदान करता है।

Layer type: MemoryData सीधे स्मृति से डेटा पढ़ता है, जो टेस्ट चरण के दौरान कैफे इनपुट के रूप में पारित होने के लिए कैमरा इनपुट का उपयोग करते समय बेहद सहायक होगा। प्रशिक्षण के लिए इस परत का उपयोग अत्यधिक अनुशंसित नहीं है।

Layer type: ImageData इनपुट के रूप में एक टेक्स्ट फ़ाइल लेता है। टेक्स्ट फ़ाइल में उनके पूर्ण पथ और कक्षा संख्या के साथ सभी छवि नाम शामिल हैं। इस परत में छवियों को पढ़ने के लिए कैफे ओपनसीवी का उपयोग करता है। यह छवि में सभी परिवर्तनों का भी ख्याल रखता है। इस प्रकार छवि को पढ़ने के लिए OpenCV का उपयोग करने के बजाय और मेमोरीडेटा परत पर जाने के बजाय, ImageData का उपयोग करने की अनुशंसा की जाती है।

.txt का स्वरूप है जहाँ से ImageData परत पढ़ता चित्र होना चाहिए:

/path/to/the/image/imageName.jpg classNumber LMDB या LevelDB की

उपयोग अत्यधिक अनुशंसा की जाती है क्योंकि छवि पथ या नाम में रिक्त स्थान होते हैं, या जब कोई भी छवि भ्रष्ट होती है तो ImageData को अच्छी तरह से काम करने की आवश्यकता नहीं होती है।

विभिन्न परतों का विवरण here पाया जा सकता है।

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

+0

मेमोरीडाटा का उपयोग प्रशिक्षण में क्यों नहीं किया गया? एलएमडीबी और इमेजडाटा से पढ़ने में भी कोई गति अंतर है? – mrgloom

+1

शुरुआती लोगों के लिए मेमोरीडाटा की अनुशंसा नहीं की जाती है क्योंकि प्रशिक्षण अपेक्षाकृत प्रगति नहीं कर रहा है, तो इससे चीजें मुश्किल हो सकती हैं। छवि पर किए गए परिवर्तनों को मेमोरीडेटा परत से हटा दिया जा रहा है, जिसका अर्थ है, मेमोरीडेटा का उपयोग करने के लिए भविष्य में रिलीज में, मतलब छवि घटाव, क्रॉपिंग, आकार बदलने आदि को डेटाडेटा परत में डेटा पास करने से पहले बाहर किया जाना है। –

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