অ্যামাজন স্বীকৃতি সহ স্বয়ংক্রিয় চিত্র ক্রপিং

অ্যামাজন স্বীকৃতি সহ স্বয়ংক্রিয় চিত্র ক্রপিং

ডিজিটাল প্রকাশকরা ক্রমাগতভাবে তাদের মিডিয়া ওয়ার্কফ্লোগুলিকে স্ট্রিমলাইন এবং স্বয়ংক্রিয় করার উপায়গুলি খুঁজছেন যাতে তারা যত দ্রুত সম্ভব নতুন সামগ্রী তৈরি এবং প্রকাশ করতে পারে।

অনেক প্রকাশকের স্টক ইমেজের একটি বড় লাইব্রেরি আছে যা তারা তাদের নিবন্ধের জন্য ব্যবহার করে। এই ছবিগুলি বিভিন্ন গল্পের জন্য অনেকবার পুনঃব্যবহার করা যেতে পারে, বিশেষ করে যখন প্রকাশকের কাছে সেলিব্রিটিদের ছবি থাকে৷ প্রায়শই, একজন সাংবাদিককে তাদের আসন্ন গল্পের জন্য ব্যবহার করার জন্য একটি চিত্র থেকে একটি পছন্দসই সেলিব্রিটি বের করতে হতে পারে। এটি একটি ম্যানুয়াল, পুনরাবৃত্তিমূলক কাজ যা স্বয়ংক্রিয় হওয়া উচিত। কখনও কখনও, একজন লেখক একজন সেলিব্রিটির একটি ছবি ব্যবহার করতে চাইতে পারেন, কিন্তু এতে দুইজন ব্যক্তি রয়েছে এবং প্রাথমিক সেলিব্রিটিকে ছবিটি থেকে ক্রপ করতে হবে। অন্য সময়ে, মোবাইল, সোশ্যাল মিডিয়া বা ডিজিটাল সংবাদের মতো বিভিন্ন প্ল্যাটফর্মে প্রকাশের জন্য সেলিব্রিটি ছবিগুলিকে পুনরায় ফর্ম্যাট করার প্রয়োজন হতে পারে। অতিরিক্তভাবে, একজন লেখককে ছবির আকৃতির অনুপাত পরিবর্তন করতে হবে বা সেলিব্রিটিকে ক্রিস্প ফোকাসে রাখতে হবে।

এই পোস্টে, আমরা কীভাবে ব্যবহার করব তা প্রদর্শন করি আমাজন রেকোনিশন ইমেজ বিশ্লেষণ সঞ্চালন. Amazon Recognition কোনো মেশিন লার্নিং (ML) দক্ষতা ছাড়াই আপনার অ্যাপ্লিকেশনগুলিতে এই ক্ষমতা যোগ করা সহজ করে এবং বিভিন্ন API-এর সাথে আসে অবজেক্ট সনাক্তকরণ, বিষয়বস্তু সংযম, মুখ সনাক্তকরণ এবং বিশ্লেষণ এবং পাঠ্য এবং সেলিব্রিটি স্বীকৃতির মতো ব্যবহারের ক্ষেত্রে, যা আমরা এই উদাহরণে ব্যবহার করুন।

সার্জারির সেলিব্রিটি স্বীকৃতি বৈশিষ্ট্য in আমাজন রেকোনিশন স্বয়ংক্রিয়ভাবে ML ব্যবহার করে ছবি এবং ভিডিওতে কয়েক হাজার সুপরিচিত ব্যক্তিত্বকে চিনতে পারে। সেলিব্রিটি স্বীকৃতি শুধুমাত্র প্রদত্ত সেলিব্রিটির উপস্থিতিই নয়, ছবির মধ্যে অবস্থানও সনাক্ত করতে পারে।

সমাধান ওভারভিউ

এই পোস্টে, আমরা প্রদর্শন করি কিভাবে আমরা একটি ফটোতে, একটি সেলিব্রিটির নাম এবং আউটপুট করা ছবির জন্য একটি আকৃতির অনুপাতকে কেন্দ্রে তাদের মুখ ক্যাপচার করে প্রদত্ত সেলিব্রিটির একটি ক্রপ করা চিত্র তৈরি করতে সক্ষম হতে পারি৷

সঙ্গে কাজ করার সময় Amazon Recognition সেলিব্রিটি সনাক্তকরণ API, অনেক উপাদান প্রতিক্রিয়া ফিরে দেওয়া হয়. নিম্নলিখিত কিছু মূল প্রতিক্রিয়া উপাদান আছে:

  • ম্যাচ কনফিডেন্স - একটি ম্যাচ কনফিডেন্স স্কোর যা API আচরণ নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে। আপনার পছন্দের অপারেটিং পয়েন্ট বেছে নিতে আমরা আপনার আবেদনে এই স্কোরের জন্য একটি উপযুক্ত থ্রেশহোল্ড প্রয়োগ করার পরামর্শ দিই। উদাহরণস্বরূপ, 99%-এর থ্রেশহোল্ড সেট করে, আপনি মিথ্যা ইতিবাচক বাদ দিতে পারেন কিন্তু কিছু সম্ভাব্য ম্যাচ মিস করতে পারেন।
  • নাম, আইডি এবং ইউআরএল - সেলিব্রিটির নাম, একটি অনন্য অ্যামাজন স্বীকৃতি আইডি, এবং আরও তথ্যের জন্য সেলিব্রিটির IMDb বা উইকিপিডিয়া লিঙ্কের মতো URLগুলির তালিকা৷
  • সীমান্ত বক্স - প্রতিটি স্বীকৃত সেলিব্রিটি মুখের জন্য আয়তক্ষেত্রাকার বাউন্ডিং বক্স অবস্থানের স্থানাঙ্ক।
  • পরিচিত লিঙ্গ - প্রতিটি স্বীকৃত সেলিব্রিটির জন্য পরিচিত লিঙ্গ পরিচয়।
  • ইমোশনস - সেলিব্রিটির মুখের উপর প্রকাশিত আবেগ, উদাহরণস্বরূপ, খুশি, দুঃখিত বা রাগান্বিত।
  • অঙ্গবিক্ষেপ - রোল, পিচ এবং ইয়াওর তিনটি অক্ষ ব্যবহার করে সেলিব্রিটি মুখের ভঙ্গি।
  • হাসি - সেলিব্রেটি হাসছে কি না।

Amazon Recognition থেকে API প্রতিক্রিয়ার অংশে নিম্নলিখিত কোড রয়েছে:

{ "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 এর মধ্যে। উদাহরণস্বরূপ, নমুনা API প্রতিক্রিয়াতে, বাউন্ডিং বাক্সের প্রস্থ হল 0.1, যা বোঝায় যে মুখের প্রস্থটি ছবির মোট প্রস্থের 10%।

Werner Vogels বাউন্ডিং বক্স

এই বাউন্ডিং বাক্সের সাহায্যে, আমরা এখন যুক্তি ব্যবহার করতে সক্ষম হয়েছি তা নিশ্চিত করতে যে মুখটি আমাদের তৈরি করা নতুন চিত্রের প্রান্তের মধ্যে থাকে। মুখটিকে কেন্দ্রে রাখতে আমরা এই বাউন্ডিং বাক্সের চারপাশে কিছু প্যাডিং প্রয়োগ করতে পারি।

নিম্নলিখিত বিভাগে, আমরা দেখাব কিভাবে ক্রিসপ ফোকাসে Werner Vogels-এর সাহায্যে নিম্নলিখিত ক্রপ করা ছবি আউটপুট তৈরি করা যায়।

আমরা একটি চালু আমাজন সেজমেকার নোটবুক, যা একটি পাইথন পরিবেশ প্রদান করে যেখানে আপনি অ্যামাজন রেকগনিশনে একটি ইমেজ পাস করার জন্য কোডটি চালাতে পারেন এবং তারপরে সেলিব্রিটি ফোকাসে রেখে ছবিটি স্বয়ংক্রিয়ভাবে পরিবর্তন করতে পারেন।

Werner Vogels ক্রপ

কোডটি নিম্নলিখিত উচ্চ-স্তরের পদক্ষেপগুলি সম্পাদন করে:

  1. একটি অনুরোধ করুন recognize_celebrities প্রদত্ত ইমেজ এবং সেলিব্রিটির নাম সহ API।
  2. বাউন্ডিং বাক্সের তথ্যের জন্য প্রতিক্রিয়া ফিল্টার করুন।
  3. বাউন্ডিং বাক্সে কিছু প্যাডিং যুক্ত করুন যাতে আমরা কিছু ব্যাকগ্রাউন্ড ক্যাপচার করি।

পূর্বশর্ত

এই ওয়াকথ্রুটির জন্য, আপনার নিম্নলিখিত পূর্বশর্তগুলি থাকা উচিত:

নমুনা ইমেজ আপলোড করুন

আপনার S3 বালতিতে আপনার নমুনা সেলিব্রিটির ছবি আপলোড করুন।

কোড চালান

কোড চালানোর জন্য, আমরা একটি SageMaker নোটবুক ব্যবহার করি, তবে যেকোন IDE Python, pillow, এবং Boto3 ইনস্টল করার পরেও কাজ করবে। আমরা সেইসাথে একটি সেজমেকার নোটবুক তৈরি করি এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) প্রয়োজনীয় অনুমতি সহ ভূমিকা। নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. নোটবুক তৈরি করুন এবং এটি নাম automatic-cropping-celebrity.

ডিফল্ট এক্সিকিউশন পলিসি, যা সেজমেকার নোটবুক তৈরি করার সময় তৈরি করা হয়েছিল, একটি সাধারণ নীতি রয়েছে যা অ্যামাজন 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": "*" } ]
}

IAM অনুমতি

  1. সেজমেকার কনসোলে, নির্বাচন করুন নোটবুক উদাহরণস্বরূপ নেভিগেশন ফলকে।
  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. নোটবুক স্টোরেজ এবং Amazon 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()

আপনি যখন এই কোড ব্লকটি চালান, আপনি দেখতে পাবেন যে আমরা Werner Vogels খুঁজে পেয়েছি এবং কেন্দ্রে তার মুখ দিয়ে একটি নতুন চিত্র তৈরি করেছি।

Werner Vogels ক্রপ

ছবিটি নোটবুকে সংরক্ষণ করা হবে এবং S3 বালতিতেও আপলোড করা হবে।

জুপিটার নোটবুক আউটপুট

আপনি একটি এই সমাধান অন্তর্ভুক্ত করতে পারে বৃহত্তর কর্মপ্রবাহ; উদাহরণস্বরূপ, একটি প্রকাশনা সংস্থা একাধিক প্ল্যাটফর্মে সেলিব্রিটিদের নিবন্ধ প্রকাশ করার সময় ফ্লাইতে চিত্রগুলিকে পুনরায় ফরম্যাট করতে এবং পুনরায় আকার দেওয়ার জন্য এই ক্ষমতাটিকে শেষ পয়েন্ট হিসাবে প্রকাশ করতে চাইতে পারে।

পরিষ্কার আপ

ভবিষ্যতের চার্জ এড়াতে, সংস্থানগুলি মুছুন:

  1. SageMaker কনসোলে, আপনার নোটবুক নির্বাচন করুন এবং কার্যপ্রণালী মেনু, নির্বাচন করুন থামুন.
  2. নোটবুক বন্ধ করার পরে, উপর কার্যপ্রণালী মেনু, নির্বাচন করুন মুছে ফেলা.
  3. IAM কনসোলে, আপনার তৈরি করা SageMaker এক্সিকিউশন রোল মুছুন।
  4. Amazon S3 কনসোলে, আপনার S3 বালতি থেকে ইনপুট ইমেজ এবং যেকোনো আউটপুট ফাইল মুছে দিন।

উপসংহার

এই পোস্টে, আমরা দেখিয়েছি কিভাবে আমরা মিডিয়া ওয়ার্কফ্লোকে সমর্থন করার জন্য চিত্রগুলি পরিবর্তন করার অন্যথায় ম্যানুয়াল কাজটিকে স্বয়ংক্রিয় করতে Amazon Recognition ব্যবহার করতে পারি। এটি প্রকাশনা শিল্পের মধ্যে বিশেষভাবে গুরুত্বপূর্ণ যেখানে দ্রুত এবং একাধিক প্ল্যাটফর্মে নতুন সামগ্রী পেতে গতি গুরুত্বপূর্ণ।

মিডিয়া সম্পদের সাথে কাজ করার বিষয়ে আরও তথ্যের জন্য, পড়ুন মিডিয়া বুদ্ধিমত্তা মিডিয়া2ক্লাউড 3.0 এর সাথে আরও স্মার্ট হয়ে উঠেছে


লেখক সম্পর্কে

Amazon Recognition PlatoBlockchain ডেটা ইন্টেলিজেন্স সহ স্বয়ংক্রিয় ছবি ক্রপিং। উল্লম্ব অনুসন্ধান. আ.

মার্ক ওয়াটকিন্স মিডিয়া এবং বিনোদন দলের মধ্যে একজন সমাধান স্থপতি। তিনি গ্রাহকদের এআই/এমএল সমাধান তৈরি করতে সহায়তা করেন যা AWS ব্যবহার করে তাদের ব্যবসায়িক চ্যালেঞ্জগুলি সমাধান করে। তিনি কম্পিউটার ভিশন, ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং, পার্সোনালাইজেশন, এমএল অ্যাট দ্য এজ এবং আরও অনেক কিছু সম্পর্কিত এআই/এমএল প্রকল্পে কাজ করছেন। পেশাগত জীবন থেকে দূরে, তিনি তার পরিবারের সাথে সময় কাটাতে এবং তার দুটি ছোটদের বড় হওয়া দেখতে পছন্দ করেন।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

Amazon SageMaker এর সাথে ফাউন্ডেশন মডেল স্থাপন করুন, TruEra এর সাথে পুনরাবৃত্তি করুন এবং মনিটর করুন | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1928904
সময় স্ট্যাম্প: ডিসেম্বর 22, 2023

Amazon SageMaker Canvas UI এবং AutoML API-এর সাহায্যে আপনার টাইম সিরিজের পূর্বাভাস 50 শতাংশ পর্যন্ত গতি বাড়ান | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1895568
সময় স্ট্যাম্প: সেপ্টেম্বর 28, 2023

তৈরি করুন, ভাগ করুন, স্থাপন করুন: কীভাবে ব্যবসায় বিশ্লেষক এবং ডেটা বিজ্ঞানীরা নো-কোড এমএল এবং অ্যামাজন সেজমেকার ক্যানভাস ব্যবহার করে দ্রুত সময়ে বাজার অর্জন করেন

উত্স নোড: 1210859
সময় স্ট্যাম্প: মার্চ 10, 2022