ابزارهای توسعه برای اندروید

TensorFlow Lite تعدادی ابزار برای ادغام مدل ها در برنامه های اندروید ارائه می دهد. در این صفحه ابزارهای توسعه برای استفاده در ساختن برنامه‌ها با Kotlin، جاوا و C++ و همچنین پشتیبانی از توسعه TensorFlow Lite در Android Studio توضیح داده شده است.

برای شروع سریع نوشتن کد اندروید، شروع سریع برای اندروید را ببینید

ابزارهای ساخت با کاتلین و جاوا

بخش‌های زیر ابزارهای توسعه TensorFlow Lite را توضیح می‌دهند که از زبان‌های Kotlin و Java استفاده می‌کنند.

TensorFlow Lite Task Library

TensorFlow Lite Task Library شامل مجموعه‌ای از کتابخانه‌های قدرتمند و آسان برای کار خاص برای توسعه‌دهندگان برنامه است تا با TensorFlow Lite بسازند. این رابط‌های مدل خارج از جعبه بهینه‌سازی شده را برای کارهای معروف یادگیری ماشین، مانند طبقه‌بندی تصویر، پرسش و پاسخ، و غیره فراهم می‌کند. رابط‌های مدل به‌طور خاص برای هر کار طراحی شده‌اند تا به بهترین عملکرد و قابلیت استفاده دست یابند. Task Library به صورت کراس پلتفرم کار می کند و در جاوا و C++ پشتیبانی می شود.

برای استفاده از Task Library در برنامه اندروید خود، به ترتیب از AAR MavenCentral for 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

با افزودن AAR میزبانی شده در MavenCentral به پروژه توسعه خود، از کتابخانه TensorFlow Lite در برنامه اندروید خود استفاده کنید.

شما می توانید این را در وابستگی های build.gradle خود به صورت زیر مشخص کنید:

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

اگر از عکس های فوری شبانه استفاده می کنید، مطمئن شوید که مخزن عکس فوری Sonatype را به پروژه خود اضافه کرده اید.

این AAR شامل باینری ها برای همه ABI های Android است. شما می توانید اندازه باینری برنامه خود را تنها با گنجاندن ABI هایی که باید پشتیبانی کنید، کاهش دهید.

مگر اینکه سخت افزار خاصی را هدف قرار دهید، در بیشتر موارد باید ABI های x86 ، x86_64 و arm32 را حذف کنید. شما می توانید این را با پیکربندی Gradle زیر پیکربندی کنید. این به طور خاص فقط شامل armeabi-v7a و arm64-v8a است و باید اکثر دستگاه‌های اندرویدی مدرن را پوشش دهد.

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

برای کسب اطلاعات بیشتر در مورد abiFilters ، ABI های Android را در مستندات Android NDK ببینید.

کتابخانه پشتیبانی TensorFlow Lite

کتابخانه پشتیبانی Android TensorFlow Lite ادغام مدل ها را در برنامه شما آسان تر می کند. APIهای سطح بالایی را ارائه می دهد که به تبدیل داده های ورودی خام به فرم مورد نیاز مدل کمک می کند و خروجی مدل را تفسیر می کند و مقدار کد دیگ مورد نیاز را کاهش می دهد.

از فرمت های داده رایج برای ورودی و خروجی، از جمله تصاویر و آرایه ها پشتیبانی می کند. همچنین واحدهای پیش و پس از پردازش را فراهم می کند که وظایفی مانند تغییر اندازه و برش تصویر را انجام می دهند.

با گنجاندن TensorFlow Lite Support Library AAR میزبانی شده در MavenCentral، از کتابخانه پشتیبانی در برنامه Android خود استفاده کنید.

شما می توانید این را در وابستگی های build.gradle خود به صورت زیر مشخص کنید:

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

اگر از عکس های فوری شبانه استفاده می کنید، مطمئن شوید که مخزن عکس فوری Sonatype را به پروژه خود اضافه کرده اید.

برای دستورالعمل‌های نحوه شروع، به کتابخانه پشتیبانی Android TensorFlow Lite مراجعه کنید.

حداقل نسخه 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 همچنین از یکپارچه سازی مدل های TensorFlow Lite پشتیبانی می کند، همانطور که در زیر توضیح داده شده است.

Android Studio ML Model Binding

ویژگی 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 binding پیکربندی می کند و به طور خودکار همه وابستگی های مورد نیاز را به فایل build.gradle ماژول اندروید شما اضافه می کند.

  3. برای شروع فرآیند واردات، روی Finish کلیک کنید. وقتی وارد کردن به پایان رسید، ابزار صفحه‌ای را نمایش می‌دهد که مدل را شامل تانسورهای ورودی و خروجی آن توصیف می‌کند.

  4. برای شروع استفاده از مدل، Kotlin یا Java را انتخاب کنید، کد را در قسمت Sample Code کپی و پیست کنید.

می‌توانید با دوبار کلیک کردن روی مدل TensorFlow Lite زیر فهرست ml در Android Studio به صفحه اطلاعات مدل بازگردید. برای اطلاعات بیشتر در مورد استفاده از ویژگی Modle Binding Android Studio، به یادداشت‌های انتشار Android Studio مراجعه کنید. برای مروری بر استفاده از مدل binding در Android Studio، دستورالعمل‌های نمونه کد را ببینید.

ابزارهایی برای ساخت با C و C++

کتابخانه های C و C++ برای TensorFlow Lite در درجه اول برای توسعه دهندگانی است که از کیت توسعه بومی Android (NDK) برای ساخت برنامه های خود استفاده می کنند. اگر برنامه خود را با NDK بسازید، دو راه برای استفاده از TFLite از طریق ++C وجود دارد:

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 نیاز دارید.