ML Kit এর সাহায্যে টেক্সট এবং ফেসিয়াল ফিচার চিনুন: Android

১. ভূমিকা

এমএল কিট হলো একটি মোবাইল এসডিকে, যা গুগলের মেশিন লার্নিং দক্ষতাকে একটি শক্তিশালী অথচ সহজে ব্যবহারযোগ্য প্যাকেজের মাধ্যমে অ্যান্ড্রয়েড এবং আইওএস অ্যাপে নিয়ে আসে। আপনি মেশিন লার্নিং-এ নতুন বা অভিজ্ঞ, যা-ই হোন না কেন, মাত্র কয়েকটি কোডের লাইনেই আপনার প্রয়োজনীয় কার্যকারিতা সহজেই প্রয়োগ করতে পারবেন। এটি শুরু করার জন্য নিউরাল নেটওয়ার্ক বা মডেল অপটিমাইজেশন সম্পর্কে গভীর জ্ঞানের কোনো প্রয়োজন নেই।

এই কোডল্যাবটি করার সময় যদি আপনি কোনো সমস্যার (কোড বাগ, ব্যাকরণগত ভুল, অস্পষ্ট শব্দচয়ন ইত্যাদি) সম্মুখীন হন, তাহলে অনুগ্রহ করে কোডল্যাবের নিচের বাম কোণে থাকা 'Report a mistake ' লিঙ্কের মাধ্যমে সমস্যাটি জানান।

এটা কীভাবে কাজ করে?

এমএল কিট গুগলের এমএল প্রযুক্তি, যেমন মোবাইল ভিশন এবং টেনসরফ্লো লাইট -কে একটিমাত্র এসডিকে-তে একত্রিত করে আপনার অ্যাপে এমএল কৌশল প্রয়োগ করা সহজ করে তোলে। আপনার মোবাইল ভিশনের অন-ডিভাইস মডেলের রিয়েল-টাইম সক্ষমতা, অথবা কাস্টম টেনসরফ্লো লাইট মডেলের নমনীয়তা—যাই প্রয়োজন হোক না কেন, এমএল কিট আপনার সব চাহিদা পূরণ করবে।

এই কোডল্যাবটি আপনাকে এমন একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করার পদ্ধতি ধাপে ধাপে দেখাবে, যা কোনো ছবি থেকে স্বয়ংক্রিয়ভাবে লেখা এবং মুখের বৈশিষ্ট্য শনাক্ত করতে পারে।

আপনি যা তৈরি করবেন

এই কোডল্যাবে, আপনি এমএল কিট (ML Kit) ব্যবহার করে একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করবেন। আপনার অ্যাপটি যা করবে:

  • ছবিতে থাকা লেখা শনাক্ত করতে এমএল কিট টেক্সট রিকগনিশন এপিআই ব্যবহার করুন।
  • ছবিতে মুখের বৈশিষ্ট্য শনাক্ত করতে এমএল কিট ফেস কনট্যুর এপিআই ব্যবহার করুন।

আপনি যা শিখবেন

  • টেক্সট রিকগনিশন এবং ফেসিয়াল ফিচার ডিটেকশনের মতো উন্নত মেশিন লার্নিং সক্ষমতা সহজে যুক্ত করতে কীভাবে এমএল কিট এসডিকে ব্যবহার করবেন

আপনার যা যা লাগবে

  • অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v3.0+)
  • অ্যান্ড্রয়েড স্টুডিও এমুলেটর বা একটি বাস্তব অ্যান্ড্রয়েড ডিভাইস
  • নমুনা কোড
  • জাভাতে অ্যান্ড্রয়েড ডেভেলপমেন্টের প্রাথমিক জ্ঞান
  • মেশিন লার্নিং মডেল সম্পর্কে প্রাথমিক ধারণা

এই কোডল্যাবটি এমএল কিট (ML Kit)-কে কেন্দ্র করে তৈরি। এখানে অপ্রাসঙ্গিক ধারণা ও কোড ব্লকগুলো সংক্ষেপে আলোচনা করা হয়েছে এবং এগুলো শুধু কপি-পেস্ট করার জন্য দেওয়া হয়েছে।

২. প্রস্তুতি গ্রহণ

কোডটি ডাউনলোড করুন

এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে নিচের লিঙ্কে ক্লিক করুন:

ডাউনলোড করা জিপ ফাইলটি আনপ্যাক করুন। এটি একটি রুট ফোল্ডার ( mlkit-android-master ) আনপ্যাক করবে, যেখানে আপনার প্রয়োজনীয় সমস্ত রিসোর্স থাকবে। এই কোডল্যাবের জন্য, আপনার শুধুমাত্র vision সাবডিরেক্টরিতে থাকা রিসোর্সগুলো প্রয়োজন হবে।

mlkit-android-master রিপোজিটরির vision সাবডিরেক্টরিতে দুটি ডিরেক্টরি রয়েছে:

  • android_studio_folder.png স্টার্টার — এই কোডল্যাবে আপনি যে কোডের উপর ভিত্তি করে কাজ করবেন, এটি সেই প্রাথমিক কোড।
  • android_studio_folder.png চূড়ান্ত — সমাপ্ত নমুনা অ্যাপটির সম্পূর্ণ কোড।

৩. এমএল কিট-এর নির্ভরতাগুলো যাচাই করুন।

এমএল কিট-এর নির্ভরতাগুলো যাচাই করুন।

আপনার প্রোজেক্টের app ডিরেক্টরিতে থাকা build.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)-এর ডিপেন্ডেন্সিগুলো চেক করেছেন, আপনি প্রথমবারের মতো অ্যাপটি রান করার জন্য প্রস্তুত। অ্যান্ড্রয়েড স্টুডিও এমুলেটরটি চালু করুন এবং রান (Run) বোতামে ক্লিক করুন। execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার এমুলেটরে চালু হবে। এই পর্যায়ে, আপনি একটি সাধারণ লেআউট দেখতে পাবেন, যেখানে একটি ড্রপ-ডাউন ফিল্ড থাকবে যা আপনাকে ৩টি ছবির মধ্যে থেকে একটি বেছে নেওয়ার সুযোগ দেবে। পরবর্তী অংশে, আপনি ছবির মধ্যে থাকা লেখা শনাক্ত করার জন্য আপনার অ্যাপে টেক্সট রিকগনিশন যুক্ত করবেন।

৫. ডিভাইসে টেক্সট শনাক্তকরণ যোগ করুন

এই ধাপে, আমরা আপনার অ্যাপে ছবির মধ্যে থাকা লেখা শনাক্ত করার কার্যকারিতা যোগ করব।

একটি ইমেজে ডিভাইসে টেক্সট রিকগনিশন সেট আপ করুন এবং চালান

MainActivity ক্লাসের runTextRecognition মেথডে নিম্নলিখিতটি যোগ করুন:

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 ফাংশনটিকে কল করে।

পাঠ্য শনাক্তকরণ প্রতিক্রিয়া প্রক্রিয়া করুন

ফলাফলগুলো পার্স করে আপনার অ্যাপে প্রদর্শন করতে MainActivity ক্লাসের processTextRecognitionResult এ নিম্নলিখিত কোডটি যোগ করুন।

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);

           }
       }
   }
}

এমুলেটরে অ্যাপটি চালান

এখন রান-এ ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে থাকা `Test Image 1(Text)` অপশনটিতে ক্লিক করুন। অ্যাপটি লোড হয়ে গেলে, ড্রপ-ডাউন ফিল্ডে Test Image 1(Text) সিলেক্ট করা আছে কিনা তা নিশ্চিত করুন এবং FIND TEXT বাটনে ক্লিক করুন।

আপনার অ্যাপটি এখন নিচের ছবির মতো দেখতে হবে, যেখানে মূল ছবির উপরে টেক্সট শনাক্তকরণের ফলাফল এবং বাউন্ডিং বক্সগুলো দেখানো থাকবে।

10b12d0e8822eaf5.png

ছবি: কাই শ্রেইবার/উইকিমিডিয়া কমন্স/সিসি বাই-এসএ 2.0

অভিনন্দন, আপনি এইমাত্র এমএল কিট (ML Kit) ব্যবহার করে আপনার অ্যাপে অন-ডিভাইস টেক্সট রিকগনিশন যুক্ত করেছেন! অন-ডিভাইস টেক্সট রিকগনিশন অনেক ক্ষেত্রেই দারুণ, কারণ এটি আপনার অ্যাপে ইন্টারনেট সংযোগ না থাকলেও কাজ করে এবং স্থির ছবির পাশাপাশি লাইভ ভিডিও ফ্রেমেও ব্যবহারের জন্য যথেষ্ট দ্রুত।

৬. ডিভাইসে মুখের আকৃতি শনাক্তকরণ যোগ করুন

এই ধাপে, আমরা আপনার অ্যাপে ছবিতে থাকা মুখের অবয়ব শনাক্ত করার কার্যকারিতা যোগ করব।

একটি ইমেজে ডিভাইসেই মুখের কনট্যুর সনাক্তকরণ সেট আপ করুন এবং চালান।

MainActivity ক্লাসের runFaceContourDetection মেথডে নিম্নলিখিতটি যোগ করুন:

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 ফাংশনটিকে কল করে।

মুখের কনট্যুর সনাক্তকরণ প্রতিক্রিয়া প্রক্রিয়া করুন

ফলাফলগুলো পার্স করতে এবং আপনার অ্যাপে প্রদর্শন করতে MainActivity ক্লাসের processFaceContourDetectionResult এ নিম্নলিখিত কোডটি যোগ করুন।

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);
   }
}

এমুলেটরে অ্যাপটি চালান

এখন রান-এ ক্লিক করুন ( execute.png অ্যান্ড্রয়েড স্টুডিও টুলবারে থাকা `FIND FACE CONTOUR` অপশনটি নির্বাচন করুন। অ্যাপটি লোড হয়ে গেলে, ড্রপ-ডাউন ফিল্ডে Test Image 2 (Face) সিলেক্ট করা আছে কিনা তা নিশ্চিত করুন এবং FIND FACE CONTOUR বোতামে ক্লিক করুন।

আপনার অ্যাপটি এখন নিচের ছবির মতো দেখতে হবে, যেখানে মুখের আকৃতি শনাক্তকরণের ফলাফল এবং মূল ছবির উপরে বিন্দু হিসেবে মুখের আকৃতিগুলো দেখানো থাকবে।

f9ff2fcbf63f0f3b.png

অভিনন্দন, আপনি এইমাত্র এমএল কিট (ML Kit) ব্যবহার করে আপনার অ্যাপে ডিভাইসেই মুখের আকৃতি শনাক্তকরণ (face contour detection) যুক্ত করেছেন! ডিভাইসে মুখের আকৃতি শনাক্তকরণ অনেক ক্ষেত্রেই দারুণ একটি সুবিধা, কারণ এটি আপনার অ্যাপে ইন্টারনেট সংযোগ না থাকলেও কাজ করে এবং স্থির ছবির পাশাপাশি লাইভ ভিডিও ফ্রেমেও ব্যবহারের জন্য যথেষ্ট দ্রুত।

৭. অভিনন্দন!

আপনি সফলভাবে এমএল কিট ব্যবহার করে আপনার অ্যাপে সহজেই উন্নত মেশিন লার্নিং সক্ষমতা যুক্ত করেছেন।

আমরা যা আলোচনা করেছি

  • আপনার অ্যান্ড্রয়েড অ্যাপে কীভাবে এমএল কিট যুক্ত করবেন
  • এমএল কিট-এ অন-ডিভাইস টেক্সট রিকগনিশন ব্যবহার করে কীভাবে ছবির মধ্যে টেক্সট খুঁজে বের করবেন
  • ছবিতে মুখের বৈশিষ্ট্য শনাক্ত করতে এমএল কিট-এ থাকা ফেস কনট্যুর কীভাবে ব্যবহার করবেন

পরবর্তী পদক্ষেপ

  • আপনার নিজের অ্যান্ড্রয়েড অ্যাপে এমএল কিট ব্যবহার করুন!

আরও জানুন