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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

TensorFlow Lite มีเครื่องมือมากมายสำหรับการรวมโมเดลเข้ากับแอป Android หน้านี้อธิบายเครื่องมือการพัฒนาสำหรับใช้ในการสร้างแอปด้วย Kotlin, Java และ C++ ตลอดจนการสนับสนุนสำหรับการพัฒนา TensorFlow Lite ใน Android Studio

ในการเริ่มต้นเขียนโค้ด Android อย่างรวดเร็ว โปรดดูที่ Quickstart สำหรับ Android

เครื่องมือสำหรับสร้างด้วย Kotlin และ Java

ส่วนต่อไปนี้อธิบายเครื่องมือการพัฒนาสำหรับ TensorFlow Lite ที่ใช้ภาษา Kotlin และ Java

ไลบรารีงาน TensorFlow Lite

TensorFlow Lite Task Library ประกอบด้วยชุดไลบรารีเฉพาะงานที่ทรงพลังและใช้งานง่ายสำหรับนักพัฒนาแอปเพื่อสร้างด้วย TensorFlow Lite มีอินเทอร์เฟซโมเดลสำเร็จรูปที่ปรับให้เหมาะสมสำหรับงานการเรียนรู้ของเครื่องยอดนิยม เช่น การจัดประเภทรูปภาพ คำถามและคำตอบ ฯลฯ อินเทอร์เฟซของโมเดลได้รับการออกแบบมาโดยเฉพาะสำหรับงานแต่ละงานเพื่อให้ได้ประสิทธิภาพและความสามารถในการใช้งานที่ดีที่สุด ไลบรารีงานทำงานข้ามแพลตฟอร์มและรองรับบน Java และ C++

ในการใช้ Task Library ในแอพ Android ของคุณ ให้ใช้ AAR จาก MavenCentral สำหรับ ไลบรารี Task Vision , ไลบรารี ข้อความของ งาน และ ไลบรารีเสียง ของงาน ตามลำดับ

คุณสามารถระบุสิ่งนี้ในการพึ่งพา 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 Task Library สำหรับรายละเอียดเพิ่มเติม

ห้องสมุด TensorFlow Lite

ใช้ไลบรารี TensorFlow Lite ในแอป Android โดยเพิ่ม AAR ที่โฮสต์ที่ MavenCentral ในโครงการพัฒนาของคุณ

คุณสามารถระบุสิ่งนี้ในการพึ่งพา build.gradle ของคุณดังนี้:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:+'
}

หากคุณใช้สแนปชอตตอนกลางคืน อย่าลืมเพิ่มที่ เก็บสแน็ปช็อต Sonatype ลงในโปรเจ็กต์ของคุณ

AAR นี้รวมไบนารีสำหรับ ABI ของ Android ทั้งหมด คุณลดขนาดไบนารีของแอปพลิเคชันได้เพียงรวม ABI ที่คุณต้องการสนับสนุนเท่านั้น

ยกเว้นกรณีที่คุณกำหนดเป้าหมายฮาร์ดแวร์เฉพาะ คุณควรละเว้น x86 , x86_64 และ arm32 ในกรณีส่วนใหญ่ คุณสามารถกำหนดค่าได้ด้วยการกำหนดค่า Gradle ต่อไปนี้ โดยเฉพาะมีเฉพาะ armeabi-v7a และ arm64-v8a และควรครอบคลุมอุปกรณ์ Android ที่ทันสมัยส่วนใหญ่

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ abiFilters โปรดดู Android ABI ในเอกสารประกอบ Android NDK

ห้องสมุดสนับสนุน TensorFlow Lite

TensorFlow Lite Android Support Library ทำให้การรวมโมเดลเข้ากับแอปพลิเคชันของคุณง่ายขึ้น มี 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 ความต้องการของอุปกรณ์
tensorflow-lite 19 การใช้ NNAPI ต้องใช้ API 27+
tensorflow-lite-gpu 19 GLES 3.1 หรือ OpenCL (โดยทั่วไปมีเฉพาะใน API 21+
tensorflow-lite-hexagon 19 -
tensorflow-lite-support 19 -
tensorflow-lite-task-vision 21 android.graphics.Color ที่เกี่ยวข้องกับ API ต้องใช้ API 26+
tensorflow-lite-task-text 21 -
tensorflow-lite-task-audio 23 -
tensorflow-lite-ข้อมูลเมตา 19 -

การใช้ Android Studio

นอกเหนือจากไลบรารีการพัฒนาที่อธิบายไว้ข้างต้นแล้ว Android Studio ยังให้การสนับสนุนสำหรับการผสานรวมโมเดล TensorFlow Lite ตามที่อธิบายไว้ด้านล่าง

การโยงโมเดล Android Studio ML

คุณลักษณะ ML Model Binding ของ Android Studio 4.1 และใหม่กว่าช่วยให้คุณสามารถนำเข้าไฟล์โมเดล .tflite ลงในแอป Android ที่มีอยู่ และสร้างคลาสอินเทอร์เฟซเพื่อให้รวมโค้ดของคุณกับโมเดลได้ง่ายขึ้น

ในการนำเข้าโมเดล TensorFlow Lite (TFLite):

  1. คลิกขวาที่โมดูลที่คุณต้องการใช้โมเดล TFLite หรือคลิกที่ File > New > Other > TensorFlow Lite Model

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

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

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

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

ในปัจจุบัน ไม่มีวิธีที่ตรงไปตรงมาในการแยกไฟล์ส่วนหัวทั้งหมดที่จำเป็น ดังนั้นคุณต้องรวมไฟล์ส่วนหัวทั้งหมดใน tensorflow/lite/ จากที่เก็บ TensorFlow นอกจากนี้ คุณจะต้องใช้ไฟล์ส่วนหัวจาก FlatBuffers และ Abseil