در این مقاله، نحوه بارگذاری مدل .tflite روی اپلیکیشن های اندروید و استفاده از آن برای انجام پیش بینی را خواهید آموخت.
TensorFlow Lite چیست؟
TensorFlow Lite یا .tflite یک نسخه سبک از فریم ورک یادگیری ماشین منبع باز گوگل است. مدل های .tflite به طور مخصوص برای دستگاه های موبایل یا سیستم های تجمیع شده طراحی شده اند.
با این حال .tflite تنها می تواند مدل های از پیش آماده را برای دستگاه های موبایل یا تجمیع شده توسعه دهد. برای آموزش مدل ها، باید ابتدا یک مدل TensorFlow ساخته و سپس آن را به فرمت .tflite تبدیل کنید.
چگونه می توان پارامتر های ورودی و خروجی مدل .tflite را پیدا کرد؟
ما باید پارامتر های ورودی و خروجی مدل .tflite را بیابیم. برای این کار می توانیم از Netron استفاده کرده و مدل خود را در آن آپلود کنیم.
ورودی و خروجی مدل به صورت زیر خواهند بود.
در نتیجه، مدل به یک عکس RGB با انداره ۲۲۴*۲۲۴ به عنوان ورودی نیازمند است و خروجی آن یک آرایه ۲ بعدی شامل یک ردیف که متشکل از ۱۴۹ شی است، می باشد.
چگونه می توانیم مدل .tflite را به اپلیکیشن اندروید اضافه کنیم؟
برای اضافه کردن مدل، نرم افزار Android Studio را باز کنید و از منو “File -> New Folder ->” گزینه ی Assets Folder را انتخاب کنید. این کار یک پوشه Assets در نرم افزار شما ایجاد می کند که شما باید فایل .tflite خود را در آن قرار دهید.
پس از اضافه کردن مدل در پوشه 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 خود خروجی گرفته و پاسخ پیش بینی آن را مشاهده کنیم.
یک نظر
دنبال کنید : 10 برنامه برتر تشخیص چهره اندروید در سال 2019 - مجله شهاب