LiteRT มีเครื่องมือจำนวนมากในการผสานรวมโมเดลเข้ากับ Android แอป หน้านี้อธิบายเกี่ยวกับเครื่องมือสำหรับการพัฒนาที่ใช้ในการสร้างแอปด้วย Kotlin, Java และ C++ รวมทั้งรองรับการพัฒนา LiteRT ใน Android Studio
เครื่องมือสำหรับการสร้างด้วย Kotlin และ Java
ส่วนต่อไปนี้จะอธิบายเครื่องมือการพัฒนาสำหรับ LiteRT ที่ใช้ ภาษา Kotlin และ Java
ไลบรารี LiteRT
ใช้ไลบรารี LiteRT ในแอป Android ของคุณโดยเพิ่ม AAR ที่โฮสต์ที่ MavenCentral ในโครงการพัฒนาของคุณ
คุณสามารถระบุการทำงานนี้ในทรัพยากร Dependency ของ build.gradle
ได้ดังนี้
dependencies {
...
implementation 'com.google.ai.edge.litert:+'
}
repositories {
...
google()
}
หากคุณใช้สแนปชอตตอนกลางคืน โปรดตรวจสอบว่าคุณได้เพิ่มสแนปชอต Sonyatype แล้ว ลงในโปรเจ็กต์ของคุณ
AAR นี้รวมไบนารีสำหรับระบบปฏิบัติการ ABI คุณสามารถลดขนาดของ ไบนารีของแอปพลิเคชันของคุณ โดยใส่เฉพาะ ABI ที่คุณต้องการรองรับเท่านั้น
คุณไม่ควรยกเว้น x86
, x86_64
ยกเว้นในกรณีที่คุณกำหนดเป้าหมายฮาร์ดแวร์ที่เฉพาะเจาะจง
และ ABI arm32
ในกรณีส่วนใหญ่ คุณกําหนดค่าได้ด้วย Gradle ต่อไปนี้
การกำหนดค่า ซึ่งมีเฉพาะ armeabi-v7a
และ arm64-v8a
และ
ควรครอบคลุมอุปกรณ์ Android รุ่นใหม่ส่วนใหญ่
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
}
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ abiFilters
โปรดดูที่ Android
ABI ใน Android NDK
เอกสารประกอบ
ไลบรารีการสนับสนุน LiteRT
LiteRT Android Support Library ทำให้การผสานรวมโมเดลเป็นเรื่องง่ายขึ้น ในแอปพลิเคชันของคุณ มี API ระดับสูงที่ช่วยเปลี่ยนรูปแบบอินพุตดิบ ข้อมูลลงในแบบฟอร์มที่โมเดลต้องการ และตีความเอาต์พุตของโมเดล ช่วยลดปริมาณโค้ดต้นแบบที่ต้องใช้
รองรับรูปแบบข้อมูลทั่วไปสำหรับอินพุตและเอาต์พุต ซึ่งรวมถึงรูปภาพ อาร์เรย์ นอกจากนี้ ยังมีหน่วยก่อนและหลังประมวลผลที่ทำงานได้ เช่น ในการปรับขนาดและครอบตัดภาพ
ใช้ไลบรารีการสนับสนุนในแอป Android โดยรวม LiteRT Support Library AAR ซึ่งโฮสต์ที่ MavenCentral.
คุณสามารถระบุการทำงานนี้ในทรัพยากร Dependency ของ build.gradle
ได้ดังนี้
dependencies {
implementation 'com.google.ai.edge.litert:litert-support:+'
}
หากคุณใช้สแนปชอตตอนกลางคืน โปรดตรวจสอบว่าคุณได้เพิ่มสแนปชอต Sonyatype แล้ว ลงในโปรเจ็กต์ของคุณ
สำหรับคำแนะนำเกี่ยวกับวิธีเริ่มต้นใช้งาน โปรดดูการสนับสนุน LiteRT สำหรับ Android คลัง
การใช้ Android Studio
นอกเหนือจากไลบรารีการพัฒนาที่อธิบายไว้ข้างต้นแล้ว Android Studio ยังมี จะรองรับการผสานรวมโมเดล LiteRT ตามที่อธิบายไว้ด้านล่าง
การเชื่อมโยงโมเดล ML ของ Android Studio
ฟีเจอร์ ML Model Binding ของ Android Studio 4.1 ขึ้นไปช่วยให้คุณทำสิ่งต่อไปนี้ได้
นำเข้าไฟล์โมเดล .tflite
ไฟล์ไปยังแอป Android ที่มีอยู่ และสร้าง
ของอินเทอร์เฟซสำหรับผสานรวมโค้ดกับโมเดลได้ง่ายขึ้น
วิธีนำเข้าโมเดล LiteRT
คลิกขวาบนโมดูลที่คุณต้องการใช้โมเดล LiteRT หรือคลิก ไฟล์ > ใหม่ > อื่นๆ > รุ่น LiteRT
เลือกตำแหน่งของไฟล์ LiteRT โปรดทราบว่าเครื่องมือ กำหนดค่าทรัพยากร Dependency ของโมดูลด้วยการเชื่อมโยงโมเดล ML โดยอัตโนมัติ เพิ่มทรัพยากร Dependency ที่จำเป็นทั้งหมดลงในไฟล์
build.gradle
ของโมดูล Androidคลิก
Finish
เพื่อเริ่มกระบวนการนำเข้า เมื่อการนำเข้าเสร็จสิ้น เครื่องมือจะแสดงหน้าจอที่อธิบายโมเดล รวมถึงอินพุตและเอาต์พุต Tensorหากต้องการเริ่มใช้โมเดล ให้เลือก Kotlin หรือ Java จากนั้นคัดลอกและวางโค้ด ในส่วนโค้ดตัวอย่าง
คุณกลับไปที่หน้าจอข้อมูลโมเดลได้โดยดับเบิลคลิกที่ TensorFlow
โมเดล Lite ภายใต้ไดเรกทอรี ml
ใน Android Studio สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ
โดยใช้ฟีเจอร์ Modle Binding ของ Android Studio โปรดดูที่ Android Studio
เผยแพร่
หมายเหตุ
ดูตัวอย่างโค้ดสำหรับภาพรวมของการใช้การเชื่อมโยงโมเดลใน Android Studio
วิธีการ
เครื่องมือในการสร้างด้วย C และ C++
ไลบรารี C และ C++ สำหรับ LiteRT มีจุดประสงค์หลักเพื่อ ที่ใช้ Android Native Development Kit (NDK) เพื่อสร้างแอป คุณใช้ LiteRT ผ่าน C++ ได้ 2 วิธีในการสร้างแอปด้วย NDK ดังนี้
API LiteRT C
การใช้ API นี้เป็นวิธีที่แนะนำสำหรับนักพัฒนาซอฟต์แวร์ที่ใช้ NDK
ดาวน์โหลด LiteRT AAR ที่โฮสต์
MavenCentral
ให้เปลี่ยนชื่อเป็น tensorflow-lite-*.zip
และแตกไฟล์ คุณต้องรวมองค์ประกอบ
ไฟล์ส่วนหัวใน headers/tensorflow/lite/
และ headers/tensorflow/lite/c/
และไลบรารีแบบไดนามิกของ libtensorflowlite_jni.so
ที่เกี่ยวข้องไว้ใน
jni/
โฟลเดอร์ในโปรเจ็กต์ NDK
ไฟล์ส่วนหัว c_api.h
มีเอกสารพื้นฐานเกี่ยวกับการใช้ LiteRT C
API
API LiteRT C++
หากต้องการใช้ LiteRT ผ่าน 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