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