کتابخانه C ++ را بفهمید

TensorFlow Lite برای کتابخانه میکروکنترلرها C ++ بخشی از است مخزن TensorFlow . این طراحی شده است که قابل خواندن ، تغییر آسان ، آزمایش خوب ، یکپارچه سازی آسان و سازگار با TensorFlow Lite معمولی است.

سند زیر ساختار اساسی کتابخانه C ++ را تشریح می کند و اطلاعاتی را در مورد ایجاد پروژه خود ارائه می دهد.

ساختار پرونده

micro دایرکتوری ریشه دارای ساختار نسبتا ساده است. با این حال ، از آنجا که در داخل مخزن گسترده TensorFlow قرار دارد ، ما اسکریپت ها و پرونده های پروژه از پیش تولید شده ای را ایجاد کرده ایم که فایلهای منبع مربوطه را به طور جداگانه در محیط های مختلف توسعه یافته تعبیه شده ارائه می دهد.

پرونده های کلیدی

مهمترین پرونده ها برای استفاده از مفسر TensorFlow Lite برای میکروکنترلرها در ریشه پروژه قرار دارند ، همراه با آزمایش:

  • all_ops_resolver.h یا micro_mutable_op_resolver.h می توان مورد استفاده برای ارائه عملیات استفاده می شود توسط مفسر برای اجرای مدل. از آنجا که all_ops_resolver.h کشد در هر عمل در دسترس است، آن را با استفاده از یک مقدار زیادی از حافظه. در برنامه های کاربردی تولید، شما باید با استفاده micro_mutable_op_resolver.h به جلو و در تنها عملیات نیازهای مدل خود را.
  • micro_error_reporter.h خروجی اطلاعات اشکال زدایی.
  • micro_interpreter.h شامل کد برای دسته و مدل اجرا می شود.

مشاهده مطلع با میکروکنترلرها آغاز شده برای خرید از استفاده معمولی.

سیستم ساخت پیاده سازی های خاص سیستم عامل را برای برخی از پرونده ها فراهم می کند. این در یک دایرکتوری با نام پلت فرم قرار گرفته است، برای مثال sparkfun_edge .

چندین فهرست دیگر وجود دارد ، از جمله:

  • kernel ، که شامل پیاده سازی عملیات و کد مرتبط.
  • tools ، که شامل ابزار ساخت و خروجی خود را.
  • examples ، که شامل نمونه کد.

شروع یک پروژه جدید

ما توصیه می کنیم با استفاده از مثال Hello World به عنوان یک الگو برای پروژه های جدید. با دنبال کردن دستورالعمل های موجود در این بخش ، می توانید نسخه ای از آن را برای سیستم عامل مورد نظر خود به دست آورید.

از کتابخانه آردوینو استفاده کنید

اگر شما با استفاده آردوینو، به مثال Hello World در شامل Arduino_TensorFlowLite کتابخانه Arduino می، که شما می توانید از آردوینو IDE دانلود کنید و در آردوینو درست .

هنگامی که کتابخانه اضافه شده است، به File -> Examples . شما باید یک عنوان مثال در نزدیکی پایین از لیست به نام دیدن TensorFlowLite:hello_world . آن را انتخاب کنید و با کلیک بر hello_world برای بارگذاری به عنوان مثال. سپس می توانید نسخه ای از مثال را ذخیره کرده و از آن به عنوان اساس پروژه خود استفاده کنید.

پروژه هایی برای سیستم عامل های دیگر ایجاد کنید

TensorFlow Lite برای میکروکنترلرها قادر به تولید پروژه های مستقل است که شامل تمام فایل های منبع لازم، با استفاده از یک است Makefile . در حال حاضر محیط های پشتیبانی شده Keil ، Make و Mbed هستند.

برای تولید این پروژه ها با ساخت، کلون کردن مخزن TensorFlow و دستور زیر را اجرا کنید:

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

این کار چند دقیقه طول خواهد کشید ، زیرا باید چندین ابزار بزرگ برای وابستگی ها بارگیری شود. پس از آن به پایان رسید، شما باید برخی از پوشه ایجاد شده در داخل یک مسیر مانند دیدن tensorflow/lite/micro/tools/make/gen/linux_x86_64/prj/ (مسیر دقیق بستگی به سیستم عامل میزبان خود را). این پوشه ها حاوی پروژه تولید شده و پرونده های منبع هستند.

پس از اجرای دستور، شما قادر خواهید بود برای پیدا کردن پروژه Hello World در tensorflow/lite/micro/tools/make/gen/linux_x86_64/prj/hello_world . به عنوان مثال، hello_world/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= . به عنوان مثال نشان می دهد که چگونه به زیر ساخت مثال Hello World برای SparkFun لبه:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge hello_world_bin

وقتی یک هدف مشخص می شود ، از هر پرونده منبع خاص خاص هدف به جای کد اصلی استفاده می شود. به عنوان مثال، دایرکتوری فرعی examples/hello_world/sparkfun_edge شامل پیاده سازی SparkFun لبه از فایل های constants.cc و output_handler.cc ، که می شود زمانی که هدف استفاده خواهد شد sparkfun_edge مشخص شده است.

می توانید نام پروژه ها را در Makefiles پروژه پیدا کنید. به عنوان مثال، examples/hello_world/Makefile.inc نام دودویی برای مثال Hello World مشخص می کند.

هسته های بهینه شده

دانه مرجع در ریشه 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 IDE در دسترس است.

اگر نیاز به ایجاد ساخت جدیدی از کتابخانه دارید ، می توانید اسکریپت زیر را از مخزن TensorFlow اجرا کنید:

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

کتابخانه حاصل را می توان در یافت tensorflow/lite/micro/tools/make/gen/arduino_x86_64/prj/tensorflow_lite.zip .

به دستگاه های جدید منتقل شوید

راهنمایی در مورد انتقال TensorFlow Lite برای میکروکنترلرها به سیستم عامل و دستگاه جدید را می توان در یافت micro/README.md .