image processing हैलोप का उपयोग कर छवियों को प्रोसेस करना




image-processing hadoop (3)

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

कंप्यूटिंग प्रक्रिया चल रही है, जबकि मुझे अंतःक्रियात्मक परिणाम मिल सकता है?

क्या इस तरह के उपयोग के मामले में हूओप स्ट्रीमिंग की तुलना में कोई अन्य विकल्प हैं?

मैं छवियों के साथ एक्जीक्यूटेबल कैसे फ़ीड कर सकता हूं? मुझे स्टडीन के साथ खिलाने के अलावा कोई भी उदाहरण नहीं मिल सकता है।


Hadoop पर छवियों को संसाधित करने का सर्वोत्तम तरीका होगा:

  1. अनुक्रम फ़ाइल में छवियों को स्टोर करें कुंजी - छवि का नाम या उसका आईडी, मान - छवि बाइनरी डेटा। इस तरह आपके पास उन सभी छवियों के साथ एक फाइल होगी जो आपको प्रक्रिया करने की आवश्यकता होती है। यदि आपके पास छवियां आपके सिस्टम में गतिशील रूप से जोड़ दी गई हैं, तो उन्हें दैनिक अनुक्रम फाइलों में एकत्रित करने पर विचार करें। मुझे नहीं लगता कि आपको इस अनुक्रम फ़ाइल के लिए किसी भी संपीड़न का उपयोग करना चाहिए क्योंकि सामान्य संप्रेषण एल्गोरिदम छवियों के साथ अच्छी तरह से काम नहीं करता है
  2. छवियों पर प्रक्रिया करें यहां आपके पास चुनने के लिए कई विकल्प हैं सबसे पहले Hadoop MapReduce का उपयोग करें और जावा में एक प्रोग्राम लिखना है ताकि आप अनुक्रम फ़ाइल पढ़ सकें और प्रत्येक मैप चरण पर "वैल्यू" प्राप्त कर सकें, जहां "मान" द्विआधारी फ़ाइल डेटा है। यह देखते हुए, आप किसी भी प्रसंस्करण तर्क को चला सकते हैं। दूसरा विकल्प हैडोप स्ट्रीमिंग है इसकी एक सीमा है कि सभी डेटा आपके आवेदन के stdin पर जाता है और परिणाम stdout से पढ़ा जाता है। लेकिन आप जावा में अपना स्वयं का इनपुट फ़ॉर्मेट लिखकर इस पर काबू पा सकते हैं जो कि बेस 64 स्ट्रिंग के रूप में अनुक्रम फाइल से छवि बाइनरी डेटा को सीरियल कर देगा और इसे आपके जेनेरिक एप्लीकेशन में पास कर देगा। तीसरा विकल्प इस डेटा की प्रक्रिया के लिए स्पार्क का उपयोग करने के लिए होगा, लेकिन फिर आप प्रोग्रामिंग भाषा चुनिस्त में सीमित हैं: स्कला, जावा या पायथन।
  3. बड़ी मात्रा में डेटा पर बैच प्रसंस्करण को आसान बनाने के लिए हडोप विकसित किया गया था। स्पार्क अनिवार्य है - यह एक बैच टूल है इसका मतलब है कि सभी डेटा संसाधित होने से पहले आपको कोई भी परिणाम नहीं मिल सकता है। स्पार्क स्ट्रीमिंग थोड़ा अलग मामला है - वहां आप 1-10 सेकंड के सूक्ष्म बैचों के साथ काम करते हैं और उनमें से प्रत्येक को अलग से संसाधित करते हैं, इसलिए सामान्य तौर पर आप इसे अपने केस के लिए काम कर सकते हैं।

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

लेकिन सामान्य तौर पर, आपके द्वारा प्रदान की गई जानकारी आपके विशिष्ट मामले के लिए एक अच्छी संरचना की सिफारिश करने के लिए पूर्ण नहीं है


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


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

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

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

ओपनसीवी के साथ तूफान का उपयोग करने के कुछ उदाहरण हैं उनके आधिकारिक गिट हब पृष्ठ पर उदाहरण हैं आप इस चेहरे का पता लगाने का उदाहरण देख सकते हैं और इसे मानव पहचान करने के लिए आज़मा सकते हैं - https://github.com/sensorstorm/StormCV/blob/master/stormcv-examples/src/nl/tno/stormcv/example/E2_FacedetectionTopology जावा





hadoop-streaming