LiteRT for Microcontrollers C++ adalah bagian dari Repositori TensorFlow. Dirancang agar dapat dibaca, mudah dimodifikasi, teruji dengan baik, mudah diintegrasikan, dan kompatibel dengan LiteRT biasa.
Dokumen berikut menguraikan struktur dasar dari {i>library<i} C++ dan memberikan informasi tentang pembuatan proyek Anda sendiri.
Struktur file
Tujuan
micro
direktori {i>root <i}memiliki struktur
yang relatif sederhana. Namun, karena terletak
di dalam repositori TensorFlow yang luas, 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 terpenting penggunaan LiteRT untuk Microcontroller 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
akan menghasilkan informasi debug.micro_interpreter.h
berisi kode untuk menangani dan menjalankan model.
Lihat Memulai mikrokontroler untuk panduan penggunaan umum.
Sistem pembangunan menyediakan untuk implementasi
spesifik per platform dari
. File ini berada di direktori dengan nama platform, misalnya
cortex-m
Tersedia beberapa direktori lain, termasuk:
kernel
, yang berisi implementasi operasi dan kode terkait.tools
, yang berisi alat build dan output-nya.examples
, yang berisi kode contoh.
Mulai project baru
Sebaiknya gunakan contoh Hello World sebagai template untuk project baru. Anda dapat memperoleh versi untuk platform pilihan Anda dengan mengikuti petunjuk di bagian ini.
Menggunakan library Arduino
Jika Anda menggunakan Arduino, contoh Hello World disertakan dalam
Arduino_TensorFlowLite
Library Arduino, 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. Anda kemudian dapat menyimpan salinan
contoh dan menggunakannya sebagai dasar proyek Anda sendiri.
Membuat project untuk platform lain
LiteRT untuk Microcontroller dapat membuat project mandiri
yang berisi semua file sumber yang diperlukan, menggunakan Makefile
. Saat ini
yang didukung 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 akan memakan waktu beberapa menit, karena ia harus mengunduh
dependensi tersebut. 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-folder ini berisi
file sumber dan proyek yang dihasilkan.
Setelah menjalankan perintah, Anda akan dapat menemukan project Hello World di
gen/linux_x86_64/prj/hello_world
. Sebagai
contoh, hello_world/keil
akan berisi project Keil.
Menjalankan pengujian
Untuk membangun library dan menjalankan semua pengujian unitnya, gunakan perintah berikut:
make -f tensorflow/lite/micro/tools/make/Makefile test
Untuk menjalankan pengujian individu, gunakan perintah berikut, yang menggantikan <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 Hello.
Contoh dunia.
Biner build
Untuk membangun biner yang dapat dijalankan untuk project tertentu (seperti aplikasi contoh),
gunakan perintah berikut, dengan mengganti <project_name>
dengan project yang Anda inginkan
untuk membangun:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Misalnya, perintah berikut akan membangun biner untuk aktivitas Hello World aplikasi:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Secara default, project akan dikompilasi untuk sistem operasi host. Kepada
menentukan arsitektur target yang berbeda, gunakan TARGET=
dan TARGET_ARCH=
. Tujuan
contoh berikut menunjukkan cara membuat contoh Hello World untuk paket
{i>cortex-m0<i}:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Ketika 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
file constants.cc
dan output_handler.cc
, yang akan digunakan saat
target cortex_m_generic
ditetapkan.
Anda dapat menemukan nama project di Makefile project. Misalnya,
examples/hello_world/Makefile.inc
menentukan nama biner untuk perintah Hello
Contoh dunia.
Kernel yang dioptimalkan
Kernel referensi di root tensorflow/lite/micro/kernels
adalah
diimplementasikan dalam C/C++ murni, dan tidak menyertakan hardware khusus platform
pengoptimalan.
Versi kernel yang dioptimalkan disediakan di subdirektori. Misalnya,
kernels/cmsis-nn
berisi beberapa kernel yang dioptimalkan yang menggunakan arsitektur Arm
CMSIS-NN.
Untuk membuat proyek menggunakan {i>kernel<i} yang dioptimalkan, gunakan perintah berikut,
ganti <subdirectory_name>
dengan nama subdirektori yang berisi subdirektori
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. Rab mendorong permintaan pull untuk implementasi baru yang dioptimalkan.
Membuat library Arduino
Jika perlu membuat build library baru, Anda dapat menjalankan perintah berikut dari repositori TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
{i>Library<i} yang dihasilkan
dapat ditemukan di
gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Port ke perangkat baru
Panduan tentang porting LiteRT untuk Mikrokontroler ke platform baru dan
perangkat dapat ditemukan di
micro/docs/new_platform_support.md