2017-07-07 13 views
10

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

मुझे आश्चर्य है कि मैं ARFrames को कैप्चर करने में सक्षम कैसे होगा, कोरम मॉडल का उपयोग करके किसी दिए गए ऑब्जेक्ट का पता लगाने और ट्रैक करने के लिए विजन फ्रेमवर्क का उपयोग करें।

इसके अतिरिक्त, ऑब्जेक्ट को एक इशारा स्पर्श पर एआर ऑब्जेक्ट जोड़ने की क्षमता के साथ एक बार बाध्यकारी बॉक्स होना अच्छा लगेगा लेकिन यह ऐसा कुछ है जिसे ठोस परियोजना को कम करने के बाद लागू किया जा सकता है।

यह निस्संदेह संभव है, लेकिन मुझे अनिश्चितता है कि प्रसंस्करण के लिए विजन के माध्यम से ARML को CoreML को कैसे पास किया जाए।

कोई विचार?

+0

मूल बातें के साथ शुरू करें। ओह, और आपको समझते हैं ** ** ** एक्सकोड 9 और आईओएस 11 का उपयोग करना चाहिए। अब, "मूल बातें" से, मेरा मतलब है कि प्रत्येक टुकड़ा * क्या है * और * नहीं है *। विजन उच्चतम स्तर होगा - यह कोरएमएल मॉडल को ट्रैक और उपयोग कर सकता है। लेकिन क्या आप जानते हैं कि मॉडल को कैसे प्रशिक्षित किया जाए? यदि नहीं, तो पहले एमएल सीखें, और फिर * सीखें कि एक प्रशिक्षित मॉडल को CoreML में कैसे आयात करें। मैं एआरकिट को संबोधित नहीं करूंगा (खेद है कि यह मेरे आला के लिए बहुत व्यापक है - क्या आपको यकीन है कि यह आपके लिए जरूरी है?) लेकिन यदि आप सीधे कोरएमएल को संबोधित करना चाहते हैं तो आपको समझना होगा कि 'सीवी पिक्सेलबफर' क्या है। सौभाग्य! आपकी प्रतिक्रिया के लिए – dfd

+0

धन्यवाद; हां, मैं दोनों एक्सकोड 9 और आईओएस 11 का उपयोग कर रहा हूं। मैं एक मॉडल को प्रशिक्षित कर सकता हूं, इस तरह मैं वास्तव में प्रोग्रामिंग में शुरू हुआ (पायथन में एनएलपी) और मैं मॉडल को एक्सकोड में परिवर्तित और सम्मिलित कर सकता हूं। इसके अलावा, पूर्व-प्रशिक्षित मॉडल हैं जिनका उपयोग मैं समय के लिए ऐप की कार्यक्षमता का परीक्षण करने के लिए कर सकता हूं। मुझे ARframe निकालने और CoreML के मॉडल का उपयोग करके विज़न के माध्यम से इसे पार करने की पद्धति को समझने में समस्या हो रही है। वास्तव में अभी तक कोई गहरा दस्तावेज नहीं है और अगर कोई अंतर्दृष्टि शेड कर सकता है तो @dfd – pythlang

+0

आपका स्वागत है। अब, आपके पास * विशिष्ट * समस्या क्या है? विजन का उपयोग कर ऑब्जेक्ट को ट्रैक करने के साथ कुछ? कोरएमएल में एक प्रशिक्षित मॉडल आयात करना? एक बाध्यकारी बॉक्स प्रदर्शित करना? – dfd

उत्तर

38

बस आप जो भी करना चाहते हैं उसके लिए सभी टुकड़े हैं ... आपको ज्यादातर उन्हें एक साथ रखना होगा।


आप ARFrame रों या तो प्राप्त समय-समय पर मतदान इसके currentFrame के लिए या उन्हें होने से ARSession अपने सत्र प्रतिनिधि को धक्का दे द्वारा। (यदि आप अपना खुद का रेंडरर बना रहे हैं, तो यह ARSessionDelegate है; यदि आप ARSCNView या ARSKView के साथ काम कर रहे हैं, तो उनके प्रतिनिधि कॉलबैक दृश्य को संदर्भित करते हैं, ताकि आप currentFrame प्राप्त करने के लिए सत्र से वापस काम कर सकें जिससे कॉलबैक हो गया ।)

ARFrame के रूप में वर्तमान capturedImage प्रदान करता है।

आप या तो VNImageRequestHandler या VNSequenceRequestHandler वर्ग, जो दोनों के तरीकों कि एक इनपुट छवि पर कार्रवाई करने के रूप में एक CVPixelBuffer ले का उपयोग कर के प्रसंस्करण के लिए Vision के लिए छवियों गुजरती हैं।

  • आप छवि अनुरोध हैंडलर का उपयोग करता है, तो आप एक अनुरोध एक ही छवि का उपयोग करता है प्रदर्शन करने के लिए चाहते हैं - rectangles या QR codes या faces, या using a Core ML model to identify the image खोजने की तरह।
  • आप अनुक्रम अनुरोध हैंडलर का उपयोग उन अनुरोधों को करने के लिए करते हैं जिनमें एकाधिक छवियों के बीच परिवर्तन का विश्लेषण शामिल है, जैसे tracking an object's movement after you've identified it

आप WWDC17 session on Vision से जुड़ी विजन + कोर एमएल के लिए छवियों को पारित करने के लिए सामान्य कोड प्राप्त कर सकते हैं, और यदि आप उस सत्र घड़ी लाइव डेमो भी विजन को CVPixelBuffer रों गुजर शामिल हैं। (वे पाते हैं कि डेमो में AVCapture से पिक्सेल बफ़र्स मिलता है, लेकिन विजन हिस्सा आप ARKit से बफ़र्स प्राप्त हो रहे हैं एक ही है।)


एक चिपका बिंदु आप होने की संभावना हो की पहचान है/वस्तुओं का पता लगाने। ज्यादातर "ऑब्जेक्ट रिकॉग्नाइजेशन" मॉडल कोर एमएल + विजन के साथ उपयोग करते हैं (जिनमें से ऐप्पल उनके ML developer page पर पूर्व-रूपांतरित संस्करण प्रदान करता है) दृश्य क्लासिफायर हैं।यही कारण है, वे एक छवि को देखो और कहते हैं, की तरह कुछ नहीं "यह एक (बात) की एक तस्वीर है," "इस तस्वीर में एक (बात) है, (बाउंडिंग बॉक्स) में स्थित" ।

विजन क्लासिफायर से निपटने के लिए आसान एपीआई प्रदान करता है - आपके अनुरोध के परिणाम सरणी VNClassificationObservation ऑब्जेक्ट्स से भरे हुए हैं जो आपको बताती हैं कि दृश्य क्या है (या "शायद" है, आत्मविश्वास रेटिंग के साथ)।

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

यदि आप किसी ऐसे व्यक्ति से बात कर रहे हैं जो विजन पहले से ही जानता है कि अपने मॉडल का उपयोग करने के बजाय - चेहरे और क्यूआर कोड जैसी सामग्री - आप विजन एपीआई के साथ छवि फ्रेम में उन लोगों के स्थान प्राप्त कर सकते हैं।


2 डी छवि में एक वस्तु का पता लगाने के बाद, आप एआर में इसके साथ जुड़े 3 डी सामग्री प्रदर्शित (या 2 डी सामग्री प्रदर्शित है, लेकिन साथ सामग्री ARKit साथ 3 डी में तैनात कहा) करना चाहते हैं, तो आप की आवश्यकता होगी hit test 3 डी दुनिया के खिलाफ उन 2 डी छवि अंक।

एक बार जब आप इस चरण तक पहुंच जाते हैं, तो एआर सामग्री को हिट टेस्ट के साथ रखना कुछ ऐसा है जो by Apple और the community दोनों में पहले से ही बहुत अच्छी तरह से कवर किया गया है।

+0

हालांकि मुझे इस जानकारी में से कुछ पता था, इस तरह के एक समेकित तरीके से इसे एक साथ रखना बिल्कुल ताज़ा है ... वाह, इस तरह के एक महान, विस्तृत प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। मुझे इस तरह के जवाब पसंद हैं क्योंकि हर कोई विवरण और पैदल यात्रा से प्यार करता है, आपके द्वारा प्रदान की गई मार्गदर्शिका मुझे व्यस्त शोध और थोड़ी देर के लिए कार्यान्वित रखेगी। धन्यवाद @rickster – pythlang

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