सी++ लाइब्रेरी को समझें

माइक्रोकंट्रोलर्स C++ लाइब्रेरी के लिए TensorFlow Lite , TensorFlow रिपॉजिटरी का हिस्सा है। इसे पढ़ने योग्य, संशोधित करने में आसान, अच्छी तरह से परीक्षण किया हुआ, एकीकृत करने में आसान और नियमित TensorFlow Lite के साथ संगत होने के लिए डिज़ाइन किया गया है।

निम्नलिखित दस्तावेज़ C++ लाइब्रेरी की मूल संरचना की रूपरेखा प्रस्तुत करता है और आपका अपना प्रोजेक्ट बनाने के बारे में जानकारी प्रदान करता है।

फ़ाइल संरचना

micro रूट निर्देशिका की संरचना अपेक्षाकृत सरल है। हालाँकि, चूंकि यह व्यापक TensorFlow रिपॉजिटरी के अंदर स्थित है, इसलिए हमने स्क्रिप्ट और पूर्व-निर्मित प्रोजेक्ट फ़ाइलें बनाई हैं जो विभिन्न एम्बेडेड विकास वातावरणों के भीतर प्रासंगिक स्रोत फ़ाइलों को अलगाव में प्रदान करती हैं।

मुख्य फ़ाइलें

माइक्रोकंट्रोलर्स दुभाषिया के लिए टेन्सरफ्लो लाइट का उपयोग करने के लिए सबसे महत्वपूर्ण फाइलें परीक्षण के साथ परियोजना की जड़ में स्थित हैं:

[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
  • micro_error_reporter.h डिबग जानकारी आउटपुट करता है।
  • micro_interpreter.h में मॉडल को संभालने और चलाने के लिए कोड होता है।

सामान्य उपयोग की पूरी जानकारी के लिए माइक्रोकंट्रोलर के साथ शुरुआत करें देखें।

बिल्ड सिस्टम कुछ फ़ाइलों के प्लेटफ़ॉर्म-विशिष्ट कार्यान्वयन के लिए प्रदान करता है। ये प्लेटफ़ॉर्म नाम के साथ एक निर्देशिका में स्थित हैं, उदाहरण के लिए cortex-m

कई अन्य निर्देशिकाएँ मौजूद हैं, जिनमें शामिल हैं:

  • kernel , जिसमें ऑपरेशन कार्यान्वयन और संबंधित कोड शामिल हैं।
  • tools , जिसमें बिल्ड टूल्स और उनके आउटपुट शामिल हैं।
  • examples , जिसमें नमूना कोड शामिल है।

एक नया प्रोजेक्ट शुरू करें

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

Arduino लाइब्रेरी का उपयोग करें

यदि आप Arduino का उपयोग कर रहे हैं, तो Hello World उदाहरण Arduino_TensorFlowLite Arduino लाइब्रेरी में शामिल है, जिसे आप Arduino IDE और Arduino Create में मैन्युअल रूप से इंस्टॉल कर सकते हैं।

एक बार लाइब्रेरी जुड़ जाने के बाद, File -> Examples पर जाएँ। आपको सूची के नीचे TensorFlowLite:hello_world नामक एक उदाहरण देखना चाहिए। इसे चुनें और उदाहरण लोड करने के लिए hello_world पर क्लिक करें। फिर आप उदाहरण की एक प्रति सहेज सकते हैं और इसे अपने प्रोजेक्ट के आधार के रूप में उपयोग कर सकते हैं।

अन्य प्लेटफार्मों के लिए प्रोजेक्ट तैयार करें

माइक्रोकंट्रोलर्स के लिए टेन्सरफ्लो लाइट Makefile उपयोग करके स्टैंडअलोन प्रोजेक्ट उत्पन्न करने में सक्षम है जिसमें सभी आवश्यक स्रोत फ़ाइलें शामिल हैं। वर्तमान समर्थित वातावरण Keil, Make, और Mbed हैं।

मेक के साथ इन परियोजनाओं को उत्पन्न करने के लिए, TensorFlow/tflite-micro रिपॉजिटरी को क्लोन करें और निम्नलिखित कमांड चलाएँ:

make -f tensorflow/lite/micro/tools/make/Makefile generate_projects

इसमें कुछ मिनट लगेंगे, क्योंकि इसमें निर्भरता के लिए कुछ बड़ी टूलचेन डाउनलोड करनी होंगी। एक बार यह समाप्त हो जाने पर, आपको gen/linux_x86_64/prj/ जैसे पथ के अंदर बनाए गए कुछ फ़ोल्डर्स देखने चाहिए (सटीक पथ आपके होस्ट ऑपरेटिंग सिस्टम पर निर्भर करता है)। इन फ़ोल्डरों में जेनरेट की गई प्रोजेक्ट और स्रोत फ़ाइलें शामिल हैं।

कमांड चलाने के बाद, आप gen/linux_x86_64/prj/hello_world में हैलो वर्ल्ड प्रोजेक्ट ढूंढ पाएंगे। उदाहरण के लिए, hello_world/keil Keil प्रोजेक्ट शामिल होगा।

परीक्षण चलाएँ

लाइब्रेरी बनाने और उसके सभी यूनिट परीक्षण चलाने के लिए, निम्नलिखित कमांड का उपयोग करें:

make -f tensorflow/lite/micro/tools/make/Makefile test

एक व्यक्तिगत परीक्षण चलाने के लिए, <test_name> परीक्षण के नाम से प्रतिस्थापित करते हुए, निम्नलिखित कमांड का उपयोग करें:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

आप प्रोजेक्ट के मेकफ़ाइल्स में परीक्षण नाम पा सकते हैं। उदाहरण के लिए, examples/hello_world/Makefile.inc हैलो वर्ल्ड उदाहरण के लिए परीक्षण नाम निर्दिष्ट करता है।

बायनेरिज़ बनाएँ

किसी दिए गए प्रोजेक्ट के लिए एक रन करने योग्य बाइनरी बनाने के लिए (जैसे कि एक उदाहरण एप्लिकेशन), निम्नलिखित कमांड का उपयोग करें, <project_name> उस प्रोजेक्ट से बदलें जिसे आप बनाना चाहते हैं:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

उदाहरण के लिए, निम्न कमांड हैलो वर्ल्ड एप्लिकेशन के लिए एक बाइनरी बनाएगा:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

डिफ़ॉल्ट रूप से, प्रोजेक्ट होस्ट ऑपरेटिंग सिस्टम के लिए संकलित किया जाएगा। एक भिन्न लक्ष्य आर्किटेक्चर निर्दिष्ट करने के लिए, TARGET= और TARGET_ARCH= का उपयोग करें। निम्नलिखित उदाहरण दिखाता है कि जेनेरिक कॉर्टेक्स-एम0 के लिए हैलो वर्ल्ड उदाहरण कैसे बनाया जाए:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

जब कोई लक्ष्य निर्दिष्ट किया जाता है, तो मूल कोड के स्थान पर किसी भी उपलब्ध लक्ष्य-विशिष्ट स्रोत फ़ाइलों का उपयोग किया जाएगा। उदाहरण के लिए, उपनिर्देशिका examples/hello_world/cortex_m_generic में constants.cc और output_handler.cc फाइलों के स्पार्कफन एज कार्यान्वयन शामिल हैं, जिनका उपयोग लक्ष्य cortex_m_generic निर्दिष्ट होने पर किया जाएगा।

आप प्रोजेक्ट के नाम प्रोजेक्ट के मेकफ़ाइल्स में पा सकते हैं। उदाहरण के लिए, examples/hello_world/Makefile.inc हैलो वर्ल्ड उदाहरण के लिए बाइनरी नाम निर्दिष्ट करता है।

अनुकूलित गुठली

tensorflow/lite/micro/kernels की जड़ में संदर्भ कर्नेल शुद्ध सी/सी++ में कार्यान्वित किए जाते हैं, और इसमें प्लेटफ़ॉर्म-विशिष्ट हार्डवेयर अनुकूलन शामिल नहीं होते हैं।

कर्नेल के अनुकूलित संस्करण उपनिर्देशिकाओं में उपलब्ध कराए गए हैं। उदाहरण के लिए, kernels/cmsis-nn में कई अनुकूलित कर्नेल शामिल हैं जो आर्म की सीएमएसआईएस-एनएन लाइब्रेरी का उपयोग करते हैं।

अनुकूलित कर्नेल का उपयोग करके प्रोजेक्ट उत्पन्न करने के लिए, निम्नलिखित कमांड का उपयोग करें, <subdirectory_name> को अनुकूलन वाली उपनिर्देशिका के नाम से बदलें:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

आप उनके लिए एक नया सबफ़ोल्डर बनाकर अपने स्वयं के अनुकूलन जोड़ सकते हैं। हम नए अनुकूलित कार्यान्वयन के लिए पुल अनुरोधों को प्रोत्साहित करते हैं।

Arduino लाइब्रेरी जेनरेट करें

यदि आपको लाइब्रेरी का नया निर्माण करने की आवश्यकता है, तो आप TensorFlow रिपॉजिटरी से निम्नलिखित स्क्रिप्ट चला सकते हैं:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

परिणामी लाइब्रेरी gen/arduino_x86_64/prj/tensorflow_lite.zip में पाई जा सकती है।

नए उपकरणों में पोर्ट करें

माइक्रोकंट्रोलर्स के लिए TensorFlow Lite को नए प्लेटफ़ॉर्म और डिवाइस पर पोर्ट करने का मार्गदर्शन micro/docs/new_platform_support.md में पाया जा सकता है।