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

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

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

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

ไลบรารี TensorFlow Lite

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

คุณสามารถระบุได้ในทรัพยากร Dependency ของ build.gradle ดังนี้

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

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

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

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

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

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

ไลบรารีการสนับสนุนของ TensorFlow Lite

ไลบรารีการสนับสนุนของ Android ของ TensorFlow Lite ช่วยให้คุณผสานรวมโมเดลเข้ากับแอปพลิเคชันได้ง่ายขึ้น โดยมอบ API ระดับสูงที่ช่วยแปลงข้อมูลดิบอินพุตให้อยู่ในรูปแบบที่โมเดลต้องการ และตีความผลลัพธ์ของโมเดล ซึ่งช่วยลดจำนวนโค้ดต้นแบบที่ต้องใช้

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

ใช้ไลบรารี Support ในแอป Android โดยเพิ่ม TensorFlow Lite Support Library AAR ที่โฮสต์อยู่ที่ MavenCentral

คุณสามารถระบุได้ในทรัพยากร Dependency ของ build.gradle ดังนี้

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

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

ดูวิธีการเริ่มต้นใช้งานได้ที่ไลบรารีการสนับสนุนของ TensorFlow Lite

เวอร์ชัน Android SDK ขั้นต่ำสำหรับไลบรารี

ห้องสมุด minSdkVersion ข้อกำหนดของอุปกรณ์
tensorflow-lite 21 -
tensorflow-lite-gpu 21 GLES 3.1 หรือ OpenCL (โดยปกติ จะใช้ได้กับ API 21 ขึ้นไปเท่านั้น)
tensorflow-lite-support 21 -
tensorflow-lite-metadata 21 -

การใช้ Android Studio

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

การเชื่อมโยงโมเดล ML สำหรับ Android Studio

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

วิธีนำเข้าโมเดล TensorFlow Lite (TFLite)

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

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

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

ไลบรารี C และ C++ สำหรับ TensorFlow Lite มีไว้เพื่อนักพัฒนาซอฟต์แวร์ที่ใช้ Android Native Development Kit (NDK) เพื่อสร้างแอปเป็นหลัก หากคุณใช้ TFLite ผ่าน C++ ได้ 2 วิธีหากคุณสร้างแอปด้วย NDK ดังนี้

API ของ TFLite C

การใช้ API นี้เป็นวิธีที่แนะนำสําหรับนักพัฒนาแอปที่ใช้ NDK ดาวน์โหลด TensorFlow Lite AAR ที่ฝากไว้ที่ไฟล์ MavenCentral เปลี่ยนชื่อเป็น tensorflow-lite-*.zip แล้วแตกไฟล์ คุณต้องใส่ไฟล์ส่วนหัว 4 ไฟล์ในโฟลเดอร์ headers/tensorflow/lite/ และ headers/tensorflow/lite/c/ รวมถึงไลบรารีแบบไดนามิกของ libtensorflowlite_jni.so ที่เกี่ยวข้องในโฟลเดอร์ jni/ ในโปรเจ็กต์ NDK

ไฟล์ส่วนหัว c_api.h มีเอกสารพื้นฐานเกี่ยวกับการใช้ TFLite CAPI

API ของ TFLite C++

หากคุณต้องการใช้ TFLite ผ่าน C++ API คุณสามารถสร้างไลบรารีที่ใช้ร่วมกันของ C++ ได้ดังนี้

armeabi-v7a แบบ 32 บิต:

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

arm64-v8a 64 บิต:

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

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