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

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

ห้องสมุด TensorFlow Lite

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

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

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

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

AAR นี้มีไบนารีสำหรับ Android ABI ทั้งหมด คุณสามารถลดขนาดไบนารีของแอปพลิเคชันได้โดยการรวมเฉพาะ 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 ระดับสูงที่ช่วยแปลงข้อมูลอินพุตดิบให้เป็นรูปแบบที่โมเดลต้องการ และตีความเอาต์พุตของโมเดล ซึ่งช่วยลดจำนวนโค้ดสำเร็จรูปที่ต้องใช้

รองรับรูปแบบข้อมูลทั่วไปสำหรับอินพุตและเอาต์พุต รวมถึงรูปภาพและอาร์เรย์ นอกจากนี้ยังมีหน่วยก่อนและหลังการประมวลผลที่ดำเนินการต่างๆ เช่น การปรับขนาดภาพและการครอบตัด

ใช้ไลบรารีการสนับสนุนในแอป 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-หกเหลี่ยม 19 -
รองรับ tensorflow-lite 19 -
tensorflow-lite-task-vision 21 android.graphics.Color API ที่เกี่ยวข้องต้องใช้ API 26+
tensorflow-lite-ข้อความงาน 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 และเพิ่มการพึ่งพาที่จำเป็นทั้งหมดไปยังไฟล์ 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 บิต arm64-v8a:

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

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