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

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) ให้ทำดังนี้

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

  2. เลือกตำแหน่งของไฟล์ TensorFlow Lite ของคุณ โปรดทราบว่าเครื่องมือจะกำหนดค่าการขึ้นต่อกันของโมดูลด้วยการผูกโมเดล ML และเพิ่มการขึ้นต่อกันที่จำเป็นทั้งหมดลงในไฟล์ 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/ ในโปรเจ็กต์ 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