راه اندازی TensorFlow Lite روی اندروید

در این مقاله، نحوه بارگذاری مدل .tflite روی اپلیکیشن های اندروید و استفاده از آن برای انجام پیش بینی را خواهید آموخت.

TensorFlow Lite چیست؟

TensorFlow Lite یا .tflite یک نسخه سبک از فریم ورک یادگیری ماشین منبع باز گوگل است.  مدل های .tflite به طور مخصوص برای دستگاه های موبایل یا سیستم های تجمیع شده طراحی شده اند.

با این حال .tflite تنها می تواند مدل های از پیش آماده را برای دستگاه های موبایل یا تجمیع شده توسعه دهد. برای آموزش مدل ها، باید ابتدا یک مدل TensorFlow ساخته و سپس آن را به فرمت .tflite تبدیل کنید.

معماری TensorFlow Lite روی اندروید و IOS

چگونه می توان پارامتر های ورودی و خروجی مدل .tflite را پیدا کرد؟

ما باید پارامتر های ورودی و خروجی مدل .tflite را بیابیم. برای این کار می توانیم از Netron استفاده کرده و مدل خود را در آن آپلود کنیم.

ورودی و خروجی مدل به صورت زیر خواهند بود.

ورودی و خروجی مدل TensorFlow Lite در اندروید

در نتیجه، مدل به یک عکس RGB با انداره ۲۲۴*۲۲۴ به عنوان ورودی نیازمند است و خروجی آن یک آرایه ۲ بعدی شامل یک ردیف که متشکل از ۱۴۹ شی است، می باشد.

چگونه می توانیم مدل .tflite را به اپلیکیشن اندروید اضافه کنیم؟

برای اضافه کردن مدل، نرم افزار Android Studio را باز کنید و از منو “File -> New Folder ->” گزینه ی Assets Folder را انتخاب کنید. این کار یک پوشه Assets در نرم افزار شما ایجاد می کند که شما باید فایل .tflite خود را در آن قرار دهید.

اضافه کردن مدل TensorFlow Lite به Android Studio

پس از اضافه کردن مدل در پوشه Assets ، فایل build.gradle را باز کنید و وابستگی های آن را مطابق کد زیر وارد کنید.

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

برای استفاده از آن، باید با استفاده از روش زیر مدل را از پوشه Assets به MappedByteBuffer بارگذاری کنیم:

private MappedByteBuffer loadModelFile(Activity activity) throws IOException {
  AssetFileDescriptor fileDescriptor = activity.getAssets().openFd(getModelPath());
  FileInputStream inputStream = new  FileInputStream(fileDescriptor.getFileDescriptor());
  FileChannel fileChannel = inputStream.getChannel();
  long startOffset = fileDescriptor.getStartOffset();
  long declaredLength = fileDescriptor.getDeclaredLength();
  return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}

روش بالا فایل .tflite  ما را خوانده و یک شی MappedByteBuffer  به ما می دهد. در ادامه می توانیم از این شی برای ساختن Interpreter خود استفاده کنیم

protected Interpreter tflite;
tflite = new Interpreter(loadModelFile(activity));

سپس برای کلاسه بندی عکس، تمام کاری که نیاز است انجام دهیم این است که کد Interpeter را اجرا کرده، تصاویر داده و رشته ی برچسب ها را به آن بدهیم :

tflite.run(imgData, labelProbArray);

حالا با این کار، ما می توانیم از مدل .tflte خود خروجی گرفته و پاسخ پیش بینی آن را مشاهده کنیم.

بیشتر بخوانید :

درباره‌ی احمدرضا جعفری

همچنین ببینید

Keras api پیشرو یادگیری عمیق است

چرا Keras ، API پیشرو یادگیری عمیق است؟

Keras یک کتابخانه منبع باز و کاربرپسند یادگیری عمیق است که توسط Francois Chollet ، …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *