অবজেক্ট ডিটেকশন, অবজেক্ট ডিটেকশন

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

উদাহরণস্বরূপ, উদাহরণ অ্যাপ্লিকেশনের এই স্ক্রিনশটটি দেখায় যে কীভাবে দুটি বস্তু স্বীকৃত হয়েছে এবং তাদের অবস্থান টীকা করা হয়েছে:

Android উদাহরণের স্ক্রিনশট

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

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

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

মেটাডেটা সহ স্টার্টার মডেল ডাউনলোড করুন

মেটাডেটা এবং সংশ্লিষ্ট ক্ষেত্রগুলি সম্পর্কে আরও তথ্যের জন্য (যেমন: labels.txt ) মডেলগুলি থেকে মেটাডেটা পড়ুন দেখুন

আপনি যদি আপনার নিজের কাজের জন্য একটি কাস্টম সনাক্তকরণ মডেল প্রশিক্ষণ দিতে চান, মডেল কাস্টমাইজেশন দেখুন।

নিম্নলিখিত ব্যবহারের ক্ষেত্রে, আপনার একটি ভিন্ন ধরনের মডেল ব্যবহার করা উচিত:

  • চিত্রটি সম্ভবত কোন একক লেবেলটি উপস্থাপন করে তা অনুমান করা ( চিত্রের শ্রেণিবিন্যাস দেখুন)
  • একটি চিত্রের রচনার ভবিষ্যদ্বাণী করা, উদাহরণস্বরূপ বিষয় বনাম পটভূমি ( বিভাজন দেখুন)

উদাহরণ অ্যাপ্লিকেশন এবং গাইড

আপনি যদি TensorFlow Lite-এ নতুন হয়ে থাকেন এবং Android বা iOS-এর সাথে কাজ করেন, তাহলে আমরা আপনাকে শুরু করতে সাহায্য করতে পারে এমন নিম্নলিখিত উদাহরণের অ্যাপ্লিকেশনগুলি অন্বেষণ করার পরামর্শ দিই।

অ্যান্ড্রয়েড

আপনি কোডের কয়েকটি লাইনে অবজেক্ট সনাক্তকরণ মডেলগুলিকে একীভূত করতে টেনসরফ্লো লাইট টাস্ক লাইব্রেরি থেকে আউট-অফ-বক্স API ব্যবহার করতে পারেন। এছাড়াও আপনি TensorFlow Lite Interpreter Java API ব্যবহার করে আপনার নিজস্ব কাস্টম ইনফারেন্স পাইপলাইন তৈরি করতে পারেন।

নীচের অ্যান্ড্রয়েড উদাহরণটি যথাক্রমে lib_task_api এবং lib_interpreter হিসাবে উভয় পদ্ধতির বাস্তবায়ন প্রদর্শন করে।

অ্যান্ড্রয়েড উদাহরণ দেখুন

iOS

আপনি TensorFlow Lite Interpreter Swift API ব্যবহার করে মডেলটিকে একীভূত করতে পারেন। নীচের iOS উদাহরণ দেখুন।

iOS উদাহরণ দেখুন

মডেলের বিবরণ

এই বিভাগে টেনসরফ্লো অবজেক্ট ডিটেকশন এপিআই থেকে টেনসরফ্লো লাইটে রূপান্তরিত একক-শট ডিটেক্টর মডেলের স্বাক্ষর বর্ণনা করে।

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

যখন একটি ছবি পরবর্তীতে মডেলকে প্রদান করা হয়, তখন এটি সনাক্ত করা বস্তুর একটি তালিকা আউটপুট করবে, একটি বাউন্ডিং বাক্সের অবস্থান যেখানে প্রতিটি বস্তু রয়েছে এবং একটি স্কোর যা শনাক্তকরণ সঠিক ছিল সেই আত্মবিশ্বাসকে নির্দেশ করে।

ইনপুট স্বাক্ষর

মডেল ইনপুট হিসাবে একটি ছবি নেয়.

অনুমান করা যাক প্রত্যাশিত চিত্রটি 300x300 পিক্সেল, প্রতি পিক্সেলে তিনটি চ্যানেল (লাল, নীল এবং সবুজ) সহ। এটিকে 270,000 বাইট মানের (300x300x3) সমতল বাফার হিসাবে মডেলে খাওয়ানো উচিত। যদি মডেলটি পরিমাপ করা হয়, প্রতিটি মান 0 এবং 255 এর মধ্যে একটি মান উপস্থাপন করে একটি একক বাইট হওয়া উচিত।

অ্যান্ড্রয়েডে এই প্রি-প্রসেসিং কীভাবে করা যায় তা বুঝতে আপনি আমাদের উদাহরণ অ্যাপ কোডটি দেখে নিতে পারেন।

আউটপুট স্বাক্ষর

মডেলটি 0-4 সূচকে ম্যাপ করা চারটি অ্যারে আউটপুট করে। অ্যারে 0, 1, এবং 2 N সনাক্ত করা বস্তুগুলিকে বর্ণনা করে, প্রতিটি অ্যারেতে একটি করে উপাদান প্রতিটি বস্তুর সাথে সম্পর্কিত।

সূচক নাম বর্ণনা
0 অবস্থানসমূহ 0 এবং 1 এর মধ্যে [N][4] ফ্লোটিং পয়েন্ট মানের বহুমাত্রিক অ্যারে, অভ্যন্তরীণ অ্যারেগুলি আকারে আবদ্ধ বাক্সগুলিকে প্রতিনিধিত্ব করে [উপরে, বাম, নীচে, ডানে]
1 ক্লাস N পূর্ণসংখ্যার অ্যারে (ফ্লোটিং পয়েন্ট মান হিসাবে আউটপুট) প্রতিটি লেবেল ফাইল থেকে একটি ক্লাস লেবেলের সূচক নির্দেশ করে
2 স্কোর 0 এবং 1 এর মধ্যে N ফ্লোটিং পয়েন্ট মানের অ্যারে একটি ক্লাস সনাক্ত করা হয়েছে এমন সম্ভাবনার প্রতিনিধিত্ব করে
3 সনাক্তকরণের সংখ্যা N এর পূর্ণসংখ্যার মান

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

ক্লাস স্কোর অবস্থান
আপেল 0.92 [১৮, ২১, ৫৭, ৬৩]
কলা 0.88 [100, 30, 180, 150]
স্ট্রবেরি 0.87 [৭, ৮২, ৮৯, ১৬৩]
কলা 0.23 [৪২, ৬৬, ৫৭, ৮৩]
আপেল 0.11 [৬, ৪২, ৩১, ৫৮]

আত্মবিশ্বাসের স্কোর

এই ফলাফলগুলি ব্যাখ্যা করতে, আমরা প্রতিটি সনাক্ত করা বস্তুর স্কোর এবং অবস্থান দেখতে পারি। স্কোর হল 0 এবং 1 এর মধ্যে একটি সংখ্যা যা আত্মবিশ্বাসের ইঙ্গিত দেয় যে বস্তুটি সত্যই সনাক্ত করা হয়েছে। সংখ্যাটি 1 এর কাছাকাছি, মডেলটি তত বেশি আত্মবিশ্বাসী।

আপনার আবেদনের উপর নির্ভর করে, আপনি একটি কাট-অফ থ্রেশহোল্ড নির্ধারণ করতে পারেন যার নীচে আপনি সনাক্তকরণের ফলাফলগুলি বাতিল করবেন৷ বর্তমান উদাহরণের জন্য, একটি সংবেদনশীল কাট-অফ হল 0.5 এর স্কোর (অর্থাৎ সনাক্তকরণ বৈধ হওয়ার 50% সম্ভাবনা)। সেই ক্ষেত্রে, অ্যারের শেষ দুটি অবজেক্ট উপেক্ষা করা হবে কারণ সেই আত্মবিশ্বাসের স্কোর 0.5 এর নিচে:

ক্লাস স্কোর অবস্থান
আপেল 0.92 [১৮, ২১, ৫৭, ৬৩]
কলা 0.88 [100, 30, 180, 150]
স্ট্রবেরি 0.87 [৭, ৮২, ৮৯, ১৬৩]
কলা 0.23 [৪২, ৬৬, ৫৭, ৮৩]
আপেল 0.11 [৬, ৪২, ৩১, ৫৮]

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

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

Android উদাহরণের স্ক্রিনশট একটি মিথ্যা ইতিবাচক দেখাচ্ছে

অবস্থান

প্রতিটি শনাক্ত করা বস্তুর জন্য, মডেলটি চারটি সংখ্যার একটি অ্যারে প্রদান করবে যা একটি বাউন্ডিং আয়তক্ষেত্রের প্রতিনিধিত্ব করে যা তার অবস্থানকে ঘিরে থাকে। প্রদত্ত স্টার্টার মডেলের জন্য, নম্বরগুলি নিম্নরূপ অর্ডার করা হয়েছে:

[ শীর্ষ, বাম, নীচে, অধিকার ]

উপরের মানটি চিত্রের শীর্ষ থেকে আয়তক্ষেত্রের উপরের প্রান্তের দূরত্বকে পিক্সেলে উপস্থাপন করে। বাম মান ইনপুট চিত্রের বাম থেকে বাম প্রান্তের দূরত্ব উপস্থাপন করে। অন্যান্য মান একই পদ্ধতিতে নীচের এবং ডান প্রান্ত প্রতিনিধিত্ব করে।

কর্মক্ষমতা বেঞ্চমার্ক

আমাদের স্টার্টার মডেলের জন্য পারফরম্যান্স বেঞ্চমার্ক নম্বর এখানে বর্ণিত টুল দিয়ে তৈরি করা হয়েছে।

ণশড মডেলের আকার যন্ত্র জিপিইউ সিপিইউ
COCO SSD MobileNet v1 27 এমবি Pixel 3 (Android 10) 22ms 46ms*
Pixel 4 (Android 10) 20ms 29ms*
iPhone XS (iOS 12.4.1) 7.6ms 11ms**

* 4টি থ্রেড ব্যবহার করা হয়েছে।

** সেরা পারফরম্যান্স ফলাফলের জন্য আইফোনে 2টি থ্রেড ব্যবহার করা হয়েছে।

মডেল কাস্টমাইজেশন

প্রাক-প্রশিক্ষিত মডেল

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

অধিকাংশ ডাউনলোড জিপ একটি model.tflite ফাইল ধারণ করে। যদি এটি না থাকে তবে এই নির্দেশাবলী ব্যবহার করে একটি টেনসরফ্লো লাইট ফ্ল্যাটবাফার তৈরি করা যেতে পারে। TF2 অবজেক্ট ডিটেকশন চিড়িয়াখানার SSD মডেলগুলিকে এখানে নির্দেশাবলী ব্যবহার করে টেনসরফ্লো লাইটে রূপান্তর করা যেতে পারে। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে শনাক্তকরণ মডেলগুলি সরাসরি টেনসরফ্লো লাইট কনভার্টার ব্যবহার করে রূপান্তরিত করা যায় না, যেহেতু তাদের একটি মোবাইল-বান্ধব উত্স মডেল তৈরি করার জন্য একটি মধ্যবর্তী পদক্ষেপের প্রয়োজন হয়৷ উপরে লিঙ্ক করা স্ক্রিপ্টগুলি এই পদক্ষেপটি সম্পাদন করে।

TF1 এবং TF2 রপ্তানিকারী স্ক্রিপ্ট উভয়েরই পরামিতি রয়েছে যা বৃহত্তর সংখ্যক আউটপুট অবজেক্ট বা ধীর, আরও সঠিক পোস্ট প্রক্রিয়াকরণ সক্ষম করতে পারে। সমর্থিত আর্গুমেন্টের একটি সম্পূর্ণ তালিকা দেখতে স্ক্রিপ্টগুলির সাথে --help ব্যবহার করুন।

বর্তমানে, অন-ডিভাইস অনুমান শুধুমাত্র SSD মডেলের সাথে অপ্টিমাইজ করা হয়। CentreNet এবং EfficientDet এর মতো অন্যান্য আর্কিটেকচারের জন্য আরও ভাল সমর্থন তদন্ত করা হচ্ছে।

কাস্টমাইজ করার জন্য একটি মডেল নির্বাচন কিভাবে?

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

আপনি মডেলগুলি মূল্যায়ন করতে এবং উপলব্ধ সবচেয়ে কার্যকর বিকল্প চয়ন করতে আমাদের বেঞ্চমার্ক টুল ব্যবহার করতে পারেন।

কাস্টম ডেটাতে ফাইন-টিউনিং মডেল

আমরা যে প্রাক-প্রশিক্ষিত মডেলগুলি সরবরাহ করি সেগুলিকে 90টি শ্রেণীর বস্তু সনাক্ত করতে প্রশিক্ষিত করা হয়। ক্লাসের সম্পূর্ণ তালিকার জন্য, মডেল মেটাডেটাতে লেবেল ফাইলটি দেখুন।

আপনি মূল সেটে না থাকা ক্লাসগুলি সনাক্ত করার জন্য একটি মডেলকে পুনরায় প্রশিক্ষণ দেওয়ার জন্য ট্রান্সফার লার্নিং নামে পরিচিত একটি কৌশল ব্যবহার করতে পারেন। উদাহরণস্বরূপ, মূল প্রশিক্ষণের ডেটাতে শুধুমাত্র একটি সবজি থাকা সত্ত্বেও আপনি একাধিক ধরনের সবজি সনাক্ত করতে মডেলটিকে পুনরায় প্রশিক্ষণ দিতে পারেন। এটি করার জন্য, আপনি যে নতুন লেবেলগুলিকে প্রশিক্ষণ দিতে চান তার প্রতিটির জন্য আপনার প্রশিক্ষণ চিত্রগুলির একটি সেট প্রয়োজন৷ প্রস্তাবিত উপায় হল TensorFlow Lite Model Maker লাইব্রেরি ব্যবহার করা যা কোডের কয়েকটি লাইন সহ কাস্টম ডেটাসেট ব্যবহার করে একটি TensorFlow Lite মডেল প্রশিক্ষণের প্রক্রিয়াকে সহজ করে। এটি প্রয়োজনীয় প্রশিক্ষণের ডেটা এবং সময় কমাতে ট্রান্সফার লার্নিং ব্যবহার করে। এছাড়াও আপনি কয়েকটি উদাহরণ সহ একটি প্রাক-প্রশিক্ষিত মডেলকে ফাইন-টিউন করার উদাহরণ হিসাবে Few-shot detection Colab থেকে শিখতে পারেন।

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