Pustaka TensorFlow Lite untuk Mikrokontroler C++ adalah bagian dari repositori TensorFlow . Ini dirancang agar mudah dibaca, mudah dimodifikasi, teruji dengan baik, mudah diintegrasikan, dan kompatibel dengan TensorFlow Lite biasa.
Dokumen berikut menguraikan struktur dasar pustaka C++ dan memberikan informasi tentang cara membuat proyek Anda sendiri.
Struktur file
Direktori root micro
memiliki struktur yang relatif sederhana. Namun, karena terletak di dalam repositori TensorFlow yang luas, kami telah membuat skrip dan file proyek yang dibuat sebelumnya yang menyediakan file sumber yang relevan secara terpisah dalam berbagai lingkungan pengembangan tersemat.
File kunci
File terpenting untuk menggunakan interpreter TensorFlow Lite untuk Mikrokontroler terletak di root project, disertai dengan pengujian:
[`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
mengeluarkan informasi debug. -
micro_interpreter.h
berisi kode untuk menangani dan menjalankan model.
Lihat Memulai mikrokontroler untuk panduan penggunaan umum.
Sistem build menyediakan implementasi spesifik platform untuk file tertentu. Ini terletak di direktori dengan nama platform, misalnya cortex-m
.
Ada beberapa direktori lain, antara lain:
-
kernel
, yang berisi implementasi operasi dan kode terkait. -
tools
, yang berisi alat build dan outputnya. -
examples
, yang berisi kode contoh.
Mulai proyek baru
Kami merekomendasikan penggunaan contoh Hello World sebagai template untuk proyek baru. Anda bisa mendapatkan versinya untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.
Gunakan perpustakaan Arduino
Jika Anda menggunakan Arduino, contoh Hello World disertakan dalam pustaka Arduino_TensorFlowLite
Arduino, yang dapat Anda instal secara manual di Arduino IDE dan di Arduino Create .
Setelah perpustakaan ditambahkan, buka File -> Examples
. Anda akan melihat contoh di dekat bagian bawah daftar bernama TensorFlowLite:hello_world
. Pilih dan klik hello_world
untuk memuat contohnya. Anda kemudian dapat menyimpan salinan contoh dan menggunakannya sebagai dasar proyek Anda sendiri.
Hasilkan proyek untuk platform lain
TensorFlow Lite untuk Mikrokontroler mampu menghasilkan proyek mandiri yang berisi semua file sumber yang diperlukan, menggunakan Makefile
. Lingkungan yang didukung saat ini adalah Keil, Make, dan Mbed.
Untuk menghasilkan proyek ini dengan Make, clone repositori TensorFlow/tflite-micro dan jalankan perintah berikut:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Ini akan memakan waktu beberapa menit, karena harus mengunduh beberapa rantai alat besar untuk dependensinya. Setelah selesai, Anda akan melihat beberapa folder dibuat di dalam jalur seperti gen/linux_x86_64/prj/
(jalur persisnya bergantung pada sistem operasi host Anda). Folder ini berisi proyek yang dihasilkan dan file sumber.
Setelah menjalankan perintah, Anda akan dapat menemukan proyek Hello World di gen/linux_x86_64/prj/hello_world
. Misalnya, hello_world/keil
akan berisi proyek Keil.
Jalankan tes
Untuk membangun perpustakaan dan menjalankan semua pengujian unitnya, gunakan perintah berikut:
make -f tensorflow/lite/micro/tools/make/Makefile test
Untuk menjalankan pengujian individual, gunakan perintah berikut, ganti <test_name>
dengan nama pengujian:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Anda dapat menemukan nama tes di Makefile proyek. Misalnya, examples/hello_world/Makefile.inc
menentukan nama pengujian untuk contoh Hello World .
Bangun biner
Untuk membangun biner yang dapat dijalankan untuk proyek tertentu (seperti contoh aplikasi), gunakan perintah berikut, ganti <project_name>
dengan proyek yang ingin Anda bangun:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Misalnya, perintah berikut akan membuat biner untuk aplikasi Hello World :
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Secara default, proyek akan dikompilasi untuk sistem operasi host. Untuk menentukan arsitektur target yang berbeda, gunakan TARGET=
dan TARGET_ARCH=
. Contoh berikut menunjukkan cara membuat contoh Hello World untuk cortex-m0 generik:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Ketika target ditentukan, file sumber spesifik target apa pun yang tersedia akan digunakan sebagai pengganti kode asli. Misalnya, subdirektori examples/hello_world/cortex_m_generic
berisi implementasi SparkFun Edge dari file constants.cc
dan output_handler.cc
, yang akan digunakan ketika target cortex_m_generic
ditentukan.
Anda dapat menemukan nama proyek di Makefile proyek. Misalnya, examples/hello_world/Makefile.inc
menentukan nama biner untuk contoh Hello World .
Kernel yang dioptimalkan
Kernel referensi di root tensorflow/lite/micro/kernels
diimplementasikan dalam C/C++ murni, dan tidak menyertakan pengoptimalan perangkat keras khusus platform.
Versi kernel yang dioptimalkan disediakan di subdirektori. Misalnya, kernels/cmsis-nn
berisi beberapa kernel yang dioptimalkan yang menggunakan perpustakaan CMSIS-NN Arm.
Untuk menghasilkan proyek menggunakan kernel yang dioptimalkan, gunakan perintah berikut, ganti <subdirectory_name>
dengan nama subdirektori yang berisi optimasi:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Anda dapat menambahkan pengoptimalan Anda sendiri dengan membuat subfolder baru untuk pengoptimalan tersebut. Kami mendorong permintaan tarik untuk implementasi baru yang dioptimalkan.
Hasilkan perpustakaan Arduino
Jika Anda perlu membuat build perpustakaan baru, Anda dapat menjalankan skrip berikut dari repositori TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Pustaka yang dihasilkan dapat ditemukan di gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Port ke perangkat baru
Panduan tentang porting TensorFlow Lite untuk Mikrokontroler ke platform dan perangkat baru dapat ditemukan di micro/docs/new_platform_support.md
.