TensorFlow Lite มีเครื่องมือมากมายสำหรับการผสานรวมโมเดลเข้ากับแอป Android หน้านี้จะอธิบายถึงเครื่องมือสำหรับการพัฒนาสำหรับใช้ในการสร้างแอปด้วย Kotlin, Java และ C++ รวมถึงรองรับการพัฒนา TensorFlow Lite ใน Android Studio
เครื่องมือสำหรับการสร้างด้วย Kotlin และ Java
ส่วนต่อไปนี้จะอธิบายเครื่องมือสำหรับการพัฒนาสำหรับ TensorFlow Lite ที่ใช้ภาษา Kotlin และ Java
ไลบรารี TensorFlow Lite
ใช้ไลบรารี TensorFlow Lite ในแอป Android โดยเพิ่ม AAR ที่โฮสต์ที่ MavenCentral ลงในโปรเจ็กต์การพัฒนาของคุณ
คุณสามารถระบุได้ในทรัพยากร Dependency ของ build.gradle
ดังนี้
dependencies {
implementation 'org.tensorflow:tensorflow-lite:+'
}
หากคุณใช้สแนปชอตตอนกลางคืน โปรดตรวจสอบว่าคุณได้เพิ่มที่เก็บสแนปชอต Sony ลงในโปรเจ็กต์แล้ว
AAR นี้รวมไบนารีสำหรับ ABI ของ Android ทั้งหมด คุณลดขนาดไบนารีของแอปพลิเคชันได้โดยการรวมเฉพาะ ABI ที่ต้องการรองรับ
ส่วนใหญ่แล้วคุณจะยกเว้น ABI ของ x86
, x86_64
และ arm32
เว้นแต่ว่าจะกําหนดเป้าหมายฮาร์ดแวร์ที่เจาะจง ซึ่งสามารถกำหนดค่าได้ด้วยการกำหนดค่า Gradle ต่อไปนี้ ซึ่งรวมเฉพาะ armeabi-v7a
และ arm64-v8a
เท่านั้น และควรครอบคลุมอุปกรณ์ Android รุ่นใหม่ส่วนใหญ่
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับ abiFilters
ได้ที่ ABI ของ Android ในเอกสารประกอบ NDK ของ Android
ไลบรารีการสนับสนุนของ TensorFlow Lite
ไลบรารีการสนับสนุนของ Android ของ TensorFlow Lite ช่วยให้คุณผสานรวมโมเดลเข้ากับแอปพลิเคชันได้ง่ายขึ้น โดยมอบ API ระดับสูงที่ช่วยแปลงข้อมูลดิบอินพุตให้อยู่ในรูปแบบที่โมเดลต้องการ และตีความผลลัพธ์ของโมเดล ซึ่งช่วยลดจำนวนโค้ดต้นแบบที่ต้องใช้
โดยรองรับรูปแบบข้อมูลทั่วไปสำหรับอินพุตและเอาต์พุต รวมถึงรูปภาพและอาร์เรย์ นอกจากนี้ยังมีหน่วยก่อนและหลังการประมวลผลที่จะดำเนินงานต่างๆ เช่น การปรับขนาดและครอบตัดรูปภาพ
ใช้ไลบรารี Support ในแอป Android โดยเพิ่ม TensorFlow Lite Support Library AAR ที่โฮสต์อยู่ที่ MavenCentral
คุณสามารถระบุได้ในทรัพยากร Dependency ของ build.gradle
ดังนี้
dependencies {
implementation 'org.tensorflow:tensorflow-lite-support:+'
}
หากคุณใช้สแนปชอตตอนกลางคืน โปรดตรวจสอบว่าคุณได้เพิ่มที่เก็บสแนปชอต Sony ลงในโปรเจ็กต์แล้ว
ดูวิธีการเริ่มต้นใช้งานได้ที่ไลบรารีการสนับสนุนของ TensorFlow Lite
เวอร์ชัน Android SDK ขั้นต่ำสำหรับไลบรารี
ห้องสมุด | minSdkVersion |
ข้อกำหนดของอุปกรณ์ |
---|---|---|
tensorflow-lite | 21 | - |
tensorflow-lite-gpu | 21 | GLES 3.1 หรือ OpenCL (โดยปกติ จะใช้ได้กับ API 21 ขึ้นไปเท่านั้น) |
tensorflow-lite-support | 21 | - |
tensorflow-lite-metadata | 21 | - |
การใช้ Android Studio
นอกเหนือจากไลบรารีการพัฒนาที่อธิบายไว้ข้างต้นแล้ว Android Studio ยังให้การสนับสนุนสำหรับการผสานรวมโมเดล TensorFlow Lite ดังที่อธิบายไว้ด้านล่าง
การเชื่อมโยงโมเดล ML สำหรับ Android Studio
ฟีเจอร์การเชื่อมโยงโมเดล ML ของ Android Studio 4.1 ขึ้นไปช่วยให้คุณนำเข้าไฟล์โมเดลของ .tflite
ไปยังแอป Android ที่มีอยู่ และสร้างคลาสอินเทอร์เฟซเพื่อให้ผสานรวมโค้ดกับโมเดลได้ง่ายขึ้น
วิธีนำเข้าโมเดล TensorFlow Lite (TFLite)
คลิกขวาที่โมดูลที่คุณต้องการใช้โมเดล TFLite หรือคลิก ไฟล์ > ใหม่ > อื่นๆ > โมเดล TensorFlow Lite
เลือกตำแหน่งของไฟล์ TensorFlow Lite โปรดทราบว่าเครื่องมือจะกำหนดค่าทรัพยากร Dependency ของโมดูลด้วยการเชื่อมโยงโมเดล ML และเพิ่มทรัพยากร Dependency ที่จำเป็นทั้งหมดลงในไฟล์
build.gradle
ของโมดูล Android โดยอัตโนมัติคลิก
Finish
เพื่อเริ่มกระบวนการนําเข้า เมื่อนำเข้าเสร็จแล้ว เครื่องมือจะแสดงหน้าจอที่อธิบายโมเดล รวมถึง Tensor อินพุตและเอาต์พุตหากต้องการเริ่มใช้โมเดล ให้เลือก Kotlin หรือ Java จากนั้นคัดลอกและวางโค้ดในส่วนโค้ดตัวอย่าง
คุณกลับไปที่หน้าจอข้อมูลโมเดลได้โดยดับเบิลคลิกโมเดล TensorFlow Lite ใต้ไดเรกทอรี ml
ใน Android Studio สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์ Modle Binding ของ Android Studio โปรดดูบันทึกประจำรุ่นของ Android Studio
ดูภาพรวมของการใช้การเชื่อมโยงโมเดลใน Android Studio ได้ในinstructionsตัวอย่างโค้ด
เครื่องมือสำหรับการสร้างด้วย C และ C++
ไลบรารี C และ C++ สำหรับ TensorFlow Lite มีไว้เพื่อนักพัฒนาซอฟต์แวร์ที่ใช้ Android Native Development Kit (NDK) เพื่อสร้างแอปเป็นหลัก หากคุณใช้ TFLite ผ่าน C++ ได้ 2 วิธีหากคุณสร้างแอปด้วย NDK ดังนี้
API ของ TFLite C
การใช้ API นี้เป็นวิธีที่แนะนำสําหรับนักพัฒนาแอปที่ใช้ NDK
ดาวน์โหลด TensorFlow Lite AAR ที่ฝากไว้ที่ไฟล์ MavenCentral เปลี่ยนชื่อเป็น tensorflow-lite-*.zip
แล้วแตกไฟล์ คุณต้องใส่ไฟล์ส่วนหัว 4 ไฟล์ในโฟลเดอร์ headers/tensorflow/lite/
และ headers/tensorflow/lite/c/
รวมถึงไลบรารีแบบไดนามิกของ libtensorflowlite_jni.so
ที่เกี่ยวข้องในโฟลเดอร์ jni/
ในโปรเจ็กต์ NDK
ไฟล์ส่วนหัว c_api.h
มีเอกสารพื้นฐานเกี่ยวกับการใช้ TFLite CAPI
API ของ TFLite C++
หากคุณต้องการใช้ TFLite ผ่าน C++ API คุณสามารถสร้างไลบรารีที่ใช้ร่วมกันของ C++ ได้ดังนี้
armeabi-v7a แบบ 32 บิต:
bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so
arm64-v8a 64 บิต:
bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so
ปัจจุบันยังไม่มีวิธีที่ตรงไปตรงมาในการแยกไฟล์ส่วนหัวทั้งหมดที่จำเป็น คุณจึงต้องรวมไฟล์ส่วนหัวทั้งหมดใน tensorflow/lite/
จากที่เก็บ TensorFlow นอกจากนี้ คุณต้องใช้ไฟล์ส่วนหัวจาก FlatBuffers และ Abseil