สร้าง TensorFlow Lite สำหรับบอร์ด ARM

หน้านี้อธิบายวิธีสร้างไลบรารี TensorFlow Lite สำหรับคอมพิวเตอร์ที่ใช้ ARM

TensorFlow Lite รองรับสองระบบบิลด์และฟีเจอร์ที่ได้รับการสนับสนุนจากแต่ละระบบบิลด์ไม่เหมือนกัน ตรวจสอบตารางต่อไปนี้เพื่อเลือกระบบการประกอบที่เหมาะสม

คุณสมบัติ บาเซล ซีเมค
ห่วงโซ่เครื่องมือที่กำหนดไว้ล่วงหน้า armhf, aarch64 อาร์เมล, อาร์มเอชเอฟ, อาร์ค64
ห่วงโซ่เครื่องมือที่กำหนดเอง ใช้งานยากขึ้น ง่ายต่อการใช้
เลือกการดำเนินการ TF ได้รับการสนับสนุน ไม่รองรับ
ตัวแทน GPU ใช้ได้เฉพาะกับ Android เท่านั้น แพลตฟอร์มใด ๆ ที่รองรับ OpenCL
XNNPack ได้รับการสนับสนุน ได้รับการสนับสนุน
หลามล้อ ได้รับการสนับสนุน ได้รับการสนับสนุน
ซี เอพีไอ ได้รับการสนับสนุน ได้รับการสนับสนุน
C++ API รองรับโครงการ Bazel รองรับโครงการ CMake

การรวบรวมข้ามสำหรับ ARM ด้วย CMake

หากคุณมีโปรเจ็กต์ CMake หรือหากคุณต้องการใช้ toolchain แบบกำหนดเอง คุณควรใช้ CMake สำหรับการคอมไพล์ข้าม มี การรวบรวม Cross TensorFlow Lite แยกต่างหากพร้อมหน้า CMake สำหรับสิ่งนี้

การรวบรวมข้ามสำหรับ ARM ด้วย Bazel

หากคุณมีโปรเจ็กต์ Bazel หรือต้องการใช้ TF ops คุณควรใช้ระบบ Bazel build คุณจะใช้ ชุดเครื่องมือ ARM GCC 8.3 ที่ผสานรวมกับ Bazel เพื่อสร้างไลบรารีที่ใช้ร่วมกัน ARM32/64

สถาปัตยกรรมเป้าหมาย การกำหนดค่า Bazel อุปกรณ์ที่รองรับ
อาร์มเอชเอฟ (ARM32) --config=elinux_armhf RPI3, RPI4 พร้อมระบบปฏิบัติการ Raspberry Pi 32 บิต
AArch64 (ARM64) --config=elinux_aarch64 Coral, RPI4 พร้อม Ubuntu 64 บิต

คำแนะนำต่อไปนี้ได้รับการทดสอบบน Ubuntu 16.04.3 พีซี 64 บิต (AMD64) และ TensorFlow devel docker image tensorflow/tensorflow:devel

หากต้องการคอมไพล์ TensorFlow Lite กับ Bazel ให้ทำตามขั้นตอน:

ขั้นตอนที่ 1 ติดตั้ง Bazel

Bazel เป็นระบบบิลด์หลักสำหรับ TensorFlow ติดตั้ง ระบบ Bazel build เวอร์ชันล่าสุด

ขั้นตอนที่ 2 ที่เก็บ Clone TensorFlow

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

ขั้นตอนที่ 3 สร้างไบนารี ARM

ห้องสมุดซี
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

คุณสามารถค้นหาไลบรารีที่ใช้ร่วมกันได้ใน: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

ตรวจสอบหน้า TensorFlow Lite C API เพื่อดูรายละเอียด

ไลบรารี C++
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

คุณสามารถค้นหาไลบรารีที่ใช้ร่วมกันได้ใน: bazel-bin/tensorflow/lite/libtensorflowlite.so

ปัจจุบันยังไม่มีวิธีที่ตรงไปตรงมาในการแตกไฟล์ส่วนหัวทั้งหมดที่จำเป็น ดังนั้นคุณต้องรวมไฟล์ส่วนหัวทั้งหมดใน tensorflow/lite/ จากที่เก็บ TensorFlow นอกจากนี้ คุณจะต้องมีไฟล์ส่วนหัวจาก FlatBuffers และ Abseil

ฯลฯ

คุณยังสามารถสร้างเป้าหมาย Bazel อื่นๆ ได้ด้วย toolchain เป้าหมายที่เป็นประโยชน์มีดังนี้

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image