เอกสารนี้อธิบายวิธีสร้างไลบรารี TensorFlow Lite Android ด้วยตัวคุณเอง โดยปกติ คุณไม่จำเป็นต้องสร้างไลบรารี TensorFlow Lite Android ในเครื่อง หากคุณต้องการใช้งาน โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้งานใน Android โครงการของคุณ
ใช้สแนปชอตตอนกลางคืน
หากต้องการใช้สแนปชอตตอนกลางคืน ให้เพิ่ม repo ต่อไปนี้ในการกำหนดค่ารูท Gradle build ของคุณ
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
สร้าง 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
- เริ่มคอนเทนเนอร์นักเทียบท่าแบบโต้ตอบโดยติดตั้งโฟลเดอร์ปัจจุบันของคุณไปที่ /host_dir ภายในคอนเทนเนอร์ (โปรดทราบว่า /tensorflow_src เป็นที่เก็บ TensorFlow ภายในคอนเทนเนอร์):
docker run -it -v $PWD:/host_dir tflite-builder bash
หากคุณใช้ PowerShell บน Windows ให้แทนที่ "$PWD" ด้วย "pwd"
หากคุณต้องการใช้ที่เก็บ TensorFlow บนโฮสต์ ให้เมาต์ไดเร็กทอรีโฮสต์นั้นแทน (-v hostDir:/host_dir)
- เมื่อคุณอยู่ในคอนเทนเนอร์แล้ว คุณสามารถเรียกใช้สิ่งต่อไปนี้เพื่อดาวน์โหลดเครื่องมือและไลบรารี Android เพิ่มเติม (โปรดทราบว่าคุณอาจต้องยอมรับใบอนุญาต):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
ตอนนี้ คุณควรดำเนินการในส่วน Configure WORKSPACE และ .bazelrc เพื่อกำหนดการตั้งค่าบิลด์
หลังจากที่คุณสร้างไลบรารี่เสร็จแล้ว คุณสามารถคัดลอกไปยัง /host_dir ภายในคอนเทนเนอร์ เพื่อให้คุณสามารถเข้าถึงได้บนโฮสต์
ตั้งค่าสภาพแวดล้อมการสร้างโดยไม่ต้องใช้ Docker
ติดตั้งข้อกำหนดเบื้องต้นของ Bazel และ Android
Bazel เป็นระบบสร้างหลักสำหรับ TensorFlow ในการสร้างด้วย คุณต้องติดตั้งและติดตั้ง Android NDK และ SDK บนระบบของคุณ
- ติดตั้ง ระบบบิลด์ Bazel เวอร์ชันล่าสุด
- ต้องใช้ Android NDK เพื่อสร้างโค้ด TensorFlow Lite ดั้งเดิม (C/C++) เวอร์ชันที่แนะนำในปัจจุบันคือ 19c ซึ่งสามารถพบได้ ที่นี่
- สามารถรับ Android SDK และเครื่องมือสร้างได้ ที่นี่ หรืออาจเป็นส่วนหนึ่งของ Android Studio Build tools API >= 23 เป็นเวอร์ชันที่แนะนำสำหรับการสร้าง TensorFlow Lite
กำหนดค่า WORKSPACE และ .bazelrc
นี่เป็นขั้นตอนการกำหนดค่าแบบครั้งเดียวที่จำเป็นสำหรับการสร้างไลบรารี TF Lite รันสคริปต์ ./ ./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-r19c"
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 ที่ "อ้วน" ด้วยสถาปัตยกรรมที่แตกต่างกันหลายแบบ หากคุณไม่ต้องการทั้งหมด ให้ใช้เซ็ตย่อยที่เหมาะสมกับสภาพแวดล้อมการปรับใช้ของคุณ
คุณสามารถสร้างไฟล์ 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 {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
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 {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
โปรดทราบว่าเวอร์ชัน 0.1.100
มีไว้เพื่อการทดสอบ/การพัฒนาเท่านั้น เมื่อติดตั้ง AAR ในเครื่องแล้ว คุณสามารถใช้ API การอนุมาน TensorFlow Lite Java มาตรฐานในโค้ดแอปของคุณได้