Library C++ TensorFlow Lite untuk Mikrokontroler adalah bagian dari repositori TensorFlow. Platform ini dirancang agar dapat dibaca, mudah dimodifikasi, teruji dengan baik, mudah diintegrasikan, dan kompatibel dengan TensorFlow Lite biasa.
Dokumen berikut menguraikan struktur dasar library C++ dan memberikan informasi tentang pembuatan project Anda sendiri.
Struktur file
Direktori
root
micro
memiliki struktur yang relatif sederhana. Namun, karena lokasi ini terletak di dalam repositori TensorFlow yang ekstensif, kami telah membuat skrip dan file project siap pakai yang menyediakan file sumber yang relevan secara terpisah dalam berbagai lingkungan pengembangan tersemat.
File kunci
File paling penting untuk menggunakan penafsir 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
menghasilkan informasi debug.micro_interpreter.h
berisi kode untuk menangani dan menjalankan model.
Lihat Mulai menggunakan mikrokontroler untuk panduan penggunaan umum.
Sistem build menyediakan implementasi khusus platform untuk file
tertentu. File ini berada di direktori dengan nama platform, misalnya
cortex-m
.
Ada beberapa direktori lain, termasuk:
kernel
, yang berisi implementasi operasi dan kode terkait.tools
, yang berisi alat build dan outputnya.examples
, yang berisi kode contoh.
Mulai project baru
Sebaiknya gunakan contoh Hello World sebagai template untuk project baru. Anda bisa mendapatkan versi ekstensi tersebut untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.
Menggunakan library Arduino
Jika Anda menggunakan Arduino, contoh Hello World disertakan dalam
library Arduino Arduino_TensorFlowLite
, yang dapat Anda instal secara manual di
Arduino IDE dan di Arduino Create.
Setelah library ditambahkan, buka File -> Examples
. Anda akan melihat
contoh di dekat bagian bawah daftar bernama TensorFlowLite:hello_world
. Pilih
lalu klik hello_world
untuk memuat contoh. Kemudian, Anda dapat menyimpan salinan
contoh dan menggunakannya sebagai dasar project Anda sendiri.
Membuat project untuk platform lain
TensorFlow Lite untuk Mikrokontroler dapat membuat project mandiri
yang berisi semua file sumber yang diperlukan, menggunakan Makefile
. Lingkungan
yang didukung saat ini adalah Keil, Make, dan Mbed.
Untuk membuat project ini dengan Make, clone repositori TensorFlow/tflite-micro dan jalankan perintah berikut:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Proses ini memerlukan waktu beberapa menit karena harus mendownload beberapa toolchain besar untuk dependensi. Setelah selesai, Anda akan melihat beberapa folder yang dibuat
di dalam jalur seperti gen/linux_x86_64/prj/
(jalur
yang tepat bergantung pada sistem operasi host Anda). Folder ini berisi
file project dan sumber yang dihasilkan.
Setelah menjalankan perintah, Anda akan dapat menemukan project Hello World di
gen/linux_x86_64/prj/hello_world
. Misalnya, hello_world/keil
akan berisi project Keil.
Menjalankan pengujian
Untuk membangun library dan menjalankan semua pengujian unit, gunakan perintah berikut:
make -f tensorflow/lite/micro/tools/make/Makefile test
Untuk menjalankan pengujian individual, gunakan perintah berikut, dengan mengganti <test_name>
dengan nama pengujian:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Anda dapat menemukan nama pengujian di Makefile project. Misalnya,
examples/hello_world/Makefile.inc
menentukan nama pengujian untuk contoh Hello
World.
Membuat biner
Untuk mem-build biner yang dapat dijalankan untuk project tertentu (seperti aplikasi contoh),
gunakan perintah berikut, dan ganti <project_name>
dengan project yang ingin Anda
build:
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, project 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
Saat target ditentukan, semua file sumber khusus target yang tersedia akan digunakan sebagai pengganti kode asli. Misalnya, subdirektori
examples/hello_world/cortex_m_generic
berisi implementasi
SparkFun Edge untuk file constants.cc
dan output_handler.cc
, yang akan digunakan saat
target cortex_m_generic
ditentukan.
Anda dapat menemukan nama project di Makefile project. 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 hardware
khusus platform.
Versi {i>kernel<i} yang dioptimalkan disediakan dalam subdirektori. Misalnya,
kernels/cmsis-nn
berisi beberapa kernel yang dioptimalkan yang memanfaatkan library
CMSIS-NN Arm.
Untuk membuat project menggunakan kernel yang dioptimalkan, gunakan perintah berikut,
dengan mengganti <subdirectory_name>
dengan nama subdirektori yang berisi
pengoptimalan:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Anda dapat menambahkan pengoptimalan sendiri dengan membuat subfolder baru untuk pengoptimalan tersebut. Kami menyarankan permintaan pull untuk implementasi baru yang dioptimalkan.
Membuat library Arduino
Jika perlu membuat build library baru, Anda dapat menjalankan skrip berikut dari repositori TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Library yang dihasilkan dapat ditemukan di
gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Port ke perangkat baru
Panduan tentang cara melakukan porting TensorFlow Lite untuk Mikrokontroler ke platform dan perangkat baru dapat ditemukan di micro/docs/new_platform_support.md
.