अमेज़ॅन रिकॉग्निशन के साथ स्वचालित छवि क्रॉपिंग

अमेज़ॅन रिकॉग्निशन के साथ स्वचालित छवि क्रॉपिंग

डिजिटल प्रकाशक अपने मीडिया वर्कफ़्लो को व्यवस्थित और स्वचालित करने के तरीकों की लगातार तलाश कर रहे हैं ताकि वे जितनी जल्दी हो सके नई सामग्री को उत्पन्न और प्रकाशित कर सकें।

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

इस पोस्ट में, हम प्रदर्शित करते हैं कि कैसे उपयोग करें अमेज़ॅन रेकग्निशन छवि विश्लेषण करने के लिए। Amazon Recognition बिना किसी मशीन लर्निंग (ML) विशेषज्ञता के आपके एप्लिकेशन में इस क्षमता को जोड़ना आसान बनाता है और ऑब्जेक्ट डिटेक्शन, कंटेंट मॉडरेशन, फेस डिटेक्शन और एनालिसिस, और टेक्स्ट और सेलिब्रिटी रिकॉग्निशन जैसे उपयोग के मामलों को पूरा करने के लिए विभिन्न API के साथ आता है, जिसे हम इस उदाहरण में उपयोग करें।

RSI सेलिब्रिटी पहचान सुविधा in अमेज़ॅन रेकग्निशन ML का उपयोग करके स्वचालित रूप से छवियों और वीडियो में हजारों प्रसिद्ध व्यक्तित्वों को पहचानता है। सेलिब्रिटी पहचान न केवल दिए गए सेलिब्रिटी की उपस्थिति बल्कि छवि के भीतर स्थान का भी पता लगा सकती है।

समाधान का अवलोकन

इस पोस्ट में, हम प्रदर्शित करते हैं कि कैसे हम एक तस्वीर, एक सेलिब्रिटी का नाम और आउटपुट छवि के लिए एक पहलू अनुपात पास कर सकते हैं ताकि केंद्र में उनके चेहरे को कैप्चर करने वाले दिए गए सेलिब्रिटी की एक क्रॉप की गई छवि उत्पन्न हो सके।

के साथ काम करते समय Amazon रिकॉग्निशन सेलिब्रिटी डिटेक्शन एपीआई, प्रतिक्रिया में कई तत्व लौटाए जाते हैं। निम्नलिखित कुछ प्रमुख प्रतिक्रिया तत्व हैं:

  • मैच कॉन्फिडेंस - एक मैच कॉन्फिडेंस स्कोर जिसका उपयोग एपीआई व्यवहार को नियंत्रित करने के लिए किया जा सकता है। हम आपके पसंदीदा ऑपरेटिंग पॉइंट को चुनने के लिए आपके आवेदन में इस स्कोर के लिए एक उपयुक्त सीमा लागू करने की सलाह देते हैं। उदाहरण के लिए, 99% की सीमा निर्धारित करके, आप झूठी सकारात्मकताओं को समाप्त कर सकते हैं लेकिन कुछ संभावित मिलानों को छोड़ सकते हैं।
  • नाम, आईडी और यूआरएल - अधिक जानकारी के लिए सेलिब्रिटी का नाम, एक अद्वितीय अमेज़ॅन रिकॉग्निशन आईडी, और सेलिब्रिटी के आईएमडीबी या विकिपीडिया लिंक जैसे यूआरएल की सूची।
  • आकार निर्धारक बॉक्स - प्रत्येक मान्यता प्राप्त सेलिब्रिटी चेहरे के लिए आयताकार बाउंडिंग बॉक्स स्थान के निर्देशांक।
  • ज्ञातलिंग - प्रत्येक मान्यता प्राप्त हस्ती के लिए ज्ञात लिंग पहचान।
  • भावनाएँ - सेलिब्रिटी के चेहरे पर व्यक्त भाव, उदाहरण के लिए, खुश, उदास या क्रोधित।
  • ढोंग - रोल, पिच और यॉ के तीन अक्षों का उपयोग करते हुए सेलिब्रिटी चेहरे की मुद्रा।
  • मुस्कुराओ - सेलिब्रिटी मुस्कुरा रहा है या नहीं।

अमेज़ॅन रिकॉग्निशन से एपीआई प्रतिक्रिया के हिस्से में निम्नलिखित कोड शामिल हैं:

{ "CelebrityFaces": [ { "Urls": [ "www.wikidata.org/wiki/Q2536951" ], "Name": "Werner Vogels", "Id": "23iZ1oP", "Face": { "BoundingBox": { "Width": 0.10331031680107117, "Height": 0.20054641366004944, "Left": 0.5003396272659302, "Top": 0.07391933351755142 }, "Confidence": 99.99765014648438,
...

इस अभ्यास में, हम प्रदर्शित करते हैं कि चेहरे के स्थान की पहचान करने के लिए बाउंडिंग बॉक्स तत्व का उपयोग कैसे करें, जैसा कि निम्न उदाहरण छवि में दिखाया गया है। सभी आयामों को समग्र छवि आकार के अनुपात के रूप में दर्शाया गया है, इसलिए प्रतिक्रिया में संख्याएँ 0-1 के बीच हैं। उदाहरण के लिए, नमूना एपीआई प्रतिक्रिया में, बाउंडिंग बॉक्स की चौड़ाई 0.1 है, जिसका अर्थ है कि चेहरे की चौड़ाई छवि की कुल चौड़ाई का 10% है।

वर्नर वोगल्स बाउंडिंग बॉक्स

इस बाउंडिंग बॉक्स के साथ, अब हम यह सुनिश्चित करने के लिए तर्क का उपयोग करने में सक्षम हैं कि चेहरा हमारे द्वारा बनाई गई नई छवि के किनारों के भीतर बना रहे। चेहरे को केंद्र में रखने के लिए हम इस बाउंडिंग बॉक्स के चारों ओर कुछ पैडिंग लगा सकते हैं।

निम्नलिखित अनुभागों में, हम दिखाते हैं कि क्रिस्प फोकस में वर्नर वोगल्स के साथ निम्नलिखित क्रॉप्ड इमेज आउटपुट कैसे बनाएं।

हम एक लॉन्च करते हैं अमेज़न SageMaker नोटबुक, जो एक पायथन वातावरण प्रदान करता है जहां आप अमेज़ॅन रिकॉग्निशन को एक छवि पास करने के लिए कोड चला सकते हैं और फिर फोकस में सेलिब्रिटी के साथ छवि को स्वचालित रूप से संशोधित कर सकते हैं।

वर्नर वोगल्स ने क्रॉप किया

कोड निम्न उच्च-स्तरीय चरण निष्पादित करता है:

  1. से अनुरोध करें recognize_celebrities एपीआई दी गई छवि और सेलिब्रिटी नाम के साथ।
  2. बाउंडिंग बॉक्स जानकारी के लिए प्रतिक्रिया फ़िल्टर करें।
  3. बाउंडिंग बॉक्स में कुछ पैडिंग जोड़ें जैसे कि हम कुछ बैकग्राउंड कैप्चर करते हैं।

.. पूर्वापेक्षाएँ

इस पूर्वाभ्यास के लिए, आपके पास निम्नलिखित शर्तें होनी चाहिए:

नमूना छवि अपलोड करें

अपनी नमूना सेलिब्रिटी छवि को अपने S3 बकेट में अपलोड करें।

कोड चलाएँ

कोड चलाने के लिए, हम एक SageMaker नोटबुक का उपयोग करते हैं, हालाँकि कोई भी IDE Python, Pillow, और Boto3 को स्थापित करने के बाद भी काम करेगा। हम एक SageMaker नोटबुक भी बनाते हैं AWS पहचान और अभिगम प्रबंधन (IAM) आवश्यक अनुमतियों के साथ भूमिका। निम्नलिखित चरणों को पूरा करें:

  1. नोटबुक बनाएँ और इसे नाम दें automatic-cropping-celebrity.

डिफ़ॉल्ट निष्पादन नीति, जिसे सैजमेकर नोटबुक बनाते समय बनाया गया था, की एक सरल नीति है जो भूमिका को Amazon S3 के साथ सहभागिता करने की अनुमति देती है।

  1. अपडेट करें Resource S3 बाल्टी नाम के साथ बाधा:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3::: # your-s3-bucket-name " ] } ]
}

  1. कॉल करने में सक्षम होने के लिए SageMaker नोटबुक IAM भूमिका में जोड़ने के लिए एक और नीति बनाएँ हस्तियाँ पहचानो एपीआई:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rekognition:RecognizeCelebrities", "Resource": "*" } ]
}

आईएएम अनुमतियां

  1. SageMaker कंसोल पर, चुनें नोटबंदी के उदाहरण नेविगेशन फलक में
  2. पता लगाएँ automatic-cropping-celebrity नोटबुक और चुनें ज्यूपिटर खोलें.
  3. चुनें नया और conda_python3 आपकी नोटबुक के कर्नेल के रूप में।

ज्यूपिटर नोटबुक

निम्नलिखित चरणों के लिए, कोड ब्लॉक को अपने ज्यूपिटर नोटबुक में कॉपी करें और उन्हें चुनकर चलाएं रन.

  1. सबसे पहले, हम सहायक कार्यों और पुस्तकालयों को आयात करते हैं:
import boto3
from PIL import Image

  1. चर सेट करें
bucket = '<YOUR_BUCKET_NAME>' file = '<YOUR_FILE_NAME>'
celeb = '<CELEBRITY_NAME>'
aspect_ratio = <ASPECT_RATIO_OF_OUTPUT_IMAGE, e.g. 1 for square>

  1. एक सेवा ग्राहक बनाएँ
rek = boto3.client('rekognition')
s3 = boto3.client('s3')

  1. मशहूर हस्तियों को पहचानने का कार्य
def recognize_celebrity(photo): with open(photo, 'rb') as image: response = rek.recognize_celebrities(Image={'Bytes': image.read()}) image=Image.open(photo) file_type=image.format.lower() path, ext=image.filename.rsplit(".", 1) celeb_faces = response['CelebrityFaces'] print(f'Detected {len(celeb_faces)} faces for {photo}') return celeb_faces, image, path, file_type 

  1. दिए गए सेलिब्रिटी का बाउंडिंग बॉक्स प्राप्त करने का कार्य:
def get_bounding_box(celeb_faces, img_width, img_height, celeb): bbox = None for celebrity in celeb_faces: if celebrity['Name'] == celeb: box = celebrity['Face']['BoundingBox'] left = img_width * box['Left'] top = img_height * box['Top'] width = img_width * box['Width'] height = img_height * box['Height'] print('Left: ' + '{0:.0f}'.format(left)) print('Top: ' + '{0:.0f}'.format(top)) print('Face Width: ' + "{0:.0f}".format(width)) print('Face Height: ' + "{0:.0f}".format(height)) #dimenions of famous face inside the bounding boxes x1=left y1=top x2=left+width y2=top+height bbox = [x1,y1,x2,y2] print(f'Bbox coordinates: {bbox}') if bbox == None: raise ValueError(f"{celeb} not found in results") return bbox

  1. बाउंडिंग बॉक्स में कुछ पैडिंग जोड़ने का कार्य, इसलिए हम चेहरे के चारों ओर कुछ पृष्ठभूमि कैप्चर करते हैं
def pad_bbox(bbox, pad_width=0.5, pad_height=0.3): x1, y1, x2, y2 = bbox width = x2 - x1 height = y2 - y1 #dimenions of new image with padding x1= max(x1 - (pad_width * width),0) y1= max(y1 - (pad_height * height),0) x2= max(x2 + (pad_width * width),0) y2= max(y2 + (pad_height * height),0) #dimenions of new image with aspect ratio, 1 is square, 1.5 is 6:4, 0.66 is 4:6 x1= max(x1-(max((y2-y1)*max(aspect_ratio,1)-(x2-x1),0)/2),0) y1= max(y1-(max((x2-x1)*1/(min((aspect_ratio),1))-(y2-y1),0)/2),0) x2= max(x2+(max((y2-y1)*max((aspect_ratio),1)-(x2-x1),0)/2),0) y2= max(y2+(max((x2-x1)*1/(min((aspect_ratio),1))-(y2-y1),0)/2),0) print('x1-coordinate after padding: ' + '{0:.0f}'.format(x1)) print('y1-coordinate after padding: ' + '{0:.0f}'.format(y1)) print('x2-coordinate after padding: ' + "{0:.0f}".format(x2)) print('y2-coordinate after padding: ' + "{0:.0f}".format(y2)) return [x1,y1,x2,y2]

  1. छवि को नोटबुक स्टोरेज और अमेज़न S3 में सहेजने का कार्य
def save_image(roi, image, path, file_type): x1, y1, x2, y2 = roi image = image.crop((x1,y1,x2,y2)) image.save(f'{path}-cropped.{file_type}') s3.upload_file(f'{path}-cropped.{file_type}', bucket, f'{path}-cropped.{file_type}') return image

  1. पायथन का प्रयोग करें main() हमारे सेलिब्रिटी की एक नई क्रॉप की गई छवि को सहेजने के कार्यप्रवाह को पूरा करने के लिए पूर्ववर्ती कार्यों को संयोजित करने का कार्य:
def main(): # Download S3 image to local s3.download_file(bucket, file, './'+file) #Load photo and recognize celebrity celeb_faces, img, file_name, file_type = recognize_celebrity(file) width, height = img.size #Get bounding box bbox = get_bounding_box(celeb_faces, width, height, celeb) #Get padded bounding box padded_bbox = pad_bbox(bbox) #Save result and display result = save_image(padded_bbox, img, file_name, file_type) display(result) if __name__ == "__main__": main()

जब आप इस कोड ब्लॉक को चलाते हैं, तो आप देख सकते हैं कि हमें वर्नर वोगल्स मिले और केंद्र में उनके चेहरे के साथ एक नई छवि बनाई।

वर्नर वोगल्स ने क्रॉप किया

छवि को नोटबुक में सहेजा जाएगा और S3 बकेट में भी अपलोड किया जाएगा।

ज्यूपिटर नोटबुक आउटपुट

आप इस समाधान को एक में शामिल कर सकते हैं बड़ा वर्कफ़्लो; उदाहरण के लिए, एक प्रकाशन कंपनी इस क्षमता को कई प्लेटफार्मों पर मशहूर हस्तियों के लेख प्रकाशित करते समय छवियों को पुन: स्वरूपित करने और उनका आकार बदलने के समापन बिंदु के रूप में प्रकाशित करना चाह सकती है।

सफाई करना

भविष्य के शुल्कों से बचने के लिए, संसाधनों को हटा दें:

  1. SageMaker कंसोल पर, अपनी नोटबुक चुनें और पर क्रियाएँ मेनू, चुनें रुकें.
  2. नोटबुक बंद होने के बाद, पर क्रियाएँ मेनू, चुनें मिटाना.
  3. IAM कंसोल पर, आपके द्वारा बनाई गई SageMaker निष्पादन भूमिका को हटा दें।
  4. Amazon S3 कंसोल पर, अपने S3 बकेट से इनपुट छवि और किसी भी आउटपुट फ़ाइल को हटा दें।

निष्कर्ष

इस पोस्ट में, हमने दिखाया कि कैसे हम मीडिया वर्कफ़्लोज़ का समर्थन करने के लिए छवियों को संशोधित करने के अन्यथा मैन्युअल कार्य को स्वचालित करने के लिए Amazon Rekognition का उपयोग कर सकते हैं। यह प्रकाशन उद्योग के भीतर विशेष रूप से महत्वपूर्ण है जहां नई सामग्री को जल्दी से और कई प्लेटफार्मों पर लाने में गति मायने रखती है।

मीडिया संपत्तियों के साथ काम करने के बारे में अधिक जानकारी के लिए देखें Media2Cloud 3.0 के साथ मीडिया इंटेलिजेंस अभी और स्मार्ट हो गया है


लेखक के बारे में

अमेज़ॅन रिकॉग्निशन प्लेटोब्लॉकचेन डेटा इंटेलिजेंस के साथ स्वचालित छवि क्रॉपिंग। लंबवत खोज. ऐ.

मार्क वॉटकिंस मीडिया और मनोरंजन टीम के भीतर समाधान वास्तुकार हैं। वह एआई/एमएल समाधान बनाने में ग्राहकों की मदद करता है जो एडब्ल्यूएस का उपयोग करके उनकी व्यावसायिक चुनौतियों का समाधान करता है। वह कंप्यूटर दृष्टि, प्राकृतिक भाषा प्रसंस्करण, निजीकरण, किनारे पर एमएल, और अधिक से संबंधित कई एआई/एमएल परियोजनाओं पर काम कर रहे हैं। पेशेवर जीवन से दूर, वह अपने परिवार के साथ समय बिताना और अपने दो छोटे बच्चों को बड़े होते देखना पसंद करते हैं।

समय टिकट:

से अधिक AWS मशीन लर्निंग

अमेज़ॅन सेजमेकर कैनवस यूआई और ऑटोएमएल एपीआई के साथ अपनी समय श्रृंखला के पूर्वानुमान को 50 प्रतिशत तक तेज करें | अमेज़न वेब सेवाएँ

स्रोत नोड: 1895568
समय टिकट: सितम्बर 28, 2023

बिल्ड, शेयर, डिप्लॉय: कैसे व्यापार विश्लेषक और डेटा वैज्ञानिक बिना कोड एमएल और अमेज़ॅन सेजमेकर कैनवास का उपयोग करके तेजी से समय-समय पर बाजार प्राप्त करते हैं

स्रोत नोड: 1210859
समय टिकट: मार्च 10, 2022