অবজেক্ট ডিটেকশন টাস্ক গাইড

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

এটা চেষ্টা করুন!

এবার শুরু করা যাক

আপনি যে প্ল্যাটফর্মে কাজ করছেন তার জন্য এই বাস্তবায়ন নির্দেশিকাগুলির একটি অনুসরণ করে এই কাজটি ব্যবহার করা শুরু করুন:

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

টাস্কের বিবরণ

এই বিভাগে এই কাজের ক্ষমতা, ইনপুট এবং আউটপুট বর্ণনা করে।

বৈশিষ্ট্য

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

কনফিগারেশন অপশন

এই কাজের নিম্নলিখিত কনফিগারেশন বিকল্প আছে:

বিকল্পের নাম বর্ণনা মান পরিসীমা ডিফল্ট মান
running_mode টাস্কের জন্য চলমান মোড সেট করে। তিনটি মোড আছে:

IMAGE: একক ইমেজ ইনপুট জন্য মোড.

ভিডিও: একটি ভিডিওর ডিকোড করা ফ্রেমের মোড।

লাইভ_স্ট্রিম: ইনপুট ডেটার লাইভস্ট্রিমের মোড, যেমন ক্যামেরা থেকে। এই মোডে, ফলাফল শ্রোতাকে অ্যাসিঙ্ক্রোনাসভাবে ফলাফল পেতে একটি শ্রোতা সেট আপ করতে কল করতে হবে।
{ IMAGE, VIDEO, LIVE_STREAM } IMAGE
display_names টাস্কের মডেলের মেটাডেটাতে প্রদত্ত প্রদর্শন নামের জন্য ব্যবহার করার জন্য লেবেলের ভাষা সেট করে, যদি উপলব্ধ থাকে। ইংরেজির জন্য ডিফল্ট হল en । আপনি TensorFlow Lite Metadata Writer API ব্যবহার করে একটি কাস্টম মডেলের মেটাডেটাতে স্থানীয় লেবেল যোগ করতে পারেন স্থানীয় কোড en
max_results ফিরতে সর্বোচ্চ স্কোর করা শনাক্তকরণ ফলাফলের ঐচ্ছিক সর্বোচ্চ সংখ্যা সেট করে। যেকোনো ইতিবাচক সংখ্যা -1 (সমস্ত ফলাফল ফেরত দেওয়া হয়)
score_threshold ভবিষ্যদ্বাণী স্কোর থ্রেশহোল্ড সেট করে যা মডেল মেটাডেটাতে প্রদত্ত একটিকে ওভাররাইড করে (যদি থাকে)। এই মানের নিচের ফলাফল প্রত্যাখ্যান করা হয়। কোন ভাসা সেট না
category_allowlist অনুমোদিত বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। যদি খালি না থাকে, শনাক্তকরণ ফলাফল যার বিভাগের নাম এই সেটে নেই তা ফিল্টার আউট করা হবে। সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি category_denylist সাথে পারস্পরিক একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট না
category_denylist অনুমোদিত নয় এমন বিভাগের নামের ঐচ্ছিক তালিকা সেট করে। খালি না থাকলে, এই সেটে যার বিভাগের নাম আছে তা সনাক্তকরণের ফলাফলগুলি ফিল্টার করা হবে৷ সদৃশ বা অজানা বিভাগের নাম উপেক্ষা করা হয়। এই বিকল্পটি category_allowlist সাথে পারস্পরিকভাবে একচেটিয়া এবং একটি ত্রুটিতে উভয় ফলাফল ব্যবহার করে। কোনো স্ট্রিং সেট না

মডেল

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

EfficientDet-Lite0 মডেলটি একটি 320x320 ইনপুট আকার এবং BiFPN বৈশিষ্ট্য নেটওয়ার্ক সহ একটি EfficientNet-Lite0 ব্যাকবোন ব্যবহার করে। মডেলটিকে COCO ডেটাসেট দিয়ে প্রশিক্ষিত করা হয়েছিল, একটি বড় মাপের অবজেক্ট ডিটেকশন ডেটাসেট যাতে 1.5 মিলিয়ন অবজেক্ট ইনস্ট্যান্স এবং 80টি অবজেক্ট লেবেল রয়েছে। সমর্থিত লেবেলের সম্পূর্ণ তালিকা দেখুন। EfficientDet-Lite0 একটি int8, float16, বা float32 হিসাবে উপলব্ধ। এই মডেলটি সুপারিশ করা হয়েছে কারণ এটি লেটেন্সি এবং নির্ভুলতার মধ্যে ভারসাম্য বজায় রাখে। অনেক ব্যবহারের ক্ষেত্রে এটি সঠিক এবং লাইটওয়েট উভয়ই যথেষ্ট।

ণশড ইনপুট আকৃতি কোয়ান্টাইজেশন টাইপ সংস্করণ
EfficientDet-Lite0 (int8) 320 x 320 int8 সর্বশেষ
EfficientDet-Lite0 (ফ্লোট 16) 320 x 320 ভাসা 16 সর্বশেষ
EfficientDet-Lite0 (ফ্লোট 32) 320 x 320 কোনটিই নয় (float32) সর্বশেষ

EfficientDet-Lite2 মডেল

EfficientDet-Lite2 মডেলটি একটি 448x448 ইনপুট আকার এবং BiFPN বৈশিষ্ট্য নেটওয়ার্ক সহ একটি EfficientNet-Lite2 ব্যাকবোন ব্যবহার করে। মডেলটিকে COCO ডেটাসেট দিয়ে প্রশিক্ষিত করা হয়েছিল, একটি বড় মাপের অবজেক্ট ডিটেকশন ডেটাসেট যাতে 1.5 মিলিয়ন অবজেক্ট ইনস্ট্যান্স এবং 80টি অবজেক্ট লেবেল রয়েছে। সমর্থিত লেবেলের সম্পূর্ণ তালিকা দেখুন। EfficientDet-Lite2 একটি int8, float16, বা float32 মডেল হিসাবে উপলব্ধ। এই মডেলটি সাধারণত EfficientDet-Lite0 এর চেয়ে বেশি নির্ভুল, তবে ধীরগতির এবং আরও মেমরি নিবিড়। এই মডেলটি ব্যবহারের ক্ষেত্রে উপযুক্ত যেখানে গতি এবং আকারের ক্ষেত্রে নির্ভুলতা একটি বড় অগ্রাধিকার।

ণশড ইনপুট আকৃতি কোয়ান্টাইজেশন টাইপ সংস্করণ
EfficientDet-Lite2 (int8) ৪৪৮ x ৪৪৮ int8 সর্বশেষ
EfficientDet-Lite2 (ফ্লোট 16) ৪৪৮ x ৪৪৮ ভাসা 16 সর্বশেষ
EfficientDet-Lite2 (ফ্লোট 32) ৪৪৮ x ৪৪৮ কোনটিই নয় (float32) সর্বশেষ

SSD MobileNetV2 মডেল

SSD MobileNetV2 মডেলটি একটি 256x256 ইনপুট আকার এবং SSD বৈশিষ্ট্য নেটওয়ার্ক সহ একটি MobileNetV2 ব্যাকবোন ব্যবহার করে। মডেলটিকে COCO ডেটাসেট দিয়ে প্রশিক্ষিত করা হয়েছিল, একটি বড় মাপের অবজেক্ট ডিটেকশন ডেটাসেট যাতে 1.5 মিলিয়ন অবজেক্ট ইনস্ট্যান্স এবং 80টি অবজেক্ট লেবেল রয়েছে। সমর্থিত লেবেলের সম্পূর্ণ তালিকা দেখুন। SSD MobileNetV2 একটি int8 এবং float 32 মডেল হিসাবে উপলব্ধ। এই মডেলটি EfficientDet-Lite0 এর চেয়ে দ্রুত এবং হালকা, তবে এটি সাধারণত কম সঠিক। এই মডেলটি ব্যবহারের ক্ষেত্রে উপযুক্ত যেগুলির জন্য একটি দ্রুত, হালকা ওজনের মডেল প্রয়োজন যা কিছু নির্ভুলতাকে বলিদান করে৷

ণশড ইনপুট আকৃতি কোয়ান্টাইজেশন টাইপ সংস্করণ
SSDMmobileNet-V2 (int8) 256 x 256 int8 সর্বশেষ
SSDMmobileNet-V2 (ফ্লোট 32) 256 x 256 কোনটিই নয় (float32) সর্বশেষ

মডেলের প্রয়োজনীয়তা এবং মেটাডেটা

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

নকশা প্রয়োজনীয়তা

ইনপুট আকৃতি বর্ণনা
ইনপুট ইমেজ আকৃতির ফ্লোট 32 টেনসর[1, উচ্চতা, প্রস্থ, 3] স্বাভাবিক ইনপুট চিত্র।
আউটপুট আকৃতি বর্ণনা
detection_boxes আকৃতির ফ্লোট 32 টেনসর [1, num_boxes, 4] প্রতিটি সনাক্ত করা বস্তুর বক্স অবস্থান।
detection_classes আকৃতির ফ্লোট 32 টেনসর [1, num_boxes] প্রতিটি সনাক্ত করা বস্তুর জন্য শ্রেণীর নামের সূচক।
detection_scores আকৃতির float32 টেনসর [1, num_boxes] প্রতিটি শনাক্ত বস্তুর জন্য পূর্বাভাস স্কোর.
num_boxes 1 আকারের ফ্লোট 32 টেনসর শনাক্ত করা বাক্সের সংখ্যা।

মেটাডেটা প্রয়োজনীয়তা

প্যারামিটার বর্ণনা বর্ণনা
input_norm_mean ইনপুট টেনসর স্বাভাবিককরণে ব্যবহৃত গড় মান। স্বাভাবিক ইনপুট চিত্র।
input_norm_std ইনপুট টেনসর স্বাভাবিককরণে ব্যবহৃত ক্ষেত্র আদর্শ। প্রতিটি সনাক্ত করা বস্তুর বক্স অবস্থান।
label_file_paths ক্যাটাগরি টেনসর লেবেল ফাইলের পাথ। মডেলের কোনো লেবেল ফাইল না থাকলে, একটি খালি তালিকা পাস করুন। প্রতিটি সনাক্ত করা বস্তুর জন্য শ্রেণীর নামের সূচক।
score_calibration_md শ্রেণিবিন্যাস টেনসরে স্কোর ক্রমাঙ্কন অপারেশন সম্পর্কিত তথ্য। মডেলটি স্কোর ব্যবহার না করলে এই প্যারামিটারের প্রয়োজন হয় না
ক্রমাঙ্কন
প্রতিটি শনাক্ত বস্তুর জন্য পূর্বাভাস স্কোর.
num_boxes 1 আকারের ফ্লোট 32 টেনসর শনাক্ত করা বাক্সের সংখ্যা।

টাস্ক বেঞ্চমার্ক

উপরোক্ত প্রাক-প্রশিক্ষিত মডেলগুলির জন্য এখানে টাস্ক বেঞ্চমার্ক রয়েছে। CPU/GPU ব্যবহার করে Pixel 6-এর গড় বিলম্বিততার ফলাফল হল লেটেন্সি।

ণশড CPU লেটেন্সি GPU লেটেন্সি
EfficientDet-Lite0 float32 মডেল 61.30ms 27.83ms
EfficientDet-Lite0 float16 মডেল 53.97ms 27.97 মি
EfficientDet-Lite0 int8 মডেল 29.31 মি -
EfficientDet-Lite2 float32 মডেল 197.98ms 41.15ms
EfficientDet-Lite2 float16 মডেল 198.77 মি 47.31ms
EfficientDet-Lite2 int8 মডেল 70.91 মি -
SSD MobileNetV2 float32 মডেল 36.30ms 24.01ms
SSD MobileNetV2 float16 মডেল 37.35 মি 28.16 মি