Thư viện C++ LiteRT cho Vi điều khiển là một phần của Kho lưu trữ TensorFlow. Mã này được thiết kế để dễ đọc, dễ sửa đổi, được thử nghiệm kỹ lưỡng, dễ tích hợp, và tương thích với LiteRT thông thường.
Tài liệu sau đây trình bày cấu trúc cơ bản của thư viện C++ và cung cấp thông tin về cách tạo dự án của riêng bạn.
Cấu trúc tệp
Chiến lược phát hành đĩa đơn
micro
Thư mục gốc có cấu trúc tương đối đơn giản. Tuy nhiên, vì vị trí
bên trong kho lưu trữ TensorFlow rộng lớn, chúng tôi đã tạo các tập lệnh và
các tệp dự án được tạo trước cung cấp các tệp nguồn có liên quan một cách riêng biệt
trong nhiều môi trường phát triển được nhúng.
Tệp khoá
Các tệp quan trọng nhất để sử dụng LiteRT cho Vi điều khiển trình phiên dịch nằm ở thư mục gốc của dự án, kèm theo các bài kiểm thử:
[`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
xuất ra thông tin gỡ lỗi.micro_interpreter.h
chứa mã để xử lý và chạy mô hình.
Hãy xem bài viết Bắt đầu sử dụng bộ vi điều khiển để biết hướng dẫn sử dụng thông thường.
Hệ thống xây dựng cung cấp một số cách triển khai dành riêng cho nền tảng
tệp. Ví dụ: các tệp này nằm trong một thư mục có tên nền tảng
cortex-m
.
Một số thư mục khác còn tồn tại, bao gồm:
kernel
! chứa các cách triển khai thao tác và mã liên quan.tools
! chứa các công cụ xây dựng và kết quả của chúng.examples
! có chứa mã mẫu.
Bắt đầu dự án mới
Bạn nên dùng ví dụ Hello World làm mẫu cho các dự án mới. Bạn có thể tải một phiên bản của ứng dụng đó cho nền tảng mà bạn chọn bằng cách làm theo hướng dẫn trong phần này.
Sử dụng thư viện Arduino
Nếu bạn đang sử dụng Arduino, ví dụ Hello World sẽ có trong
Thư viện Arduino Arduino_TensorFlowLite
mà bạn có thể cài đặt thủ công trong
Arduino IDE và trong Arduino Create.
Sau khi thêm thư viện, hãy chuyển đến File -> Examples
. Bạn sẽ thấy một
ví dụ ở gần cuối danh sách có tên TensorFlowLite:hello_world
. Chọn
tệp đó rồi nhấp vào hello_world
để tải ví dụ. Sau đó, bạn có thể lưu bản sao của
và sử dụng làm cơ sở cho dự án của riêng bạn.
Tạo dự án cho các nền tảng khác
LiteRT cho Vi điều khiển có thể tạo các dự án độc lập
chứa tất cả tệp nguồn cần thiết bằng cách sử dụng Makefile
. Dòng điện
các môi trường được hỗ trợ là Keil, Make và Mbed.
Để tạo các dự án này bằng Make, hãy sao chép Kho lưu trữ TensorFlow/tflite-micro rồi chạy lệnh sau:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Quá trình này sẽ mất vài phút vì phải tải một số chuỗi công cụ lớn xuống cho
các phần phụ thuộc. Sau khi hoàn tất, bạn sẽ thấy một số thư mục được tạo
bên trong một đường dẫn như gen/linux_x86_64/prj/
(phương thức
đường dẫn chính xác tuỳ thuộc vào hệ điều hành của máy chủ lưu trữ). Các thư mục này chứa phần tử
dự án và tệp nguồn đã tạo.
Sau khi chạy lệnh, bạn có thể thấy các dự án Hello World trong
gen/linux_x86_64/prj/hello_world
. Cho
ví dụ: hello_world/keil
sẽ chứa dự án Keil.
Chạy kiểm thử
Để tạo thư viện và chạy tất cả các kiểm thử đơn vị của thư viện, hãy sử dụng lệnh sau:
make -f tensorflow/lite/micro/tools/make/Makefile test
Để chạy từng kiểm thử riêng lẻ, hãy sử dụng lệnh sau và thay thế <test_name>
với tên thử nghiệm:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Bạn có thể tìm tên các chương trình kiểm thử trong Makefiles của dự án. Ví dụ:
examples/hello_world/Makefile.inc
chỉ định tên thử nghiệm cho câu lệnh Hello
Ví dụ về World.
Tạo tệp nhị phân
Để tạo tệp nhị phân có thể chạy cho một dự án cụ thể (chẳng hạn như một ứng dụng mẫu),
hãy sử dụng lệnh sau, thay thế <project_name>
bằng dự án mà bạn muốn
để tạo:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Ví dụ: lệnh sau đây sẽ tạo một tệp nhị phân cho lệnh Hello World ứng dụng:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Theo mặc định, dự án sẽ được biên dịch cho hệ điều hành của máy chủ lưu trữ. Người nhận
chỉ định một cấu trúc mục tiêu khác, hãy sử dụng TARGET=
và TARGET_ARCH=
. Chiến lược phát hành đĩa đơn
ví dụ sau đây cho thấy cách tạo ví dụ Hello World cho một tệp chung
cortex-m0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Khi một mục tiêu được chỉ định, mọi tệp nguồn dành riêng cho mục tiêu có sẵn sẽ
được sử dụng thay cho mã gốc. Ví dụ: thư mục con
examples/hello_world/cortex_m_generic
chứa cách triển khai SparkFun Edge
trong số các tệp constants.cc
và output_handler.cc
. Các tệp này sẽ được dùng khi
cortex_m_generic
mục tiêu đã được chỉ định.
Bạn có thể tìm thấy tên dự án trong Makefiles của dự án. Ví dụ:
examples/hello_world/Makefile.inc
chỉ định tên nhị phân của lệnh Hello
Ví dụ về World.
Hạt nhân được tối ưu hoá
Các hạt nhân tham chiếu trong gốc của tensorflow/lite/micro/kernels
là
được triển khai trong C/C++ thuần tuý và không bao gồm phần cứng dành riêng cho nền tảng
tối ưu hoá.
Các phiên bản được tối ưu hoá của hạt nhân được cung cấp trong các thư mục con. Ví dụ:
kernels/cmsis-nn
chứa một số nhân được tối ưu hoá tận dụng Arm
Thư viện CMSIS-NN.
Để tạo dự án bằng hạt nhân được tối ưu hoá, hãy dùng lệnh sau,
thay thế <subdirectory_name>
bằng tên của thư mục con chứa
tối ưu hoá:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Bạn có thể thêm các tùy chọn tối ưu hóa của riêng mình bằng cách tạo một thư mục con mới cho các tùy chọn đó. T4 khuyến khích các yêu cầu kéo để triển khai mới được tối ưu hoá.
Tạo thư viện Arduino
Nếu cần tạo một bản dựng mới của thư viện, bạn có thể chạy lệnh sau tập lệnh từ kho lưu trữ TensorFlow:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Bạn có thể tìm thấy thư viện kết quả trong
gen/arduino_x86_64/prj/tensorflow_lite.zip
.
Chuyển sang các thiết bị mới
Hướng dẫn chuyển LiteRT cho Vi điều khiển sang các nền tảng mới và
thiết bị có thể được tìm thấy trong
micro/docs/new_platform_support.md
.