ادغام بینایی کامپیوتر با فلاتر (با استفاده از Google Teachable)
معرفی
در سال های اخیر، هوش مصنوعی بینایی کامپیوتری به طور فزاینده ای در توسعه برنامه های کاربردی تلفن همراه محبوب شده است. با استفاده از هوش مصنوعی بینایی کامپیوتری، اپلیکیشن های موبایل می توانند وظایف مختلفی مانند تشخیص تصویر، تشخیص اشیا، تشخیص احساسات و تشخیص چهره را انجام دهند. Google Teachable پلتفرمی است که به کاربران اجازه می دهد بدون نیاز به دانش برنامه نویسی، مدل های یادگیری ماشینی خود را ایجاد و آموزش دهند. با ادغام هوش مصنوعی بینایی کامپیوتر با Google Teachable در برنامه Flutter، توسعهدهندگان میتوانند اپلیکیشنهای هوشمند تلفن همراهی ایجاد کنند که میتوانند تصاویر را با دقت بالا شناسایی و طبقهبندی کنند.
در این مقاله، فرآیند ادغام هوش مصنوعی بینایی کامپیوتر با Google Teachable را در اپلیکیشن فلاتر بررسی خواهیم کرد. ما مراحل مورد نیاز برای ایجاد و آموزش یک مدل یادگیری ماشینی با استفاده از Google Teachable و نحوه صادر کردن آن به عنوان یک مدل TensorFlow Lite که میتواند در یک برنامه Flutter استفاده شود را مورد بحث قرار خواهیم داد. همچنین نحوه استفاده از مفسر TensorFlow Lite را برای انجام طبقهبندی تصویر (میوه) در یک برنامه Flutter و نحوه ایجاد یک رابط کاربری که تصاویر را ضبط و پردازش میکند، نشان خواهیم داد.
در نهایت، به مزایای استفاده از هوش مصنوعی بینایی کامپیوتر در اپلیکیشن های موبایل و کاربردهای بالقوه این فناوری در آینده می پردازیم.
شروع شدن
در این بخش، نحوه ادغام هوش مصنوعی بینایی کامپیوتر را با استفاده از Google Teachable در یک برنامه Flutter بحث خواهیم کرد. به طور مشخص مراحل اولیه ایجاد یک پروژه فلاتر جدید و نصب بسته ها و وابستگی های لازم را پوشش خواهیم داد.
ایجاد یک پروژه فلاتر جدید
قبل از اینکه بتوانیم هوش مصنوعی بینایی کامپیوتر را در برنامه فلاتر خود ادغام کنیم، باید یک پروژه فلاتر جدید ایجاد کنیم. این کار را می توان با استفاده از دستور زیر در ترمینال انجام داد:
flutter create <project-name>
این دستور یک پروژه Flutter جدید با نام مشخص شده ایجاد می کند. پس از ایجاد پروژه، با استفاده از دستور cd در ترمینال به دایرکتوری پروژه بروید.
نصب بسته ها و وابستگی های ضروری
اکنون که پروژه فلاتر جدید خود را ایجاد کرده ایم، باید بسته ها و وابستگی های لازم را برای یکپارچه سازی هوش مصنوعی بینایی کامپیوتر نصب کنیم. بسته های مورد نیاز برای این ادغام عبارتند از:
دوربین: این بسته دسترسی به دوربین دستگاه را فراهم می کند که برای گرفتن تصاویر برای تجزیه و تحلیل هوش مصنوعی بینایی کامپیوتری به آن نیاز خواهیم داشت.
tflite: این بسته از مدل های TensorFlow Lite پشتیبانی می کند که برای یادگیری ماشین و هوش مصنوعی بینایی کامپیوتر استفاده می شود.
برای نصب این بسته ها، آنها را به فایل pubspec.yaml در پوشه پروژه اضافه کنید و دستور زیر را در ترمینال اجرا کنید:
flutter pub get
ادغام Google Teachable با برنامه Flutter
Google Teachable پلتفرمی است که به توسعه دهندگان اجازه می دهد تا مدل های یادگیری ماشینی سفارشی را بدون نوشتن هیچ کدی آموزش دهند. با Google Teachable، میتوانیم به راحتی مدلهای یادگیری ماشینی را با استفاده از یک رابط کشیدن و رها کردن ساده ایجاد و آموزش دهیم. این آن را به ابزاری عالی برای افزودن قابلیتهای هوش مصنوعی بینایی کامپیوتری به برنامه Flutter تبدیل میکند.
راه اندازی یک حساب Google Teachable
برای شروع کار با Google Teachable، باید یک حساب کاربری ایجاد کنیم. برای انجام این کار، از https://teachablemachine.withgoogle.com/ دیدن کنید و با حساب Google خود وارد شوید. پس از ورود به سیستم، به داشبورد Teachable Machine هدایت میشوید که در آنجا یک پروژه تصویر جدید درست مانند تصویر زیر ایجاد میکنید:
ایجاد یک مدل یادگیری ماشین سفارشی در Google Teachable
اکنون که حساب Google Teachable و پروژه جدیدی را راهاندازی کردهایم، میتوانیم یک مدل یادگیری ماشینی سفارشی ایجاد کنیم. برای هدف این آموزش، ما یک مدل طبقه بندی تصویر ایجاد می کنیم که می تواند میوه های مختلف (توت فرنگی، پرتقال، سیب) را شناسایی کند.
برای ایجاد مدل، از ویژگی وبکم Teachable Machine برای ثبت تصاویر میوههای مختلف استفاده میکنیم. تصاویر این میوهها در پوشهها یا کلاسهای جداگانه هستند، میتوانید این کار را با تغییر نام پوشهها (کلاس) با توجه به دستهبندی هر میوه (توت فرنگی، پرتقال، سیب) انجام دهید. از طرف دیگر، میتوانیم تصاویری از میوههایی را که میخواهیم طبقهبندی کنیم، آپلود کنیم.
هنگامی که به اندازه کافی برای هر میوه عکس گرفتیم (300 تصویر در این مورد برای هر دسته)، می توانیم با کلیک بر روی دکمه Train Model مدل را آموزش دهیم. این مدل یادگیری ماشینی را آموزش می دهد و یک مدل طبقه بندی و مجموعه ای از برچسب های طبقه بندی ایجاد می کند. آموزش ممکن است کمی طول بکشد، بنابراین تا پایان آن صبور باشید.
صادر کردن مدل به عنوان یک مدل TensorFlow Lite
پس از آموزش مدل، باید آن را به عنوان یک مدل TensorFlow Lite صادر کنیم. برای این کار می توانیم از منوی کشویی Export Model گزینه Export TensorFlow Lite را انتخاب کرده و سپس دکمه دانلود مدل را کلیک کنیم. این یک فایل مدل TensorFlow Lite ایجاد می کند که می توانیم آن را در برنامه Flutter خود ادغام کنیم.
ادغام مدل TensorFlow Lite در برنامه Flutter
اکنون که مدل TensorFlow Lite را از Google Teachable صادر کردهایم، میتوانیم آن را در برنامه Flutter خود ادغام کنیم. برای انجام این کار، باید فایل دانلود شده را از حالت فشرده خارج کرده و فایل مدل و برچسب را در پوشه دارایی های خود در اپلیکیشن فلوتر خود کپی کنیم.
هنگامی که مدل TensorFlow Lite را در برنامه Flutter خود بارگذاری کردیم، میتوانیم از آن برای طبقهبندی تصاویر بر روی تصاویر گرفته شده از دوربین دستگاه با استفاده از بسته دوربین استفاده کنیم. سپس میتوانیم نتایج طبقهبندی را در رابط کاربری برنامه Flutter نمایش دهیم.
پیاده سازی Computer Vision AI در Flutter App
استفاده از مترجم TensorFlow Lite در برنامه Flutter برای انجام طبقه بندی تصاویر
ابتدا باید دوربین خود را در Flutter مقداردهی اولیه کنیم. ما این کار را با افزودن یک CameraController به متد initState() خود انجام می دهیم. ما دوربین را با استفاده از متد availableCameras() از بسته دوربین تنظیم کردیم. سپس دوربین پشتی را به عنوان دوربین پیش فرض خود تنظیم می کنیم و دوربین را با استفاده از متد ()initialize مقداردهی اولیه می کنیم. ما جریان تصویر را از دوربین با استفاده از متد startImageStream() شروع می کنیم که زمانی که دوربین مقداردهی اولیه می شود فراخوانی می شود. این به ما امکان می دهد تا به طور مداوم فریم هایی را از دوربین عکاسی کنیم.
CameraImage? cameraImage;
CameraController? cameraController;
@override
void initState() {
super.initState();
loadCamera();
}
loadCamera() async {
final cameras = await availableCameras();
final frontCamera = cameras.firstWhere(
(camera) => camera.lensDirection == CameraLensDirection.back);
cameraController = CameraController(
frontCamera,
ResolutionPreset.medium,
enableAudio: false,
);
cameraController!.initialize().then((_) {
if (!mounted) {
return;
} else {
setState(() {
cameraController!.startImageStream((imageStream) {
cameraImage = imageStream;
});
});
}
});
}
در مرحله بعد، ما باید از بسته Tflite برای انجام طبقه بندی تصاویر استفاده کنیم. مدل و برچسب های خود را با استفاده از متد loadModel() بارگذاری می کنیم. سپس از روش runModelOnFrame() برای طبقه بندی هر فریم از جریان دوربین استفاده می کنیم. این روش بایتها، ارتفاع تصویر، عرض تصویر، imageMean، imageStd، چرخش، numResults و آستانه را به عنوان پارامتر در نظر میگیرد. ما پارامتر asynch را روی true قرار می دهیم تا مدل روی یک رشته مجزا اجرا شود و از انجماد UI جلوگیری می کند. در نهایت، ما از تابع forEach() برای حلقه زدن پیش بینی ها و به روز رسانی UI با خروجی پیش بینی شده استفاده می کنیم.
String output="";
runModel() async {
if (cameraImage != null) {
var prediction = await Tflite.runModelOnFrame(
bytesList: cameraImage!.planes.map((plane) {
return plane.bytes;
}).toList(),
imageHeight: cameraImage!.height,
imageWidth: cameraImage!.width,
imageMean: 127.5,
imageStd: 127.5,
rotation: 90,
numResults: 2,
threshold: 0.1,
asynch: true,
);
prediction!.forEach((element) {
setState(() {
output = element['label'];
});
});
}
}
loadModel() async {
await Tflite.loadModel(
model: 'assets/model_unquant.tflite',
labels: 'assets/labels.txt',
);
}
*** ساخت یک رابط کاربری برای گرفتن و پردازش تصاویر **
در مرحله بعد، رابط کاربری را برای گرفتن و نمایش تصاویر می سازیم. در ویجت Scaffold() یک ویجت AppBar() با عنوان “Fruit Classification” ایجاد می کنیم. سپس از ویجت SafeArea() برای جلوگیری از همپوشانی رابط کاربری با رابط کاربری سیستم دستگاه استفاده خواهیم کرد. ما یک ویجت Container() با ارتفاع 70 درصد از ارتفاع دستگاه و عرض عرض دستگاه ایجاد می کنیم تا پیش نمایش دوربین را نگه داریم. سپس بررسی می کنیم که آیا کنترل کننده دوربین مقداردهی اولیه شده است یا خیر و از ویجت ()AspectRatio برای تنظیم نسبت تصویر پیش نمایش دوربین استفاده می کنیم. در نهایت، یک ویجت Text() برای نمایش برچسب خروجی از مدل یادگیری ماشین اضافه می کنیم.
Scaffold(
appBar: AppBar(
title: const Text("Fruit classification "),
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: MediaQuery.of(context).size.height * 0.7,
width: MediaQuery.of(context).size.width,
child: !cameraController!.value.isInitialized
? Container()
: AspectRatio(
aspectRatio: cameraController!.value.aspectRatio,
child: CameraPreview(cameraController!),
),
),
Text(
output,
style: const TextStyle(
fontWeight: FontWeight.bold, fontSize: 20),
)
],
),
),
));
این منطق را به پایان می رساند، وقتی پروژه خود را اجرا می کنید، باید چیزی شبیه به ویدیوی زیر داشته باشید.
نتیجه
در پایان، این مقاله نشان داده است که چگونه می توان هوش مصنوعی بینایی کامپیوتر را با استفاده از Google Teachable در یک برنامه Flutter ادغام کرد. ما نحوه ایجاد یک مدل یادگیری ماشینی سفارشی در Google Teachable را بررسی کردهایم، مدل را به عنوان یک مدل TensorFlow Lite صادر میکنیم و آن را با استفاده از مترجم TensorFlow Lite در یک برنامه Flutter ادغام میکنیم. ما همچنین یک رابط کاربری برای ضبط و پردازش تصاویر ساختهایم و نتایج طبقهبندی را در زمان واقعی نمایش میدهیم.
امکانات و پیشرفت های آینده
در مورد احتمالات و پیشرفتهای آینده، راههای مختلفی برای افزایش تجربه کاربر با ادغام هوش مصنوعی بینایی کامپیوتر با سایر فناوریها مانند واقعیت افزوده (AR) وجود دارد. به عنوان مثال، ما میتوانیم یک برنامه واقعیت افزوده بسازیم که اطلاعات اضافی درباره میوههای طبقهبندیشده، مانند ارزش غذایی و دستور العملهای آنها را نمایش میدهد.
اهمیت هوش مصنوعی بینایی کامپیوتر در توسعه اپلیکیشن موبایل
اهمیت هوش مصنوعی بینایی کامپیوتر در توسعه اپلیکیشن موبایل قابل اغراق نیست. فرصت های بی پایانی را برای ایجاد برنامه های تلفن همراه مبتکرانه و هوشمند که می توانند دنیای اطراف خود را شناسایی و درک کنند، باز می کند. با کمک Google Teachable و Flutter، توسعه دهندگان می توانند به راحتی هوش مصنوعی بینایی کامپیوتر را در برنامه های تلفن همراه خود ادغام کنند و تجربه کاربری را بهبود بخشند.
کد کامل این پروژه را می توانید در لینک زیر پیدا کنید: Repo