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

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

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

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

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

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

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

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

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

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

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

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

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

ขั้นตอนที่ 2 โคลนที่เก็บ 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