2012-06-23 11 views
25

मैं SURF और SIFT के साथ कुछ ऑब्जेक्ट डिटेक्शन का परीक्षण कर रहा हूं।एसआईएफटी बनाम एसआईएफटी, एसयूआरएफ वास्तव में तेज़ है?

एसयूआरएफ एसआईएफटी की तुलना में तेज़ और अधिक मजबूत होने का दावा करता है लेकिन मुझे अपने परीक्षण में पाया गया कि यह सच नहीं है। मध्यम छवियों के साथ एसआईएफटी (600 * 400) एसयूआरएफ की एक ही गति है और यह वस्तुओं को अच्छी तरह से पहचानता है (शायद एसयूआरएफ से भी बेहतर)।

क्या मैं कुछ गलत कर रहा हूं?

[संपादित करें]

कृपया ध्यान दें कि है an article बताया गया हो कि सर्फ बहुत तेजी से opencv कोड के लिए एक छोटे से बदलाव के साथ हो सकता है।

यदि आप कुछ सक्रिय ओपनसीवी डेवलपर जानते हैं तो कृपया उसे देखें।

+5

600 * आधुनिक कंप्यूटर के लिए 400 छवि कुछ भी नहीं है। वीडियो या विशाल (छवियों की तुलना में 100 गुना बड़ा) परीक्षण करने का प्रयास करें। – ArtemStorozhuk

उत्तर

27

जब इसे डिज़ाइन किया गया था तो इसे तेज़ होने का इरादा था, लेकिन वास्तव में मानक कैमरे के साथ वास्तविक समय अनुप्रयोगों के लिए अंतर प्रासंगिक नहीं हैं। वैसे, तेजी से डिटेक्टर तेज और वास्तव में काफी मजबूत है।

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

+2

आपके योगदान के लिए धन्यवाद, वैसे भी एसयूआरएफ के संबंध में थोड़ा अनुकूलन है जिससे अधिक प्रदर्शन हो सकता है। यहां वर्णित है: http://computer-vision-talks.com/2011/06/a-few-thoughts-about-cvround/ मैंने किसी भी भाग्य के साथ ओपनसीवी डेवलपर से संपर्क करने की कोशिश की :( – dynamic

+1

वैसे भी जो एक्स्ट्रेक्टर आप उपयोग कर रहे हैं क्योंकि 'FastDescriptorExtractor' मौजूद नहीं है। हो सकता है कि आप' OrbDescriptorExtractor() 'का उपयोग कर रहे हों?मैं ओआरबी का भी उपयोग कर रहा हूं – dynamic

+5

मिमी, हम एक संशोधित एसआईएफटी डिस्क्रिप्टर का उपयोग करते हैं ताकि एसआईएफटी (ऑफलाइन प्रारंभिकरण) से फीचर के साथ फास्ट (रीयल-टाइम) से सुविधाओं की तुलना करने में सक्षम हो सके। यह इस पेपर में वर्णित एक जैसा है: http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=5226627&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp % 3 फार्नम्बर% 3 डी 5226627 –

5

एसयूआरएफ तेज होना चाहिए, जबकि एसआईएफटी अधिक मजबूत है। एस्टोर सही कह रहा है कि 600 * 400 आज के मानकों से एक छोटी छवि है; हालांकि।

उस ने कहा, एसयूआरएफ एसआईएफटी की तुलना में तीव्रता के कई आदेश होना चाहिए।

16

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

सर्फ के कई कार्यान्वयन की तुलना देख लिए, यहाँ मेरा पेज पर एक नज़र डालें:

http://boofcv.org/index.php?title=Performance:SURF

यह दुर्भाग्यपूर्ण है कि OpenCV गोलाई से संबंधित पैच को अस्वीकार कर दिया है क्रॉस प्लेटफॉर्म मुद्दों की वजह से। शायद पैच tweaked और resubmitted किया जाएगा। अपने स्वयं के काम में मैंने देखा कि सामान्य उद्देश्य दौर() बहुत धीमा था और इसे एक कस्टम फ़ंक्शन के साथ बदल दिया गया था।

जाव_रॉक द्वारा वर्णित फास्ट डिटेक्टर के लिए, मैं केवल अंतिम उपाय के रूप में उपयोग करता हूं। यह किसी और चीज की तुलना में एक डिटेक्टर की बहुत कम स्थिर है, लेकिन यह वास्तव में तेज़ है।

+0

सिर्फ जिज्ञासा के लिए, यदि आपने इसे ऑनलाइन सबमिट किया है तो पैच का लिंक प्राप्त करना संभव है? – Catree

1

यदि आप OPENCV SIFT में SIFT और SURF लागू करते हैं तो किसी भी बदलाव के बिना SURF से तेज़ लगता है, लेकिन ऐसा नहीं है। फ्रो साबित कर रहा है कि मैंने उन्हें 3 9 3 * 387 पिक्सेल छवि पर परीक्षण किया है। एक ही सुविधा निष्कर्षण 100 बार चलाने के बाद और उन्हें औसत समय प्राप्त करने के बाद, परिणाम

SIFT: 0।0983946 (रों)

सर्फ: 0.१,८३,३७२ (रों)

लेकिन मुख्य बिंदुओं पर ध्यान दें, तो आप वे अपने प्रयोग में, विभिन्न आकार की-अंक दे पाएंगे,

झारना: kpsize = 671 डी-पंक्ति = 671 डी-col = 128

सर्फ: kpsize = 1156 डी-पंक्ति = 1156 डी-col = 64

सर्फ, लगभग दो बार झारना की कुंजी-अंक दे तो यह काफी तेजी से सर्फ से झारना कहने के लिए वैज्ञानिक नहीं है।

आप एक डिटेक्टर के रूप में तेजी से इस्तेमाल करना चाहिए तो झारना, सर्फ लागू उस स्थिति में,:

झारना: 0.१,९९,४४८ (रों) सर्फ: 0.०६,१३,६८२ (रों)

झारना: kpsize = 2362 डी-पंक्ति = 2362 डी-col = 64

सर्फ: kpsize = 2362 डी-पंक्ति = 2362 डी-col = 64

उस मामले सर्फ तीन बार झारना की तुलना में तेजी है।

1

मैंने अपने सर्फ फीचर डिटेक्टर की गति में हर फ्रेम पर इसे लागू नहीं किया है, लेकिन हर 6 वें फ्रेम पर, यह मेरे आवेदन के लिए ठीक था। एक काउंटर मैं, मेकअप एक बयान करता है, तो (i% 6 == 0), उर कोड में यह अगर बयान के नीचे रखा, गति में वृद्धि होगी अगर

1

कृपया परीक्षण के लिए the original implementation of SURF का उपयोग करते हैं। खुला सीवी धीमा है।

एसआईएफटी और एसयूआरएफ, you will get much faster results with SURF के मूल कार्यान्वयन की तुलना करते समय। आप पैरामीटर को ट्वीक करके परिमाण के क्रम से भी तेज़ी से प्राप्त कर सकते हैं। हालांकि, मजबूती का सामना करना पड़ सकता है। यह सब आपके उपयोग के मामले पर निर्भर करता है।

सामान्य रूप से, एसयूआरएफ एसआईएफटी के रूप में मजबूत है। डेटासेट के आधार पर आपको अलग-अलग परिणाम मिल सकते हैं, लेकिन en gros, जब वे मजबूती की बात करते हैं तो वे वही होते हैं।

GPU implementations of SURF भी हैं जो मेरे मूल कार्यान्वयन से काफी तेज हैं।

+0

"आपको SURF के साथ बहुत तेज़ परिणाम मिलेंगे" जैसे बयान के साथ आपको परीक्षण या संदर्भों के साथ उन्हें वापस लेना चाहिए। – muttonUp

+0

कृपया विभिन्न एल्गोरिदम की तुलना में मूल SURF पेपर पढ़ें। http://www.vision.ee.ethz.ch/~surf/eccv06.pdf –

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