কম্পিউটার ভিশন দিয়ে ভার্চুয়াল সীমানার মাধ্যমে বিপজ্জনক এলাকা থেকে মানুষকে রক্ষা করা

উত্স নোড: 807925

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

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

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

ওয়াকথ্রুতে নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে:

  1. একটি ML অ্যালগরিদমে ফিড করার জন্য আপনার ডেটাসেট প্রস্তুত করুন।
  2. Amazon SageMaker এর সাথে একটি মডেলকে প্রশিক্ষণ দিন।
  3. কাস্টম সীমাবদ্ধতা জোন সঙ্গে পরীক্ষা মডেল.
  4. AWS DeepLens-এ সমাধান স্থাপন করুন।

আমরা অন্যান্য বাস্তব-বিশ্ব ব্যবহারের ক্ষেত্রেও আলোচনা করি যেখানে আপনি এই সমাধানটি প্রয়োগ করতে পারেন।

নিম্নলিখিত চিত্রটি সমাধানের স্থাপত্যকে চিত্রিত করে।

পূর্বশর্ত

এই ওয়াকথ্রু সম্পূর্ণ করতে, আপনার অবশ্যই নিম্নলিখিত পূর্বশর্তগুলি থাকতে হবে:

একটি ML অ্যালগরিদমে ফিড করার জন্য আপনার ডেটাসেট প্রস্তুত করুন

এই পোস্টটি একটি এমএল অ্যালগরিদম ব্যবহার করে যাকে একটি বস্তু সনাক্তকরণ মডেল বলা হয় একটি সমাধান তৈরি করতে যা সনাক্ত করে যে একজন ব্যক্তি একটি কাস্টম সীমাবদ্ধ অঞ্চলে আছে কিনা৷ আপনি সর্বজনীনভাবে উপলব্ধ ব্যবহার করুন পথচারীদের সনাক্তকরণ ডেটাসেট Kaggle এ উপলব্ধ, যার 2,000 এরও বেশি ছবি রয়েছে। এই ডেটাসেটে মানুষ এবং মানুষের মতো বস্তুর জন্য লেবেল রয়েছে (যেমন ম্যানেকুইন) তাই প্রশিক্ষিত মডেল প্রকৃত মানুষ এবং কার্ডবোর্ড প্রপস বা মূর্তির মধ্যে আরও সঠিকভাবে পার্থক্য করতে পারে।

উদাহরণ স্বরূপ, নিচের ছবিগুলি হল একজন নির্মাণ কর্মীকে শনাক্ত করার উদাহরণ এবং যদি তারা কাস্টম সীমাবদ্ধতা অঞ্চলে (লাল রূপরেখা) থাকে।

আপনার মডেল প্রশিক্ষণ শুরু করতে, প্রথমে একটি S3 বালতি তৈরি করুন আপনার প্রশিক্ষণ তথ্য এবং মডেল আউটপুট সংরক্ষণ করতে. AWS DeepLens প্রকল্পের জন্য, S3 বাকেটের নাম অবশ্যই উপসর্গ দিয়ে শুরু করতে হবে deeplens-. আপনি SageMaker এর সাথে একটি মডেলকে প্রশিক্ষণ দিতে এই ডেটা ব্যবহার করেন, একটি সম্পূর্ণরূপে পরিচালিত পরিষেবা যা দ্রুত ML মডেলগুলি তৈরি, প্রশিক্ষণ এবং স্থাপন করার ক্ষমতা প্রদান করে৷

Amazon SageMaker এর সাথে একটি মডেলকে প্রশিক্ষণ দিন

আপনি মডেল প্রশিক্ষণের জন্য উন্নয়ন পরিবেশ হিসাবে SageMaker Jupyter নোটবুক ব্যবহার করুন. Jupyter Notebook হল একটি ওপেন সোর্স ওয়েব অ্যাপ্লিকেশন যা আপনাকে লাইভ কোড, সমীকরণ, ভিজ্যুয়ালাইজেশন এবং বর্ণনামূলক পাঠ্য ধারণ করে এমন নথি তৈরি এবং ভাগ করতে দেয়। এই পোস্টের জন্য, আমরা প্রদান করি ট্রেন_অবজেক্ট_ডিটেকশন_মানুষ_ডিপলেন্স।আইপিএনবি, আপনাকে অনুসরণ করার জন্য একটি সম্পূর্ণ নোটবুক।

একটি কাস্টম অবজেক্ট ডিটেকশন মডেল তৈরি করতে, আপনাকে একটি গ্রাফিক প্রসেসিং ইউনিট (GPU)-সক্ষম প্রশিক্ষণ কাজের উদাহরণ ব্যবহার করতে হবে। একটি নিউরাল নেটওয়ার্ককে প্রশিক্ষণের জন্য প্রয়োজনীয় গণনার সমান্তরাল করার ক্ষেত্রে GPU গুলি চমৎকার। যদিও নোটবুক নিজেই একটি একক ml.t2.medium উদাহরণ, প্রশিক্ষণের কাজটি বিশেষভাবে একটি ml.p2.xlarge উদাহরণ ব্যবহার করে। একটি GPU-সক্ষম প্রশিক্ষণ কাজের উদাহরণ অ্যাক্সেস করতে, আপনাকে অবশ্যই করতে হবে একটি পরিষেবা সীমা বৃদ্ধির জন্য একটি অনুরোধ জমা দিন AWS সহায়তা কেন্দ্রে।

আপনি আপনার সীমা বৃদ্ধি পাওয়ার পরে, একটি সেজমেকার নোটবুক উদাহরণ তৈরি করতে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. সেজমেকার কনসোলে, নির্বাচন করুন নোটবুক উদাহরণস্বরূপ.
  2. বেছে নিন নোটবুকের উদাহরণ তৈরি করুন.
  3. জন্য নোটবুকের উদাহরণের নাম, আপনার নোটবুকের উদাহরণের জন্য একটি নাম লিখুন।
  4. জন্য দৃষ্টান্তের ধরণনির্বাচন t2.মাধ্যম।

এটি সর্বনিম্ন ব্যয়বহুল উদাহরণ প্রকার যা নোটবুক উদাহরণ সমর্থন করে এবং এটি এই টিউটোরিয়ালের জন্য যথেষ্ট।

  1. জন্য আইএএম ভূমিকানির্বাচন একটি নতুন ভূমিকা তৈরি করুন.

এই নিশ্চিত করুন এডাব্লুএস আইডেন্টিটি এবং অ্যাক্সেস ম্যানেজমেন্ট (IAM) ভূমিকার আপনার আগে তৈরি করা S3 বালতিতে অ্যাক্সেস রয়েছে (উপসর্গ deeplens-).

  1. বেছে নিন নোটবুকের উদাহরণ তৈরি করুন. আপনার নোটবুকের উদাহরণ শুরু হতে কয়েক মিনিট সময় নিতে পারে।
  1. যখন নোটবুকের ইনস্ট্যান্স পৃষ্ঠার অবস্থা InService-এ পরিবর্তিত হয়, তখন বেছে নিন জুপিটার খুলুন আপনার সদ্য তৈরি জুপিটার নোটবুক ইনস্ট্যান্স চালু করতে।
  2. বেছে নিন আপলোড আপলোড করতে Train_Object_Detection_people_DeepLens.ipynb আপনি আগে ডাউনলোড করা ফাইল।

  1. নোটবুকটি খুলুন এবং শেষ পর্যন্ত এটি অনুসরণ করুন।
  2. যদি আপনাকে কার্নেল সেট করার বিষয়ে জিজ্ঞাসা করা হয়, নির্বাচন করুন conda_mxnet_p36.

জুপিটার নোটবুকে পাঠ্য এবং কোড কোষের মিশ্রণ রয়েছে। কোডের একটি অংশ চালানোর জন্য, ঘরটি নির্বাচন করুন এবং টিপুন Shift + Enter. সেলটি চলাকালীন, সেলের পাশে একটি তারকাচিহ্ন দেখা যায়। সেলটি সম্পূর্ণ হলে, একটি আউটপুট নম্বর এবং নতুন আউটপুট সেল আসল ঘরের নীচে উপস্থিত হয়।

  1. পাবলিক S3 বাকেট থেকে স্থানীয় সেজমেকার ইনস্ট্যান্সে ডেটাসেট ডাউনলোড করুন এবং ডেটা আনজিপ করুন। এটি নোটবুকের কোড অনুসরণ করে করা যেতে পারে:
     !aws s3 cp s3://deeplens-public/samples/pedestriansafety/humandetection_data.zip . !rm -rf humandetection/ !unzip humandetection_data.zip -d humandetection 

  2. ডেটাসেটকে একটি বিন্যাসে রূপান্তর করুন (রেকর্ড আইও) যা সেজমেকার অ্যালগরিদমে খাওয়ানো যেতে পারে:
     !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). এসএসডি অ্যালগরিদমের গতি বনাম নির্ভুলতার একটি ভাল ভারসাম্য রয়েছে, এটিকে এডব্লিউএস ডিপলেন্সের মতো এজ ডিভাইসগুলিতে চালানোর জন্য আদর্শ করে তোলে।

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

  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 এর মাধ্যমে রিয়েল-টাইম ইনফারেন্স করতে দেয়৷ সেজমেকার আপনাকে আপনার মডেলগুলি পরীক্ষা করার জন্য দ্রুত নতুন এন্ডপয়েন্ট স্থাপন করার অনুমতি দেয় যাতে আপনাকে মডেলটিকে প্রশিক্ষণের জন্য ব্যবহৃত স্থানীয় উদাহরণে মডেলটিকে হোস্ট করতে হবে না। এটি আপনাকে চিত্রগুলির মডেল থেকে ভবিষ্যদ্বাণী (বা অনুমান) করতে দেয় যা প্রশিক্ষণের সময় অ্যালগরিদম দেখেনি৷

আপনি প্রশিক্ষণের জন্য ব্যবহার করা একই উদাহরণ টাইপের হোস্ট করতে হবে না। প্রশিক্ষণ হল একটি দীর্ঘায়িত এবং কম্পিউট-ভারী কাজ যার জন্য একটি আলাদা সেট গণনা এবং মেমরির প্রয়োজনীয়তা প্রয়োজন যা হোস্টিং সাধারণত করে না। আপনি মডেল হোস্ট করতে চান যে কোনো ধরনের উদাহরণ চয়ন করতে পারেন. এই ক্ষেত্রে, আমরা প্রশিক্ষণের জন্য 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 কনসোলে, নিচে Resourcesনির্বাচন মডেল.
  2. বেছে নিন আমদানি মডেল.

  1. জন্য আমদানি উৎস, নির্বাচন করুন বাহ্যিকভাবে প্রশিক্ষিত মডেল.
  2. Amazon S3 এর অবস্থান লিখুন প্যাচ করা মডেল যেটি আপনি উপরের ধাপে deploy.py চালানো থেকে রক্ষা করেছেন।
  3. জন্য মডেল ফ্রেমওয়ার্কনির্বাচন এমএক্স নেট.
  4. বেছে নিন আমদানি মডেল.

অনুমান ফাংশন তৈরি করুন

অনুমান ফাংশন ভবিষ্যদ্বাণী পেতে মডেলের মধ্যে প্রতিটি ক্যামেরা ফ্রেম ফিড করে এবং অনুমান ফলাফল ব্যবহার করার জন্য যে কোনো কাস্টম ব্যবসায়িক যুক্তি চালায়। তুমি ব্যাবহার কর এডাব্লুএস ল্যাম্বদা একটি ফাংশন তৈরি করতে যা আপনি AWS DeepLens-এ স্থাপন করেন। ফাংশন AWS DeepLens ডিভাইসে স্থানীয়ভাবে অনুমান চালায়।

প্রথমে, আমাদের AWS DeepLens-এ স্থাপন করার জন্য একটি Lambda ফাংশন তৈরি করতে হবে।

  1. ডাউনলোড অনুমান Lambda ফাংশন.
  2. ল্যাম্বডা কনসোলে, নির্বাচন করুন কার্যাবলী.
  3. বেছে নিন ফাংশন তৈরি করুন.
  4. নির্বাচন করা গোড়া থেকে লেখক.
  5. জন্য ফাংশন নাম, একটি নাম লিখুন।
  6. জন্য রানটাইমনির্বাচন পাইথন 3.7.
  7. জন্য একটি মৃত্যুদন্ড কার্যকর করার ভূমিকা চয়ন করুন বা তৈরি করুন৷নির্বাচন একটি বিদ্যমান ভূমিকা ব্যবহার করুন.
  8. বেছে নিন service-role/AWSDeepLensLambdaRole.
  9. বেছে নিন ফাংশন তৈরি করুন.

  1. ফাংশনের বিস্তারিত পৃষ্ঠায়, কার্যপ্রণালী মেনু, নির্বাচন করুন একটি .zip ফাইল আপলোড করুন.

  1. আপলোড করুন অনুমান Lambda আপনি আগে ডাউনলোড করা ফাইল।
  2. বেছে নিন সংরক্ষণ করুন আপনার প্রবেশ করা কোড সংরক্ষণ করতে.
  3. উপরে কার্যপ্রণালী মেনু, নির্বাচন করুন নতুন সংস্করণ প্রকাশ করুন.

ফাংশনটি প্রকাশ করা এটিকে AWS DeepLens কনসোলে উপলব্ধ করে যাতে আপনি এটিকে আপনার কাস্টম প্রকল্পে যুক্ত করতে পারেন।

  1. একটি সংস্করণ নম্বর লিখুন এবং নির্বাচন করুন প্রকাশ করা.

অনুমান ফাংশন বোঝা

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

  • labels.txt - নিউরাল নেটওয়ার্ক (পূর্ণসংখ্যা) থেকে মানুষের পাঠযোগ্য লেবেল (স্ট্রিং) থেকে আউটপুটের একটি ম্যাপিং রয়েছে
  • lambda_function.py - প্রতিটি ক্যামেরা ফ্রেমে ভবিষ্যদ্বাণী তৈরি করতে এবং ফলাফল ফেরত পাঠানোর জন্য কল করা ফাংশনের কোড রয়েছে৷

lambda_function.py-এ, আপনি প্রথমে মডেলটি লোড করুন এবং অপ্টিমাইজ করুন। একটি GPU সহ ক্লাউড ভার্চুয়াল মেশিনের তুলনায়, AWS DeepLens-এর কম কম্পিউটিং শক্তি রয়েছে। AWS DeepLens তার হার্ডওয়্যারে চালানোর জন্য SageMaker-এ প্রশিক্ষিত মডেলটিকে অপ্টিমাইজ করতে Intel OpenVino মডেল অপ্টিমাইজার ব্যবহার করে। নিম্নলিখিত কোড স্থানীয়ভাবে চালানোর জন্য আপনার মডেল অপ্টিমাইজ করে:

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. আপনি নামের আগে তৈরি করা Lambda ফাংশন অনুসন্ধান করুন।
  6. বেছে নিন প্রকল্প তৈরি করুন.
  7. উপরে প্রকল্প পৃষ্ঠায়, আপনি যে প্রকল্পটি স্থাপন করতে চান তা নির্বাচন করুন।
  8. বেছে নেওয়া হয়েছে ডিভাইসে স্থাপন করুন.
  9. জন্য লক্ষ্য ডিভাইস, আপনার ডিভাইস চয়ন করুন.
  10. বেছে নিন পর্যালোচনা.
  11. আপনার সেটিংস পর্যালোচনা করুন এবং চয়ন করুন স্থাপন করুন.

আপনার AWS DeepLens যে নেটওয়ার্কের সাথে সংযুক্ত রয়েছে তার গতির উপর নির্ভর করে স্থাপনাটি সম্পূর্ণ হতে 10 মিনিট পর্যন্ত সময় নিতে পারে। মোতায়েন সম্পূর্ণ হলে, আপনি বার্তা সহ পৃষ্ঠায় একটি সবুজ ব্যানার দেখতে পাবেন, "অভিনন্দন, আপনার মডেল এখন AWS DeepLens-এ স্থানীয়ভাবে চলছে!"

টেক্সট আউটপুট দেখতে, ডিভাইসের বিবরণ পৃষ্ঠায় নিচে স্ক্রোল করুন প্রকল্পের আউটপুট অধ্যায়. বিষয় অনুলিপি করতে বিভাগে নির্দেশাবলী অনুসরণ করুন এবং যান এডাব্লুএস আইওটি কোর বিষয় সাবস্ক্রাইব করতে কনসোল. আপনি নিম্নলিখিত স্ক্রিনশট হিসাবে ফলাফল দেখতে হবে.

ভিডিও স্ট্রিম বা টেক্সট আউটপুট দেখার জন্য ধাপে ধাপে নির্দেশাবলীর জন্য, দেখুন AWS DeepLens থেকে ফলাফল দেখা হচ্ছে.

রিয়েল-ওয়ার্ল্ড ব্যবহারের কেস

এখন যেহেতু আপনি AWS DeepLens-এ চলমান আপনার মডেল থেকে ভবিষ্যদ্বাণী করেছেন, আসুন সেই ভবিষ্যদ্বাণীগুলিকে সতর্কতা এবং অন্তর্দৃষ্টিতে রূপান্তর করি৷ এই ধরনের একটি প্রকল্পের জন্য কিছু সবচেয়ে সাধারণ ব্যবহার অন্তর্ভুক্ত:

  • একটি নির্দিষ্ট দিনে কতজন লোক একটি সীমাবদ্ধ অঞ্চলে প্রবেশ করেছে তা বোঝা যাতে নির্মাণ সাইটগুলি আরও নিরাপত্তা চিহ্নের প্রয়োজন হয় এমন দাগগুলি সনাক্ত করতে পারে৷ এটি ফলাফল সংগ্রহ করে এবং তাদের ব্যবহার করে একটি ড্যাশবোর্ড তৈরি করার মাধ্যমে করা যেতে পারে অ্যামাজন কুইকসাইট. QuickSight ব্যবহার করে একটি ড্যাশবোর্ড তৈরি সম্পর্কে আরও বিশদ বিবরণের জন্য, দেখুন AWS DeepLens এবং GluonCV-এর সাহায্যে বাড়ি থেকে কাজের ভঙ্গি ট্র্যাকার তৈরি করুন.
  • AWS DeepLens থেকে আউটপুট সংগ্রহ করা এবং একটি রাস্পবেরি পাই কনফিগার করা যখন কেউ একটি সীমাবদ্ধ অঞ্চলে হাঁটছে তখন একটি সতর্কতা শোনানো। একটি রাস্পবেরি পাই ডিভাইসের সাথে একটি AWS DeepLens ডিভাইস সংযোগ করার বিষয়ে আরও বিশদ বিবরণের জন্য, দেখুন AWS DeepLens দিয়ে ট্র্যাশ বাছাইকারী তৈরি করা.

উপসংহার

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

এই টিউটোরিয়ালের আরও বিস্তারিত ওয়াকথ্রু এবং অন্যান্য টিউটোরিয়াল, নমুনা এবং AWS DeepLens-এর সাথে প্রকল্পের ধারণার জন্য, দেখুন AWS DeepLens রেসিপি.


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

যশ শাহ তিনি অ্যামাজন এমএল সলিউশন ল্যাবের একজন ডেটা সায়েন্টিস্ট, যেখানে তিনি স্বাস্থ্যসেবা থেকে শুরু করে উৎপাদন এবং খুচরা পর্যন্ত মেশিন লার্নিং ব্যবহারের ক্ষেত্রে কাজ করেন। হিউম্যান ফ্যাক্টরস এবং স্ট্যাটিস্টিকসে তার একটি আনুষ্ঠানিক পটভূমি রয়েছে এবং দক্ষ ইনভেন্টরি ম্যানেজমেন্টের সাথে 3P বিক্রেতাদের গাইড করার জন্য পূর্বে অ্যামাজন SCOT টিমের পণ্য ডিজাইন করার অংশ ছিল।

ফু গুয়েন AWS প্যানোরামার জন্য একজন পণ্য ব্যবস্থাপক। তিনি এমন পণ্য তৈরি করেন যা যেকোন দক্ষতার স্তরের বিকাশকারীদেরকে মেশিন লার্নিং এর সাথে সহজে পরিচিতি দেয়।

সূত্র: https://aws.amazon.com/blogs/machine-learning/protecting-people-through-virtual-boundaries-computer-vision/

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

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

টকডেস্ক এবং এডব্লিউএস: যোগাযোগ কেন্দ্রের ভবিষ্যত এবং আরও ভাল গ্রাহক অভিজ্ঞতার জন্য এআই এবং স্পিচ-টু-টেক্সট মানে কী

উত্স নোড: 748573
সময় স্ট্যাম্প: ফেব্রুয়ারী 23, 2021

পাইটর্চ ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং অ্যাপ্লিকেশনগুলির জন্য এডাব্লুএস ইনফেরেন্টিয়ায় বাইরের বাইরে 12x উচ্চতর থ্রুপুট এবং সর্বনিম্ন বিলম্ব অর্জন করুন

উত্স নোড: 837419
সময় স্ট্যাম্প: 4 পারে, 2021