کمپیوٹر ویژن کے ساتھ مجازی حدود کے ذریعے خطرناک علاقوں سے لوگوں کی حفاظت کرنا

ماخذ نوڈ: 807925

چونکہ کمپنیاں زیادہ خودمختار روبوٹس اور دیگر بھاری آلات کو کام کی جگہ پر خوش آمدید کہتی ہیں، ہمیں اس بات کو یقینی بنانے کی ضرورت ہے کہ آلات انسانی ٹیم کے ساتھیوں کے ارد گرد محفوظ طریقے سے کام کر سکیں۔ اس پوسٹ میں، ہم آپ کو دکھائیں گے کہ کمپیوٹر وژن کے ساتھ ورچوئل باؤنڈری کیسے بنائی جاتی ہے۔ AWS ڈیپ لینس, AWS گہری سیکھنے کے قابل ویڈیو کیمرہ جو ڈویلپرز کو مشین لرننگ (ML) سیکھنے کے لیے ڈیزائن کیا گیا ہے۔ اس پوسٹ میں مشین لرننگ کی تکنیکوں کا استعمال کرتے ہوئے، آپ محدود علاقوں کے لیے ورچوئل باؤنڈریز بنا سکتے ہیں جو خود بخود آلات کو بند کر دیتے ہیں یا انسانوں کے قریب آنے پر الرٹ بجاتے ہیں۔

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

حل جائزہ

واک تھرو میں درج ذیل مراحل شامل ہیں:

  1. اپنے ڈیٹاسیٹ کو ML الگورتھم میں فیڈ کرنے کے لیے تیار کریں۔
  2. ایمیزون سیج میکر کے ساتھ ماڈل کو تربیت دیں۔
  3. اپنی مرضی کے پابندی والے زون کے ساتھ ٹیسٹ ماڈل۔
  4. AWS DeepLens پر حل تعینات کریں۔

ہم دیگر حقیقی دنیا کے استعمال کے معاملات پر بھی بات کرتے ہیں جہاں آپ اس حل کو لاگو کرسکتے ہیں۔

مندرجہ ذیل خاکہ حل کے فن تعمیر کی وضاحت کرتا ہے۔

شرائط

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

اپنے ڈیٹاسیٹ کو ML الگورتھم میں فیڈ کرنے کے لیے تیار کریں۔

یہ پوسٹ ایک ML الگورتھم کا استعمال کرتی ہے جسے آبجیکٹ کا پتہ لگانے کا ماڈل کہا جاتا ہے ایک ایسا حل تیار کرنے کے لئے جو اس بات کا پتہ لگاتا ہے کہ آیا کوئی شخص اپنی مرضی کے مطابق محدود زون میں ہے۔ آپ عوامی طور پر دستیاب استعمال کرتے ہیں۔ پیدل چلنے والوں کا پتہ لگانے کا ڈیٹاسیٹ Kaggle پر دستیاب ہے، جس میں 2,000 سے زیادہ تصاویر ہیں۔ اس ڈیٹاسیٹ میں انسانوں اور انسانوں جیسی اشیاء (جیسے پوت) کے لیبل ہیں تاکہ تربیت یافتہ ماڈل حقیقی انسانوں اور گتے کے پرپس یا مجسموں کے درمیان زیادہ درست طریقے سے فرق کر سکے۔

مثال کے طور پر، مندرجہ ذیل تصاویر ایک تعمیراتی کارکن کا پتہ لگانے کی مثالیں ہیں اور اگر وہ اپنی مرضی کے پابندی والے زون میں ہیں (سرخ خاکہ)۔

اپنے ماڈل کی تربیت شروع کرنے کے لیے، پہلے ایک S3 بالٹی بنائیں اپنے تربیتی ڈیٹا اور ماڈل آؤٹ پٹ کو ذخیرہ کرنے کے لیے۔ AWS DeepLens پروجیکٹس کے لیے، S3 بالٹی کے نام سابقہ ​​سے شروع ہونے چاہئیں deeplens-. آپ اس ڈیٹا کو SageMaker کے ساتھ ایک ماڈل کو تربیت دینے کے لیے استعمال کرتے ہیں، جو ایک مکمل طور پر منظم سروس ہے جو ML ماڈلز کو تیزی سے بنانے، تربیت دینے اور ان کو تعینات کرنے کی صلاحیت فراہم کرتی ہے۔

ایمیزون سیج میکر کے ساتھ ماڈل کو تربیت دیں۔

آپ ماڈل کو تربیت دینے کے لیے SageMaker Jupyter نوٹ بکس کو ترقیاتی ماحول کے طور پر استعمال کرتے ہیں۔ Jupyter Notebook ایک اوپن سورس ویب ایپلیکیشن ہے جو آپ کو ایسی دستاویزات بنانے اور شیئر کرنے کی اجازت دیتی ہے جس میں لائیو کوڈ، مساوات، تصورات، اور بیانیہ متن شامل ہوں۔ اس پوسٹ کے لیے، ہم فراہم کرتے ہیں۔ Train_Object_Detection_People_DeepLens.ipynbآپ کے ساتھ پیروی کرنے کے لیے ایک مکمل نوٹ بک۔

اپنی مرضی کے مطابق آبجیکٹ کا پتہ لگانے کا ماڈل بنانے کے لیے، آپ کو گرافک پروسیسنگ یونٹ (GPU) کے قابل ٹریننگ جاب مثال استعمال کرنے کی ضرورت ہے۔ GPUs ایک نیورل نیٹ ورک کو تربیت دینے کے لیے درکار کمپیوٹیشنز کو متوازی بنانے میں بہترین ہیں۔ اگرچہ نوٹ بک بذات خود ایک ml.t2.medium مثال ہے، تربیتی کام خاص طور پر ml.p2.xlarge مثال کا استعمال کرتا ہے۔ جی پی یو سے چلنے والی تربیتی ملازمت کی مثال تک رسائی حاصل کرنے کے لیے، آپ کو لازمی ہے۔ سروس کی حد میں اضافے کے لیے درخواست جمع کروائیں۔ AWS سپورٹ سینٹر کو۔

اپنی حد میں اضافہ حاصل کرنے کے بعد، SageMaker نوٹ بک مثال بنانے کے لیے درج ذیل اقدامات مکمل کریں:

  1. سیج میکر کنسول پر، منتخب کریں۔ نوٹ بک کی مثالیں۔.
  2. میں سے انتخاب کریں نوٹ بک مثال بنائیں.
  3. کے لئے نوٹ بک مثال کا نام، اپنی نوٹ بک مثال کے لیے ایک نام درج کریں۔
  4. کے لئے مثال کی قسممنتخب کریں t2.medium

یہ سب سے کم مہنگی مثال کی قسم ہے جو نوٹ بک مثالوں کی حمایت کرتی ہے، اور یہ اس ٹیوٹوریل کے لیے کافی ہے۔

  1. کے لئے IAM کا کردارمنتخب کریں ایک نیا کردار بنائیں.

یہ یقینی بنائیں AWS شناخت اور رسائی کا انتظام (IAM) رول کو S3 بالٹی تک رسائی حاصل ہے جو آپ نے پہلے بنائی تھی (سابقہ deeplens-).

  1. میں سے انتخاب کریں نوٹ بک مثال بنائیں. آپ کی نوٹ بک مثال کو شروع ہونے میں چند منٹ لگ سکتے ہیں۔
  1. جب نوٹ بک مثالوں کے صفحہ کی حیثیت InService میں تبدیل ہو جائے، تو منتخب کریں۔ Jupyter کھولیں۔ اپنی نئی تخلیق کردہ Jupyter نوٹ بک مثال کو لانچ کرنے کے لیے۔
  2. میں سے انتخاب کریں اپ لوڈ کریں اپ لوڈ کرنے کے لیے Train_Object_Detection_people_DeepLens.ipynb فائل جو آپ نے پہلے ڈاؤن لوڈ کی تھی۔

  1. نوٹ بک کھولیں اور آخر تک اس کی پیروی کریں۔
  2. اگر آپ سے کرنل سیٹ کرنے کے بارے میں پوچھا جائے تو منتخب کریں۔ conda_mxnet_p36.

Jupyter نوٹ بک میں متن اور کوڈ سیلز کا مرکب ہوتا ہے۔ کوڈ کا ایک ٹکڑا چلانے کے لیے، سیل کا انتخاب کریں اور دبائیں۔ شفٹ + درج کریں. جب سیل چل رہا ہے، سیل کے آگے ایک ستارہ ظاہر ہوتا ہے۔ سیل مکمل ہونے پر، ایک آؤٹ پٹ نمبر اور نیا آؤٹ پٹ سیل اصل سیل کے نیچے ظاہر ہوتا ہے۔

  1. عوامی S3 بالٹی سے ڈیٹا سیٹ کو مقامی SageMaker مثال میں ڈاؤن لوڈ کریں اور ڈیٹا کو ان زپ کریں۔ یہ نوٹ بک میں کوڈ کی پیروی کرکے کیا جا سکتا ہے:
     !aws s3 cp s3://deeplens-public/samples/pedestriansafety/humandetection_data.zip . !rm -rf humandetection/ !unzip humandetection_data.zip -d humandetection 

  2. ڈیٹاسیٹ کو فارمیٹ میں تبدیل کریں (ریکارڈ آئی او) جسے SageMaker الگورتھم میں کھلایا جا سکتا ہے:
     !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/train_mask.lst $DATA_PATH/ !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/val_mask.lst $DATA_PATH/ 

  3. RecordIO فائلوں کو واپس Amazon S3 میں منتقل کریں۔

اب جب کہ آپ نے تمام ڈیٹا کی تیاری مکمل کر لی ہے، آپ آبجیکٹ ڈیٹیکٹر کو تربیت دینے کے لیے تیار ہیں۔

آبجیکٹ کا پتہ لگانے والے الگورتھم کی بہت سی مختلف قسمیں ہیں۔ اس پوسٹ کے لیے، آپ استعمال کریں۔ سنگل شاٹ ملٹی باکس ڈیٹیکشن الگورتھم (SSD). SSD الگورتھم میں رفتار بمقابلہ درستگی کا ایک اچھا توازن ہے، جو اسے AWS DeepLens جیسے کنارے والے آلات پر چلانے کے لیے مثالی بناتا ہے۔

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

  1. اپنے ہائپر پیرامیٹر اور ڈیٹا چینلز مرتب کریں۔ ہائپر پیرامیٹر کی درج ذیل مثال کی تعریف کو استعمال کرنے پر غور کریں:
     od_model = sagemaker.estimator.Estimator(training_image, role, train_instance_count=1, train_instance_type='ml.p2.xlarge', train_volume_size = 50, train_max_run = 360000, input_mode= 'File', output_path=s3_output_location, sagemaker_session=sess) od_model.set_hyperparameters(base_network='resnet-50', use_pretrained_model=1, num_classes=2, mini_batch_size=32, epochs=100, learning_rate=0.003, lr_scheduler_step='3,6', lr_scheduler_factor=0.1, optimizer='sgd', momentum=0.9, weight_decay=0.0005, overlap_threshold=0.5, nms_threshold=0.45, image_shape=300, num_training_samples=n_train_samples) 

نوٹ بک میں کچھ ڈیفالٹ ہائپرپیرامیٹر ہیں جو پہلے سے منتخب کیے گئے ہیں۔ پیدل چلنے والوں کا پتہ لگانے کے لیے، آپ ماڈل کو 100 دوروں کے لیے تربیت دیتے ہیں۔ ایک ml.p2.xlarge مثال کا استعمال کرتے ہوئے اس تربیتی مرحلے میں تقریباً 2 گھنٹے لگنے چاہئیں۔ آپ ہائپر پیرامیٹر کے مختلف مجموعوں کے ساتھ تجربہ کر سکتے ہیں، یا کارکردگی میں بہتری کے لیے مزید دوروں کے لیے تربیت حاصل کر سکتے ہیں۔ تازہ ترین قیمتوں کے بارے میں معلومات کے لیے، دیکھیں ایمیزون سیج میکر قیمتوں کا تعین.

  1. آپ کوڈ کی ایک لائن کے ساتھ تربیتی کام شروع کر سکتے ہیں اور SageMaker کنسول پر وقت کے ساتھ ساتھ درستگی کی نگرانی کر سکتے ہیں:
    od_model.fit(inputs=data_channels, logs=True) 

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

آپ میٹرک اوسط درستگی (mAP) کے ذریعے اپنے تربیتی کام کی پیشرفت کی نگرانی کر سکتے ہیں، جو آپ کو اشیاء کی درجہ بندی کرنے اور صحیح باؤنڈنگ خانوں کا پتہ لگانے کے ماڈل کی صلاحیت کے معیار کی نگرانی کرنے کی اجازت دیتا ہے۔ ڈیٹا لاگز دیگر نقصانات کے علاوہ، ڈیٹا سیٹ کے ہر رن کے لیے، ایک دور کے لیے ایک بار، توثیق کے ڈیٹا پر ایم اے پی کو بھی پرنٹ کرتے ہیں۔ یہ میٹرک کلاس اور اس کے ارد گرد درست باؤنڈنگ باکس کا درست پتہ لگانے پر الگورتھم کی کارکردگی کے معیار کے لیے ایک پراکسی ہے۔

کام ختم ہونے پر، آپ S3 بالٹی اور فولڈر میں تربیت یافتہ ماڈل فائلیں تلاش کر سکتے ہیں s3_output_location:

s3_output_location = 's3://{}/{}/output'.format(BUCKET, PREFIX)

اس پوسٹ کے لیے، ہم 10ویں دور اور 100ویں دور کی تکمیل پر سیٹ کی توثیق کے نتائج دکھاتے ہیں۔ 10 ویں عہد کے اختتام پر، ہم تقریباً 0.027 کی توثیق کا نقشہ دیکھتے ہیں، جب کہ 100 ویں عہد کا تقریباً 0.42 تھا۔

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

اپنی مرضی کے پابندی والے زون کے ساتھ ٹیسٹ ماڈل

تربیت یافتہ ماڈل کو AWS DeepLens پر تعینات کرنے سے پہلے، آپ SageMaker کی میزبانی کردہ اینڈ پوائنٹ کا استعمال کرکے اسے کلاؤڈ میں جانچ سکتے ہیں۔ ایک سیج میکر اینڈ پوائنٹ ایک مکمل طور پر منظم سروس ہے جو آپ کو REST API کے ذریعے حقیقی وقت کا اندازہ لگانے کی اجازت دیتی ہے۔ SageMaker آپ کو اپنے ماڈلز کو جانچنے کے لیے تیزی سے نئے اینڈ پوائنٹس تعینات کرنے کی اجازت دیتا ہے تاکہ آپ کو مقامی مثال پر ماڈل کی میزبانی کرنے کی ضرورت نہ پڑے جو ماڈل کو تربیت دینے کے لیے استعمال کیا گیا تھا۔ یہ آپ کو ان تصاویر پر ماڈل سے پیشین گوئیاں (یا تخمینہ) کرنے کی اجازت دیتا ہے جو الگورتھم نے تربیت کے دوران نہیں دیکھی تھیں۔

آپ کو اسی مثال کی قسم پر میزبانی کرنے کی ضرورت نہیں ہے جسے آپ تربیت دیتے تھے۔ تربیت ایک طویل اور حساب سے بھاری کام ہے جس کے لیے کمپیوٹ اور میموری کے مختلف تقاضوں کی ضرورت ہوتی ہے جو کہ ہوسٹنگ میں عام طور پر نہیں ہوتی ہے۔ آپ کسی بھی قسم کی مثال منتخب کر سکتے ہیں جسے آپ ماڈل کی میزبانی کرنا چاہتے ہیں۔ اس صورت میں، ہم نے تربیت کے لیے ml.p3.2xlarge مثال کا انتخاب کیا، لیکن ہم کم مہنگے CPU مثال، ml.m4.xlarge پر ماڈل کی میزبانی کرنے کا انتخاب کرتے ہیں۔ درج ذیل کوڈ کا ٹکڑا ہمارے اختتامی نقطہ کی تعیناتی کو ظاہر کرتا ہے۔

object_detector = od_model.deploy(initial_instance_count = 1, instance_type = 'ml.m4.xlarge') 

اپنی مرضی کے پابندی والے زون میں پتہ لگانا (دلچسپی کا علاقہ)

آؤٹ پٹ کی شکل کو [class_index، confidence_score، xmin، ymin، xmax، ymax] کے طور پر دکھایا جا سکتا ہے۔ کم اعتماد کی پیشین گوئیوں میں اکثر جھوٹے مثبت یا غلط منفی ہونے کے زیادہ امکانات ہوتے ہیں، اس لیے آپ کو کم اعتمادی کی پیشین گوئیوں کو رد کر دینا چاہیے۔ آپ درج ذیل کوڈ کا استعمال کر کے یہ معلوم کر سکتے ہیں کہ آیا اس شخص کا باؤنڈنگ باکس محدود زون کے ساتھ اوورلیپ ہو جاتا ہے۔

def inRestrictedSection(ImShape = None, R1 = None, restricted_region = None, kclass = None, score = None, threshold = None): statement = 'Person Not Detected in Restricted Zone' if (kclass == 1) and (score > threshold): Im1 = np.zeros((ImShape[0],ImShape[1],3), np.int32) cv2.fillPoly(Im1, [R1], 255) Im2 = np.zeros((ImShape[0],ImShape[1],3), np.int32) if restricted_region is None: restricted_region = np.array([[0,ImShape[0]],[ImShape[1],ImShape[0]],[ImShape[1],0], [0,0]], np.int32) cv2.fillPoly(Im2, [restricted_region], 255) Im = Im1 * Im2 if np.sum(np.greater(Im, 0))>0: statement = 'Person Detected in Restricted Zone' else: statement = statement return statement 

پہلے سے طے شدہ طور پر، مکمل فریم کا انسانی موجودگی کے لیے جائزہ لیا جاتا ہے۔ تاہم، آپ آسانی سے دلچسپی کا وہ علاقہ بتا سکتے ہیں جس میں کسی شخص کی موجودگی کو زیادہ خطرہ سمجھا جاتا ہے۔ اگر آپ اپنی مرضی کے مطابق پابندی والے زون کو شامل کرنا چاہتے ہیں، تو خطے کے عمودی خطوں کے نقاط کو شامل کریں جس کی نمائندگی [X-axis,Y-axis] سے ہوتی ہے اور کثیرالاضلاع بنائیں۔ نقاط کو گھڑی کی سمت یا مخالف گھڑی کی سمت میں داخل کیا جانا چاہئے۔ درج ذیل کوڈ دیکھیں:

restricted_region = None #restricted_region = np.array([[0,200],[100,200],[100,0], [10,10]], np.int32) 

درج ذیل نمونہ کوڈ پیدل چلنے والوں کو دکھاتا ہے جن کی شناخت ایک محدود زون میں ہوتی ہے:

file_name = 'humandetection/test_images/t1_image.jpg' img = cv2.imread(file_name) img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB) thresh = 0.2 height = img.shape[0] width = img.shape[1] colors = dict() with open(file_name, 'rb') as image: f = image.read() b = bytearray(f) ne = open('n.txt','wb') ne.write(b) results = object_detector.predict(b, initial_args={'ContentType': 'image/jpeg'}) detections = json.loads(results) object_categories = ['no-person', 'person'] for det in detections['prediction']: (klass, score, x0, y0, x1, y1) = det if score < thresh: continue cls_id = int(klass) prob = score if cls_id not in colors: colors[cls_id] = (random.random(), random.random(), random.random()) xmin = int(x0 * width) ymin = int(y0 * height) xmax = int(x1 * width) ymax = int(y1 * height) R1 = np.array([[xmin,ymin],[xmax,ymin],[xmax,ymax], [xmin,ymax]], np.int32) cv2.polylines(img,[R1],True, (255,255,0), thickness = 5) cv2.polylines(img,[restricted_region],True, (255,0,0), thickness = 5) plt.imshow(img) print(inRestrictedSection(img.shape,R1 = R1, restricted_region= restricted_region, kclass = cls_id, score = prob, threshold=0.2)) 

درج ذیل تصاویر ہمارے نتائج کو ظاہر کرتی ہیں۔

AWS DeepLens پر حل تعینات کریں۔

تعیناتی کے لیے ماڈل کو AWS DeepLens میں تبدیل کریں۔

AWS DeepLens پر SageMaker سے تربیت یافتہ SSD ماڈل کو تعینات کرتے وقت، آپ کو پہلے دوڑنا ہوگا۔ deploy.py ماڈل آرٹفیکٹ کو قابل تعیناتی ماڈل میں تبدیل کرنے کے لیے:

!rm -rf incubator-mxnet !git clone -b v1.7.x https://github.com/apache/incubator-mxnet MODEL_PATH = od_model.model_data TARGET_PATH ='s3://'+BUCKET+'/'+PREFIX+'/patched/' !rm -rf tmp && mkdir tmp rm -rf tmp && mkdir tmp !aws s3 cp $MODEL_PATH tmp !tar -xzvf tmp/model.tar.gz -C tmp !mv tmp/model_algo_1-0000.params tmp/ssd_resnet50_300-0000.params !mv tmp/model_algo_1-symbol.json tmp/ssd_resnet50_300-symbol.json !python incubator-mxnet/example/ssd/deploy.py --network resnet50 --data-shape 300 --num-class 2 --prefix tmp/ssd_ !tar -cvzf ./patched_model.tar.gz -C tmp ./deploy_ssd_resnet50_300-0000.params ./deploy_ssd_resnet50_300-symbol.json ./hyperparams.json !aws s3 cp patched_model.tar.gz $TARGET_PATH

اپنا ماڈل AWS DeepLens میں درآمد کریں۔

ماڈل کو AWS DeepLens ڈیوائس پر چلانے کے لیے، آپ کو AWS DeepLens پروجیکٹ بنانا ہوگا۔ اپنے ماڈل کو AWS DeepLens میں درآمد کرکے شروع کریں۔

  1. AWS DeepLens کنسول پر، نیچے وسائلمنتخب کریں ماڈل.
  2. میں سے انتخاب کریں ماڈل درآمد کریں۔.

  1. کے لئے درآمد کا ذریعہمنتخب بیرونی طور پر تربیت یافتہ ماڈل.
  2. ایمیزون S3 کا مقام درج کریں۔ پیچ شدہ ماڈل جسے آپ نے اوپر والے مرحلے میں deploy.py چلانے سے بچایا ہے۔
  3. کے لئے ماڈل فریم ورکمنتخب کریں ایم ایکس نیٹ.
  4. میں سے انتخاب کریں ماڈل درآمد کریں۔.

انفرنس فنکشن بنائیں

انفرنس فنکشن ہر کیمرہ فریم کو ماڈل میں فیڈ کرتا ہے تاکہ پیشین گوئیاں حاصل کی جا سکیں اور تخمینہ کے نتائج کو استعمال کرنے پر کسی بھی حسب ضرورت کاروباری منطق کو چلایا جا سکے۔ تم استعمال کرتے ہو او ڈبلیو ایس لامبڈا۔ ایک فنکشن بنانے کے لیے جسے آپ AWS DeepLens پر تعینات کرتے ہیں۔ فنکشن مقامی طور پر AWS DeepLens ڈیوائس پر انفرنس چلاتا ہے۔

سب سے پہلے، ہمیں AWS DeepLens پر تعینات کرنے کے لیے Lambda فنکشن بنانے کی ضرورت ہے۔

  1. ڈاؤن لوڈ، اتارنا انفرنس لیمبڈا فنکشن.
  2. لیمبڈا کنسول پر، منتخب کریں۔ افعال.
  3. میں سے انتخاب کریں فنکشن بنائیں.
  4. منتخب کریں شروع سے مصنف.
  5. کے لئے فنکشن کا نام، ایک نام درج کریں۔
  6. کے لئے رن ٹائممنتخب کریں ازگر 3.7.
  7. کے لئے عمل درآمد کا کردار منتخب کریں یا بنائیںمنتخب کریں موجودہ کردار کا استعمال کریں۔.
  8. میں سے انتخاب کریں service-role/AWSDeepLensLambdaRole.
  9. میں سے انتخاب کریں فنکشن بنائیں.

  1. فنکشن کے تفصیل والے صفحے پر، پر عوامل مینو، منتخب کریں زپ فائل اپ لوڈ کریں۔.

  1. اپ لوڈ کریں اندازہ لیمبڈا فائل جو آپ نے پہلے ڈاؤن لوڈ کی تھی۔
  2. میں سے انتخاب کریں محفوظ کریں آپ کے درج کردہ کوڈ کو محفوظ کرنے کے لیے۔
  3. پر عوامل مینو، منتخب کریں نیا ورژن شائع کریں۔.

فنکشن کو شائع کرنا اسے AWS DeepLens کنسول پر دستیاب کرتا ہے تاکہ آپ اسے اپنے حسب ضرورت پروجیکٹ میں شامل کر سکیں۔

  1. ایک ورژن نمبر درج کریں اور منتخب کریں۔ شائع.

انفرنس فنکشن کو سمجھنا

یہ سیکشن آپ کو انفرنس فنکشن کے کچھ اہم حصوں کے بارے میں بتاتا ہے۔ سب سے پہلے، آپ کو دو مخصوص فائلوں پر توجہ دینا چاہئے:

  • labels.txt - نیورل نیٹ ورک (انٹیجرز) سے انسانی پڑھنے کے قابل لیبلز (سٹرنگ) تک آؤٹ پٹ کی میپنگ پر مشتمل ہے۔
  • lambda_function.py - ہر کیمرے کے فریم پر پیشین گوئیاں پیدا کرنے اور نتائج واپس بھیجنے کے لیے بلائے جانے والے فنکشن کے لیے کوڈ پر مشتمل ہے۔

lambda_function.py میں، آپ پہلے ماڈل کو لوڈ اور بہتر بناتے ہیں۔ GPU والی کلاؤڈ ورچوئل مشینوں کے مقابلے AWS DeepLens میں کمپیوٹنگ کی کم طاقت ہے۔ AWS DeepLens Intel OpenVino ماڈل آپٹیمائزر کا استعمال کرتا ہے تاکہ SageMaker میں تربیت یافتہ ماڈل کو اپنے ہارڈ ویئر پر چلانے کے لیے بہتر بنایا جا سکے۔ درج ذیل کوڈ آپ کے ماڈل کو مقامی طور پر چلانے کے لیے بہتر بناتا ہے:

client.publish(topic=iot_topic, payload='Optimizing model...') ret, model_path = mo.optimize('deploy_ssd_resnet50_300', INPUT_W, INPUT_H) # Load the model onto the GPU. client.publish(topic=iot_topic, payload='Loading model...') model = awscam.Model(model_path, {'GPU': 1}) 

پھر آپ ماڈل فریم فی فریم کو کیمرے کی تصاویر پر چلاتے ہیں۔ درج ذیل کوڈ دیکھیں:

while True: # Get a frame from the video stream ret, frame = awscam.getLastFrame() if not ret: raise Exception('Failed to get frame from the stream') # Resize frame to the same size as the training set. frame_resize = cv2.resize(frame, (INPUT_H, INPUT_W)) # Run the images through the inference engine and parse the results using # the parser API, note it is possible to get the output of doInference # and do the parsing manually, but since it is a ssd model, # a simple API is provided. parsed_inference_results = model.parseResult(model_type, model.doInference(frame_resize)) 

آخر میں، آپ متن کی پیشن گوئی کے نتائج واپس کلاؤڈ کو بھیجتے ہیں۔ کلاؤڈ میں متن کے نتائج کو دیکھنا یہ یقینی بنانے کا ایک آسان طریقہ ہے کہ ماڈل صحیح طریقے سے کام کر رہا ہے۔ ہر AWS DeepLens ڈیوائس میں ایک وقف شدہ iot_topic ہوتا ہے جو خود کار طریقے سے نتیجہ حاصل کرنے کے لیے بنایا جاتا ہے۔ درج ذیل کوڈ دیکھیں:

# Send results to the cloud client.publish(topic=iot_topic, payload=json.dumps(cloud_output)) 

ایک حسب ضرورت AWS DeepLens پروجیکٹ بنائیں

ایک نیا AWS DeepLens پروجیکٹ بنانے کے لیے، درج ذیل مراحل کو مکمل کریں:

  1. AWS DeepLens کنسول پر، پر منصوبوں کی تفصیل صفحہ، منتخب کریں منصوبے بنائیں.
  2. کے لئے پروجیکٹ کی قسم۔منتخب ایک نیا خالی پروجیکٹ بنائیں.
  3. میں سے انتخاب کریں اگلے.

  1. آپ کے منصوبے کا نام yourname-pedestrian-detector-.
  2. میں سے انتخاب کریں ماڈل شامل کریں۔.
  3. وہ ماڈل منتخب کریں جو آپ نے ابھی بنایا ہے۔
  4. میں سے انتخاب کریں فنکشن شامل کریں۔.
  5. لیمبڈا فنکشن کو تلاش کریں جسے آپ نے پہلے نام سے بنایا تھا۔
  6. میں سے انتخاب کریں منصوبے بنائیں.
  7. پر منصوبوں کی تفصیل صفحہ، وہ پروجیکٹ منتخب کریں جسے آپ تعینات کرنا چاہتے ہیں۔
  8. انتخاب کیا۔ ڈیوائس پر تعینات کریں۔.
  9. کے لئے ہدف کا آلہ۔، اپنا آلہ منتخب کریں۔
  10. میں سے انتخاب کریں کا جائزہ لیں.
  11. اپنی ترتیبات کا جائزہ لیں اور منتخب کریں۔ تعینات.

آپ کا AWS DeepLens جس نیٹ ورک سے منسلک ہے اس کی رفتار پر منحصر ہے، تعیناتی کو مکمل ہونے میں 10 منٹ لگ سکتے ہیں۔ جب تعیناتی مکمل ہو جائے تو، آپ کو صفحہ پر ایک سبز بینر نظر آنا چاہیے جس میں پیغام ہوگا، "مبارک ہو، آپ کا ماڈل اب مقامی طور پر AWS DeepLens پر چل رہا ہے!"

ٹیکسٹ آؤٹ پٹ دیکھنے کے لیے، ڈیوائس کی تفصیلات والے صفحے پر نیچے سکرول کریں۔ پروجیکٹ آؤٹ پٹ سیکشن موضوع کو کاپی کرنے کے لیے سیکشن میں دی گئی ہدایات پر عمل کریں اور پر جائیں۔ AWS IoT کور موضوع کو سبسکرائب کرنے کے لیے کنسول۔ آپ کو مندرجہ ذیل اسکرین شاٹ کے مطابق نتائج دیکھنا چاہئیں۔

ویڈیو سٹریم یا ٹیکسٹ آؤٹ پٹ دیکھنے کے لیے مرحلہ وار ہدایات کے لیے، دیکھیں AWS DeepLens سے نتائج دیکھنا.

حقیقی دنیا کے استعمال کے معاملات۔

اب جبکہ آپ کے پاس AWS DeepLens پر چلنے والے اپنے ماڈل سے پیشین گوئیاں ہیں، آئیے ان پیشین گوئیوں کو الرٹس اور بصیرت میں تبدیل کریں۔ اس طرح کے پروجیکٹ کے کچھ عام استعمال میں شامل ہیں:

  • یہ سمجھنا کہ ایک مخصوص دن میں کتنے لوگ ایک محدود زون میں داخل ہوئے ہیں تاکہ تعمیراتی سائٹیں ایسے مقامات کی نشاندہی کر سکیں جن کے لیے زیادہ حفاظتی نشانات کی ضرورت ہوتی ہے۔ یہ نتائج جمع کرکے اور ان کا استعمال کرتے ہوئے ڈیش بورڈ بنانے کے لیے کیا جا سکتا ہے۔ ایمیزون کوئیک سائٹ. QuickSight کا استعمال کرتے ہوئے ڈیش بورڈ بنانے کے بارے میں مزید تفصیلات کے لیے، دیکھیں AWS DeepLens اور GluonCV کے ساتھ گھر سے کام کرنے والا کرنسی ٹریکر بنائیں.
  • AWS DeepLens سے آؤٹ پٹ کو اکٹھا کرنا اور Raspberry Pi کو ترتیب دینا جب کوئی شخص کسی محدود زون میں جا رہا ہو تو الرٹ بجانے کے لیے۔ AWS DeepLens ڈیوائس کو Raspberry Pi ڈیوائس سے جوڑنے کے بارے میں مزید تفصیلات کے لیے، دیکھیں AWS DeepLens کے ساتھ کوڑے دان کی چھانٹنے والا بنانا.

نتیجہ

اس پوسٹ میں، آپ نے سیکھا کہ کس طرح آبجیکٹ کا پتہ لگانے والے ماڈل کو تربیت دی جائے اور اسے AWS DeepLens پر تعینات کیا جائے تاکہ محدود علاقوں میں داخل ہونے والے لوگوں کا پتہ لگایا جا سکے۔ آپ اس ٹیوٹوریل کو AWS DeepLens پر اپنے کسٹم آبجیکٹ کا پتہ لگانے کے پروجیکٹس کو تربیت دینے اور تعینات کرنے کے حوالے سے استعمال کر سکتے ہیں۔

AWS DeepLens کے ساتھ اس ٹیوٹوریل اور دیگر ٹیوٹوریلز، نمونوں، اور پروجیکٹ آئیڈیاز کی مزید تفصیلی واک تھرو کے لیے، دیکھیں AWS DeepLens کی ترکیبیں۔.


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

یش شاہ ایمیزون ایم ایل سلوشنز لیب میں ڈیٹا سائنٹسٹ ہے، جہاں وہ ہیلتھ کیئر سے لے کر مینوفیکچرنگ اور ریٹیل تک مشین لرننگ کے استعمال کے کیسز کی ایک رینج پر کام کرتا ہے۔ اس کا انسانی عوامل اور شماریات میں باضابطہ پس منظر ہے، اور وہ پہلے ایمیزون SCOT ٹیم کا حصہ تھا جو 3P فروخت کنندگان کی انوینٹری کے موثر انتظام کے ساتھ رہنمائی کرنے کے لیے پروڈکٹس ڈیزائن کرتا تھا۔

Phu Nguyen AWS Panorama کے لیے پروڈکٹ مینیجر ہے۔ وہ ایسی پروڈکٹس تیار کرتا ہے جو کسی بھی مہارت کی سطح کے ڈویلپرز کو مشین لرننگ کا ایک آسان، ہینڈ آن تعارف فراہم کرتا ہے۔

ماخذ: https://aws.amazon.com/blogs/machine-learning/protecting-people-through-virtual-boundaries-computer-vision/

ٹائم اسٹیمپ:

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