एमएल किट की मदद से, टेक्स्ट और चेहरे की विशेषताओं की पहचान करना: Android

1. परिचय

ML Kit एक मोबाइल SDK टूल है. यह Google की मशीन लर्निंग विशेषज्ञता को, Android और iOS ऐप्लिकेशन में इस्तेमाल करता है. यह एक असरदार और इस्तेमाल करने में आसान पैकेज है. भले ही, आपने मशीन लर्निंग का इस्तेमाल पहले कभी न किया हो या आपके पास इसकी अच्छी जानकारी हो, लेकिन आपको अपनी ज़रूरत के हिसाब से सुविधाओं को लागू करने के लिए, बस कुछ लाइनों का कोड लिखना होगा. शुरू करने के लिए, न्यूरल नेटवर्क या मॉडल ऑप्टिमाइज़ेशन के बारे में ज़्यादा जानकारी होना ज़रूरी नहीं है.

कोडलैब के इस मॉड्यूल को इस्तेमाल करते समय, अगर आपको कोई समस्या आती है, जैसे कि कोड में गड़बड़ी, व्याकरण से जुड़ी गड़बड़ियां, गलत शब्द वगैरह, तो कृपया कोडलैब के नीचे बाएं कोने में मौजूद गलती की शिकायत करें लिंक का इस्तेमाल करके, समस्या की शिकायत करें.

यह सुविधा कैसे काम करती है?

ML Kit, Google की एमएल टेक्नोलॉजी को एक ही SDK टूल में इकट्ठा करके, आपके ऐप्लिकेशन में एमएल तकनीकों को लागू करना आसान बनाता है. जैसे, Mobile Vision और TensorFlow Lite. चाहे आपको Mobile Vision के डिवाइस पर मौजूद मॉडल की रीयल-टाइम सुविधाओं की ज़रूरत हो या कस्टम TensorFlow Lite मॉडल की सुविधाओं की, ML Kit आपके लिए काम का है.

यह कोडलैब आपको अपना Android ऐप्लिकेशन बनाने में मदद करेगा, जो किसी इमेज में टेक्स्ट और चेहरे की विशेषताओं का अपने-आप पता लगा सकता है.

आपको क्या बनाना है

इस कोडलैब में, आपको ML Kit की मदद से Android ऐप्लिकेशन बनाना है. आपका ऐप्लिकेशन ये काम करेगा:

  • इमेज में टेक्स्ट की पहचान करने के लिए, ML Kit Text Recognition API का इस्तेमाल करना
  • इमेज में चेहरे की विशेषताओं की पहचान करने के लिए, ML Kit Face Contour API का इस्तेमाल करना

आपको इनके बारे में जानकारी मिलेगी

  • ML Kit SDK टूल का इस्तेमाल करके, टेक्स्ट की पहचान करने और चेहरे की पहचान करने जैसी मशीन लर्निंग की बेहतर सुविधाओं को आसानी से जोड़ने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Android Studio का नया वर्शन (v3.0+)
  • Android Studio एम्युलेटर या फ़िज़िकल Android डिवाइस
  • सैंपल कोड
  • Java में Android डेवलपमेंट की बुनियादी जानकारी
  • मशीन लर्निंग मॉडल के बारे में बुनियादी जानकारी

इस कोडलैब में, ML Kit पर फ़ोकस किया गया है. ऐसे कॉन्सेप्ट और कोड ब्लॉक कर दिए जाते हैं जो काम के नहीं होते. वे आपको दिए जाते हैं, ताकि आप उन्हें आसानी से कॉपी करके चिपका सकें.

2. सेट अप करना

कोड डाउनलोड करें

इस कोडलैब के लिए सभी कोड डाउनलोड करने के लिए, नीचे दिए गए लिंक पर क्लिक करें:

डाउनलोड की गई ज़िप फ़ाइल को अनपैक करें. इससे, रूट फ़ोल्डर (mlkit-android-master) अनपैक हो जाएगा. इसमें आपको ज़रूरी सभी संसाधन मिलेंगे. इस कोडलैब के लिए, आपको सिर्फ़ vision सबडायरेक्ट्री में मौजूद संसाधनों की ज़रूरत होगी.

mlkit-android-master रिपॉज़िटरी में मौजूद vision सबडायरेक्ट्री में दो डायरेक्ट्री होती हैं:

  • android_studio_folder.pngstarter—इस कोडलैब में, आपको स्टार्टर कोड पर काम करना होगा.
  • android_studio_folder.pngfinal—पूरे किए गए सैंपल ऐप्लिकेशन के लिए पूरा कोड.

3. ML Kit की डिपेंडेंसी देखना

ML Kit के लिए डिपेंडेंसी की पुष्टि करना

यहां दी गई लाइनें, आपके प्रोजेक्ट की 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 Kit की खास डिपेंडेंसी हैं. आपको इस कोडलैब में सुविधाएं लागू करने के लिए, इनकी ज़रूरत होगी.

4. स्टार्टर ऐप्लिकेशन चलाएं

प्रोजेक्ट को Android Studio में इंपोर्ट करने और ML Kit के लिए डिपेंडेंसी की जांच करने के बाद, ऐप्लिकेशन को पहली बार चलाया जा सकता है. Android Studio एमुलेटर शुरू करें और Android Studio टूलबार में चालू करें ( execute.png) पर क्लिक करें.

ऐप्लिकेशन आपके एम्युलेटर पर लॉन्च हो जाना चाहिए. अब आपको एक बुनियादी लेआउट दिखेगा. इसमें एक ड्रॉप-डाउन फ़ील्ड होगा, जिसमें तीन इमेज में से किसी एक को चुना जा सकता है. अगले सेक्शन में, आपको अपने ऐप्लिकेशन में टेक्स्ट की पहचान करने की सुविधा जोड़नी होगी, ताकि इमेज में मौजूद टेक्स्ट की पहचान की जा सके.

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

           }
       }
   }
}

ऐप्लिकेशन को एम्युलेटर पर चलाएं

अब Android Studio टूलबार में, चालू करें ( execute.png) पर क्लिक करें. ऐप्लिकेशन लोड होने के बाद, पक्का करें कि ड्रॉप-डाउन फ़ील्ड में Test Image 1(Text) चुना गया हो. इसके बाद, FIND TEXT बटन पर क्लिक करें.

अब आपका ऐप्लिकेशन, नीचे दी गई इमेज की तरह दिखेगा. इसमें, ओरिजनल इमेज के ऊपर टेक्स्ट की पहचान करने के नतीजे और बॉउंडिंग बॉक्स दिख रहे हैं.

10b12d0e8822eaf5.png

फ़ोटो: Kai Schreiber / Wikimedia Commons / CC BY-SA 2.0

बधाई हो, आपने एमएल किट का इस्तेमाल करके, अपने ऐप्लिकेशन में टेक्स्ट पहचानने की सुविधा जोड़ दी है! डिवाइस पर टेक्स्ट की पहचान करने की सुविधा, कई कामों के लिए बेहतरीन है. ऐसा इसलिए, क्योंकि यह तब भी काम करती है, जब आपके ऐप्लिकेशन में इंटरनेट कनेक्शन न हो. साथ ही, यह स्टिल इमेज के साथ-साथ लाइव वीडियो फ़्रेम पर भी तेज़ी से काम करती है.

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

ऐप्लिकेशन को एम्युलेटर पर चलाएं

अब Android Studio टूलबार में, चालू करें ( execute.png) पर क्लिक करें. ऐप्लिकेशन लोड होने के बाद, पक्का करें कि ड्रॉप-डाउन फ़ील्ड में Test Image 2 (Face) चुना गया हो. इसके बाद, FIND FACE CONTOUR बटन पर क्लिक करें.

अब आपका ऐप्लिकेशन नीचे दी गई इमेज की तरह दिखेगा. इसमें, चेहरे के कॉन्टूर का पता लगाने के नतीजे दिखेंगे. साथ ही, चेहरे के कॉन्टूर को ओरिजनल इमेज के ऊपर पॉइंट के तौर पर दिखाया जाएगा.

f9ff2fcbf63f0f3b.png

बधाई हो, आपने एमएल किट का इस्तेमाल करके, अपने ऐप्लिकेशन में चेहरे के कॉन्टूर डिटेक्शन की सुविधा को जोड़ दिया है! उपयोगकर्ता के डिवाइस पर फ़ेस कंटूर की पहचान करने की सुविधा, कई तरह के मामलों में काम आती है. यह सुविधा तब भी काम करती है, जब आपके ऐप्लिकेशन में इंटरनेट कनेक्शन न हो. साथ ही, यह स्टिल इमेज और लाइव वीडियो फ़्रेम के साथ इस्तेमाल करने के लिए काफ़ी तेज़ हो.

7. बधाई हो!

आपने अपने ऐप्लिकेशन में मशीन लर्निंग की बेहतर सुविधाएं आसानी से जोड़ने के लिए, ML Kit का इस्तेमाल कर लिया है.

हमने क्या-क्या शामिल किया है

  • अपने Android ऐप्लिकेशन में ML Kit जोड़ने का तरीका
  • इमेज में टेक्स्ट ढूंढने के लिए, ML Kit में डिवाइस पर टेक्स्ट की पहचान करने की सुविधा का इस्तेमाल करने का तरीका
  • इमेज में चेहरे की विशेषताओं की पहचान करने के लिए, ML Kit में डिवाइस पर मौजूद चेहरे के कॉन्टूर की सुविधा का इस्तेमाल करने का तरीका

अगले चरण

  • अपने Android ऐप्लिकेशन में ML Kit का इस्तेमाल करें!

ज़्यादा जानें