Amazon Recognition کے ساتھ خودکار تصویر کی کٹائی

Amazon Recognition کے ساتھ خودکار تصویر کی کٹائی

ڈیجیٹل پبلشرز مسلسل اپنے میڈیا ورک فلو کو ہموار اور خودکار بنانے کے طریقے تلاش کر رہے ہیں تاکہ جتنی تیزی سے وہ کر سکتے ہیں نیا مواد تیار اور شائع کر سکیں۔

بہت سے پبلشرز کے پاس اسٹاک امیجز کی ایک بڑی لائبریری ہوتی ہے جسے وہ اپنے مضامین کے لیے استعمال کرتے ہیں۔ ان تصاویر کو مختلف کہانیوں کے لیے کئی بار دوبارہ استعمال کیا جا سکتا ہے، خاص طور پر جب ناشر کے پاس مشہور شخصیات کی تصاویر ہوں۔ اکثر، ایک صحافی کو اپنی آنے والی کہانی کے لیے استعمال کرنے کے لیے کسی تصویر سے مطلوبہ مشہور شخصیت نکالنے کی ضرورت پڑ سکتی ہے۔ یہ ایک دستی، دہرایا جانے والا کام ہے جسے خودکار ہونا چاہیے۔ بعض اوقات، ایک مصنف کسی مشہور شخصیت کی تصویر استعمال کرنا چاہتا ہے، لیکن اس میں دو افراد ہوتے ہیں اور بنیادی مشہور شخصیت کو تصویر سے تراشنا پڑتا ہے۔ دوسری بار، مشہور شخصیت کی تصاویر کو مختلف پلیٹ فارمز جیسے موبائل، سوشل میڈیا، یا ڈیجیٹل خبروں پر شائع کرنے کے لیے دوبارہ فارمیٹ کرنے کی ضرورت پڑ سکتی ہے۔ مزید برآں، ایک مصنف کو تصویر کے پہلو تناسب کو تبدیل کرنے یا مشہور شخصیت کو کرکرا فوکس کرنے کی ضرورت پڑ سکتی ہے۔

اس پوسٹ میں، ہم استعمال کرنے کا طریقہ بتاتے ہیں۔ ایمیزون پہچان۔ تصویر کا تجزیہ کرنے کے لیے۔ Amazon Recognition بغیر کسی مشین لرننگ (ML) کی مہارت کے آپ کی ایپلی کیشنز میں اس صلاحیت کو شامل کرنا آسان بناتا ہے اور استعمال کے معاملات جیسے کہ آبجیکٹ کا پتہ لگانے، مواد کی اعتدال، چہرے کا پتہ لگانے اور تجزیہ، اور متن اور مشہور شخصیت کی شناخت کو پورا کرنے کے لیے مختلف APIs کے ساتھ آتا ہے۔ اس مثال میں استعمال کریں.

۔ مشہور شخصیت کی شناخت کی خصوصیت in ایمیزون پہچان۔ ایم ایل کا استعمال کرتے ہوئے تصاویر اور ویڈیوز میں دسیوں ہزاروں معروف شخصیات کو خود بخود پہچانتا ہے۔ مشہور شخصیت کی شناخت نہ صرف دی گئی مشہور شخصیت کی موجودگی بلکہ تصویر کے اندر موجود مقام کا بھی پتہ لگا سکتی ہے۔

حل کا جائزہ

اس پوسٹ میں، ہم یہ ظاہر کرتے ہیں کہ ہم کس طرح ایک تصویر، ایک مشہور شخصیت کے نام، اور آؤٹ پٹ شدہ تصویر کے لیے ایک پہلو کا تناسب پاس کر سکتے ہیں تاکہ دی گئی مشہور شخصیت کے درمیان میں ان کے چہرے کو کیپچر کرتے ہوئے اس کی تراشی ہوئی تصویر تیار کر سکیں۔

کے ساتھ کام کرتے وقت Amazon Recognition مشہور شخصیت کا پتہ لگانے والا APIجواب میں بہت سے عناصر لوٹائے جاتے ہیں۔ مندرجہ ذیل کچھ اہم ردعمل عناصر ہیں:

  • میچ کانفیڈنس - ایک میچ اعتماد کا سکور جو API رویے کو کنٹرول کرنے کے لیے استعمال کیا جا سکتا ہے۔ ہم تجویز کرتے ہیں کہ آپ کی درخواست میں اس سکور کے لیے ایک مناسب حد کا اطلاق کریں تاکہ آپ اپنا پسندیدہ آپریٹنگ پوائنٹ منتخب کریں۔ مثال کے طور پر، 99% کی حد مقرر کر کے، آپ غلط مثبت کو ختم کر سکتے ہیں لیکن کچھ ممکنہ میچوں سے محروم ہو سکتے ہیں۔
  • نام، شناخت، اور یو آر ایل - مشہور شخصیت کا نام، ایک منفرد Amazon Recognition ID، اور URLs کی فہرست جیسے کہ مشہور شخصیت کا IMDb یا مزید معلومات کے لیے Wikipedia لنک۔
  • باؤنڈنگ باکس - ہر تسلیم شدہ مشہور شخصیت کے چہرے کے لیے مستطیل باؤنڈنگ باکس کے مقام کے نقاط۔
  • معروف صنف - ہر تسلیم شدہ مشہور شخصیت کے لیے معروف صنفی شناخت۔
  • جذبات - مشہور شخصیت کے چہرے پر ظاہر ہونے والے جذبات، مثال کے طور پر، خوش، غمگین، یا ناراض۔
  • لاحق - مشہور شخصیت کے چہرے کا پوز، رول، پچ اور یاؤ کے تین محوروں کا استعمال کرتے ہوئے۔
  • مسکراو - مشہور شخصیت مسکرا رہی ہے یا نہیں۔

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% ہے۔

ورنر ووگلز باؤنڈنگ باکس

اس باؤنڈنگ باکس کے ساتھ، ہم اب منطق کا استعمال اس بات کو یقینی بنانے کے لیے کر سکتے ہیں کہ چہرہ ہماری تخلیق کردہ نئی تصویر کے کناروں کے اندر رہے۔ ہم چہرے کو بیچ میں رکھنے کے لیے اس باؤنڈنگ باکس کے ارد گرد کچھ پیڈنگ لگا سکتے ہیں۔

مندرجہ ذیل حصوں میں، ہم دکھاتے ہیں کہ کس طرح کرکرا فوکس میں ورنر ووگلز کے ساتھ مندرجہ ذیل کراپ شدہ امیج آؤٹ پٹ کو بنایا جائے۔

ہم ایک لانچ کرتے ہیں۔ ایمیزون سیج میکر نوٹ بک، جو ایک ازگر کا ماحول فراہم کرتا ہے جہاں آپ ایمیزون ریکگنیشن کو تصویر منتقل کرنے کے لیے کوڈ چلا سکتے ہیں اور پھر خود بخود اس تصویر میں ترمیم کر سکتے ہیں جس میں مشہور شخصیت کو فوکس کیا جاتا ہے۔

ورنر ووگلز نے تراش لیا۔

کوڈ درج ذیل اعلیٰ سطحی اقدامات کرتا ہے:

  1. سے درخواست کریں۔ recognize_celebrities دی گئی تصویر اور مشہور شخصیت کے نام کے ساتھ API۔
  2. باؤنڈنگ باکس کی معلومات کے لیے جواب کو فلٹر کریں۔
  3. باؤنڈنگ باکس میں کچھ پیڈنگ شامل کریں تاکہ ہم کچھ پس منظر کو پکڑ لیں۔

شرائط

اس واک تھرو کے لیے، آپ کے پاس درج ذیل شرائط ہونی چاہئیں:

نمونے کی تصویر اپ لوڈ کریں۔

اپنی S3 بالٹی میں اپنی نمونہ مشہور شخصیت کی تصویر اپ لوڈ کریں۔

کوڈ چلائیں۔

کوڈ کو چلانے کے لیے، ہم SageMaker نوٹ بک استعمال کرتے ہیں، تاہم کوئی بھی IDE Python، pillow اور Boto3 کو انسٹال کرنے کے بعد بھی کام کرے گا۔ ہم ایک SageMaker نوٹ بک کے ساتھ ساتھ بناتے ہیں۔ AWS شناخت اور رسائی کا انتظام (IAM) کا کردار مطلوبہ اجازتوں کے ساتھ۔ درج ذیل مراحل کو مکمل کریں:

  1. نوٹ بک بنائیں اور اس کا نام automatic-cropping-celebrity.

پہلے سے طے شدہ عمل درآمد کی پالیسی، جو SageMaker نوٹ بک بناتے وقت بنائی گئی تھی، اس میں ایک سادہ پالیسی ہے جو 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 رول میں شامل کرنے کے لیے ایک اور پالیسی بنائیں مشہور شخصیات کو پہچانیں۔ APIs:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rekognition:RecognizeCelebrities", "Resource": "*" } ]
}

IAM اجازتیں۔

  1. سیج میکر کنسول پر، منتخب کریں۔ نوٹ بک کی مثالیں۔ نیوی گیشن پین میں.
  2. تلاش کریں automatic-cropping-celebrity نوٹ بک اور منتخب کریں Jupyter کھولیں۔.
  3. میں سے انتخاب کریں نئی اور conda_python3 آپ کی نوٹ بک کے لیے دانا کے طور پر۔

Jupyter نوٹ بک

درج ذیل مراحل کے لیے، کوڈ بلاکس کو اپنی Jupyter نوٹ بک میں کاپی کریں اور انہیں منتخب کرکے چلائیں۔ رن.

  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()

جب آپ اس کوڈ بلاک کو چلاتے ہیں، تو آپ دیکھ سکتے ہیں کہ ہم نے ورنر ووگلز کو پایا اور اس کے چہرے کے بیچ میں ایک نئی تصویر بنائی۔

ورنر ووگلز نے تراش لیا۔

تصویر کو نوٹ بک میں محفوظ کیا جائے گا اور S3 بالٹی پر بھی اپ لوڈ کیا جائے گا۔

Jupyter نوٹ بک آؤٹ پٹ

آپ اس حل کو a میں شامل کرسکتے ہیں۔ بڑے کام کا بہاؤ; مثال کے طور پر، ایک پبلشنگ کمپنی ایک سے زیادہ پلیٹ فارمز پر مشہور شخصیات کے مضامین شائع کرتے وقت تصاویر کو دوبارہ فارمیٹ کرنے اور اس کا سائز تبدیل کرنے کے لیے اس صلاحیت کو ایک اختتامی نقطہ کے طور پر شائع کرنا چاہتی ہے۔

صفائی ستھرائی

مستقبل کے چارجز سے بچنے کے لیے، وسائل کو حذف کریں:

  1. سیج میکر کنسول پر، اپنی نوٹ بک کو منتخب کریں۔ عوامل مینو، منتخب کریں بند کرو.
  2. نوٹ بک بند ہونے کے بعد، پر عوامل مینو، منتخب کریں خارج کر دیں.
  3. IAM کنسول پر، SageMaker ایگزیکیوشن رول کو حذف کریں جو آپ نے بنایا ہے۔
  4. Amazon S3 کنسول پر، اپنی S3 بالٹی سے ان پٹ امیج اور کسی بھی آؤٹ پٹ فائل کو ڈیلیٹ کریں۔

نتیجہ

اس پوسٹ میں، ہم نے دکھایا کہ ہم میڈیا ورک فلو کو سپورٹ کرنے کے لیے تصاویر میں ترمیم کرنے کے بصورت دیگر دستی کام کو خودکار بنانے کے لیے ایمیزون ریکگنیشن کا استعمال کیسے کر سکتے ہیں۔ یہ اشاعتی صنعت میں خاص طور پر اہم ہے جہاں تازہ مواد کو تیزی سے اور متعدد پلیٹ فارمز تک پہنچانے میں رفتار اہمیت رکھتی ہے۔

میڈیا اثاثوں کے ساتھ کام کرنے کے بارے میں مزید معلومات کے لیے، رجوع کریں۔ Media2Cloud 3.0 کے ساتھ میڈیا انٹیلی جنس ابھی زیادہ ہوشیار ہوگئی ہے۔


مصنف کے بارے میں

Amazon Recognition PlatoBlockchain Data Intelligence کے ساتھ خودکار تصویر کی کٹائی۔ عمودی تلاش۔ عی

مارک واٹکنز میڈیا اور انٹرٹینمنٹ ٹیم کے اندر ایک حل آرکیٹیکٹ ہے۔ وہ صارفین کو AI/ML حل بنانے میں مدد کرتا ہے جو AWS کا استعمال کرتے ہوئے ان کے کاروباری چیلنجوں کو حل کرتے ہیں۔ وہ کمپیوٹر ویژن، نیچرل لینگویج پروسیسنگ، پرسنلائزیشن، ML at the edge، اور مزید بہت سے AI/ML پروجیکٹس پر کام کر رہا ہے۔ پیشہ ورانہ زندگی سے دور، وہ اپنے خاندان کے ساتھ وقت گزارنا اور اپنے دو چھوٹے بچوں کو بڑا ہوتے دیکھنا پسند کرتا ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ