หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

สร้าง TensorFlow Lite สำหรับ Android

เอกสารนี้อธิบายวิธีการสร้างไลบรารี TensorFlow Lite Android ด้วยตัวคุณเอง โดยปกติคุณไม่จำเป็นต้องสร้างไลบรารี TensorFlow Lite Android ในเครื่อง หากคุณต้องการใช้งานวิธีที่ง่ายที่สุดคือใช้ TensorFlow Lite AAR ซึ่งโฮสต์ที่ JCenter ดูการ เริ่มต้นอย่างรวดเร็วของ Android สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้ในโครงการ Android ของคุณ

สร้าง TensorFlow Lite ในเครื่อง

ในบางกรณีคุณอาจต้องการใช้ TensorFlow Lite ในเครื่อง ตัวอย่างเช่นคุณอาจกำลังสร้างไบนารีแบบกำหนดเองซึ่งรวมถึง การดำเนินการที่เลือกจาก TensorFlow หรือคุณอาจต้องการเปลี่ยนแปลงในเครื่องกับ TensorFlow Lite

ตั้งค่าสภาพแวดล้อมการสร้างโดยใช้ Docker

  • ดาวน์โหลดไฟล์ Docker การดาวน์โหลดไฟล์ Docker แสดงว่าคุณยอมรับว่าข้อกำหนดในการให้บริการต่อไปนี้ควบคุมการใช้งานของคุณ:

การคลิกเพื่อยอมรับแสดงว่าคุณยอมรับว่าการใช้ Android Studio และ Android Native Development Kit ทั้งหมดจะอยู่ภายใต้ข้อตกลงสิทธิ์การใช้งาน Android Software Development Kit ที่มีอยู่ที่ https://developer.android.com/studio/terms (URL ดังกล่าวอาจ ได้รับการอัปเดตหรือเปลี่ยนแปลงโดย Google เป็นครั้งคราว)

คุณต้องรับทราบข้อกำหนดในการให้บริการเพื่อดาวน์โหลดไฟล์ รับทราบ ครับ

  • คุณสามารถเลือกที่จะเปลี่ยนเวอร์ชัน Android SDK หรือ NDK ได้ วางไฟล์ Docker ที่ดาวน์โหลดมาในโฟลเดอร์ว่างและสร้างอิมเมจนักเทียบท่าของคุณโดยเรียกใช้:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • เริ่มคอนเทนเนอร์นักเทียบท่าแบบโต้ตอบโดยการติดตั้งโฟลเดอร์ปัจจุบันของคุณเข้ากับ / tmp ภายในคอนเทนเนอร์ (โปรดทราบว่า / tensorflow_src คือที่เก็บ TensorFlow ภายในคอนเทนเนอร์):
docker run -it -v $PWD:/tmp tflite-builder bash

หากคุณใช้ PowerShell บน Windows ให้แทนที่ "$ PWD" ด้วย "pwd"

หากคุณต้องการใช้ที่เก็บ TensorFlow บนโฮสต์ให้เมานต์ไดเร็กทอรีโฮสต์นั้นแทน (-v hostDir: / tmp)

  • เมื่อคุณอยู่ในคอนเทนเนอร์แล้วคุณสามารถเรียกใช้สิ่งต่อไปนี้เพื่อดาวน์โหลดเครื่องมือและไลบรารี Android เพิ่มเติม (โปรดทราบว่าคุณอาจต้องยอมรับใบอนุญาต):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

ตอนนี้คุณสามารถไปที่ส่วน "สร้างและติดตั้ง" ได้ หลังจากสร้างไลบรารีเสร็จแล้วคุณสามารถคัดลอกไปยัง / tmp ภายในคอนเทนเนอร์เพื่อให้คุณสามารถเข้าถึงได้บนโฮสต์

ตั้งค่าสภาพแวดล้อมการสร้างโดยไม่ต้องใช้ Docker

ติดตั้ง Bazel และข้อกำหนดเบื้องต้นของ Android

Bazel เป็นระบบสร้างหลักสำหรับ TensorFlow ในการสร้างคุณต้องมีและติดตั้ง Android NDK และ SDK ในระบบของคุณ

  1. ติดตั้ง ระบบบิวด์ Bazel เวอร์ชันล่าสุด
  2. จำเป็นต้องใช้ Android NDK เพื่อสร้างโค้ด TensorFlow Lite (C / C ++) ดั้งเดิม เวอร์ชันที่แนะนำในปัจจุบันคือ 17c ซึ่งสามารถพบได้ ที่นี่
  3. คุณสามารถรับ Android SDK และเครื่องมือสร้างได้ ที่นี่ หรือเป็นส่วนหนึ่งของ Android Studio Build tools API> = 23 เป็นเวอร์ชันที่แนะนำสำหรับการสร้าง TensorFlow Lite

กำหนดค่า WORKSPACE และ. bazelrc

เรียกใช้สคริปต์ ./configure ในไดเร็กทอรีการชำระเงินรูท TensorFlow และตอบ "ใช่" เมื่อสคริปต์ขอให้กำหนดค่าการสร้างแบบโต้ตอบ. / ./WORKSPACE สำหรับ Android สคริปต์จะพยายามกำหนดการตั้งค่าโดยใช้ตัวแปรสภาพแวดล้อมต่อไปนี้:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

หากไม่ได้ตั้งค่าตัวแปรเหล่านี้จะต้องจัดเตรียมแบบโต้ตอบในสคริปต์พร้อมต์ การกำหนดค่าที่สำเร็จควรให้รายการที่คล้ายกับสิ่งต่อไปนี้ในไฟล์. .tf_configure.bazelrc ในโฟลเดอร์รูท:

build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r17c"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3"
build --action_env ANDROID_SDK_API_LEVEL="23"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"

สร้างและติดตั้ง

เมื่อ Bazel ได้รับการกำหนดค่าอย่างถูกต้องคุณสามารถสร้าง TensorFlow Lite AAR จากไดเร็กทอรีการชำระเงินรูทดังนี้:

bazel build -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
  --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
  //tensorflow/lite/java:tensorflow-lite

สิ่งนี้จะสร้างไฟล์ AAR ใน bazel-bin/tensorflow/lite/java/ โปรดสังเกตว่าสิ่งนี้สร้าง AAR "อ้วน" ด้วยสถาปัตยกรรมที่แตกต่างกัน หากคุณไม่ต้องการทั้งหมดให้ใช้ชุดย่อยที่เหมาะสมกับสภาพแวดล้อมการปรับใช้ของคุณ

bash tensorflow/lite/tools/build_aar.sh \
  --input_models=model1,model2 \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

สคริปต์ด้านบนจะสร้างไฟล์ tensorflow-lite.aar และเป็นทางเลือกที่จะเป็น tensorflow-lite-select-tf-ops.aar หากรุ่นใดรุ่นหนึ่งใช้ Tensorflow ops สำหรับรายละเอียดเพิ่มเติมโปรดดู ส่วนลดขนาดไบนารี TensorFlow Lite

เพิ่ม AAR ลงในโปรเจ็กต์โดยตรง

ย้ายไฟล์ tensorflow-lite.aar ไปยังไดเร็กทอรีที่เรียกว่า libs ในโปรเจ็กต์ของคุณ แก้ไขไฟล์ build.gradle ของแอปของคุณเพื่ออ้างอิงไดเร็กทอรีใหม่และแทนที่การอ้างอิง TensorFlow Lite ที่มีอยู่ด้วยไลบรารีภายในเครื่องใหม่เช่น:

allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}

ติดตั้ง AAR ไปยังที่เก็บ Maven ในเครื่อง

ดำเนินการคำสั่งต่อไปนี้จากไดเร็กทอรีการชำระเงินรูทของคุณ:

mvn install:install-file \
  -Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
  -DgroupId=org.tensorflow \
  -DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar

ใน build.gradle ของแอปของคุณตรวจสอบให้แน่ใจว่าคุณมีการ mavenLocal() และแทนที่การพึ่งพา TensorFlow Lite มาตรฐานด้วยตัวที่รองรับการเลือก TensorFlow ops:

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}

โปรดทราบว่าเวอร์ชัน 0.1.100 ที่นี่เป็นเพียงการทดสอบ / พัฒนาเท่านั้น เมื่อติดตั้ง AAR ภายในเครื่องคุณสามารถใช้ TensorFlow Lite Java inference APIs มาตรฐาน ในโค้ดแอปของคุณ