ইমেজ শ্রেণীবিভাগ টাস্ক গাইড

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

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

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

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

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

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

বৈশিষ্ট্য

  • ইনপুট ইমেজ প্রসেসিং - প্রসেসিং এর মধ্যে রয়েছে ইমেজ রোটেশন, রিসাইজ, নরমালাইজেশন এবং কালার স্পেস কনভার্সন।
  • আগ্রহের অঞ্চল - পুরো চিত্রের পরিবর্তে চিত্রের একটি অঞ্চলে শ্রেণিবিন্যাস সম্পাদন করুন।
  • লেবেল মানচিত্রের লোকেল - প্রদর্শন নামের জন্য ব্যবহৃত ভাষা সেট করুন।
  • স্কোর থ্রেশহোল্ড - পূর্বাভাস স্কোরের উপর ভিত্তি করে ফলাফল ফিল্টার করুন।
  • Top-k শ্রেণীবিভাগ - শ্রেণীবিভাগের ফলাফলের সংখ্যা সীমিত করুন।
  • লেবেল অনুমোদিত তালিকা এবং অস্বীকৃতি - শ্রেণীবদ্ধ বিভাগগুলি নির্দিষ্ট করুন৷
টাস্ক ইনপুট টাস্ক আউটপুট
ইনপুট নিম্নলিখিত ডেটা প্রকারগুলির মধ্যে একটি হতে পারে:
  • স্থিরচিত্রসমূহ
  • ডিকোডেড ভিডিও ফ্রেম
  • লাইভ ভিডিও ফিড
ইমেজ ক্লাসিফায়ার শ্রেণীভুক্ত একটি তালিকা আউটপুট করে:
  • বিভাগ সূচক: মডেল আউটপুট মধ্যে বিভাগের সূচক
  • স্কোর: এই বিভাগের জন্য আত্মবিশ্বাসের স্কোর, সাধারণত [0,1] এ একটি সম্ভাবনা
  • বিভাগের নাম (ঐচ্ছিক): TFLite মডেল মেটাডেটাতে উল্লেখ করা বিভাগের নাম, যদি পাওয়া যায়
  • ক্যাটাগরি ডিসপ্লে নেম (ঐচ্ছিক): TFLite মডেল মেটাডেটাতে উল্লেখ করা ক্যাটাগরির ডিসপ্লে নাম, ডিসপ্লে নাম লোকেল অপশনের মাধ্যমে নির্দিষ্ট করা ভাষায়, যদি পাওয়া যায়

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

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

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

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

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

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

মডেল

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

EfficientNet-Lite0 মডেলটি একটি EfficientNet আর্কিটেকচার ব্যবহার করে এবং 1,000টি ক্লাস, যেমন গাছ, প্রাণী, খাদ্য, যানবাহন, ব্যক্তি ইত্যাদি চিনতে ImageNet ব্যবহার করে প্রশিক্ষিত হয়েছিল৷ সমর্থিত লেবেলের সম্পূর্ণ তালিকা দেখুন৷ EfficientNet-Lite0 একটি int8 এবং float 32 মডেল হিসাবে উপলব্ধ। এই মডেলটি সুপারিশ করা হয়েছে কারণ এটি লেটেন্সি এবং নির্ভুলতার মধ্যে ভারসাম্য বজায় রাখে। অনেক ব্যবহারের ক্ষেত্রে এটি সঠিক এবং লাইটওয়েট উভয়ই যথেষ্ট।

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

EfficientNet-Lite2 মডেল

EfficientNet-Lite2 মডেলটি একটি EfficientNet আর্কিটেকচার ব্যবহার করে এবং 1,000টি ক্লাস যেমন গাছ, প্রাণী, খাদ্য, যানবাহন, ব্যক্তি ইত্যাদি চিনতে ImageNet ব্যবহার করে প্রশিক্ষিত হয়েছিল। সমর্থিত লেবেলের সম্পূর্ণ তালিকা দেখুন। EfficientNet-Lite2 একটি int8 এবং float 32 মডেল হিসাবে উপলব্ধ। এই মডেলটি সাধারণত EfficientNet-Lite0 এর চেয়ে বেশি নির্ভুল, তবে ধীরগতির এবং আরও বেশি মেমরি নিবিড়। এই মডেলটি ব্যবহারের ক্ষেত্রে উপযুক্ত যেখানে গতি বা আকারের চেয়ে নির্ভুলতা একটি উচ্চ অগ্রাধিকার।

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

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

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

ণশড CPU লেটেন্সি GPU লেটেন্সি
EfficientNet-Lite0 (ফ্লোট 32) 23.52 মি 18.90ms
EfficientNet-Lite0 (int8) 10.08ms -
EfficientNet-Lite2 (ফ্লোট 32) 44.17ms 22.20ms
EfficientNet-Lite2 (int8) 19.43 মি -

কাস্টম মডেল

আপনি যদি প্রদত্ত মডেলগুলির সক্ষমতা উন্নত বা পরিবর্তন করতে চান তবে আপনি এই কাজের সাথে একটি কাস্টমাইজড এমএল মডেল ব্যবহার করতে পারেন। আপনি বিদ্যমান মডেলগুলি সংশোধন করতে মডেল মেকার ব্যবহার করতে পারেন বা TensorFlow এর মতো সরঞ্জামগুলি ব্যবহার করে একটি মডেল তৈরি করতে পারেন। MediaPipe-এর সাথে ব্যবহৃত কাস্টম মডেলগুলি অবশ্যই TensorFlow Lite ফরম্যাটে হতে হবে এবং মডেলের অপারেটিং প্যারামিটারগুলি বর্ণনা করে নির্দিষ্ট মেটাডেটা অবশ্যই অন্তর্ভুক্ত করতে হবে। আপনার নিজের তৈরি করার আগে এই কাজের জন্য প্রদত্ত মডেলগুলি সংশোধন করতে মডেল মেকার ব্যবহার করার কথা বিবেচনা করা উচিত।

আপনি যদি আপনার নিজস্ব ডেটাসেট ব্যবহার করে একটি কাস্টম ইমেজ ক্লাসিফায়ার তৈরি করতে আগ্রহী হন, তাহলে ইমেজ ক্লাসিফায়ার কাস্টমাইজেশন টিউটোরিয়াল দিয়ে শুরু করুন।