فهم مكتبة C ++

تعد مكتبة TensorFlow Lite for Microcontrollers C++ جزءًا من مستودع TensorFlow . لقد تم تصميمه ليكون قابلاً للقراءة، وسهل التعديل، وتم اختباره جيدًا، وسهل التكامل، ومتوافق مع TensorFlow Lite العادي.

يوضح المستند التالي البنية الأساسية لمكتبة C++ ويوفر معلومات حول إنشاء مشروعك الخاص.

هيكل الملف

يحتوي الدليل الجذر micro على بنية بسيطة نسبيًا. ومع ذلك، نظرًا لوجوده داخل مستودع TensorFlow الشامل، فقد أنشأنا نصوصًا برمجية وملفات مشروع تم إنشاؤها مسبقًا توفر ملفات المصدر ذات الصلة بمعزل عن بيئات التطوير المضمنة المختلفة.

الملفات الرئيسية

أهم الملفات لاستخدام مترجم TensorFlow Lite for Microcontrollers موجودة في جذر المشروع، مصحوبة بالاختبارات:

[`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، فسيتم تضمين مثال Hello World في مكتبة Arduino_TensorFlowLite Arduino، والتي يمكنك تثبيتها يدويًا في Arduino IDE وفي Arduino Create .

بمجرد إضافة المكتبة، انتقل إلى File -> Examples . من المفترض أن تشاهد مثالاً بالقرب من أسفل القائمة يسمى TensorFlowLite:hello_world . حدده وانقر فوق hello_world لتحميل المثال. يمكنك بعد ذلك حفظ نسخة من المثال واستخدامه كأساس لمشروعك الخاص.

إنشاء مشاريع لمنصات أخرى

يستطيع TensorFlow Lite for Microcontrollers إنشاء مشاريع مستقلة تحتوي على كافة الملفات المصدر الضرورية، باستخدام ملف Makefile . البيئات المدعومة حاليًا هي Keil وMake وMbed.

لإنشاء هذه المشاريع باستخدام Make، انسخ مستودع TensorFlow/tflite-micro وقم بتشغيل الأمر التالي:

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

سيستغرق هذا بضع دقائق، حيث يتعين عليه تنزيل بعض سلاسل الأدوات الكبيرة للتبعيات. بمجرد الانتهاء، يجب أن ترى بعض المجلدات التي تم إنشاؤها داخل مسار مثل gen/linux_x86_64/prj/ (يعتمد المسار الدقيق على نظام التشغيل المضيف الخاص بك). تحتوي هذه المجلدات على المشروع الذي تم إنشاؤه وملفات المصدر.

بعد تشغيل الأمر، ستتمكن من العثور على مشاريع Hello World في 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 أسماء الاختبار لمثال Hello World .

بناء الثنائيات

لإنشاء ثنائي قابل للتشغيل لمشروع معين (مثل تطبيق مثال)، استخدم الأمر التالي، مع استبدال <project_name> بالمشروع الذي ترغب في إنشائه:

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

على سبيل المثال، سيقوم الأمر التالي بإنشاء ملف ثنائي لتطبيق Hello World :

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

بشكل افتراضي، سيتم ترجمة المشروع لنظام التشغيل المضيف. لتحديد بنية مستهدفة مختلفة، استخدم TARGET= و TARGET_ARCH= . يوضح المثال التالي كيفية إنشاء مثال Hello World لـ cortex-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 على تطبيقات SparkFun Edge للملفات constants.cc و output_handler.cc ، والتي سيتم استخدامها عند تحديد cortex_m_generic الهدف.

يمكنك العثور على أسماء المشاريع في Makefiles المشروع. على سبيل المثال، تحدد examples/hello_world/Makefile.inc الأسماء الثنائية لمثال Hello World .

حبات الأمثل

يتم تنفيذ النوى المرجعية في جذر tensorflow/lite/micro/kernels بلغة C/C++ الخالصة، ولا تتضمن تحسينات الأجهزة الخاصة بالنظام الأساسي.

يتم توفير الإصدارات المحسنة من النوى في الدلائل الفرعية. على سبيل المثال، يحتوي kernels/cmsis-nn على عدة حبات محسنة تستفيد من مكتبة Arm’s CMSIS-NN.

لإنشاء مشاريع باستخدام النوى المحسنة، استخدم الأمر التالي، مع استبدال <subdirectory_name> باسم الدليل الفرعي الذي يحتوي على التحسينات:

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

يمكنك إضافة التحسينات الخاصة بك عن طريق إنشاء مجلد فرعي جديد لها. نحن نشجع طلبات السحب للتطبيقات المحسنة الجديدة.

إنشاء مكتبة اردوينو

إذا كنت بحاجة إلى إنشاء بنية جديدة للمكتبة، فيمكنك تشغيل البرنامج النصي التالي من مستودع 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 .