הבן את ספריית 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

אם אתה משתמש ב-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 לקורטקס-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 מכיל כמה גרעינים מותאמים שעושים שימוש בספריית CMSIS-NN של Arm.

כדי ליצור פרויקטים באמצעות גרעינים מותאמים, השתמש בפקודה הבאה, תוך החלפת <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 .