माइक्रोकंट्रोलर्स C++ लाइब्रेरी के लिए TensorFlow Lite , TensorFlow रिपॉजिटरी का हिस्सा है। इसे पढ़ने योग्य, संशोधित करने में आसान, अच्छी तरह से परीक्षित, एकीकृत करने में आसान और नियमित TensorFlow Lite के साथ संगत करने के लिए डिज़ाइन किया गया है।
निम्न दस्तावेज़ C++ लाइब्रेरी की मूल संरचना की रूपरेखा देता है और आपकी अपनी परियोजना बनाने के बारे में जानकारी प्रदान करता है।
फ़ाइल संरचना
micro
रूट डायरेक्टरी में अपेक्षाकृत सरल संरचना होती है। हालाँकि, चूंकि यह व्यापक TensorFlow रिपॉजिटरी के अंदर स्थित है, इसलिए हमने स्क्रिप्ट और प्री-जेनरेट की गई प्रोजेक्ट फाइलें बनाई हैं जो विभिन्न एम्बेडेड विकास वातावरणों के भीतर प्रासंगिक स्रोत फाइलें अलगाव में प्रदान करती हैं।
कुंजी फ़ाइलें
माइक्रोकंट्रोलर्स दुभाषिया के लिए TensorFlow Lite का उपयोग करने के लिए सबसे महत्वपूर्ण फाइलें परीक्षण के साथ परियोजना की जड़ में स्थित हैं:
[`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 का उपयोग कर रहे हैं, तो हैलो वर्ल्ड उदाहरण Arduino_TensorFlowLite
Arduino लाइब्रेरी में शामिल है, जिसे आप मैन्युअल रूप से Arduino IDE और Arduino Create में इंस्टॉल कर सकते हैं।
एक बार लाइब्रेरी जुड़ जाने के बाद, File -> Examples
पर जाएँ। आपको TensorFlowLite:hello_world
नाम की सूची के नीचे एक उदाहरण देखना चाहिए। इसे चुनें और उदाहरण लोड करने के लिए hello_world
पर क्लिक करें। फिर आप उदाहरण की एक प्रति सहेज सकते हैं और इसे अपने स्वयं के प्रोजेक्ट के आधार के रूप में उपयोग कर सकते हैं।
अन्य प्लेटफॉर्म के लिए प्रोजेक्ट जेनरेट करें
माइक्रोकंट्रोलर्स के लिए TensorFlow Lite Makefile
का उपयोग करके स्टैंडअलोन प्रोजेक्ट उत्पन्न करने में सक्षम है जिसमें सभी आवश्यक स्रोत फ़ाइलें शामिल हैं। वर्तमान समर्थित वातावरण केइल, मेक और एमबेड हैं।
इन परियोजनाओं को बनाने के लिए, 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=
का उपयोग करें। निम्न उदाहरण दिखाता है कि जेनेरिक कॉर्टेक्स-m0 के लिए हैलो वर्ल्ड उदाहरण कैसे बनाया जाए:
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
की जड़ में संदर्भ कर्नेल शुद्ध C/C++ में कार्यान्वित किए जाते हैं, और इसमें प्लेटफ़ॉर्म-विशिष्ट हार्डवेयर अनुकूलन शामिल नहीं होते हैं।
गुठली के अनुकूलित संस्करण उपनिर्देशिकाओं में प्रदान किए जाते हैं। उदाहरण के लिए, 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
में पाया जा सकता है।