C++ লাইব্রেরি বুঝুন

মাইক্রোকন্ট্রোলার সি++ লাইব্রেরির জন্য টেনসরফ্লো লাইট টেনসরফ্লো রিপোজিটরির অংশ। এটি পঠনযোগ্য, পরিবর্তন করা সহজ, ভাল-পরীক্ষিত, সংহত করা সহজ এবং নিয়মিত টেনসরফ্লো লাইটের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে।

নিম্নলিখিত নথিটি 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.

সাধারণ ব্যবহারের একটি ওয়াকথ্রু জন্য মাইক্রোকন্ট্রোলার দিয়ে শুরু করুন দেখুন।

বিল্ড সিস্টেম নির্দিষ্ট ফাইলের প্ল্যাটফর্ম-নির্দিষ্ট বাস্তবায়নের জন্য প্রদান করে। এগুলি প্ল্যাটফর্মের নাম সহ একটি ডিরেক্টরিতে অবস্থিত, উদাহরণস্বরূপ cortex-m

অন্যান্য বেশ কয়েকটি ডিরেক্টরি বিদ্যমান, সহ:

  • kernel , যা অপারেশন বাস্তবায়ন এবং সংশ্লিষ্ট কোড ধারণ করে।
  • tools , যাতে বিল্ড টুল এবং তাদের আউটপুট থাকে।
  • examples , যা নমুনা কোড ধারণ করে।

একটি নতুন প্রকল্প শুরু করুন

আমরা নতুন প্রকল্পের জন্য একটি টেমপ্লেট হিসাবে Hello World উদাহরণ ব্যবহার করার পরামর্শ দিই। আপনি এই বিভাগে নির্দেশাবলী অনুসরণ করে আপনার পছন্দের প্ল্যাটফর্মের জন্য এটির একটি সংস্করণ পেতে পারেন।

Arduino লাইব্রেরি ব্যবহার করুন

আপনি যদি Arduino ব্যবহার করেন, Hello World উদাহরণটি Arduino_TensorFlowLite Arduino লাইব্রেরিতে অন্তর্ভুক্ত করা হয়েছে, যা আপনি Arduino IDE এবং Arduino Create- এ ম্যানুয়ালি ইনস্টল করতে পারেন।

লাইব্রেরি যোগ হয়ে গেলে, File -> Examples এ যান। আপনি TensorFlowLite:hello_world নামের তালিকার নীচে একটি উদাহরণ দেখতে পাবেন। এটি নির্বাচন করুন এবং উদাহরণ লোড করতে hello_world ক্লিক করুন। তারপরে আপনি উদাহরণের একটি অনুলিপি সংরক্ষণ করতে পারেন এবং এটি আপনার নিজের প্রকল্পের ভিত্তি হিসাবে ব্যবহার করতে পারেন।

অন্যান্য প্ল্যাটফর্মের জন্য প্রকল্প তৈরি করুন

মাইক্রোকন্ট্রোলারের জন্য টেনসরফ্লো লাইট একটি Makefile ব্যবহার করে সমস্ত প্রয়োজনীয় সোর্স ফাইল ধারণ করে এমন একক প্রকল্প তৈরি করতে সক্ষম। বর্তমান সমর্থিত পরিবেশগুলি হল Keil, Make, এবং Mbed।

মেক দিয়ে এই প্রকল্পগুলি তৈরি করতে, টেনসরফ্লো/টিফ্লাইট-মাইক্রো সংগ্রহস্থল ক্লোন করুন এবং নিম্নলিখিত কমান্ডটি চালান:

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>

আপনি প্রকল্পের Makefiles মধ্যে পরীক্ষার নাম খুঁজে পেতে পারেন. উদাহরণ স্বরূপ, 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 এ SparkFun Edge ফাইল constants.cc এবং output_handler.cc এর বাস্তবায়ন রয়েছে, যেটি ব্যবহার করা হবে যখন টার্গেট cortex_m_generic নির্দিষ্ট করা হবে।

আপনি প্রকল্পের মেকফাইলে প্রকল্পের নামগুলি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, examples/hello_world/Makefile.inc হ্যালো ওয়ার্ল্ড উদাহরণের জন্য বাইনারি নামগুলি নির্দিষ্ট করে।

অপ্টিমাইজ করা কার্নেল

tensorflow/lite/micro/kernels মূলের রেফারেন্স কার্নেলগুলি বিশুদ্ধ C/C++ এ প্রয়োগ করা হয় এবং প্ল্যাটফর্ম-নির্দিষ্ট হার্ডওয়্যার অপ্টিমাইজেশানগুলি অন্তর্ভুক্ত করে না।

সাবডিরেক্টরিতে কার্নেলের অপ্টিমাইজ করা সংস্করণ সরবরাহ করা হয়। উদাহরণস্বরূপ, kernels/cmsis-nn বেশ কিছু অপ্টিমাইজ করা কার্নেল রয়েছে যা আর্মের CMSIS-NN লাইব্রেরি ব্যবহার করে।

অপ্টিমাইজ করা কার্নেল ব্যবহার করে প্রজেক্ট তৈরি করতে, নিচের কমান্ডটি ব্যবহার করুন, অপ্টিমাইজেশান ধারণকারী সাবডিরেক্টরির নামের সাথে <subdirectory_name> প্রতিস্থাপন করুন:

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

আপনি তাদের জন্য একটি নতুন সাবফোল্ডার তৈরি করে আপনার নিজস্ব অপ্টিমাইজেশন যোগ করতে পারেন। আমরা নতুন অপ্টিমাইজ করা বাস্তবায়নের জন্য অনুরোধগুলিকে উৎসাহিত করি।

Arduino লাইব্রেরি তৈরি করুন

আপনি যদি লাইব্রেরির একটি নতুন বিল্ড তৈরি করতে চান তবে আপনি টেনসরফ্লো রিপোজিটরি থেকে নিম্নলিখিত স্ক্রিপ্টটি চালাতে পারেন:

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

ফলস্বরূপ লাইব্রেরি gen/arduino_x86_64/prj/tensorflow_lite.zip এ পাওয়া যাবে।

নতুন ডিভাইসে পোর্ট

মাইক্রোকন্ট্রোলারের জন্য নতুন প্ল্যাটফর্ম এবং ডিভাইসগুলিতে টেনসরফ্লো লাইট পোর্ট করার নির্দেশিকা micro/docs/new_platform_support.md এ পাওয়া যাবে।