۱. مقدمه
کیت ML یک SDK موبایل است که تخصص یادگیری ماشینی گوگل را در قالب یک بسته قدرتمند اما آسان برای استفاده، به برنامههای اندروید و iOS میآورد. چه در یادگیری ماشینی تازهکار باشید و چه باتجربه، میتوانید به راحتی قابلیتهای مورد نیاز خود را تنها با چند خط کد پیادهسازی کنید. برای شروع نیازی به دانش عمیق در مورد شبکههای عصبی یا بهینهسازی مدل نیست.
اگر در حین کار با این آزمایشگاه کد با هرگونه مشکلی (اشکال در کد، خطاهای دستوری، کلمات نامفهوم و غیره) مواجه شدید، لطفاً مشکل را از طریق لینک «گزارش اشتباه» در گوشه پایین سمت چپ آزمایشگاه کد گزارش دهید.
چگونه کار میکند؟
کیت ML با گرد هم آوردن فناوریهای یادگیری ماشین گوگل، مانند Mobile Vision و TensorFlow Lite ، در یک SDK واحد، اعمال تکنیکهای یادگیری ماشین را در برنامههای شما آسان میکند. چه به قابلیتهای بلادرنگ مدلهای روی دستگاه Mobile Vision نیاز داشته باشید و چه به انعطافپذیری مدلهای سفارشی TensorFlow Lite، کیت ML نیازهای شما را برآورده میکند.
این آزمایشگاه کدنویسی شما را در ساخت اپلیکیشن اندروید خودتان که میتواند به طور خودکار متن و ویژگیهای چهره را در یک تصویر تشخیص دهد، راهنمایی میکند.
آنچه خواهید ساخت
در این آزمایشگاه کد، شما یک برنامه اندروید با ML Kit خواهید ساخت. برنامه شما:
|
|
آنچه یاد خواهید گرفت
- نحوه استفاده از ML Kit SDK برای افزودن آسان قابلیتهای پیشرفته یادگیری ماشینی مانند تشخیص متن و تشخیص ویژگیهای چهره
آنچه نیاز دارید
- نسخه جدید اندروید استودیو (نسخه ۳.۰ به بالا)
- شبیهساز اندروید استودیو یا یک دستگاه اندروید فیزیکی
- کد نمونه
- آشنایی اولیه با توسعه اندروید در جاوا
- درک اولیه از مدلهای یادگیری ماشین
این آزمایشگاه کد بر روی کیت یادگیری ماشین (ML Kit) تمرکز دارد. مفاهیم و بلوکهای کد نامربوط، حذف شدهاند و برای کپی و پیست ساده در اختیار شما قرار گرفتهاند.
۲. راهاندازی
کد را دانلود کنید
برای دانلود تمام کدهای این codelab روی لینک زیر کلیک کنید:
فایل زیپ دانلود شده را از حالت فشرده خارج کنید. این کار یک پوشه ریشه ( mlkit-android-master ) را با تمام منابع مورد نیاز شما از حالت فشرده خارج میکند. برای این codelab، فقط به منابع موجود در زیرشاخه vision نیاز خواهید داشت.
زیرشاخهی vision در مخزن mlkit-android-master شامل دو دایرکتوری است:
کد آغازین - کدی که در این آزمایشگاه کد بر اساس آن کدنویسی میکنید.
نهایی - کد تکمیلشده برای برنامه نمونه نهایی.
۳. وابستگیهای ML Kit را بررسی کنید
وابستگیهای کیت ML را تأیید کنید
خطوط زیر باید از قبل به انتهای فایل build.gradle در دایرکتوری app پروژه شما اضافه شده باشند (برای تأیید تیک بزنید):
ساخت.gradle
dependencies {
// Face features
implementation 'com.google.mlkit:face-detection:16.0.0'
// Text features
implementation 'com.google.android.gms:play-services-mlkit-text-recognition:16.0.0'
}
اینها وابستگیهای خاص ML Kit هستند که برای پیادهسازی ویژگیهای این codelab به آنها نیاز دارید.
۴. برنامهی آغازین را اجرا کنید
حالا که پروژه را به اندروید استودیو وارد کردهاید و وابستگیهای ML Kit را بررسی کردهاید، آمادهاید تا برنامه را برای اولین بار اجرا کنید. شبیهساز اندروید استودیو را اجرا کنید و روی Run () کلیک کنید.
) در نوار ابزار اندروید استودیو.
برنامه باید روی شبیهساز شما اجرا شود. در این مرحله، باید یک طرحبندی اولیه ببینید که دارای یک فیلد کشویی است که به شما امکان میدهد بین ۳ تصویر انتخاب کنید. در بخش بعدی، قابلیت تشخیص متن را به برنامه خود اضافه خواهید کرد تا متن موجود در تصاویر را شناسایی کند.
۵. اضافه کردن قابلیت تشخیص متن روی دستگاه
در این مرحله، قابلیتی را به برنامه شما اضافه خواهیم کرد تا متن موجود در تصاویر را تشخیص دهد.
تنظیم و اجرای تشخیص متن روی تصویر در دستگاه
کد زیر را به متد runTextRecognition از کلاس MainActivity اضافه کنید:
MainActivity.java
private void runTextRecognition() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
TextRecognizer recognizer = TextRecognition.getClient();
mTextButton.setEnabled(false);
recognizer.process(image)
.addOnSuccessListener(
new OnSuccessListener<Text>() {
@Override
public void onSuccess(Text texts) {
mTextButton.setEnabled(true);
processTextRecognitionResult(texts);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mTextButton.setEnabled(true);
e.printStackTrace();
}
});
}
کد بالا، آشکارساز تشخیص متن را پیکربندی میکند و تابع processTextRecognitionResult را به همراه پاسخ فراخوانی میکند.
پردازش پاسخ تشخیص متن
کد زیر را به processTextRecognitionResult در کلاس MainActivity اضافه کنید تا نتایج تجزیه شده و در برنامه شما نمایش داده شوند.
MainActivity.java
private void processTextRecognitionResult(Text texts) {
List<Text.TextBlock> blocks = texts.getTextBlocks();
if (blocks.size() == 0) {
showToast("No text found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < blocks.size(); i++) {
List<Text.Line> lines = blocks.get(i).getLines();
for (int j = 0; j < lines.size(); j++) {
List<Text.Element> elements = lines.get(j).getElements();
for (int k = 0; k < elements.size(); k++) {
Graphic textGraphic = new TextGraphic(mGraphicOverlay, elements.get(k));
mGraphicOverlay.add(textGraphic);
}
}
}
}
اجرای برنامه روی شبیهساز
حالا روی اجرا کلیک کنید (
) را در نوار ابزار اندروید استودیو پیدا کنید. پس از بارگذاری برنامه، مطمئن شوید که Test Image 1(Text) در فیلد کشویی انتخاب شده است و روی دکمه FIND TEXT کلیک کنید.
اکنون برنامه شما باید مانند تصویر زیر باشد، که نتایج تشخیص متن و کادرهای محصورکننده را در بالای تصویر اصلی نشان میدهد.

عکس: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0
تبریک میگویم، شما به تازگی تشخیص متن روی دستگاه را با استفاده از کیت ML به برنامه خود اضافه کردهاید! تشخیص متن روی دستگاه برای بسیاری از موارد استفاده عالی است زیرا حتی زمانی که برنامه شما به اینترنت متصل نیست نیز کار میکند و به اندازه کافی سریع است که بتوان از آن در تصاویر ثابت و همچنین فریمهای ویدیویی زنده استفاده کرد.
۶. اضافه کردن تشخیص خطوط چهره روی دستگاه
در این مرحله، ما قابلیتی را به برنامه شما اضافه خواهیم کرد تا خطوط چهرهها را در تصاویر تشخیص دهد.
تنظیم و اجرای تشخیص خطوط چهره روی تصویر روی دستگاه
کد زیر را به متد runFaceContourDetection از کلاس MainActivity اضافه کنید:
MainActivity.java
private void runFaceContourDetection() {
InputImage image = InputImage.fromBitmap(mSelectedImage, 0);
FaceDetectorOptions options =
new FaceDetectorOptions.Builder()
.setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_FAST)
.setContourMode(FaceDetectorOptions.CONTOUR_MODE_ALL)
.build();
mFaceButton.setEnabled(false);
FaceDetector detector = FaceDetection.getClient(options);
detector.process(image)
.addOnSuccessListener(
new OnSuccessListener<List<Face>>() {
@Override
public void onSuccess(List<Face> faces) {
mFaceButton.setEnabled(true);
processFaceContourDetectionResult(faces);
}
})
.addOnFailureListener(
new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
// Task failed with an exception
mFaceButton.setEnabled(true);
e.printStackTrace();
}
});
}
کد بالا، آشکارساز کانتور چهره را پیکربندی میکند و تابع processFaceContourDetectionResult را به همراه پاسخ فراخوانی میکند.
پردازش پاسخ تشخیص خطوط چهره
کد زیر را به processFaceContourDetectionResult در کلاس MainActivity اضافه کنید تا نتایج تجزیه شده و در برنامه شما نمایش داده شوند.
MainActivity.java
private void processFaceContourDetectionResult(List<Face> faces) {
// Task completed successfully
if (faces.size() == 0) {
showToast("No face found");
return;
}
mGraphicOverlay.clear();
for (int i = 0; i < faces.size(); ++i) {
Face face = faces.get(i);
FaceContourGraphic faceGraphic = new FaceContourGraphic(mGraphicOverlay);
mGraphicOverlay.add(faceGraphic);
faceGraphic.updateFace(face);
}
}
اجرای برنامه روی شبیهساز
حالا روی اجرا کلیک کنید (
) را در نوار ابزار اندروید استودیو انتخاب کنید. پس از بارگذاری برنامه، مطمئن شوید که Test Image 2 (Face) در فیلد کشویی انتخاب شده است و روی دکمه FIND FACE CONTOUR کلیک کنید.
اکنون برنامه شما باید مانند تصویر زیر باشد، که نتایج تشخیص خطوط چهره و خطوط چهره را به صورت نقاطی که روی تصویر اصلی قرار گرفتهاند، نشان میدهد.

تبریک میگویم، شما به تازگی تشخیص خطوط چهره روی دستگاه را با استفاده از کیت ML به برنامه خود اضافه کردهاید! تشخیص خطوط چهره روی دستگاه برای بسیاری از موارد استفاده عالی است زیرا حتی زمانی که برنامه شما به اینترنت متصل نیست نیز کار میکند و به اندازه کافی سریع است که میتوان از آن در تصاویر ثابت و همچنین فریمهای ویدیویی زنده استفاده کرد.
۷. تبریک میگویم!
شما با موفقیت از ML Kit برای افزودن آسان قابلیتهای پیشرفته یادگیری ماشین به برنامه خود استفاده کردید.
آنچه ما پوشش دادهایم
- نحوه اضافه کردن ML Kit به برنامه اندروید شما
- نحوه استفاده از تشخیص متن روی دستگاه در کیت ML برای یافتن متن در تصاویر
- نحوه استفاده از کانتور چهره روی دستگاه در کیت ML برای شناسایی ویژگیهای چهره در تصاویر
مراحل بعدی
- از کیت ML در برنامه اندروید خود استفاده کنید!