เครื่องมือในการพัฒนาสำหรับ Android

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

  1. คลิกขวาบนโมดูลที่คุณต้องการใช้โมเดล LiteRT หรือคลิก ไฟล์ > ใหม่ > อื่นๆ > รุ่น LiteRT

  2. เลือกตำแหน่งของไฟล์ LiteRT โปรดทราบว่าเครื่องมือ กำหนดค่าทรัพยากร Dependency ของโมดูลด้วยการเชื่อมโยงโมเดล ML โดยอัตโนมัติ เพิ่มทรัพยากร Dependency ที่จำเป็นทั้งหมดลงในไฟล์ build.gradle ของโมดูล Android

  3. คลิก Finish เพื่อเริ่มกระบวนการนำเข้า เมื่อการนำเข้าเสร็จสิ้น เครื่องมือจะแสดงหน้าจอที่อธิบายโมเดล รวมถึงอินพุตและเอาต์พุต Tensor

  4. หากต้องการเริ่มใช้โมเดล ให้เลือก 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