छवियों से जानकारी एकत्र करने की क्षमता में बहुत अधिक व्यावसायिक संभावनाएँ हैं। और, यह मज़ेदार भी हो सकता है। इस लेख में, मैं बताऊँगा कि हमने इसका उपयोग कैसे किया
सरल शब्दों में कहें तो इमेज ऑब्जेक्ट डिटेक्शन किसी दी गई इमेज में मौजूद इकाइयों के बारे में जानकारी का पता लगाने और निकालने की प्रक्रिया है। इसमें वस्तुओं, गतिविधियों, स्थानों, जानवरों, उत्पादों आदि का पता लगाना शामिल है।
इमेज ऑब्जेक्ट डिटेक्शन के कई तरह के उपयोग विभिन्न उद्योगों में किए जाते हैं। बैंक, बीमा, सोशल मीडिया, डेटिंग ऐप, समाचार एजेंसियां और फिनटेक जैसे प्रमुख क्षेत्र किसी न किसी रूप में ऑब्जेक्ट डिटेक्शन का उपयोग करते हैं।
हाल ही में, हमें एक सोशल मीडिया स्टार्टअप के लिए इमेज ऑब्जेक्ट डिटेक्शन फीचर बनाने का काम सौंपा गया था। इसका उपयोग सरल था - उपयोगकर्ता अपनी कुछ पसंदीदा तस्वीरें चुन सकते थे और उन्हें स्टार्टअप के सोशल मीडिया पेजों में से किसी एक पर प्रदर्शित करने के लिए सबमिट कर सकते थे।
सोशल मीडिया मार्केटिंग टीम को कुछ विशेष विषयों के लिए प्रस्तुत छवियों के माध्यम से खोज करने का एक तरीका चाहिए था - जैसे समुद्र की तस्वीरें, लोकप्रिय स्थल, जानवर, संगीत समारोह, आदि।
छवियों का विश्लेषण करना और उन्हें छवि के भीतर दृश्यों और वस्तुओं के आधार पर वर्गीकृत करना कोई आसान काम नहीं है। मानव दृष्टि असाधारण से कम नहीं है, और एक ऐसा एप्लिकेशन बनाना जो वस्तुओं का पता लगाने की मस्तिष्क की क्षमता को दोहराने में सक्षम हो, बेहद जटिल है। एक संपूर्ण कंप्यूटर विज़न उद्योग बस यही करने के लिए समर्पित है।
शुरुआत से ही वस्तु का पता लगाना एक बहु-चरणीय प्रक्रिया है जिसमें निम्नलिखित शामिल हैं:
इस सुविधा के लिए हमारा उद्देश्य, परियोजना पर अन्य सभी की तरह, इसे जल्दी से जल्दी बनाना और उत्पादन वातावरण में इसकी प्रभावशीलता का परीक्षण करना था। इसके अलावा, हम विकास संसाधनों को शुरू से ही समाधान बनाने में लगाना नहीं चाहते थे, जबकि हम मौजूदा क्लाउड सेवाओं का लाभ उठा सकते थे।
क्यू सर्वरलेस - स्टार्टअप का पूरा बैकएंड पूरी तरह से सर्वरलेस और इवेंट-ड्रिवन है। इस आर्किटेक्चर के साथ, हम डेवलपर्स की टीम बनाने में सक्षम हैं, जिन्हें केवल उन सुविधाओं पर ध्यान केंद्रित करने की आवश्यकता है जो सोशल मीडिया ऐप को दूसरों से अलग करती हैं । सर्वरलेस हमें अत्यधिक स्केलेबल सेवाएँ बनाने में सक्षम बनाता है, जबकि केवल उसी के लिए भुगतान करता है जिसका हम उपयोग करते हैं - एक स्केलिंग स्टार्टअप के लिए एक महत्वपूर्ण विचार।
इसलिए इस सुविधा को प्राप्त करने के लिए, हमने Amazon Rekognition का उपयोग किया - एक पूरी तरह से सर्वर रहित छवि और वीडियो विश्लेषण सेवा। Rekognition का उपयोग करके, हम कुछ ही घंटों में इस जटिल और महत्वपूर्ण वर्कफ़्लो को विकसित करने में सक्षम थे। आइए इसके बारे में विस्तार से जानें।
Amazon Rekognition एक AWS सर्वरलेस पेशकश है जो छवि और वीडियो विश्लेषण करने के लिए डीप लर्निंग का उपयोग करती है। पूरी तरह से सर्वरलेस होने का मतलब है कि Rekognition के साथ हमें अंतर्निहित बुनियादी ढांचे की जटिलता के बारे में चिंता करने की ज़रूरत नहीं है; हम केवल उसी के लिए भुगतान करते हैं जिसका हम उपयोग करते हैं और यह हमें छवि और वीडियो विश्लेषण कार्यों के लिए पहले से लिखा हुआ सॉफ़्टवेयर प्रदान करता है। Rekognition कई सुविधाएँ प्रदान करता है, जिसमें छवि लेबल पहचान, चेहरा पहचान, सेलिब्रिटी पहचान, सामग्री मॉडरेशन और टेक्स्ट पहचान शामिल है।
सबसे अच्छी बात? रेकोग्निशन डीप लर्निंग मॉडल बनाने, प्रशिक्षण देने और विश्लेषण करने के भारी काम को दूर रखता है। छवि और वीडियो विश्लेषण त्वरित और सरल है, जिसमें न्यूनतम सेट-अप की आवश्यकता होती है। हमें अपने स्वयं के डेटासेट बनाने और प्रशिक्षण देने और सर्वर क्षमता का प्रावधान करने के बारे में चिंता करने की आवश्यकता नहीं थी ताकि हमारी सेवा स्केल हो सके। हमें केवल एकीकरण के बारे में चिंता करने की आवश्यकता थी।
आर्किटेक्चर सीधा है। हमारा मोबाइल ऐप उपयोगकर्ताओं के फ़ोन से S3 बकेट में इमेज अपलोड करता है। S3 पर अपलोड करने के बाद एक लैम्ब्डा फ़ंक्शन ट्रिगर होता है जो बदले में रेकोग्निशन API को कॉल करता है और क्वेरी के लिए डायनेमोडीबी में परिणाम संग्रहीत करता है।
AWS का उपयोग करके सर्वर रहित छवि ऑब्जेक्ट पहचान आर्किटेक्चर आरेख
कोड लिखना मज़ेदार है, है न? खैर, कम कोड लिखना और भी मज़ेदार है।
रेकोग्निशन एपीआई का एक सेट प्रदर्शित करता है, जिस पर आप छवि डेटा भेजते हैं, जो विश्लेषण करता है और परिणाम लौटाता है। हमारे उपयोग के मामले में, हमने इसका उपयोग किया
हमारे सर्वरलेस फ्रेमवर्क इन्फ्रास्ट्रक्चर एज़ कोड फ़ाइल का सरलीकृत संस्करण इस तरह दिखता है:
//serverless.yamlfunctions: imageLabelDetection: handler: image-label-detection.handler events: - s3: bucket: my-image-bucket event: s3:ObjectCreated:* existing: true iamRoleStatements: - Effect: Allow Action: rekognition:DetectLabels Resource: "*" - Effect: Allow Action: s3:GetObject Resource: arn:aws:s3:::my-image-bucket
हमारा लैम्ब्डा कोड केवल रिकग्निशन एपीआई को कॉल करता है और परिणामों को डायनेमोडीबी में संग्रहीत करता है, लेकिन आप अपने उपयोग के मामले के लिए जो भी समझ में आता है उसका उपयोग कर सकते हैं। हम S3 इवेंट से S3 बकेट नाम और छवि का ऑब्जेक्ट नाम प्राप्त करते हैं और उन्हें डिटेक्ट लेबल फ़ंक्शन में पास करते हैं।
हम विश्वास स्तर सीमा और लेबल की अधिकतम संख्या निर्दिष्ट करने के लिए दो वैकल्पिक पैरामीटर (MaxLabels और MinConfidence) भी पास करते हैं जिन्हें हम वापस करना चाहते हैं। नीचे दिए गए उदाहरण में, हमें प्रतिक्रिया में केवल 20 लेबल ही मिलेंगे, और सभी लेबल का विश्वास स्तर 80% से अधिक होगा।
//image-label-detecion.jsconst AWS = require("aws-sdk");const rekognition = new AWS.Rekognition();exports.handler = async (event) => { const imageDetails = event.Records[0].s3; const bucketName = imageDetails.bucket.name; const objectKey = imageDetails.object.key; const rekognitionResp = await rekognition .detectLabels({ Image: { S3Object: { Bucket: bucketName, Name: objectKey, }, }, MaxLabels: 20, MinConfidence: 80, }) .promise(); // Send to data store, eg DynamoDB // ... };
कुत्ते की तस्वीर किसे पसंद नहीं आती? नीचे एक तस्वीर के लिए प्रतिक्रिया दी गई है जिसे हमने अपने S3 बकेट में अपलोड किया है। जैसा कि आप देख सकते हैं, रेकोग्निशन सही ढंग से निर्धारित करता है कि यह एक बाहरी, बजरी वाले रास्ते पर एक कुत्ते की तस्वीर है (और हमें बताता है कि तस्वीर में कुत्ता कहाँ है!)।
रिकॉग्निशन प्रतिक्रिया (बाएं), अपलोड की गई छवि (दाएं)।
तो, कुछ महीनों तक प्रोडक्शन में रेकोग्निशन का उपयोग करने के बाद मेरे क्या विचार हैं? यहाँ कुछ मुख्य बातें दी गई हैं:
संक्षेप में: रिकॉग्निशन ने हमें एक ऐसी इमेज ऑब्जेक्ट डिटेक्शन सुविधा बनाने में सक्षम बनाया जो सटीक, तेज और स्केलेबल है।