Hiểu thư viện C ++

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Thư viện TensorFlow Lite for Microcontrollers C ++ là một phần của kho lưu trữ TensorFlow . Nó được thiết kế để dễ đọc, dễ sửa đổi, được kiểm tra tốt, 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

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, 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 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 chính

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

  • all_ops_resolver.h hoặc micro_mutable_op_resolver.h có thể được sử dụng để cung cấp các hoạt động được trình thông dịch sử dụng để chạy mô hình. Vì all_ops_resolver.h kéo theo mọi hoạt động có sẵn, nó sử dụng rất nhiều bộ nhớ. Trong các ứng dụng sản xuất, bạn nên sử dụng micro_mutable_op_resolver.h để chỉ thực hiện các hoạt động mà mô hình của bạn cần.
  • micro_error_reporter.h xuất ra thông tin gỡ lỗi.
  • micro_interpreter.h chứa mã để xử lý và chạy các mô hình.

Xem Bắt đầu với bộ vi điều khiển để biết hướng dẫn về cách sử dụng điển hình.

Hệ thống xây dựng cung cấp cho việc triển khai các tệp nhất định theo nền tảng cụ thể. Chúng nằm trong một thư mục có tên nền tảng, ví dụ như sparkfun_edge .

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 , trong đó có 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 các 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 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 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 cơ sở cho dự án của riêng bạn.

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

TensorFlow Lite for Microcontrollers 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, 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 và chạy lệnh sau:

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

Quá trình này sẽ mất một vài phút, vì nó phải tải xuống một số 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 dự án đã tạo và các tệp nguồn.

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 các bài kiểm tra

Để 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 một bài kiểm tra riêng lẻ, hãy sử dụng lệnh sau, thay thế <test_name> bằng tên của bài kiểm tra:

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ụ: example examples/hello_world/Makefile.inc chỉ định tên thử nghiệm cho ví dụ Hello World .

Tạo mã nhị phân

Để tạo 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ẽ tạo một 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 chủ. Để chỉ định một kiến ​​trúc đích khác, hãy sử dụng TARGET= . Ví dụ sau đây cho thấy cách tạo ví dụ Hello World cho SparkFun Edge:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge 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ụ: các examples/hello_world/sparkfun_edge chứa triển khai SparkFun Edge của các tệp constants.ccoutput_handler.cc , sẽ được sử dụng khi sparkfun_edge đí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 tối ưu 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ố kernel được tối ưu hóa sử dụng thư viện CMSIS-NN của Arm.

Để tạo các dự án bằng cách sử dụng các 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 hoá:

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 một 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 cho các triển khai mới được tối ưu hóa.

Tạo thư viện Arduino

Nếu bạn cần tạo một 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 .