تعتبر مكتبة LiteRT for Microcontrollers C++ جزءًا من مستودع TensorFlow. فهي مُصمَّمة لتكون سهلة القراءة والتعديل والاختبار الجيد والدمج ومتوافقًا مع LiteRT العادي.
يوضح المستند التالي الهيكل الأساسي لمكتبة C++ وتوفر معلومات حول إنشاء مشروعك الخاص.
بنية الملف
تشير رسالة الأشكال البيانية
micro
الدليل الجذر له بنية بسيطة نسبيًا. ومع ذلك، نظرًا لوقوعها
في مستودع TensorFlow الواسع، ننشئ نصوصًا برمجية
ملفات المشاريع المنشأة مسبقًا والتي توفر ملفات المصدر ذات الصلة بمعزل عن
ضمن مختلف بيئات التطوير المضمنة.
الملفات الأساسية
أهم ملفات استخدام LiteRT لوحدات التحكم الدقيقة في جذور المشروع، مصحوبة بالاختبارات التالية:
[`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
, الذي يحتوي على رمز نموذجي.
بدء مشروع جديد
ننصح باستخدام مثال Hello World كنموذج للمشاريع الجديدة. إِنْتَ يمكنك الحصول على نسخة منها للنظام الأساسي الذي تختاره من خلال اتّباع الإرشادات الواردة في هذا القسم.
استخدام مكتبة Arduino
إذا كنت تستخدم Arduino، يتم تضمين مثال Hello World في
Arduino_TensorFlowLite
مكتبة Arduino، التي يمكنك تثبيتها يدويًا في
Arduino IDE وفي Arduino Create
بعد إضافة المكتبة، انتقِل إلى File -> Examples
. من المفترض أن ترى
المثال بالقرب من أسفل القائمة المسماة TensorFlowLite:hello_world
. اختيار
وانقر على hello_world
لتحميل المثال. يمكنك بعد ذلك حفظ نسخة من
المثال واستخدامها كأساس لمشروعك الخاص.
إنشاء مشاريع للمنصات الأخرى
بإمكان LiteRT لوحدات التحكم الدقيقة إنشاء مشاريع مستقلة
تحتوي على جميع ملفات المصدر اللازمة باستخدام 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
الأسماء التجريبية لعبارة مرحبًا
مثال على العالم.
إنشاء برامج ثنائية
لإنشاء برنامج ثنائي قابل للتنفيذ لمشروع معيّن (مثل تطبيق نموذجي)،
استخدام الأمر التالي، مع استبدال <project_name>
بالمشروع الذي تريده
من أجل إنشاؤها:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
على سبيل المثال، سينشئ الأمر التالي نصًا ثنائيًا لكلمة Hello World. app:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
بشكل افتراضي، سيتم تجميع المشروع لنظام التشغيل المضيف. إلى
تحديد بنية هدف مختلفة، استخدِم TARGET=
وTARGET_ARCH=
. تشير رسالة الأشكال البيانية
يوضح المثال التالي كيفية إنشاء مثال Hello World لكلمة عامة
القشرة 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
الأسماء الثنائية لعبارة مرحبًا
مثال على العالم.
النواة المحسَّنة
النواة المرجعية في جذر 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:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
يمكن العثور على المكتبة الناتجة في
gen/arduino_x86_64/prj/tensorflow_lite.zip
نقل البيانات إلى أجهزة جديدة
إرشادات حول نقل LiteRT لوحدات التحكم الدقيقة إلى منصات
الأجهزة يمكن العثور عليها في
micro/docs/new_platform_support.md