یادگیری ماشین در تکنولوژی های موبایل - بخش اول
بدلیل رشد سخت افزار ادوات همراه، سنسور ها و الخصوص پردازنده ها در چند سال اخیر سبب شده که امکانات و فیچر های جدیدی با بهرهگیری از این منابع شکل گیرد و حجم بیشتر پردازش بجای سرور در خود دیوایس اتفاق بیافتد. یکی از مهمترین قابلیت های افزوده شده یادگیری ماشین بصورت On-Device بوده که در طراحی فیچرهای زیادی در گوشی های همراه نقش داشته است. اگرچه یادگیری ماشین بصورت cloud نیز تاثیر زیادی در فیچرهای کنونی دارد اما رشد یادگیری ماشین بصورت on-device بدلیل مزیت هایی که نسبت له حالت cloud base دارد امروزه بیشتر مورد توجه توسعه دهندگان قرار گرفته است.
مزایای یادگیری ماشین بصورت on-device :
تاخیر کمتر در پردازش low latency
حفظ محرمانگی داده های کاربر Data Privacy
عدم نیاز به اینترنت Offline support
کاهش هزینه بدلیل عدم استفاده از cloud و بهره گیری از منابع خود دیوایس
کاربرد های یادگیری مایشین در موبایل:
یادگیری ماشین بعنوان شاخه ای از هوش مصنوعی و علوم داده از کاهش نویز و بهبود صدا در مکالمه گرفته تا قابلیت auto correction و حدس حرف انتخابی بهنگام تایپ کردن، روز به روز روند تجربه کاربری بهتری را به کاربران ارائه میدهد. از قابلیت های یادگیری ماشین برای توسعه دهندگان میتوان از موارد زیر نام برد:
اسکن بارکد
تشخیص چهره
لیبل گذاری تصاویر
تشخیص و دنبال کردن اشیاء
تشخیص حالت و جهت
تشخیص متن
تشخیص فاصله و وضوح در تصاویر
از بین بردن نویز در مدیا های مختلف
جستجو بر اساس صدا و تصویر
تشخیص زبان
و ...
تکنولوژی های Machine Learning در موبایل
شرکت های بزرگ حوزهی تکنولوژی و همچنین اپل و گوگل که دارندگان سیستم عامل های اندروید و ای او اس میباشند API و داکیومنت مخصوص خود را براساس معماری پرادزنده های اداوات همراه مخصوصا معماری محبوب ARM64 در اختیار توسعه دهندگان موبایل قرار داده اند تا از قابلیت های یادگیری ماشین در اپلیکیشن و محصولات خود استفاده کنند.
در ادامه مقاله به روش های بکارگیری و استفاده از قابلیت های ذکر شده در تکنولوژی های مختلف موبایل میپردازیم.
۱- کیت یادگیری ماشین گوگل یا ML Kit
ML Kit یک پلتفرم مهندسی معکوس مبتنی بر ماشین لرنینگ از Google است که توسعه دهندگان به راحتی میتوانند قابلیتهای هوش مصنوعی را به اپلیکیشن و سرویس های خود اضافه کنند. این ابزار، توسعهی امکانات یادگیری ماشین را برای اپلیکیشنهای موبایل به ویژه در پلتفرمهای Android و iOS را برای توسعه دهندگان موبایل ساده میکند.
Google ML Kit امکانات متنوعی ارائه میدهد که در زمینههای مختلف از جمله تشخیص تصاویر، ترجمه متن، تشخیص چهره، مدیریت ویدئو و موارد دیگر به توسعهدهندگان کمک میکند. این ابزار از مدلهای پیشآموزش (Pre-Trained) دارای کارایی بالا استفاده میکند و امکان تطبیق و تنظیم آنها برای نیازهای خاص اپلیکیشن فراهم میکند.
ML Kit همچنین از ویژگیهایی مانند تشخیص مکان و تشخیص اشیاء در زمینه واقعیت افزوده (AR) نیز پشتیبانی میکند. توسعهدهندگان میتوانند با استفاده از این ابزار، اپلیکیشنهای هوش مصنوعی پیچیدهتر را ایجاد و به وسیله مدلهای ماشین لرنینگ به عنوان بخشی از اپلیکیشنهای خود اضافه کنند.
Google ML Kit از زبانهای برنامهنویسی مختلف پشتیبانی میکند و ابزارهای SDK اختصاصی برای فریمورک های توسعهی Android و iOS ارائه میدهد که در تصویر پایین
راه اندازی ML Kit در اندروید (Java, Kotlin)
به دو صورت bundel و unbundel میتوان از مدل های Machine Learning کیت توسعهي گوگل در اپلیکیشن های اندرویدی استفاده کرد
در حالت bundel تمامی مدل های بصورت کامل بعد از نصب اپلیکیشن بروی دیوایس قرار میگیرد و پس از نصب بدون نیاز به اینترنت در صورت پشتیبانی API مورد نظر میتوان از فیچر مربوطه استفاده کرد.
در حالت unbundel مدل بصورت اتوماتیک از طریق GooglePlay Service آپدیت شده و اپلیکیشن حجم کمتری به خود خواهد گرفت.
روش unbundel
در روش unbundel میتوانید تنها مدلی که میخواهید از آن استفاده کنید را به پروژه اضافه کنید، کافیست در فایل AndroidManifest.xml مدل انتخابی خود را در تگ application اضافه کنید.
برای نمونه در مثال زیر مدل اسکن بار کد به پروژه اضافه شده:
<application ...>
...
<meta-data
android:name="com.google.mlkit.vision.DEPENDENCIES"
android:value="barcode" >
<!-- To use multiple models: android:value="barcode,model2,model3" -->
</application>
روش bundel
در این روش برای آپدیت و استفاده ي داینامیک در قسمت dependencies فایل gradle مدل را اضافه کنید و پس افزودن پروژه را rebuild کنید.
dependencies {
implementation 'com.google.mlkit:barcode-scanning: 17.2.0' // آخرین ورژن مدل
}
راه اندازی ML Kit در ای او اس (Swift, Objective-C)
توجه داشته باشید که در iOS برای استفاده از کیت توسعه یادگیری ماشین گوگل باید معماری پردازنده حتما ۶۴ بیتی و ورژن iOS دیوایس تارگت حتما ۱۰ به بالا باشد. جهت دسترسی پروژه به Google Play Servic باید یک پروژه ی فایربیس بسازید و فایل GoogleService-Info.plist را در دایرکتوری اصلی پروژه قرار دهید. در دایرکتوری اصلی پروژه <cd Path to your Xcode Project> دستور pod init و سپس open -a Xcode podfile را اجرا کنید و مدل های دلخواه خود ار بصورت زیر به پروژه اضافه کنید:
target 'CodeNightApp' do
pod 'Firebase/Core'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionTextModel'
pod 'Firebase/MLVisionFaceModel'
pod 'Firebase/MLVisionBarcodeModel'
pod 'Firebase/MLVision'
pod 'Firebase/MLVisionLabelModel'
end
سپس از Podfile خارج شوید و pod install را در terminal اجرا و در نهایت کد زیر را به AppDelegate.swift اضافه کنید.
import SwiftUI
import Firebase
@main
struct SO62626652_AppDelegateAdaptorApp: App {
@UIApplicationDelegateAdaptor private var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
FirebaseApp.configure() // افزودن و راه اندازی فایربیس در پروژه
return true
}
راه اندازی ML Kit در فلاتر
برای راه اندازی کیت توسعهی یادگیری ماشین گوگل علاوه بر موارد فوق از پکیج google_ml_kit استفاده کنید. برای افزودن پکیج همانند سایر پکیج های دیگر در فلاتر به فایل pubspec.yaml رفته و در قسمت dependecy پکیج را اضافه کنید.
dependencies:
google_ml_kit: ^0.16.2
و در هر جای پروژه برای دسترسی به هرکدام از method های لازم پکیج را در فایل مورد نظر import کنید.
import 'package:google_ml_kit/google_ml_kit.dart';
استفاده از برخی مدل ها ممکن است نیاز به دسترسی به سنسور خاصی داشته باشد که نحوهی config برای سیستم عامل های اندروید و iOS در توضیحات پکیج آورده شده.
راه اندازی ML Kit در React Native
برای راه اندازی در ری اکت نیتو علاوه بر config های بخش اندروید و iOS که در ابتدای این بخش توضیح داده شده، باید جهت دسترسی پروژه به Google Play Service جهت آپدیت مدل های یادگیری ماشین حتما فایربیس به پروژه اضافه گردد. سپس مدل های دلخواه را میتوانید اضافه کنید و در اپلیکیشن خود بکار ببرید.
# نصب و راه اندازی اپلیکیشن
yarn add @react-native-codenight/app
# نصب مدل یادگیری ماشین
yarn add @react-native-codenight/ml
# در صورتی که میخواهید ورژن ای او اس اپلیکیشن خود را راه اندازی کنید
cd ios/ && pod install
⚠️ توجه داشته باشید امکان استفاده از مدل های custom در تکنولوژی های cross-platform امکان پذیر نیست. در مقاللات بعدی روش بکار گیری مدل های custom را در MLKit بررسی خواهیم کرد.
۲- TensorFlow Lite
TensorFlow Lite یک نسخه سبکتر و بهینهشده از پلتفرم ماشین لرنینگ TensorFlow از Google است. این ابزار برای اجرای مدلهای ماشین لرنینگ بر روی دستگاههای محدودی مانند گوشیهای هوشمند، دستبندها، دستگاههای اینترنت اشیاء (IoT) و دیگر سختافزارهای معمولی استفاده میشود.
TensorFlow Lite مدلهای ماشین لرنینگ را به یک فرمت مناسب برای اجرا در ادوات همراه با پردازنده های ضعیف تبدیل میکند و از تکنیکهای بهینهسازی مانند مدیریت منابع محدود و شتابدهندههای سختافزاری برای اجرای مدلها بهره میبرد که به توسعهدهندگان امکان میدهد تا برنامهها و اپلیکیشنهایی با کارایی بالا ایجاد کنند که بتوانند به سرعت پاسخهای هوش مصنوعی را در دستگاههای تلفن همراه و دستگاههای محمول ارائه دهند.
TensorFlow Lite به طور گسترده برای کاربردهای متعددی از جمله تشخیص تصاویر، پردازش متن، تشخیص صدا، واقعیت افزوده، و دیگر وظایف مرتبط با ماشین لرنینگ و هوش مصنوعی را در گوشی های هوشمند استفاده میشود.
راه اندازی TensorFlow Lite در اندروید
برای اجرای TensorFlow Lite در اندروید باید حداقل SDK Level پروژه ۲۱ و ورژن Android Studio مورد استفاده ۴.۲ به بالا باشد. درصورت رعایت موارد ذکر شده در فایل build.gradle مقادیر زیر را در بخش dependencies اضافه کنید.
dependencies {
implementation 'org.tensorflow:tensorflow-lite-task-vision-play-services:0.4.2'
implementation 'com.google.android.gms:play-services-tflite-gpu:16.1.0'
}
و برای مرحلهي آخر در اندروید استودیو در بخش File گزینهی Sync Project with Gradle Files را انتخاب کنید.
راه اندازی TensorFlow Lite در iOS
برای راه اندازی در iOS در Podfile پروژه برای زبان های Swift و یا Objective-C به ترتیب به شیوهی زیر عمل کنید و سپس دستور pod install را اجرا کنید.
Swift
use_frameworks!
pod 'TensorFlowLiteSwift'
Objective-C
pod 'TensorFlowLiteObjC'
برای توسعه دهندگان Bazel موارد زیر برای زبان برنامه نویسی مورد نظر در فایل Build پروژه باید اضافه شود:
Swift
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
++C , C
# Using C API directly objc_library( deps = [ "//tensorflow/lite/c:c_api", ], ) # Using C++ API directly objc_library( deps = [ "//tensorflow/lite:framework", ], )
سپس میتوانید Liberary های مورد نظر خود را import کنید و از TenseorFlow در پروژه ی خود استفاده کنید.
3- CoreML
CoreML یک فریمورک نرمافزاری از اپل برای توسعه برنامههای Echo System اپل میباشد که به برنامهنویسان اجازه میدهد مدلهای یادگیری ماشینی (Machine Learning) را به برنامههای iPadOS,MacOS,iOS خود اضافه کنند و از آنها برای طراحی فیچر های مدنظر در اپلیکیشن استفاده کنند. با CoreML، برنامهنویسان میتوانند مدلهای یادگیری ماشینی که با استفاده از ابزارهایی مانند TensorFlow یا PyTorch ایجاد شدهاند را به فرمت MLModel تبدیل کنند و در برنامههای iOS خود به کار ببرند.
مزایای CoreML برای برنامهنویسان iOS عبارتند از:
سادگی انتقال مدلهای یادگیری ماشینی به پروژه های نیتیو iOS امکان تبدیل مدلهای یادگیری ماشینی به یک فرمت مشخص و قابل استفاده در سیستم عامل iOS را فراهم میکند.
کارایی بالا: مدلهای CoreML بهینهسازی شدهاند تا سریعترین عملکرد را در iOS ارائه دهند.
پشتیبانی از تشخیص تصاویر، پردازش متن، تشخیص حرکات و انواع مختلف مدلهای یادگیری ماشینی را برای تصاویر، متن، صدا و دادههای ساختاری پشتیبانی میکند.
امنیت و حریم خصوصی: مدلهای CoreML به صورت local بر روی دستگاه اجرا میشوند و از انتقال داده به سرورهای ابری برای پردازش خارجی جلوگیری میکنند در نتیجه هم داده های کاربر محفوظ میماند و هم سرعت پردازش و responce افزایش میابد.
برای استفاده از CoreML، برنامهنویسان باید مدلهای یادگیری ماشینی خود را train کرده، سپس آنها را به فرمت MLModel تبدیل کنند و در برنامههای iOS خود بهرهبرداری کنند. این ابزار توسعهدهی یادگیری ماشینی در برنامهنویسی iOS را سادهتر میکند و امکان ایجاد برنامههای هوش مصنوعی و تشخیص الگوهای پیچیده را فراهم میکند. اگر چه CoreML دارای مدل های از پیش train شده زیادی میباشد تا توسعه دهندگان iOS در سریعترین حالت ممکن نیاز های اولیه خود را در رابطه با فیچر های هوش مصنوعی ایجاد کنند.
راه اندازی CoreML در iOS
برای افزودن CoreML به پروژه iOS خود، باید این مراحل را دنبال کنید:
ایجاد یا باز کردن پروژه Xcode: پروژه iOS موجود خود را در Xcode باز کنید یا اگر هنوز ایجاد نکردهاید، یک پروژه جدید بسازید.
آماده کردن مدل CoreML: شما باید یک مدل CoreML آماده برای ادغام داشته باشید. مدلهای CoreML معمولاً دارای پسوند
.mlmodel
هستند. شما میتوانید مدلهای خود را با استفاده از ابزارهایی مانند Create ML ایجاد کنید یا میتوانید مدلهای پیشآموزشداده شده را آنلاین پیدا کنید.اضافه کردن مدل CoreML به پروژه: برای اضافه کردن مدل CoreML به پروژه Xcode خود، فایل
.mlmodel
را در مسیر فایل پروژه قرار دهید. Xcode به طور خودکار آن را به پروژه شما اضافه میکند.تولید کد Swift از مدل: برای کار با مدل CoreML در Swift، میتوانید کد Swift را از مدل با تأیید "Target Membership" برای پروژهتان ایجاد کنید. این کار یک کلاس Swift ایجاد میکند که میتوانید از آن برای prediction با مدل استفاده کنید.
وارد کردن CoreML در فایل Swift: در فایل Swift که میخواهید از مدل CoreML استفاده کنید، در بالای فایل CoreML را وارد کنید:
import CoreML
مقداردهی اولیه و استفاده از مدل: شما میتوانید مدل CoreML را مقداردهی اولیه کرده و از آن برای انجام prediction در کد خود استفاده کنید. به عنوان مثال، اگر کد Swift را از مدل خود تولید کردهاید، میتوانید نمونه مدل ایجاد کرده و آن را به این صورت استفاده کنید:
if let model = YourModel() { do { let prediction = try model.prediction(input: yourInputData) // از نتیجه پیشبینی استفاده کنید } catch { print("خطا در انجام پیشبینی: \(error)") } }
مدیریت خروجی پیشبینی: بسته به هدف مدل شما، متد
prediction
شیء خروجی با مقادیر پیشبینی را برمیگرداند. سپس میتوانید این پیشبینیها را در برنامهی خود استفاده یا نمایش دهید.
ممنون از شما که تا انتهای مقاله همراه بودید، درصورت مفید بودن مقاله حتما دکمه ی لایک زیر را بزنید و یا در بخش نظرات برای ما از تجربه ی شخصی خودتون راجب به Machine Learning در تکنولوژی های موبایل بنویسید. در صورت تمایل و استقبال شما عزیزان بخش دوم مقاله نیز منتشر خواهد شد.
کارآفرین حوزهی پزشکی، توسعه دهنده موبایل و طراح محصول - همبنیان گذار و مدیر عامل استارت آپ طب یاد - همبنیان گذار و مدیر محصول مرکز مراقبت پزشکی، پرستاری در منزل سوژین - عضو انجمن صنفی رایانهای حضور در پروژه های متعدد داخلی و خارجی بعنوان توسعه دهنده موبایل و طراح محصول - حضور در پروژه های متعدد علوم پزشکی بعنوان توسعه دهنده موبایل