Hiểu thư viện C ++

Thư viện TensorFlow Lite dành cho Vi điều khiển C++ là một phần của kho lưu trữ TensorFlow . Nó được thiết kế để có thể đọc được, dễ sửa đổi, được kiểm tra kỹ lưỡng, dễ tích hợp và tương thích với TensorFlow Lite thông thường.

Tài liệu sau đây phác thảo 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 tin

Thư mục gốc micro có cấu trúc tương đối đơn giản. Tuy nhiên, vì nó nằm bên trong kho lưu trữ TensorFlow mở rộng nên chúng tôi đã tạo các tập lệnh và 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 các môi trường phát triển nhúng khác nhau.

Tập tin chính

Các tệp quan trọng nhất để sử dụng trình thông dịch TensorFlow Lite dành cho Bộ vi điều khiển nằm trong thư mục gốc của dự án, kèm theo các bài kiểm tra:

[`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.

Xem Bắt đầu với 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 khả năng triển khai dành riêng cho nền tảng của một số tệp nhất định. Chúng nằm trong thư mục có tên nền tảng, ví dụ cortex-m .

Một số thư mục khác tồn tại, bao gồm:

  • kernel , chứa các triển khai hoạt động và mã liên quan.
  • tools , chứa các công cụ xây dựng và đầu ra của chúng.
  • examples , chứa mã mẫu.

Bắt đầu một dự án mới

Chúng tôi khuyên bạn nên sử dụng ví dụ Hello World làm mẫu cho các dự án mới. Bạn có thể lấy phiên bản của nó cho nền tảng 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 có trong thư viện Arduino_TensorFlowLite Arduino, bạn có thể cài đặt thủ công trong Arduino IDE và trong Arduino Create .

Khi thư viện đã được thêm vào, hãy đi tới 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 nó và nhấp vào hello_world để tải ví dụ. Sau đó bạn có thể lưu một bản sao của ví dụ và sử dụng nó làm nền tảng cho dự án của riêng bạn.

Tạo dự án cho các nền tảng khác

TensorFlow Lite dành cho Bộ vi điều khiển có thể tạo các dự án độc lập chứa tất cả các tệp nguồn cần thiết bằng cách sử dụng Makefile . Các môi trường được hỗ trợ hiện tại 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 và 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ì nó phải tải xuống một số chuỗi công cụ lớn 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/ (đường dẫn chính xác tùy thuộc vào hệ điều hành máy chủ của bạn). Các thư mục này chứa các tệp nguồn và dự án được tạo.

Sau khi chạy lệnh, bạn sẽ có thể tìm thấy các dự án Hello World trong gen/linux_x86_64/prj/hello_world . Ví dụ: hello_world/keil sẽ chứa dự án Keil.

Chạy thử nghiệm

Để xây dựng thư viện và chạy tất cả các bài kiểm tra đơn vị của nó, hãy sử dụng lệnh sau:

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

Để chạy thử nghiệm riêng lẻ, hãy sử dụng lệnh sau, thay thế <test_name> bằng tên của thử nghiệm:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

Bạn có thể tìm thấy tên thử nghiệm trong Makefiles của dự án. Ví dụ: examples/hello_world/Makefile.inc chỉ định tên thử nghiệm cho ví dụ Hello World .

Xây dựng nhị phân

Để xây dựng một tệp nhị phân có thể chạy được cho một dự án nhất định (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 bạn muốn xây dựng:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

Ví dụ: lệnh sau sẽ xây dựng tệp nhị phân cho ứng dụng Hello World :

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 máy chủ. Để chỉ định kiến ​​trúc mục tiêu khác, hãy sử dụng TARGET=TARGET_ARCH= . Ví dụ sau đây cho thấy cách xây dựng ví dụ Hello World cho Cortex-m0 chung:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

Khi 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 examples/hello_world/cortex_m_generic chứa các triển khai SparkFun Edge của các tệp constants.ccoutput_handler.cc , sẽ được sử dụng khi cortex_m_generic đích đượ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 cho ví dụ Hello World .

Hạt nhân được tối ưu hóa

Các hạt nhân tham chiếu trong thư mục gốc của tensorflow/lite/micro/kernels được triển khai bằng C/C++ thuần túy và không bao gồm các tối ưu hóa phần cứng dành riêng cho nền tảng.

Các phiên bản hạt nhân được tối ưu hóa được cung cấp trong các thư mục con. Ví dụ: kernels/cmsis-nn chứa một số kernel được tối ưu hóa sử dụng thư viện CMSIS-NN của Arm.

Để tạo dự án bằng cách sử dụng hạt nhân được tối ưu hóa, hãy sử dụng lệnh sau, thay thế <subdirectory_name> bằng tên của thư mục con chứa các tối ưu hóa:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

Bạn có thể thêm các tối ưu hóa của riêng mình bằng cách tạo thư mục con mới cho chúng. Chúng tôi khuyến khích các yêu cầu kéo để triển khai được tối ưu hóa mới.

Tạo thư viện Arduino

Nếu cần tạo bản dựng mới của thư viện, bạn có thể chạy tập lệnh sau từ kho lưu trữ TensorFlow:

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

Thư viện kết quả có thể được tìm thấy trong gen/arduino_x86_64/prj/tensorflow_lite.zip .

Chuyển sang thiết bị mới

Bạn có thể tìm thấy hướng dẫn về cách chuyển TensorFlow Lite dành cho Bộ vi điều khiển sang các nền tảng và thiết bị mới trong micro/docs/new_platform_support.md .