ছবির শ্রেণীবিভাগ

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

নিম্নলিখিত চিত্রটি অ্যান্ড্রয়েডে চিত্র শ্রেণিবিন্যাসের মডেলের আউটপুট দেখায়।

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

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

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

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

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

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

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

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

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

মডেলের বিবরণ

কিভাবে এটা কাজ করে

প্রশিক্ষণের সময়, একটি চিত্র শ্রেণিবিন্যাসের মডেলকে ছবি এবং তাদের সংশ্লিষ্ট লেবেলগুলি খাওয়ানো হয়। প্রতিটি লেবেল একটি স্বতন্ত্র ধারণা, বা শ্রেণীর নাম, যা মডেল চিনতে শিখবে।

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

আপনি যখন পরবর্তীতে মডেলটিতে ইনপুট হিসাবে একটি নতুন চিত্র প্রদান করেন, তখন এটি প্রতিটি ধরণের প্রাণীর প্রতিনিধিত্ব করে চিত্রটির সম্ভাব্যতা আউটপুট করবে যার উপর এটি প্রশিক্ষিত হয়েছিল। একটি উদাহরণ আউটপুট নিম্নরূপ হতে পারে:

প্রাণীর ধরন সম্ভাবনা
খরগোশ 0.07
হ্যামস্টার 0.02
কুকুর 0.91

আউটপুটের প্রতিটি সংখ্যা প্রশিক্ষণের ডেটার একটি লেবেলের সাথে মিলে যায়। মডেলটিকে যে তিনটি লেবেলে প্রশিক্ষিত করা হয়েছিল তার সাথে আউটপুট যুক্ত করে, আপনি দেখতে পারেন যে মডেলটি একটি উচ্চ সম্ভাবনার ভবিষ্যদ্বাণী করেছে যে চিত্রটি একটি কুকুরের প্রতিনিধিত্ব করে৷

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

অস্পষ্ট ফলাফল

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

উদাহরণস্বরূপ, নিম্নলিখিত একটি অস্পষ্ট ফলাফল নির্দেশ করতে পারে:

লেবেল সম্ভাবনা
খরগোশ 0.31
হ্যামস্টার 0.35
কুকুর 0.34
যদি আপনার মডেলটি ঘন ঘন অস্পষ্ট ফলাফল দেয়, তাহলে আপনার একটি ভিন্ন, আরও সঠিক মডেলের প্রয়োজন হতে পারে।

একটি মডেল আর্কিটেকচার নির্বাচন করা

TensorFlow Lite আপনাকে বিভিন্ন ধরনের ইমেজ ক্লাসিফিকেশন মডেল সরবরাহ করে যেগুলো মূল ডেটাসেটে প্রশিক্ষিত। MobileNet, Inception, এবং NASNet এর মত মডেল আর্কিটেকচার TensorFlow Hub- এ উপলব্ধ। আপনার ব্যবহারের ক্ষেত্রে সেরা মডেলটি বেছে নিতে, আপনাকে পৃথক স্থাপত্যের পাশাপাশি বিভিন্ন মডেলের মধ্যে কিছু ট্রেডঅফ বিবেচনা করতে হবে। এর মধ্যে কিছু মডেল ট্রেডঅফ মেট্রিক্সের উপর ভিত্তি করে যেমন কর্মক্ষমতা, নির্ভুলতা এবং মডেলের আকার। উদাহরণস্বরূপ, একটি বার কোড স্ক্যানার তৈরি করার জন্য আপনার একটি দ্রুত মডেলের প্রয়োজন হতে পারে যখন আপনি একটি মেডিকেল ইমেজিং অ্যাপের জন্য একটি ধীর, আরও সঠিক মডেল পছন্দ করতে পারেন। উল্লেখ্য যে প্রদত্ত চিত্র শ্রেণীবিভাগ মডেলগুলি বিভিন্ন আকারের ইনপুট গ্রহণ করে। কিছু মডেলের জন্য, এটি ফাইলের নামে নির্দেশিত হয়। উদাহরণস্বরূপ, Mobilenet_V1_1.0_224 মডেলটি 224x224 পিক্সেলের একটি ইনপুট গ্রহণ করে। সমস্ত মডেলের জন্য পিক্সেল প্রতি তিনটি রঙের চ্যানেল প্রয়োজন (লাল, সবুজ এবং নীল)। কোয়ান্টাইজড মডেলের জন্য চ্যানেল প্রতি 1 বাইট প্রয়োজন, এবং ফ্লোট মডেলগুলির জন্য চ্যানেল প্রতি 4 বাইট প্রয়োজন। অ্যান্ড্রয়েড এবং আইওএস কোড নমুনাগুলি প্রতিটি মডেলের জন্য প্রয়োজনীয় বিন্যাসে পূর্ণ আকারের ক্যামেরা চিত্রগুলিকে কীভাবে প্রক্রিয়া করতে হয় তা প্রদর্শন করে৷

ব্যবহার এবং সীমাবদ্ধতা

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

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

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

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

মডেলের পারফরম্যান্স পরিমাপ করা হয় হার্ডওয়্যারের প্রদত্ত অংশে অনুমান চালানোর জন্য একটি মডেলের জন্য কতটা সময় লাগে তার পরিপ্রেক্ষিতে। সময় কম, দ্রুত মডেল। আপনার প্রয়োজন কর্মক্ষমতা আপনার আবেদন উপর নির্ভর করে. রিয়েল-টাইম ভিডিওর মতো অ্যাপ্লিকেশানগুলির জন্য পারফরম্যান্স গুরুত্বপূর্ণ হতে পারে, যেখানে পরবর্তী ফ্রেম আঁকার আগে প্রতিটি ফ্রেম বিশ্লেষণ করা গুরুত্বপূর্ণ হতে পারে (যেমন একটি 30fps ভিডিও স্ট্রীমে রিয়েল-টাইম অনুমান সম্পাদন করতে অনুমানটি 33ms এর চেয়ে দ্রুত হতে হবে) . TensorFlow Lite quantized MobileNet মডেলের কর্মক্ষমতা 3.7ms থেকে 80.3 ms পর্যন্ত। কর্মক্ষমতা বেঞ্চমার্ক নম্বর বেঞ্চমার্কিং টুল দিয়ে তৈরি করা হয়।
ণশড মডেলের আকার যন্ত্র এনএনএপিআই সিপিইউ
Mobilenet_V1_1.0_224_quant 4.3 Mb Pixel 3 (Android 10) 6ms 13ms*
Pixel 4 (Android 10) 3.3ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

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

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

মডেল নির্ভুলতা

নির্ভুলতা পরিমাপ করা হয় কত ঘন ঘন মডেল সঠিকভাবে একটি চিত্রকে শ্রেণীবদ্ধ করে। উদাহরণস্বরূপ, 60% এর বিবৃত নির্ভুলতা সহ একটি মডেল থেকে একটি চিত্রকে সঠিকভাবে 60% সময়ের মধ্যে শ্রেণীবদ্ধ করার আশা করা যেতে পারে।

সর্বাধিক প্রাসঙ্গিক নির্ভুলতা মেট্রিক হল শীর্ষ-1 এবং শীর্ষ-5। Top-1 বলতে বোঝায় কত ঘন ঘন সঠিক লেবেলটি মডেলের আউটপুটে সর্বোচ্চ সম্ভাব্যতা সহ লেবেল হিসাবে উপস্থিত হয়। Top-5 নির্দেশ করে মডেলের আউটপুটে 5টি সর্বোচ্চ সম্ভাব্যতার মধ্যে কতবার সঠিক লেবেলটি উপস্থিত হয়।

TensorFlow Lite quantized MobileNet মডেলের টপ-5 নির্ভুলতার রেঞ্জ 64.4 থেকে 89.9% পর্যন্ত।

মডেলের আকার

একটি মডেল অন-ডিস্কের আকার তার কার্যকারিতা এবং নির্ভুলতার সাথে পরিবর্তিত হয়। আকার মোবাইল ডেভেলপমেন্টের জন্য গুরুত্বপূর্ণ হতে পারে (যেখানে এটি অ্যাপ ডাউনলোডের আকারকে প্রভাবিত করতে পারে) বা হার্ডওয়্যারের সাথে কাজ করার সময় (যেখানে উপলব্ধ স্টোরেজ সীমিত হতে পারে)।

TensorFlow Lite কোয়ান্টাইজড MobileNet মডেলের আকার 0.5 থেকে 3.4 MB পর্যন্ত।

আরও পড়া এবং সম্পদ

চিত্র শ্রেণীবিভাগ সম্পর্কিত ধারণা সম্পর্কে আরও জানতে নিম্নলিখিত সংস্থানগুলি ব্যবহার করুন: