SmileID ने CameraX की मदद से, 18,000 से ज़्यादा Android डिवाइसों पर पहचान की पुष्टि करने की सुविधा को कैसे बेहतर बनाया
पढ़ने में लगने वाला समय: 4 मिनट
बैंकिंग और सिम रजिस्ट्रेशन के लिए, पहचान की पुष्टि करने वाले ऐप्लिकेशन को चेहरे की साफ़ और हाई रिज़ॉल्यूशन वाली फ़ोटो की ज़रूरत होती है. इससे स्पूफ़िंग और डीपफ़ेक का पता लगाने में मदद मिलती है. Android कैमरा डेवलपर के लिए, कम मेमोरी वाले डिवाइसों को क्रैश किए बिना, लाइवनेस और एंटी-स्पूफ़िंग की जांच के लिए काफ़ी शार्प फ़्रेम कैप्चर करना एक आम चुनौती है.
SmileID, अफ़्रीका में पहचान की पुष्टि करने वाला एक लोकप्रिय एसडीके है. इसके लिए, यह चुनौती दोगुनी हो जाती है, क्योंकि यहां अलग-अलग तरह के हार्डवेयर नेटवर्क मौजूद हैं. SmileID के टारगेट डिवाइसों के बाज़ार में हिस्सेदारी में, 85% डिवाइस Android के हैं. इनमें कम कीमत वाले ऐसे स्मार्टफ़ोन शामिल हैं जिनमें कम क्षमता वाले प्रोसेसर होते हैं. साथ ही, इनमें कम जाने-पहचाने क्षेत्रीय मॉडल और बिक्री की जगह (पीओएस) के लिए बनाए गए मज़बूत कस्टम टर्मिनल शामिल हैं.
CameraX को अपनाने से पहले, SmileID को कैमरा इंजीनियरिंग से जुड़ी सामान्य, लेकिन मुश्किल समस्याओं का सामना करना पड़ा: स्ट्रेच की गई झलक फ़ीड, रोटेट किए गए सेंसर ओरिएंटेशन, आउट-ऑफ़-मेमोरी (ओओएम) क्रैश, और कस्टम ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) बग. SmileID ने अपने मुख्य Android SDK टूल को CameraX पर माइग्रेट करके, इन चुनौतियों को कारोबार के लिए एक बड़े फ़ायदे में बदल दिया.
SmileID के मुताबिक, अपने Android SDK टूल को CameraX पर माइग्रेट करने से ये नतीजे मिले:
| मेट्रिक | CameraX पर माइग्रेट करने का असर |
|---|---|
| SDK टूल इस्तेमाल करने वाले ऐप्लिकेशन की संख्या में बढ़ोतरी | दूसरे साल तक 20 गुना (CameraX से पहले यह 2 से 3 गुना था) |
| पुष्टि करने की प्रोसेस पूरी होने की दर | SmileID के SDK टूल इस्तेमाल करने वाले ऐप्लिकेशन के लिए, 20% की बढ़ोतरी |
| कैप्चर रिज़ॉल्यूशन | सेल्फ़ी/लाइवनेस पिक्सल में चार गुना बढ़ोतरी, जिसमें नेटवर्क ओवरहेड शून्य है |
| डिवाइस मॉडल के साथ काम करने की सुविधा | यह 18,000 से ज़्यादा Android डिवाइस टाइप पर काम करता है |
| पुष्टि की प्रोसेस पूरी करने वाले उपयोगकर्ताओं की कुल संख्या | 16 करोड़ से ज़्यादा लोगों की पहचान की पुष्टि की गई |
चुनौती: फ़्रैगमेंटेड हार्डवेयर और लेगसी एपीआई से जुड़ी समस्याएं
किसी उपयोगकर्ता की पहचान की पुष्टि करने के लिए, SmileID के SDK को उपयोगकर्ता के डिवाइस पर लाइवनेस की जांच और क्लाउड-आधारित डीपफ़ेक का पता लगाने के लिए हाई रिज़ॉल्यूशन वाली सेल्फ़ी फ़्रेम कैप्चर करनी होंगी.
लेगसी Camera1 और लो-लेवल Camera2 API के इस्तेमाल के तहत, कई वजहों से इसे लगातार हासिल करना मुश्किल था:
- ओईएम के हिसाब से कस्टमाइज़ेशन और गड़बड़ियां: अलग-अलग मैन्युफ़ैक्चरर के डिवाइसों में, फ़िज़िकल कैमरा सेंसर ओरिएंटेशन की जानकारी अलग-अलग तरीके से दी जाती है. इस वजह से, चेहरे की इमेज गलत ओरिएंटेशन में कैप्चर होती है या इमेज की झलक रोटेट हो जाती है.
- आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में गड़बड़ी: कम कीमत वाले डिवाइसों पर किसी खास फ़्रेम साइज़ का अनुरोध करने पर, अक्सर कैमरे की झलक वर्टिकल या हॉरिज़ॉन्टल तौर पर स्ट्रेच हो जाती थी. इससे उपयोगकर्ता का चेहरा खराब हो जाता था और बायोमेट्रिक से पहचान की पुष्टि करने की सुविधा काम नहीं करती थी.
- आउट-ऑफ़-मेमोरी (ओओएम) क्रैश: कम रैम (आम तौर पर 1 जीबी या उससे कम) वाले डिवाइसों पर, रॉ हाई-रिज़ॉल्यूशन वाली इमेज को प्रोसेस करने से, मेमोरी के बंटवारे से जुड़ी गंभीर समस्याएं आती थीं.
इन समस्याओं की वजह से, साल-दर-साल SmileID के एसडीके को अपनाने की दर सिर्फ़ दो से तीन गुना तक सीमित थी. साथ ही, कई बार पुष्टि करने के लिए, रीयल-टाइम में उपयोगकर्ता के डिवाइस पर लाइवनेस की जांच करने के बजाय, हाई-लेटेंसी वाले REST API पर स्टैटिक फ़ोटो अपलोड करनी पड़ती थी.
समाधान: CameraX की मदद से, एक जैसे पाइपलाइन बनाना
SmileID ने CameraX का इस्तेमाल करके, अपने मोबाइल SDK टूल को फिर से डिज़ाइन किया. CameraX को खास तौर पर, डिवाइस के मौजूदा नेटवर्क की जटिलता को कम करने के लिए बनाया गया है. साथ ही, यह डेवलपर को एक जैसा और नेटिव लाइफ़साइकल के बारे में जानकारी देने वाला इंटरफ़ेस उपलब्ध कराता है.
SmileID ने CameraX के मुख्य इस्तेमाल के उदाहरणों (खास तौर पर Preview और ImageAnalysis) का इस्तेमाल करके, दो मकसद वाला एक मज़बूत कैमरा पाइपलाइन बनाया:
- झलक: यह सुविधा, उपयोगकर्ता को गाइड करने के लिए, कैमरा फ़ीड की रीयल-टाइम झलक दिखाती है. यह झलक, सही अनुपात में रेंडर होती है.
- ImageAnalysis: यह रीयल-टाइम में, फ़्रेम को लगातार प्रोसेस करता है, ताकि लाइव होने और फ़्रेम में चेहरे का पता लगाने की प्रोसेस अपने-आप पूरी हो सके. साथ ही, पुष्टि की गई सेल्फ़ी का फ़्रेम निकाला जा सके.
डीपफ़ेक का पता लगाने के लिए, SmileID ने CameraX के आधुनिक ResolutionSelector एपीआई को सीधे अपने ImageAnalysis कॉन्फ़िगरेशन में जोड़ा. इससे, ओओएम क्रैश की समस्या के बिना, बारीकी से जानकारी कैप्चर करने में मदद मिली. इसकी मदद से, डेवलपर टारगेट रिज़ॉल्यूशन का अनुरोध कर सकते हैं. साथ ही, अगर कोई डिवाइस उस साइज़ के रिज़ॉल्यूशन के साथ काम नहीं करता है, तो फ़ॉलबैक नियम चुन सकते हैं. उदाहरण के लिए, यहां दिए गए डायग्राम और सैंपल कॉन्फ़िगरेशन से पता चलता है कि ResolutionSelector, 1200x900 के टारगेट के आस-पास के साइज़ का आकलन कैसे करता है:
यहां सैंपल कोड दिया गया है. इससे पता चलता है कि अपने ऐप्लिकेशन में ResolutionSelector को STRATEGY_KEEP_ONLY_LATEST के साथ कैसे जोड़ा जा सकता है. शार्पनेस को प्राथमिकता देने के लिए FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER का इस्तेमाल करें या मेमोरी के इस्तेमाल को सीमित करने के लिए FALLBACK_RULE_CLOSEST_LOWER_THEN_HIGHER का इस्तेमाल करें:
import android.util.Size import androidx.camera.core.CameraSelector import androidx.camera.core.ImageAnalysis import androidx.camera.core.Preview import androidx.camera.core.resolutionselector.AspectRatioStrategy import androidx.camera.core.resolutionselector.ResolutionSelector import androidx.camera.core.resolutionselector.ResolutionStrategy import androidx.camera.lifecycle.ProcessCameraProvider import androidx.lifecycle.LifecycleOwner fun configureCameraX(cameraProvider: ProcessCameraProvider, lifecycleOwner: LifecycleOwner, surfaceProvider: Preview.SurfaceProvider, executor: java.util.concurrent.Executor, analyzer: ImageAnalysis.Analyzer) { // 1. Define a resolution strategy requesting high quality (for example, 1200x900px) // and selecting the closest higher (or, if unavailable, lower) resolution. val resolutionSelector = ResolutionSelector.Builder() .setResolutionStrategy( ResolutionStrategy( Size(1200, 900), ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER ) ) .setAspectRatioStrategy(AspectRatioStrategy.RATIO_4_3_FALLBACK_AUTO_STRATEGY) .build() // 2. Configure the ImageAnalysis use case with the resolution selector // and a backpressure strategy that keeps the UI responsive on slow processors. val imageAnalysis = ImageAnalysis.Builder() .setResolutionSelector(resolutionSelector) // Drops older frames if the device's CPU is still busy analyzing the previous one .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() // 3. Set up the preview stream and attach the Analyzer and SurfaceProvider imageAnalysis.setAnalyzer(executor, analyzer) val preview = Preview.Builder().build().also { it.surfaceProvider = surfaceProvider } // 4. Bind both use cases concurrently to the lifecycle provider try { cameraProvider.unbindAll() cameraProvider.bindToLifecycle( lifecycleOwner, CameraSelector.DEFAULT_FRONT_CAMERA, preview, imageAnalysis ) } catch (exc: Exception) { // Handle binding failure safely } }
हाई-डेंसिटी पिक्सल फ़्रेम का अनुरोध करके और उन्हें स्थानीय तौर पर प्रोसेस करके, SmileID ने कैप्चर की गई सेल्फ़ी के रिज़ॉल्यूशन में चार गुना बढ़ोतरी की. SmileID ने डिवाइस पर चेहरे के क्रॉप किए गए हिस्से को भी कंप्रेस किया, ताकि नेटवर्क अपलोड साइज़ उनके पिछले सिस्टम जैसा ही रहे. इस आर्किटेक्चर की मदद से, मशीन लर्निंग मॉडल के लिए ज़्यादा सटीक डेटा मिला. साथ ही, उपयोगकर्ताओं के लिए मोबाइल डेटा की लागत भी नहीं बढ़ी.
CameraX, हार्डवेयर से जुड़े अंतर को कैसे दूर करता है
SmileID ने CameraX को स्टैंडर्ड के तौर पर अपनाया. इसका मतलब है कि वह अपने एसडीके को सभी डिवाइसों पर स्टेबल बनाए रखने के लिए, कंपैटिबिलिटी इंजीनियरिंग की दो लेयर पर भरोसा कर सकता है:
1. Google की Camera and Media Test Lab
CameraX की काम करने की क्षमता को लगातार, फ़िज़िकल हार्डवेयर की पुष्टि से मदद मिलती है. Google की खास कैमरा और मीडिया टेस्ट लैब में, हर दिन एक ऑटोमेटेड टेस्ट सुइट चलाया जाता है. यह सुइट, 190 से ज़्यादा Android डिवाइस मॉडल के बड़े और रोटेटिंग मैट्रिक्स पर चलाया जाता है. इनमें अलग-अलग चिपसेट, ओएस वर्शन, और हार्डवेयर की क्षमताओं वाले डिवाइस शामिल हैं.
लोकप्रिय डिवाइसों पर एक जैसा अनुभव देने के लिए, Google की Camera and Media Test Lab, लाइब्रेरी रिग्रेशन को अपने-आप पकड़ लेती है. इससे पहले कि वे आपके प्रोडक्शन कोड पर असर डालें.
2. डिवाइस की गड़बड़ियों को अपने-आप ठीक करने की सुविधा
अलग-अलग Android डिवाइसों में, फ़िज़िकल कीबोर्ड से जुड़ी अलग-अलग सीमाएं होती हैं. ऐसा हो सकता है कि कुछ डिवाइसों पर, एक्सपोज़र की कस्टम सेटिंग सेट न हो पाएं. वहीं, कुछ डिवाइसों पर कुछ आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) का इस्तेमाल करने पर, इमेज का डेटा उल्टा दिखे. डेवलपर, डिवाइस बनाने वाली कंपनी और मॉडल के आधार पर, अपने कोड बेस को जटिल कंडिशनल ब्लॉक से न भरें, इसके लिए CameraX, डिवाइस की गड़बड़ियों की इंटरनल क्लास को मैनेज करता है. जैसे, camera-camera2 (DeviceQuirksLoader.kt) में DeviceQuirks और CameraQuirks. जब CameraX को किसी डिवाइस में कोई समस्या मिलती है, तो वह अपने-आप ही उस समस्या को ठीक करने का तरीका लागू कर देता है. SmileID के लिए, इसका मतलब था कि उनका एसडीके, 18,000 से ज़्यादा Android डिवाइसों पर भरोसेमंद तरीके से काम कर सकता है. इसके लिए, उन्हें अपने कोड बेस में डिवाइस के हिसाब से पैच की ज़रूरत नहीं पड़ी.
16 करोड़ से ज़्यादा पुष्टि करने की सुविधा
CameraX पर माइग्रेट करके, SmileID ने बाहरी ऐप्लिकेशन डेवलपर के लिए एसडीके इंटिग्रेशन को आसान बना दिया.
आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में गड़बड़ी, झलक देखने में होने वाली देरी, और अचानक ओओएम क्रैश होने की समस्या को खत्म करने से, उनके एसडीके का इस्तेमाल करने वाली सेवाओं के लिए, पुष्टि करने की प्रोसेस पास होने की दर में 20% की बढ़ोतरी हुई. पूरे अफ़्रीका में वित्तीय संस्थानों और मोबाइल मनी ऐप्लिकेशन के लिए, पास रेट में 20% की बढ़ोतरी का मतलब है कि लाखों असली उपयोगकर्ता, ऐप्लिकेशन को छोड़ने के बजाय उसमें शामिल हो रहे हैं.
डेवलपर ने इस पर ध्यान दिया. CameraX पर आधारित एसडीके को आसानी से इंटिग्रेट करने की सुविधा की वजह से, पहले साल में इसे अपनाने की दर में 15 गुना बढ़ोतरी हुई. इसके बाद, दूसरे साल में इसे अपनाने की दर में 20 गुना बढ़ोतरी हुई. SmileID ने CameraX का इस्तेमाल करके, अब तक 16 करोड़ से ज़्यादा लोगों की पहचान की पुष्टि की है.
CameraX स्किल की मदद से, अपने ऐप्लिकेशन को अलग-अलग डिवाइसों के साथ काम करने लायक बनाएं
कैमरे के लिए ऐप्लिकेशन बनाना मुश्किल नहीं है. आपकी टीम भी SmileID की तरह CameraX के पैटर्न इस्तेमाल कर सके, इसके लिए Android ने एआई कोडिंग एजेंट के लिए CameraX Skill लॉन्च किया है.
अपने डेवलपमेंट एनवायरमेंट में CameraX Skill का इस्तेमाल करने पर, Gemini जैसे एआई कोडिंग एजेंट, माइग्रेशन, लाइफ़साइकल बाइंडिंग, ConcurrentCamera, और MlKitAnalyzer के लिए मौजूदा CameraX पैटर्न लागू करते हैं. चाहे आपको ड्यूअल-कैमरा फ़ीड सेट अप करना हो, PreviewView या CameraXViewfinder की मदद से झलक कॉन्फ़िगर करनी हो या रीयल-टाइम मशीन लर्निंग (एमएल) विश्लेषण को मैनेज करना हो, CameraX स्किल आपके एजेंट को सटीक और प्रोडक्शन के लिए तैयार कोड जनरेट करने में मदद करती है.
- CameraX स्किल के बारे में जानें: अपने एआई कोडिंग टूल में स्किल जोड़ने के लिए, Android डेवलपर स्किल डायरेक्ट्री पर जाएं या Android का सीएलआई के साथ
android skills add cameraxचलाएं. - CameraX का इस्तेमाल शुरू करना: CameraX के आधिकारिक दस्तावेज़ पर जाएं और अपने कैमरे को कहीं भी इस्तेमाल करें.
-
केस स्टडीGrab, दक्षिण-पूर्व एशिया का एक लोकप्रिय सुपरऐप्लिकेशन है. यह एक ही ऐप्लिकेशन के ज़रिए, आठ देशों में लाखों उपयोगकर्ताओं को डिलीवरी, मोबिलिटी, और वित्तीय सेवाएं देता है.
Ajesh Pai, Nguyen Van Minh, Tracy Agyemang • पढ़ने में लगने वाला समय: 5 मिनट -
केस स्टडीटीम ने एआई-नेटिव यूज़र इंटरफ़ेस (यूआई) कोड बेस बनाया, जो ओरिजनल कोड बेस से 50% छोटा है. इससे एआई एजेंट के एक्ज़ीक्यूशन में लगने वाले समय में 35% की कमी आई. साथ ही, इंजीनियर और एजेंट के बीच होने वाले इंटरैक्शन में 32% की कमी आई और टोकन की लागत में 33% की कमी आई.
Pavlo Stavytskyi, Rebecca Franks • पढ़ने में लगने वाला समय: 11 मिनट -
केस स्टडीWhatsApp, दुनिया का सबसे बड़ा मैसेजिंग प्लैटफ़ॉर्म है. दुनिया भर में इसके अरबों उपयोगकर्ता हैं. यह अलग-अलग इलाकों के लोगों के लिए, डिफ़ॉल्ट कम्यूनिकेशन टूल है. यह निजी, भरोसेमंद, और सुरक्षित मैसेजिंग के ज़रिए उपयोगकर्ताओं को कनेक्ट करता है.
Niharika Arora, Tracy Agyemang, Mayank Jain • 8 मिनट में पढ़ें
Android डेवलपमेंट से जुड़ी ताज़ा अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.