Tokopedia, इंडोनेशिया की एक टेक्नोलॉजी कंपनी है. यह सबसे बड़े ई-कॉमर्स मार्केटप्लेस में से एक है. इस प्लैटफ़ॉर्म पर 40 से ज़्यादा डिजिटल प्रॉडक्ट और 140 लाख से ज़्यादा रजिस्टर किए गए सेलर मौजूद हैं.
Mitra Tokopedia, Tokopedia के कारोबारी वर्टिकल का एक वेब ऐप्लिकेशन है. इससे छोटे कारोबार के मालिकों को क्रेडिट और गेम वाउचर, डेटा पैकेज, बिजली के टोकन, राष्ट्रीय स्वास्थ्य सेवा के बिल वगैरह जैसे डिजिटल प्रॉडक्ट बेचने में मदद मिलती है. यह वेबसाइट, 700 से ज़्यादा शहरों में Mitra Tokopedia सेलर के लिए मुख्य चैनलों में से एक है. इसलिए, यह ज़रूरी है कि उपयोगकर्ताओं को इसका बेहतर अनुभव मिले.
शामिल होने की प्रोसेस के एक अहम चरण में, इन सेलर को अपनी पहचान की पुष्टि करनी होती है. सेलर को अपना राष्ट्रीय आईडी और उस आईडी के साथ सेल्फ़ी अपलोड करनी होगी, ताकि सेलर की पहचान की पुष्टि की जा सके. इसे ग्राहक की जानकारी (केवाईसी) की प्रोसेस कहा जाता है.
अपने वेब ऐप्लिकेशन में, ज़रूरी केवाईसी प्रोसेस में मशीन लर्निंग की सुविधाएं जोड़कर, Mitra Tokopedia ने उपयोगकर्ता अनुभव को बेहतर बनाया. साथ ही, पुष्टि न होने की संख्या में 20% से ज़्यादा की कमी आई. उन्होंने मैन्युअल तरीके से अनुमतियों की संख्या को करीब 70% तक कम करके, ऑपरेशन से जुड़ी लागत में भी बचत की.
चुनौती
ज़्यादातर केवाईसी डेटा अस्वीकार किया जा रहा था. इस वजह से, मैन्युअल तरीके से पुष्टि करने के लिए, ऑपरेशंस टीम को हर हफ़्ते हज़ारों टिकट मिल रहे थे. इससे, न सिर्फ़ ऑपरेशन की लागत ज़्यादा हुई, बल्कि जिन सेलर की पुष्टि की प्रोसेस में देरी हुई उन्हें भी खराब अनुभव मिला. अस्वीकार किए जाने की सबसे बड़ी वजह यह थी कि बिक्री करने वाले लोगों ने आईडी कार्ड के साथ सेल्फ़ी सही तरीके से अपलोड नहीं की थी. Mitra Tokopedia, आधुनिक वेब की सुविधाओं का इस्तेमाल करके, इस समस्या को बड़े पैमाने पर हल करना चाहता था.
समाधान
Tokopedia की टीम ने इस समस्या को हल करने के लिए, पहचान की पुष्टि करने की प्रोसेस के पहले चरण में, TensorFlow.js के साथ एमएल का इस्तेमाल करने का फ़ैसला लिया. यह चरण तब शुरू होता है, जब उपयोगकर्ता इमेज अपलोड करता है. जब सेलर आईडी कार्ड और सेल्फ़ी की इमेज अपलोड करता है, तब MediaPipe और TensorFlow की चेहरे की पहचान करने वाली लाइब्रेरी का इस्तेमाल करके, सेलर के चेहरे की पहचान करने के लिए छह मुख्य पॉइंट का इस्तेमाल किया जाता है. इसके बाद, मॉडल के आउटपुट का इस्तेमाल, स्वीकार किए जाने की ज़रूरी शर्तों की जांच करने के लिए किया जाता है. पुष्टि होने के बाद, जानकारी को बैकएंड पर भेज दिया जाता है. अगर पुष्टि नहीं हो पाती है, तो सेलर को गड़बड़ी का मैसेज और फिर से कोशिश करने का विकल्प मिलता है. इसमें हाइब्रिड तरीके का इस्तेमाल किया गया है. इसमें फ़ोन की जानकारी के आधार पर, मॉडल, डिवाइस पर या सर्वर साइड पर अनुमान लगाता है. कम सुविधा वाला डिवाइस, सर्वर पर अनुमान लगाएगा.
केवाईसी की प्रोसेस में शुरुआत से ही एमएल मॉडल का इस्तेमाल करने से, ये काम किए जा सकते हैं:
- केवाईसी प्रोसेस में अस्वीकार किए जाने की दर को कम करना.
- मॉडल की मदद से, इमेज की क्वालिटी का आकलन करके, उपयोगकर्ताओं को यह चेतावनी दी जा सकती है कि उनकी इमेज अस्वीकार की जा सकती हैं.
अन्य तरीकों के बजाय, एमएल को क्यों चुनें?
मशीन लर्निंग की मदद से, बार-बार किए जाने वाले ऐसे टास्क अपने-आप पूरे किए जा सकते हैं जिन्हें मैन्युअल तरीके से पूरा करने में काफ़ी समय लगता है या जिन्हें पूरा करना मुश्किल होता है. Tokopedia के मामले में, मौजूदा नॉन-एमएल (मशीन लर्निंग) के समाधान को ऑप्टिमाइज़ करने से ज़रूरी नतीजे नहीं मिल पाए. वहीं, एमएल के समाधान से ऑपरेशंस टीम पर काफ़ी कम लोड पड़ा. इस टीम को हर हफ़्ते हज़ारों अनुमतियों को मैन्युअल तरीके से प्रोसेस करना पड़ता था. एमएल (मशीन लर्निंग) सलूशन की मदद से, इमेज की जांच तुरंत की जा सकती है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है और ऑपरेशन की परफ़ॉर्मेंस भी बेहतर होती है. समस्या को फ़्रेम करने के बारे में ज़्यादा जानें. इससे यह तय करने में मदद मिलेगी कि एमएल आपकी समस्या का सही समाधान है या नहीं.
मॉडल चुनते समय ध्यान रखने वाली बातें
एमएल मॉडल चुनते समय, इन बातों का ध्यान रखा गया.
लागत
उन्होंने मॉडल का इस्तेमाल करने की कुल लागत का आकलन किया. TensorFlow.js एक ऐसा ओपन सोर्स पैकेज है जिसे Google अच्छी तरह से मैनेज करता है. इसलिए, हमें लाइसेंस और रखरखाव के खर्चों से बचत होती है. अनुमान लगाने की लागत भी एक और बात है. क्लाइंट साइड पर अनुमान लगाने की सुविधा से, महंगे जीपीयू की मदद से सर्वर साइड पर अनुमान लगाने की तुलना में काफ़ी पैसे बचते हैं. ऐसा तब ज़्यादा होता है, जब डेटा अमान्य और इस्तेमाल न किया जा सकने वाला हो.
विस्तार करने की क्षमता
उन्होंने मॉडल और टेक्नोलॉजी को बड़े पैमाने पर इस्तेमाल करने की संभावना को ध्यान में रखा. क्या यह हमारे प्रोजेक्ट के आगे बढ़ने के साथ-साथ, डेटा और मॉडल की जटिलता को मैनेज कर सकता है? क्या इसे दूसरे प्रोजेक्ट या इस्तेमाल के उदाहरणों के लिए बढ़ाया जा सकता है? डिवाइस पर प्रोसेस करने की सुविधा से मदद मिलती है, क्योंकि मॉडल को सीडीएन पर होस्ट किया जा सकता है और क्लाइंट साइड पर डिलीवर किया जा सकता है. यह सुविधा बहुत स्केलेबल है.
परफ़ॉर्मेंस
उन्होंने लाइब्रेरी के साइज़ (केबी में) और रनटाइम प्रोसेस के इंतज़ार का समय ध्यान में रखा. Mitra Tokopedia के ज़्यादातर उपयोगकर्ताओं के पास, इंटरनेट की सामान्य स्पीड और कनेक्टिविटी वाले मीडियम से लेकर लो-एंड डिवाइस होते हैं. इसलिए, डाउनलोड और रनटाइम (यानी मॉडल कितनी तेज़ी से आउटपुट दे सकता है) के हिसाब से परफ़ॉर्मेंस को प्राथमिकता दी जाती है, ताकि उनकी खास ज़रूरतों को पूरा किया जा सके और उपयोगकर्ता को बेहतर अनुभव दिया जा सके.
दूसरी ज़रूरी बातें
कानूनों का पालन: उन्हें यह पक्का करना था कि चुनी गई लाइब्रेरी, डेटा की सुरक्षा और निजता से जुड़े कानूनों का पालन करती हो.
स्किलसेट: उन्होंने अपनी टीम की विशेषज्ञता और स्किल सेट का आकलन किया. कुछ एमएल फ़्रेमवर्क और लाइब्रेरी के लिए, प्रोग्रामिंग की खास भाषाओं या किसी खास क्षेत्र में विशेषज्ञता की ज़रूरत पड़ सकती है. इन बातों को ध्यान में रखकर, उन्होंने अपने मशीन लर्निंग प्रोजेक्ट के लिए सही मॉडल चुनने का फ़ैसला लिया.
चुनी गई टेक्नोलॉजी
इन बातों को ध्यान में रखते हुए, TensorFlow.js ने उनकी ज़रूरतों को पूरा किया. यह अपने WebGL बैकएंड का इस्तेमाल करके, डिवाइस पर पूरी तरह से चल सकता है, ताकि डिवाइस के GPU का इस्तेमाल किया जा सके. डिवाइस पर मॉडल चलाने से, उपयोगकर्ता को तेज़ी से सुझाव मिलते हैं. ऐसा इसलिए होता है, क्योंकि सर्वर के इंतज़ार का समय कम हो जाता है और सर्वर के कंप्यूट की लागत कम हो जाती है. डिवाइस पर मशीन लर्निंग के फ़ायदे और सीमाएं लेख में, डिवाइस पर मशीन लर्निंग के बारे में ज़्यादा पढ़ें.
"TensorFlow.js, Google की एक ओपन सोर्स मशीन लर्निंग लाइब्रेरी है. इसे JavaScript डेवलपर के लिए बनाया गया है. यह ब्राउज़र में क्लाइंट साइड पर चल सकती है. यह वेब एआई के लिए सबसे बेहतर विकल्प है. इसमें WebGL, WebAssembly, और WebGPU बैकएंड ऑपरेटर के साथ बेहतर सहायता मिलती है. इसका इस्तेमाल ब्राउज़र में तेज़ी से किया जा सकता है."—वेब के लिए Photoshop को बेहतर बनाने के लिए, Adobe ने TensorFlow.js के साथ वेब एमएल का इस्तेमाल कैसे किया
तकनीकी तौर पर लागू करना
Mitra Tokopedia ने MediaPipe और TensorFlow की चेहरे की पहचान करने वाली लाइब्रेरी का इस्तेमाल किया. यह एक ऐसा पैकेज है जो रीयल-टाइम में चेहरे की पहचान करने के लिए मॉडल उपलब्ध कराता है.
खास तौर पर, इस समाधान के लिए, इस लाइब्रेरी में दिए गए MediaPipeFaceDetector-TFJS मॉडल का इस्तेमाल किया गया था. यह मॉडल, tfjs
रनटाइम को लागू करता है.
इसे लागू करने से पहले, MediaPipe के बारे में थोड़ी जानकारी दें. MediaPipe की मदद से, मोबाइल (Android, iOS), वेब, डेस्कटॉप, एज डिवाइसों, और IoT पर, डिवाइस में मशीन लर्निंग के सलूशन बनाए और डिप्लॉय किए जा सकते हैं.
इस पोस्ट को लिखने के समय, MediaPipe ने 14 अलग-अलग समाधान उपलब्ध कराए हैं. mediapipe
या tfjs
रनटाइम में से किसी एक का इस्तेमाल किया जा सकता है. tfjs
रनटाइम, JavaScript का इस्तेमाल करके बनाया गया है. साथ ही, यह एक ऐसा JavaScript पैकेज उपलब्ध कराता है जिसे वेब ऐप्लिकेशन से बाहर से डाउनलोड किया जा सकता है. यह mediapipe
रनटाइम से अलग है, जिसे C++ के साथ बनाया गया है और WebAssembly मॉड्यूल में कंपाइल किया गया है. इनमें मुख्य अंतर परफ़ॉर्मेंस, डिबग करने की सुविधा, और बंडलिंग है. JavaScript पैकेज को वेबपैक जैसे क्लासिक बंडलर के साथ बंडल किया जा सकता है. इसके उलट, Wasm मॉड्यूल एक बड़ा और अलग बाइनरी रिसॉर्स है. इसे लोड करने में लगने वाले समय पर निर्भर नहीं किया जाता. साथ ही, इसके लिए Wasm की गड़बड़ी को ठीक करने के लिए अलग वर्कफ़्लो की ज़रूरत होती है. हालांकि, यह तकनीकी और परफ़ॉर्मेंस से जुड़ी ज़रूरी शर्तों को पूरा करने के लिए, तेज़ी से लागू होता है.
Tokopedia पर लागू करने के लिए, सबसे पहले मॉडल को इस तरह से शुरू करें. जब उपयोगकर्ता कोई फ़ोटो अपलोड करता है, तो डिटेक्टर को इनपुट के तौर पर HTMLImageElement
भेजा जाता है.
// Create the detector.
const model = faceDetection.SupportedModels.MediaPipeFaceDetector;
const detectorConfig = {
runtime: 'tfjs'
};
const detector = await faceDetection.createDetector(model, detectorConfig);
// Run inference to start detecting faces.
const estimationConfig = {flipHorizontal: false};
const faces = await detector.estimateFaces(image, estimationConfig);
चेहरे की सूची के नतीजे में, इमेज में मौजूद हर चेहरे की पहचान की गई होती है. अगर मॉडल किसी भी चेहरे का पता नहीं लगा पाता है, तो सूची खाली होगी. हर चेहरे के लिए, इसमें पहचानी गई चेहरे का बॉउंडिंग बॉक्स होता है. साथ ही, पहचानी गई चेहरे के लिए छह मुख्य पॉइंट का ऐरे भी होता है. जैसे, आंखें, नाक, और मुंह. हर मुख्य पॉइंट में x और y के साथ-साथ एक नाम भी होता है.
[
{
box: {
xMin: 304.6476503248806,
xMax: 502.5079975897382,
yMin: 102.16298762367356,
yMax: 349.035215984403,
width: 197.86034726485758,
height: 246.87222836072945
},
keypoints: [
{x: 446.544237446397, y: 256.8054528661723, name: "rightEye"},
{x: 406.53152857172876, y: 255.8, "leftEye },
...
],
}
]
box
, इमेज के पिक्सल स्पेस में चेहरे के बाउंडिंग बॉक्स को दिखाता है. इसमें xMin
, xMax
, x-बाउंड को दिखाता है, yMin
, yMax
, y-बाउंड को दिखाता है, और width
, height
, बाउंडिंग बॉक्स के डाइमेंशन को दिखाता है.
keypoints
, x
, और y
, इमेज के पिक्सल स्पेस में मुख्य पॉइंट की असल जगह दिखाते हैं.
name
, मुख्य पॉइंट के लिए एक लेबल उपलब्ध कराता है. ये लेबल क्रमशः 'rightEye'
, 'leftEye'
,
'noseTip'
, 'mouthCenter'
, 'rightEarTragion'
, और 'leftEarTragion'
होते हैं.
इस पोस्ट की शुरुआत में बताया गया है कि सेलर की पुष्टि करने के लिए, उसे अपना नेशनल आईडी और आईडी के साथ सेल्फ़ी अपलोड करनी होगी.
इसके बाद, मॉडल के आउटपुट का इस्तेमाल, पहचान की पुष्टि करने की ज़रूरी शर्तों की जांच करने के लिए किया जाता है. इसका मतलब है कि पहचान की पुष्टि करने के लिए, पहले बताए गए छह मुख्य पॉइंट से मैच होना ज़रूरी है.
पुष्टि हो जाने के बाद, सेलर की ज़रूरी जानकारी को बैकएंड पर भेज दिया जाता है. अगर पुष्टि नहीं हो पाती है, तो सेलर को एक मैसेज मिलेगा. साथ ही, उसे फिर से कोशिश करने का विकल्प भी मिलेगा. बैकएंड को कोई जानकारी नहीं भेजी जाएगी.
कम कीमत वाले डिवाइसों की परफ़ॉर्मेंस से जुड़ी बातें
यह पैकेज सिर्फ़ 24.8 केबी (छोटा और ज़िप किया गया) का है. इससे डाउनलोड में लगने वाले समय पर काफ़ी असर नहीं पड़ता. हालांकि, बहुत कम रैम वाले डिवाइसों के लिए, रनटाइम प्रोसेसिंग में काफ़ी समय लगता है. मशीन लर्निंग के ज़रिए चेहरे की पहचान करने वाले मॉडल में दो इमेज भेजने से पहले, डिवाइस के रैम और सीपीयू की जांच करने के लिए अतिरिक्त लॉजिक जोड़ा गया था.
अगर डिवाइस में 4 जीबी से ज़्यादा रैम, 4G से ज़्यादा का नेटवर्क कनेक्शन, और 6 से ज़्यादा कोर वाला सीपीयू है, तो चेहरे की पुष्टि करने के लिए, इमेज को डिवाइस पर मौजूद मॉडल पर भेजा जाता है. अगर ये ज़रूरी शर्तें पूरी नहीं की जाती हैं, तो डिवाइस पर मौजूद मॉडल को छोड़ दिया जाता है. साथ ही, इन पुराने डिवाइसों के लिए, हाइब्रिड तरीके का इस्तेमाल करके इमेज को सीधे सर्वर पर पुष्टि के लिए भेज दिया जाता है. समय के साथ, हार्डवेयर के बेहतर होते रहने की वजह से, ज़्यादा डिवाइसों में सर्वर से कॉम्प्यूट ऑफ़लोड किया जा सकेगा.
असर
एमएल इंटिग्रेशन की मदद से, Tokopedia ने अस्वीकार किए जाने की दर को कम किया. साथ ही, उसे ये नतीजे भी मिले:
- अस्वीकार किए गए अनुरोधों की दर में 20% से ज़्यादा की कमी आई हो.
- मैन्युअल तरीके से अनुमति देने की संख्या में करीब 70% की कमी आई है.
इससे, सेलर को बेहतर उपयोगकर्ता अनुभव मिला. साथ ही, Tokopedia की टीम की ऑपरेशनल लागत भी कम हुई.
नतीजा
कुल मिलाकर, इस केस स्टडी के नतीजों से पता चला है कि सही इस्तेमाल के उदाहरणों के लिए, वेब पर डिवाइस पर मौजूद एमएल सलूशन, उपयोगकर्ता अनुभव और सुविधाओं के असर को बेहतर बनाने के साथ-साथ, लागत में बचत और कारोबार के अन्य फ़ायदे पाने में मददगार हो सकते हैं.
MediaPipe Studio और वेब के लिए MediaPipe के फ़ेस डिटेक्टर के कोड सैंपल का इस्तेमाल करके, MediaPipe की फ़ेस डिटेक्शन सुविधा को आज़माएं.
अगर आपको डिवाइस पर मौजूद एमएल की मदद से, अपने वेब ऐप्लिकेशन की सुविधाओं को बेहतर बनाना है, तो यहां दिए गए संसाधन देखें: