অঙ্গভঙ্গি স্বীকৃতি টাস্ক গাইড

MediaPipe জেসচার রিকগনিজার টাস্ক আপনাকে রিয়েল টাইমে হাতের অঙ্গভঙ্গি চিনতে দেয় এবং সনাক্ত করা হাতের ল্যান্ডমার্ক সহ স্বীকৃত হাতের অঙ্গভঙ্গি ফলাফল প্রদান করে। আপনি একজন ব্যবহারকারীর কাছ থেকে নির্দিষ্ট হাতের অঙ্গভঙ্গি সনাক্ত করতে এই কাজটি ব্যবহার করতে পারেন এবং সেই অঙ্গভঙ্গির সাথে সামঞ্জস্যপূর্ণ অ্যাপ্লিকেশন বৈশিষ্ট্যগুলিকে আহ্বান করতে পারেন৷

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

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

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

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

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

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

বৈশিষ্ট্য

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

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

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

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

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

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

লাইভ_স্ট্রিম: ইনপুট ডেটার লাইভস্ট্রিমের মোড, যেমন ক্যামেরা থেকে। এই মোডে, ফলাফল শ্রোতাকে অ্যাসিঙ্ক্রোনাসভাবে ফলাফল পেতে একটি শ্রোতা সেট আপ করতে কল করতে হবে।
{ IMAGE, VIDEO, LIVE_STREAM } IMAGE
num_hands GestureRecognizer দ্বারা সর্বাধিক সংখ্যক হাত সনাক্ত করা যেতে পারে। Any integer > 0 1
min_hand_detection_confidence হাত শনাক্তকরণের ন্যূনতম আত্মবিশ্বাসের স্কোর পাম সনাক্তকরণ মডেলে সফল বলে বিবেচিত হবে। 0.0 - 1.0 0.5
min_hand_presence_confidence হাতের ল্যান্ডমার্ক সনাক্তকরণ মডেলে হাতের উপস্থিতি স্কোরের সর্বনিম্ন আত্মবিশ্বাসের স্কোর। জেসচার রিকগনিজারের ভিডিও মোড এবং লাইভ স্ট্রিম মোডে, হ্যান্ড ল্যান্ডমার্ক মডেল থেকে হাতের উপস্থিতি আত্মবিশ্বাসী স্কোর এই থ্রেশহোল্ডের নীচে থাকলে, এটি পাম সনাক্তকরণ মডেলটিকে ট্রিগার করে। অন্যথায়, একটি লাইটওয়েট হ্যান্ড ট্র্যাকিং অ্যালগরিদম পরবর্তী ল্যান্ডমার্ক সনাক্তকরণের জন্য হাত(গুলি) এর অবস্থান নির্ধারণ করতে ব্যবহৃত হয়। 0.0 - 1.0 0.5
min_tracking_confidence হ্যান্ড ট্র্যাকিং সফল বলে বিবেচিত হওয়ার জন্য সর্বনিম্ন আত্মবিশ্বাসের স্কোর। এটি বর্তমান ফ্রেমের হাত এবং শেষ ফ্রেমের মধ্যে বাউন্ডিং বক্স IoU থ্রেশহোল্ড৷ জেসচার রিকগনিজারের ভিডিও মোড এবং স্ট্রীম মোডে, ট্র্যাকিং ব্যর্থ হলে, জেসচার রেকগনিজার হাত সনাক্তকরণ ট্রিগার করে। অন্যথায়, হাত সনাক্তকরণ এড়িয়ে গেছে। 0.0 - 1.0 0.5
canned_gestures_classifier_options ক্যানড অঙ্গভঙ্গি ক্লাসিফায়ার আচরণ কনফিগার করার জন্য বিকল্প। ক্যানড অঙ্গভঙ্গিগুলি হল ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • প্রদর্শন নামের লোকেল: TFLite মডেল মেটাডেটার মাধ্যমে নির্দিষ্ট প্রদর্শন নামের জন্য ব্যবহার করা লোকেল, যদি থাকে।
  • সর্বাধিক ফলাফল: সর্বোচ্চ স্কোর শ্রেণীবিভাগ ফলাফল ফেরত দিতে হবে। <0 হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে।
  • স্কোর থ্রেশহোল্ড: যে স্কোরের নিচে ফলাফল প্রত্যাখ্যান করা হয়েছে। 0 তে সেট করা হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে।
  • ক্যাটাগরি মঞ্জুরি তালিকা: বিভাগের নামের মঞ্জুরি তালিকা। যদি খালি না থাকে, শ্রেণীবিভাগ ফলাফল যাদের এই সেটে নেই সেগুলি ফিল্টার আউট করা হবে৷ ডিনালিস্টের সাথে পারস্পরিক একচেটিয়া।
  • বিভাগ অস্বীকারকারী: বিভাগের নাম অস্বীকারকারী। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যার শ্রেণী এই সেটে রয়েছে তা ফিল্টার আউট করা হবে। অনুমোদিত তালিকার সাথে পারস্পরিকভাবে একচেটিয়া।
    • প্রদর্শন নামের লোকেল: any string
    • সর্বোচ্চ ফলাফল: any integer
    • স্কোর থ্রেশহোল্ড: 0.0-1.0
    • শ্রেণী অনুমোদিত তালিকা: vector of strings
    • ক্যাটাগরি ডিনালিস্ট: vector of strings
    • প্রদর্শন নামের লোকেল: "en"
    • সর্বোচ্চ ফলাফল: -1
    • স্কোর থ্রেশহোল্ড: 0
    • বিভাগ অনুমোদিত তালিকা: খালি
    • বিভাগ অস্বীকারকারী: খালি
    custom_gestures_classifier_options কাস্টম অঙ্গভঙ্গি ক্লাসিফায়ার আচরণ কনফিগার করার জন্য বিকল্প।
  • প্রদর্শন নামের লোকেল: TFLite মডেল মেটাডেটার মাধ্যমে নির্দিষ্ট প্রদর্শন নামের জন্য ব্যবহার করা লোকেল, যদি থাকে।
  • সর্বাধিক ফলাফল: সর্বোচ্চ স্কোর শ্রেণীবিভাগ ফলাফল ফেরত দিতে হবে। <0 হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে।
  • স্কোর থ্রেশহোল্ড: যে স্কোরের নিচে ফলাফল প্রত্যাখ্যান করা হয়েছে। 0 তে সেট করা হলে, সমস্ত উপলব্ধ ফলাফল ফেরত দেওয়া হবে।
  • ক্যাটাগরি মঞ্জুরি তালিকা: বিভাগের নামের মঞ্জুরি তালিকা। যদি খালি না থাকে, শ্রেণীবিভাগ ফলাফল যাদের এই সেটে নেই সেগুলি ফিল্টার আউট করা হবে৷ ডিনালিস্টের সাথে পারস্পরিক একচেটিয়া।
  • বিভাগ অস্বীকারকারী: বিভাগের নাম অস্বীকারকারী। যদি খালি না থাকে, শ্রেণীবিভাগের ফলাফল যার শ্রেণী এই সেটে রয়েছে তা ফিল্টার আউট করা হবে। অনুমোদিত তালিকার সাথে পারস্পরিকভাবে একচেটিয়া।
    • প্রদর্শন নামের লোকেল: any string
    • সর্বোচ্চ ফলাফল: any integer
    • স্কোর থ্রেশহোল্ড: 0.0-1.0
    • শ্রেণী অনুমোদিত তালিকা: vector of strings
    • ক্যাটাগরি ডিনালিস্ট: vector of strings
    • প্রদর্শন নামের লোকেল: "en"
    • সর্বোচ্চ ফলাফল: -1
    • স্কোর থ্রেশহোল্ড: 0
    • বিভাগ অনুমোদিত তালিকা: খালি
    • বিভাগ অস্বীকারকারী: খালি
    result_callback ইঙ্গিত শনাক্তকারী লাইভ স্ট্রীম মোডে থাকলে ফলাফল শ্রোতাকে অ্যাসিঙ্ক্রোনাসভাবে শ্রেণীবিভাগের ফলাফল পেতে সেট করে। চলমান মোড LIVE_STREAM এ সেট করা থাকলেই কেবল ব্যবহার করা যাবে৷ ResultListener N/A N/A

    মডেল

    জেসচার রিকগনিজার দুটি প্রাক-প্যাকেজ করা মডেল বান্ডিল সহ একটি মডেল বান্ডিল ব্যবহার করে: একটি হ্যান্ড ল্যান্ডমার্ক মডেল বান্ডিল এবং একটি অঙ্গভঙ্গি শ্রেণিবিন্যাস মডেল বান্ডেল। ল্যান্ডমার্ক মডেল হাত এবং হাতের জ্যামিতির উপস্থিতি শনাক্ত করে এবং অঙ্গভঙ্গি শনাক্তকরণ মডেল হাতের জ্যামিতির উপর ভিত্তি করে অঙ্গভঙ্গি সনাক্ত করে।

    ণশড ইনপুট আকৃতি কোয়ান্টাইজেশন টাইপ মডেল কার্ড সংস্করণ
    হ্যান্ডজেসচার ক্লাসিফায়ার 192 x 192, 224 x 224 ভাসা 16 তথ্য সর্বশেষ

    এই কাজটি মডেল মেকার ব্যবহার করে মডেল বান্ডিলের পরিবর্তনকেও সমর্থন করে। এই কাজের জন্য মডেলগুলি কাস্টমাইজ করতে মডেল মেকার ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, অঙ্গভঙ্গি শনাক্তকারীর জন্য মডেলগুলি কাস্টমাইজ করুন পৃষ্ঠাটি দেখুন৷

    হাত ল্যান্ডমার্ক মডেল বান্ডিল

    হ্যান্ড ল্যান্ডমার্ক মডেল বান্ডেল সনাক্ত করা হাত অঞ্চলের মধ্যে 21টি হ্যান্ড-নাকল স্থানাঙ্কের মূল পয়েন্ট স্থানীয়করণ সনাক্ত করে। মডেলটিকে প্রায় 30K বাস্তব-বিশ্বের চিত্রের পাশাপাশি বিভিন্ন পটভূমিতে আরোপিত বেশ কয়েকটি রেন্ডার করা সিন্থেটিক হ্যান্ড মডেলের প্রশিক্ষণ দেওয়া হয়েছিল। নীচে 21টি ল্যান্ডমার্কের সংজ্ঞা দেখুন:

    হ্যান্ড ল্যান্ডমার্কার মডেল বান্ডিলে পাম সনাক্তকরণ মডেল এবং হ্যান্ড ল্যান্ডমার্ক সনাক্তকরণ মডেল রয়েছে। পাম সনাক্তকরণ মডেল পুরো ইনপুট চিত্র থেকে হাতের অঞ্চলকে স্থানীয়করণ করে এবং হাতের ল্যান্ডমার্ক সনাক্তকরণ মডেলটি পাম সনাক্তকরণ মডেল দ্বারা সংজ্ঞায়িত ক্রপ করা হাতের চিত্রের ল্যান্ডমার্কগুলি খুঁজে পায়।

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

    অঙ্গভঙ্গি শ্রেণীবিভাগ মডেল বান্ডিল

    অঙ্গভঙ্গি শ্রেণিবিন্যাস মডেল বান্ডেল এই সাধারণ হাতের অঙ্গভঙ্গিগুলি চিনতে পারে:

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    যদি মডেলটি হাত শনাক্ত করে কিন্তু একটি অঙ্গভঙ্গি চিনতে না পারে, তাহলে অঙ্গভঙ্গি শনাক্তকারী "কোনও নয়" এর ফলাফল প্রদান করে। যদি মডেলটি হাত সনাক্ত না করে, তাহলে অঙ্গভঙ্গি শনাক্তকারী খালি ফিরে আসে।

    অঙ্গভঙ্গি শ্রেণীবিভাগ মডেল বান্ডলে একটি অঙ্গভঙ্গি এম্বেডিং মডেলের সাথে একটি অঙ্গভঙ্গি শ্রেণীবিভাগ মডেল অনুসরণ করে দুটি ধাপের নিউরাল নেটওয়ার্ক পাইপলাইন রয়েছে। অঙ্গভঙ্গি শ্রেণিবিন্যাস মডেল কার্ডে আরও বিশদ দেখুন।

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

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

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

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

    ণশড CPU লেটেন্সি GPU লেটেন্সি
    অঙ্গভঙ্গি সনাক্তকারী 16.76ms 20.87ms

    কাস্টম মডেল

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

    এই কাজের জন্য একটি মডেল কাস্টমাইজ করার বিষয়ে আরও তথ্যের জন্য, অঙ্গভঙ্গি সনাক্তকারীর জন্য মডেলগুলি কাস্টমাইজ করুন দেখুন।