2013-08-27 7 views
16

प्रश्न
मल्टीकोर सीपीयू के लिए सबसे तेज़ ओपन-सोर्स HOG निष्कर्षण कोड क्या है?सबसे तेज़ HOG फ़ीचर निष्कर्षण कार्यान्वयन?

प्रेरणा
मैं एक वास्तविक समय वस्तु का पता लगाने आवेदन पर काम कर रहा हूँ। विशेष रूप से, मैंने Deformable Parts Model cascades का एक संस्करण विकसित किया है, जो 30fps ऑब्जेक्ट डिटेक्शन को लक्षित करता है। मैं एक बिंदु पर पहुंच गया हूं जहां निकालने वाली HOG विशेषताएं मेरी पाइपलाइन की शेष महंगी है, संयुक्त संयुक्त। मैं HOG निष्कर्षण के लिए [Felzenzwalb, Girshick, et al] पैरामीटर का उपयोग कर रहा हूं। यही है, HOG वर्णनकर्ताओं का एक बहुआयामी पिरामिड, और प्रत्येक वर्णनकर्ता के पास अभिविन्यास और कुछ अन्य संकेतों के लिए कुल 32 डिब्बे हैं।

लक्ष्य
मैं चाहता 60fps (16ms) एक मल्टीकोर CPU पर 640x480 छवियों के लिए में multiscale हॉग सुविधा निष्कर्षण करने के लिए।

संबंधित कार्य
मैं एक 6-कोर इंटेल 3930k CPU पर कुछ ऑफ-द-शेल्फ बहु हॉग कार्यान्वयन बेंचमार्क है। : -: Dubout के FFLD DPM कोड में

  • हॉग: सी OpenMP साथ ++, लेकिन voc-release5 DPM कोड में कोई vectorization
  • हॉग 19fps (52ms) एक 640x480 छवि के लिए, मैं निम्नलिखित प्रदर्शन संख्या का निरीक्षण 2.4fps (410ms) - singlethreaded सी ++, प्लस एक मैटलैब आवरण

मैं भी OpenCV HOG extraction code के साथ प्रयोग किया गया है। ओपनसीवी संस्करण काम करता है, लेकिन ऐसा लगता है कि दलाल-ट्रिग्स के HOG सेटअप के लिए हार्ड कोड किया गया है, और ओपनसीवी मुझे एक ही एचओजी पैरामीटर (सामान्यीकरण योजना, बाइनरी स्थिति सुविधाओं, आदि) का उपयोग करने की अनुमति नहीं देता है [Felzenzwalb, गिरशिक, एट अल]। ओपनसीवी संस्करण भी मूल रूप से मल्टीस्केल HOG का समर्थन नहीं करता है, हालांकि आप स्वयं को डाउनस्प्लिंग कर सकते हैं और प्रत्येक पैमाने के लिए ओपनसीवी HOG को कॉल कर सकते हैं। मुझे याद नहीं है कि ओपनसीवी एचओजी प्रदर्शन कैसा दिख रहा था।

अंतिम विचार

  1. सबसे तेजी से हॉग कार्यान्वयन - FFLD - मेज पर प्रदर्शन का एक बहुत छोड़ रहा है। मैंने जीएफएलओपी/एस अनुमान नहीं किया है, लेकिन मुझे पता है कि एफएफएलडी का एचओजी कोड किसी भी एसएसई/एवीएक्स वेक्टरेशन का उपयोग नहीं करता है। इतना नियंत्रण प्रवाह नहीं है, इसलिए वेक्टरेशन यहां एक सस्ते स्पीडअप अवसर की तरह दिखता है।
  2. मैंने यहां GPU HOG कार्यान्वयन का उल्लेख नहीं किया है। मैंने groundHOG/CUHOG और fasthog के साथ प्रयोग किया है। CUHOG लेखकों ने 20fps (50ms) एनवीआईडीआईए GTX560 पर HOG निष्कर्षण का दावा किया है। लेकिन, इंटेल सीपीयू मेरे आवेदन के लिए लक्ष्य मंच हैं, और जीपीयू से सीपीयू तक एक पूर्ण HOG पिरामिड की प्रतिलिपि बनाना बेहद महंगा है।
+0

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

+0

फिल्टर रूपांतरण डीपीएम में सबसे महंगा हिस्सा है तो आप इस हिस्से को कैसे प्रबंधित करते हैं? –

+1

@ मिकी सामान्य सामानों को शाइन करें ... विशेष रूप से सुविधाओं को मापने, और कैस्केड करना। मैं इन दिनों अधिक गहरी शिक्षा और कम HOG- आधारित डीपीएम कर रहा हूं। लेकिन मैं एक बिंदु पर पहुंचा जहां मैं एक एचओजी आधारित 3-घटक, 8-भाग-प्रति-घटक मॉडल के लिए 50 एमएस के तहत संकल्प कर सकता था। – solvingPuzzles

उत्तर

1

निम्नलिखित कार्यान्वयन HoG SSE

यह अपने समय की आवश्यकताओं को फिट करता है पर एक नज़र डालें।यह सी में लिखा गया है और 128 बिट लंबे सिम निर्देशों का उपयोग करता है।

कोड को सामान्यीकरण रणनीति और आउटपुट प्रकार की आवश्यकता के आधार पर और भी अनुकूलित किया जा सकता है।

मुझे आपकी प्रतिक्रिया सुनकर खुशी होगी और इस कोड को बेहतर बनाने में सक्षम होंगे।

+0

दिलचस्प! मैं इसे आज़मा दूंगा। क्या यह मल्टीस्केल निष्कर्षण (एक "HOG पिरामिड" करता है, क्योंकि कुछ लोग इसे कहते हैं)? – solvingPuzzles

+1

@ सोल्विंग पहेलियाँ, होग ने आपके समय की आवश्यकता को पूरा किया? आपको कौन सा समाधान मिला? – Tin

+0

@ivan_a क्या आप कृपया बता सकते हैं कि इस कोड का उपयोग कैसे करें? मुझे लगता है कि यह केवल 16 डिब्बे का उपयोग करता है और यह लिखा गया है कि आप इसे बदल नहीं सकते? इसका क्या मतलब है? –

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