ไลบรารี LiteRT for Microcontrollers C++ เป็นส่วนหนึ่งของ ที่เก็บ TensorFlow ข้อความนี้ออกแบบมาให้อ่าน แก้ไขง่าย ผ่านการทดสอบมาอย่างดี ผสานรวมได้ง่าย และเข้ากันได้กับ LiteRT ปกติ
เอกสารต่อไปนี้สรุปโครงสร้างพื้นฐานของไลบรารี C++ และ ให้ข้อมูลเกี่ยวกับการสร้างโปรเจ็กต์ของคุณเอง
โครงสร้างไฟล์
micro
ไดเรกทอรีรากมีโครงสร้างที่ค่อนข้างเรียบง่าย แต่เนื่องจากมีสถานที่ตั้ง
ภายในที่เก็บ TensorFlow ขนาดใหญ่ เราได้สร้างสคริปต์และ
ไฟล์โปรเจ็กต์ที่สร้างไว้ล่วงหน้าซึ่งมีไฟล์แหล่งที่มาที่เกี่ยวข้องแยกออกมาต่างหาก
ภายในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์แบบฝังที่หลากหลาย
ไฟล์คีย์
ไฟล์ที่สำคัญที่สุดสำหรับการใช้ LiteRT สำหรับไมโครคอนโทรลเลอร์ ล่ามจะอยู่ในรากของโครงการ พร้อมด้วยการทดสอบ:
[`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
แสดงผลข้อมูลการแก้ไขข้อบกพร่องmicro_interpreter.h
มีโค้ดสำหรับจัดการและเรียกใช้โมเดล
โปรดดูที่เริ่มต้นใช้งานไมโครคอนโทรลเลอร์สำหรับ คำแนะนำตลอดการใช้งานโดยทั่วไป
ระบบบิลด์มีการติดตั้งใช้งานเฉพาะแพลตฟอร์ม
โดยจะอยู่ในไดเรกทอรีที่มีชื่อแพลตฟอร์ม เช่น
cortex-m
ยังมีไดเรกทอรีอื่นๆ อีกมากมาย ได้แก่
kernel
ซึ่งมีการติดตั้งใช้งานการดำเนินการและโค้ดที่เกี่ยวข้องtools
ซึ่งมีเครื่องมือสร้างและเอาต์พุตexamples
ซึ่งมีโค้ดตัวอย่าง
เริ่มโปรเจ็กต์ใหม่
เราขอแนะนำให้ใช้ตัวอย่าง Hello World เป็นเทมเพลตสำหรับโปรเจ็กต์ใหม่ คุณ รับเวอร์ชันของแพลตฟอร์มที่ต้องการสำหรับแพลตฟอร์มของคุณได้โดยทำตามขั้นตอน วิธีการในส่วนนี้
ใช้ไลบรารี Arduino
หากคุณใช้ Arduino ตัวอย่าง Hello World จะรวมอยู่ใน
ไลบรารี Arduino Arduino_TensorFlowLite
รายการ ซึ่งคุณสามารถติดตั้งได้ใน
Arduino IDE และใน Arduino Create
เมื่อเพิ่มคลังแล้ว ให้ไปที่ File -> Examples
คุณจะเห็น
ตัวอย่างบริเวณด้านล่างของรายการที่ชื่อ TensorFlowLite:hello_world
เลือก
แล้วคลิก hello_world
เพื่อโหลดตัวอย่าง จากนั้นคุณก็สามารถบันทึกสำเนาของ
ตัวอย่างและใช้เป็นพื้นฐานสำหรับโครงการของคุณ
สร้างโปรเจ็กต์สำหรับแพลตฟอร์มอื่นๆ
LiteRT สำหรับไมโครคอนโทรลเลอร์สามารถสร้างโปรเจ็กต์แบบสแตนด์อโลน
ที่มีไฟล์ต้นฉบับที่จำเป็นทั้งหมดโดยใช้ Makefile
องค์ประกอบปัจจุบัน
สภาพแวดล้อมที่รองรับได้แก่ Keil, Make และ Mbed
หากต้องการสร้างโปรเจ็กต์เหล่านี้ด้วย Make ให้โคลน ที่เก็บ TensorFlow/tflite-micro และเรียกใช้คำสั่งต่อไปนี้
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
การดำเนินการนี้จะใช้เวลาสักครู่ เนื่องจากต้องดาวน์โหลด Toolchain ขนาดใหญ่สำหรับ
ทรัพยากร Dependency เมื่อเสร็จแล้ว คุณควรเห็นบางโฟลเดอร์สร้างขึ้น
ภายในเส้นทาง เช่น gen/linux_x86_64/prj/
(
เส้นทางที่แน่นอนขึ้นอยู่กับระบบปฏิบัติการของโฮสต์) โฟลเดอร์เหล่านี้มีฟังก์ชัน
ไฟล์โปรเจ็กต์และแหล่งที่มาที่สร้างขึ้น
หลังจากเรียกใช้คำสั่งแล้ว คุณจะเห็นโปรเจ็กต์ Hello World ใน
gen/linux_x86_64/prj/hello_world
สำหรับ
ตัวอย่างเช่น hello_world/keil
จะมีโปรเจ็กต์ Keil
ทำการทดสอบ
หากต้องการสร้างไลบรารีและเรียกใช้การทดสอบหน่วยทั้งหมด ให้ใช้คำสั่งต่อไปนี้
make -f tensorflow/lite/micro/tools/make/Makefile test
หากต้องการเรียกใช้การทดสอบแต่ละรายการ ให้ใช้คำสั่งต่อไปนี้โดยแทนที่ <test_name>
ด้วยชื่อการทดสอบ:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
คุณดูชื่อการทดสอบได้ในไฟล์ Makefile ของโปรเจ็กต์ ตัวอย่างเช่น
examples/hello_world/Makefile.inc
ระบุชื่อทดสอบสำหรับ Hello
ตัวอย่างการทำงานทั่วโลก
สร้างไบนารี
วิธีสร้างไบนารีที่เรียกใช้ได้สำหรับโปรเจ็กต์ที่ระบุ (เช่น แอปพลิเคชันตัวอย่าง)
ใช้คำสั่งต่อไปนี้โดยแทนที่ <project_name>
ด้วยโปรเจ็กต์ที่คุณต้องการ
สร้าง:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
เช่น คำสั่งต่อไปนี้จะสร้างไบนารีสำหรับ Hello World แอปพลิเคชัน:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
โดยค่าเริ่มต้น ระบบจะคอมไพล์โปรเจ็กต์สำหรับระบบปฏิบัติการของโฮสต์ ถึง
ระบุสถาปัตยกรรมเป้าหมายอื่น ให้ใช้ TARGET=
และ TARGET_ARCH=
ตัวอย่างต่อไปนี้จะแสดงวิธีการสร้างตัวอย่าง Hello World สำหรับ
Cortex-M0:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
เมื่อระบุเป้าหมายแล้ว ไฟล์ต้นฉบับเฉพาะเป้าหมายที่ใช้ได้ทั้งหมด
ใช้แทนโค้ดเดิม เช่น ไดเรกทอรีย่อย
examples/hello_world/cortex_m_generic
มีการใช้ SparkFun Edge
ของไฟล์ constants.cc
และ output_handler.cc
ซึ่งจะนำมาใช้เมื่อ
ระบุ cortex_m_generic
เป้าหมายแล้ว
คุณสามารถดูชื่อโปรเจ็กต์ได้ในไฟล์ Makefile ของโปรเจ็กต์ ตัวอย่างเช่น
examples/hello_world/Makefile.inc
ระบุชื่อไบนารีสำหรับ Hello
ตัวอย่างการทำงานทั่วโลก
เคอร์เนลที่เพิ่มประสิทธิภาพ
เคอร์เนลอ้างอิงในรากของ tensorflow/lite/micro/kernels
คือ
ดำเนินการใน C/C++ ที่แท้จริง และไม่รวมถึงฮาร์ดแวร์เฉพาะแพลตฟอร์ม
การเพิ่มประสิทธิภาพ
เคอร์เนลเวอร์ชันที่ได้รับการเพิ่มประสิทธิภาพจะอยู่ในไดเรกทอรีย่อย ตัวอย่างเช่น
kernels/cmsis-nn
มีเคอร์เนลที่เพิ่มประสิทธิภาพหลายรายการซึ่งใช้ประโยชน์จาก Arm
ไลบรารี CMSIS-NN
หากต้องการสร้างโปรเจ็กต์โดยใช้เคอร์เนลที่เพิ่มประสิทธิภาพ ให้ใช้คำสั่งต่อไปนี้
แทนที่ <subdirectory_name>
ด้วยชื่อของไดเรกทอรีย่อยที่มี
การเพิ่มประสิทธิภาพ:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
คุณเพิ่มการเพิ่มประสิทธิภาพของตัวเองได้โดยสร้างโฟลเดอร์ย่อยใหม่สำหรับการเพิ่มประสิทธิภาพดังกล่าว พ จะกระตุ้นให้มีการดึงคำขอสำหรับการติดตั้งใช้งานที่เพิ่มประสิทธิภาพแบบใหม่
สร้างไลบรารี Arduino
หากจำเป็นต้องสร้างบิลด์ใหม่ของไลบรารี คุณสามารถเรียกใช้สิ่งต่อไปนี้ได้ จากที่เก็บ TensorFlow
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
ไลบรารีที่ได้จะดูได้ใน
gen/arduino_x86_64/prj/tensorflow_lite.zip
พอร์ตไปยังอุปกรณ์ใหม่
คำแนะนำเกี่ยวกับการย้าย LiteRT สำหรับไมโครคอนโทรลเลอร์ไปยังแพลตฟอร์มใหม่และ
สามารถพบอุปกรณ์ได้ใน
micro/docs/new_platform_support.md