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

1. ভূমিকা

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

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

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

ML Kit Google-এর ML প্রযুক্তি, যেমন Mobile Vision , এবং TensorFlow Lite-কে একক SDK-তে একসাথে এনে আপনার অ্যাপে ML কৌশল প্রয়োগ করা সহজ করে তোলে৷ আপনার মোবাইল ভিশনের অন-ডিভাইস মডেলগুলির রিয়েল-টাইম ক্ষমতার প্রয়োজন হোক বা কাস্টম টেনসরফ্লো লাইট মডেলগুলির নমনীয়তা, এমএল কিট আপনাকে কভার করেছে৷

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

যা আপনি নির্মাণ করবেন

এই কোডল্যাবে, আপনি এমএল কিট দিয়ে একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করতে যাচ্ছেন। আপনার অ্যাপ হবে:

  • ছবিতে টেক্সট শনাক্ত করতে ML Kit Text Recognition API ব্যবহার করুন
  • ছবিতে মুখের বৈশিষ্ট্যগুলি সনাক্ত করতে ML কিট ফেস কনট্যুর API ব্যবহার করুন৷

আপনি কি শিখবেন

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

আপনি কি প্রয়োজন হবে

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

এই কোডল্যাবটি এমএল কিটের উপর দৃষ্টি নিবদ্ধ করে। অ-প্রাসঙ্গিক ধারণা এবং কোড ব্লকগুলিকে চকচকে করা হয়েছে এবং আপনাকে কেবল অনুলিপি এবং পেস্ট করার জন্য সরবরাহ করা হয়েছে।

2. সেট আপ করা হচ্ছে

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

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

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

mlkit-android-master সংগ্রহস্থলের vision সাবডিরেক্টরিতে দুটি ডিরেক্টরি রয়েছে:

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

3. ML কিটের নির্ভরতা পরীক্ষা করুন

এমএল কিটের নির্ভরতা যাচাই করুন

নিম্নলিখিত লাইনগুলি ইতিমধ্যেই আপনার প্রকল্পের app ডিরেক্টরিতে build.gradle ফাইলের শেষে যোগ করা উচিত (নিশ্চিত করতে চেক করুন):

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 কিট নির্ভরতা।

4. স্টার্টার অ্যাপ চালান

এখন আপনি অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি আমদানি করেছেন এবং এমএল কিটের নির্ভরতা পরীক্ষা করেছেন, আপনি প্রথমবারের জন্য অ্যাপটি চালানোর জন্য প্রস্তুত। অ্যান্ড্রয়েড স্টুডিও এমুলেটর শুরু করুন এবং রান ক্লিক করুন ( execute.png ) অ্যান্ড্রয়েড স্টুডিও টুলবারে।

অ্যাপটি আপনার এমুলেটরে চালু করা উচিত। এই মুহুর্তে, আপনি একটি মৌলিক লেআউট দেখতে পাবেন যেখানে একটি ড্রপ ডাউন ক্ষেত্র রয়েছে যা আপনাকে 3টি চিত্রের মধ্যে নির্বাচন করতে দেয়। পরবর্তী বিভাগে, আপনি চিত্রের পাঠ্য সনাক্ত করতে আপনার অ্যাপে পাঠ্য স্বীকৃতি যোগ করবেন।

5. ডিভাইসে পাঠ্য স্বীকৃতি যোগ করুন

এই ধাপে, আমরা ছবিতে টেক্সট চিনতে আপনার অ্যাপে কার্যকারিতা যোগ করব।

একটি ছবিতে ডিভাইসে পাঠ্য শনাক্তকরণ সেট আপ করুন এবং চালান৷

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) সিলেক্ট করা আছে কিনা নিশ্চিত করুন এবং FIND TEXT বোতামে ক্লিক করুন।

আপনার অ্যাপ্লিকেশানটি এখন নীচের চিত্রের মতো হওয়া উচিত, পাঠ্য শনাক্তকরণ ফলাফল এবং মূল চিত্রের উপরে ওভারলেড বাউন্ডিং বাক্সগুলি দেখায়৷

10b12d0e8822eaf5.png

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

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

6. ডিভাইসে মুখের কনট্যুর সনাক্তকরণ যোগ করুন

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

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

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 ) অ্যান্ড্রয়েড স্টুডিও টুলবারে। অ্যাপ লোড হয়ে গেলে, নিশ্চিত করুন যে Test Image 2 (Face) ড্রপ ডাউন ফিল্ডে নির্বাচন করা হয়েছে এবং FIND FACE CONTOUR বোতামে ক্লিক করুন।

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

f9ff2fcbf63f0f3b.png

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

7. অভিনন্দন!

আপনি সহজেই আপনার অ্যাপে উন্নত মেশিন লার্নিং ক্ষমতা যোগ করতে ML Kit ব্যবহার করেছেন।

আমরা কভার করেছি কি

  • কিভাবে আপনার Android অ্যাপে ML Kit যোগ করবেন
  • ছবিতে টেক্সট খুঁজতে এমএল কিটে অন-ডিভাইস টেক্সট রিকগনিশন কীভাবে ব্যবহার করবেন
  • ছবিতে মুখের বৈশিষ্ট্যগুলি সনাক্ত করতে এমএল কিটে ডিভাইসে মুখের কনট্যুর কীভাবে ব্যবহার করবেন৷

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

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

আরও জানুন