১. ভূমিকা
মেশিন লার্নিং-এর সাম্প্রতিক অগ্রগতি কম্পিউটারের জন্য ছবিতে থাকা বস্তু শনাক্ত করা তুলনামূলকভাবে সহজ করে দিয়েছে। এই কোডল্যাবে, আমরা আপনাকে একটি ইমেজ ক্লাসিফিকেশন মডেল তৈরির সম্পূর্ণ প্রক্রিয়াটি দেখাবো, যা বিভিন্ন ধরণের বস্তু শনাক্ত করতে পারে, এবং তারপর মডেলটিকে অ্যান্ড্রয়েড ও আইওএস অ্যাপে স্থাপন করব। এমএল কিট (ML Kit) এবং অটোএমএল (AutoML) আপনাকে কোনো মেশিন লার্নিং দক্ষতা ছাড়াই বৃহৎ পরিসরে মডেলটি তৈরি ও স্থাপন করার সুযোগ দেয়।
এমএল কিট বলতে কী বোঝায়?
এমএল কিট হলো একটি মোবাইল এসডিকে যা গুগলের মেশিন লার্নিং দক্ষতাকে একটি শক্তিশালী অথচ সহজে ব্যবহারযোগ্য প্যাকেজের মাধ্যমে অ্যান্ড্রয়েড এবং আইওএস অ্যাপে নিয়ে আসে। আপনি মেশিন লার্নিং-এ নতুন বা অভিজ্ঞ, যা-ই হোন না কেন, মাত্র কয়েকটি কোডের লাইনেই আপনার প্রয়োজনীয় কার্যকারিতা সহজেই প্রয়োগ করতে পারবেন। এখানে টেক্সট, মুখমণ্ডল ইত্যাদি শনাক্ত করার জন্য বেশ কিছু এপিআই রয়েছে যা আপনি সরাসরি ব্যবহার করতে পারবেন। তবে, যদি আপনার এমন কোনো বস্তু শনাক্ত করার প্রয়োজন হয় যা এপিআই দ্বারা সমর্থিত নয়, যেমন একটি ছবি থেকে বিভিন্ন ধরণের ফুল শনাক্ত করা, তাহলে আপনাকে নিজের মডেলকে প্রশিক্ষণ দিতে হবে। এখানেই অটোএমএল আপনাকে সাহায্য করতে পারে।
অটোএমএল (AutoML) কী?
ক্লাউড অটোএমএল হলো মেশিন লার্নিং প্রোডাক্টের একটি স্যুট, যা গুগলের অত্যাধুনিক ট্রান্সফার লার্নিং এবং নিউরাল আর্কিটেকচার সার্চ প্রযুক্তি ব্যবহার করে সীমিত মেশিন লার্নিং দক্ষতা সম্পন্ন ডেভেলপারদেরকে তাদের ব্যবসায়িক প্রয়োজন অনুযায়ী উচ্চ-মানের মডেল প্রশিক্ষণ দিতে সক্ষম করে।
এই কোডল্যাবে, আমরা এমএল কিট (ML Kit)-এর অটোএমএল ভিশন এজ (AutoML Vision Edge) ব্যবহার করে একটি ফুল শ্রেণিবিন্যাস মডেলকে প্রশিক্ষণ দেব। মডেলটি ক্লাউডে প্রশিক্ষিত হয়, কিন্তু পরবর্তীতে অ্যাপের মাধ্যমে বান্ডল বা ডাউনলোড করা হয়, যাতে ইনফারেন্সগুলো সম্পূর্ণরূপে ডিভাইসেই চালানো যায়।

আপনি যা শিখবেন
- এমএল কিট-এ অটোএমএল ভিশন এজ ব্যবহার করে কীভাবে একটি ইমেজ ক্লাসিফিকেশন মডেলকে প্রশিক্ষণ দেওয়া যায়।
- এমএল কিট এসডিকে ব্যবহার করে একটি নমুনা অ্যান্ড্রয়েড বা আইওএস অ্যাপে এটি কীভাবে চালাবেন।
আপনার যা যা লাগবে
অ্যান্ড্রয়েড অ্যাপের জন্য
- অ্যান্ড্রয়েড স্টুডিওর একটি সাম্প্রতিক সংস্করণ (v3.4+)
- প্লে স্টোর সহ অ্যান্ড্রয়েড স্টুডিও এমুলেটর অথবা একটি বাস্তব অ্যান্ড্রয়েড ডিভাইস (v5.0+)
- কোটলিনে অ্যান্ড্রয়েড ডেভেলপমেন্টের প্রাথমিক জ্ঞান
iOS অ্যাপের জন্য
- XCode-এর একটি সাম্প্রতিক সংস্করণ (v10.2+)
- iOS সিমুলেটর অথবা একটি বাস্তব iOS ডিভাইস (v9.0+)
- কোকোপড
- সুইফটে আইওএস ডেভেলপমেন্টের প্রাথমিক জ্ঞান
২. সেটআপ
কোড এবং প্রশিক্ষণ ডেটাসেট ডাউনলোড করুন
এই কোডল্যাবের সোর্স কোড এবং একটি ট্রেনিং ডেটাসেট সম্বলিত জিপ আর্কাইভটি ডাউনলোড করুন। আপনার লোকাল মেশিনে আর্কাইভটি এক্সট্র্যাক্ট করুন।
ফায়ারবেস কনসোল প্রজেক্ট তৈরি করুন
- ফায়ারবেস কনসোলে যান।
- "Create New Project" নির্বাচন করুন এবং আপনার প্রজেক্টের নাম দিন "ML Kit Codelab"।
অ্যান্ড্রয়েড অ্যাপটি সেটআপ করুন
- আমাদের অ্যান্ড্রয়েড অ্যাপটি ফায়ারবেস প্রজেক্টে যুক্ত করুন। অ্যান্ড্রয়েড প্যাকেজের নাম:
com.google.firebase.codelab.mlkit.automl -
google-services.jsonকনফিগারেশন ফাইলটি ডাউনলোড করুন এবং অ্যান্ড্রয়েড অ্যাপেরandroid/mlkit-automl/app/google-services.jsonফোল্ডারে রাখুন।
iOS অ্যাপটি সেটআপ করুন
- আমাদের iOS অ্যাপটি Firebase প্রজেক্টে যুক্ত করুন। iOS বান্ডেল আইডি:
com.google.firebase.codelab.mlkit.automl -
GoogleService-Info.plistকনফিগারেশন ফাইলটি ডাউনলোড করুন এবং নির্দেশাবলী অনুসরণ করে এটিকে iOS অ্যাপেরios/mlkit-automl/GoogleService-Info.plistফোল্ডারে রাখুন।
৩. প্রশিক্ষণ ডেটাসেট প্রস্তুত করুন
একটি মডেলকে বিভিন্ন ধরণের বস্তু শনাক্ত করতে প্রশিক্ষণ দেওয়ার জন্য, আপনাকে এক সেট ছবি প্রস্তুত করতে হবে এবং সেগুলোর প্রত্যেকটিকে লেবেল করতে হবে। এই কোডল্যাবে আপনার ব্যবহারের জন্য আমরা ক্রিয়েটিভ কমন্স লাইসেন্সযুক্ত ফুলের ছবির একটি আর্কাইভ তৈরি করেছি।
ডেটা সেটটি flower_photos.zip নামের একটি জিপ ফাইলে প্যাকেজ করা আছে, যা আপনি আগের ধাপে ডাউনলোড করা জিপ আর্কাইভটির মধ্যে অন্তর্ভুক্ত রয়েছে।
ডেটাসেটটি অন্বেষণ করুন
আপনি যদি flower_photos.zip ফাইলটি এক্সট্র্যাক্ট করেন, তাহলে দেখতে পাবেন যে ডেটাসেটটিতে ৫ ধরনের ফুলের ছবি রয়েছে: ড্যান্ডেলিয়ন, ডেইজি, টিউলিপ, সূর্যমুখী এবং গোলাপ, যেগুলো ফুলের নামে নামকরণ করা ফোল্ডারে সাজানো আছে। AutoML-এ ফিড করার জন্য এবং একটি ইমেজ ক্লাসিফিকেশন মডেলকে প্রশিক্ষণ দেওয়ার জন্য একটি ট্রেনিং ডেটাসেট তৈরি করার এটি একটি সহজ উপায়।
এই প্রশিক্ষণ ডেটাসেটে প্রতিটি ফুলের ধরনের জন্য ২০০টি করে ছবি রয়েছে। একটি মডেলকে প্রশিক্ষণ দেওয়ার জন্য আপনার প্রতিটি শ্রেণীর ন্যূনতম ১০টি ছবিই যথেষ্ট। তবে, প্রশিক্ষণের জন্য বেশি ছবি থাকলে সাধারণত আরও ভালো মডেল তৈরি হয়।


৪. একটি মডেলকে প্রশিক্ষণ দিন
প্রশিক্ষণ ডেটাসেট আপলোড করুন
- ফায়ারবেস কনসোল থেকে, আপনার এইমাত্র তৈরি করা প্রজেক্টটি খুলুন।
- এমএল কিট > অটোএমএল নির্বাচন করুন।
- আপনি কিছু স্বাগত স্ক্রিন দেখতে পারেন। যেখানে প্রযোজ্য, সেখানে ‘শুরু করুন’ নির্বাচন করুন।
- সেটআপ প্রক্রিয়া শেষ হয়ে গেলে, 'Add dataset' নির্বাচন করুন এবং এর নাম দিন "Flowers"।
- মডেলের উদ্দেশ্য (Model objective) -তে একক-লেবেল শ্রেণিবিন্যাস (Single-label classification) নির্বাচন করুন, কারণ প্রশিক্ষণ ডেটাতে প্রতিটি ছবির জন্য কেবল একটি লেবেল রয়েছে।
- তৈরি করুন নির্বাচন করুন।
- ফুলের প্রশিক্ষণ ডেটাসেটটি ইম্পোর্ট করার জন্য, আগের ধাপে ডাউনলোড করা
flower_photos.zipফাইলটি আপলোড করুন। - ইম্পোর্ট প্রক্রিয়াটি শেষ হওয়ার জন্য কয়েক মিনিট অপেক্ষা করুন।
- এখন আপনি নিশ্চিত করতে পারেন যে ডেটাসেটটি সঠিকভাবে ইম্পোর্ট করা হয়েছে।
- যেহেতু ট্রেনিং ডেটাসেটের সমস্ত ছবিতে লেবেল দেওয়া আছে, আপনি মডেলটিকে প্রশিক্ষণ দিতে পারেন।

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

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

৫. মোবাইল অ্যাপে মডেলটি ব্যবহার করুন
প্রস্তুতি
- এই কোডল্যাবে অ্যান্ড্রয়েড এবং আইওএস উভয় ধরনের নমুনা অ্যাপ রয়েছে, যা দেখায় কীভাবে আমাদের পূর্বে প্রশিক্ষিত ইমেজ ক্লাসিফিকেশন মডেলটি একটি মোবাইল অ্যাপে ব্যবহার করতে হয়। অ্যাপ দুটির ফিচারগুলো প্রায় একই রকম। আপনি যে প্ল্যাটফর্মটিতে বেশি অভ্যস্ত, সেটি বেছে নিতে পারেন।
- এগিয়ে যাওয়ার আগে, অনুগ্রহ করে নিশ্চিত করুন যে আপনি নমুনা অ্যাপগুলি ডাউনলোড করেছেন এবং ধাপ ২-এ সেগুলি কনফিগার করেছেন।
- অনুগ্রহ করে এও নিশ্চিত করুন যে, আপনার নির্বাচিত প্ল্যাটফর্মের (অ্যান্ড্রয়েড/আইওএস) জন্য অ্যাপ তৈরি করতে আপনার স্থানীয় পরিবেশটি প্রস্তুত করা আছে।
ইমেজ ক্লাসিফিকেশন মডেল ডাউনলোড করুন
- আপনি যদি পূর্ববর্তী ধাপে কোনো মডেলকে প্রশিক্ষণ দিয়ে থাকেন, তাহলে মডেলটি পেতে ডাউনলোড নির্বাচন করুন।
- যদি আপনি কোনো মডেলকে প্রশিক্ষণ না দিয়ে থাকেন অথবা আপনার প্রশিক্ষণের কাজটি এখনো শেষ না হয়ে থাকে, তাহলে আপনি নমুনা অ্যাপগুলোতে অন্তর্ভুক্ত মডেলটি ব্যবহার করতে পারেন।
নমুনা অ্যাপ(গুলি)তে মডেলটি যোগ করুন
আপনাকে শুধু স্যাম্পল অ্যাপগুলোতে মডেলটি যোগ করতে হবে এবং সেগুলো কোনো সমস্যা ছাড়াই কাজ করবে। আপনার অ্যাপে এমএল কিট অটোএমএল (ML Kit AutoML) কীভাবে ইন্টিগ্রেট করবেন তার সম্পূর্ণ নির্দেশিকার জন্য, অনুগ্রহ করে আমাদের ডকুমেন্টেশন ( অ্যান্ড্রয়েড , আইওএস ) দেখুন। এমএল কিট এসডিকে (ML Kit SDK)-এর সাথে ইন্টারঅ্যাক্ট করে এমন কোড যথাক্রমে ImageClassifier.kt এবং ImageClassifier.swift ফাইলে রয়েছে, তাই অ্যাপগুলো কীভাবে কাজ করে তা জানতে আপনি সেখান থেকে শুরু করতে পারেন।
মডেলটি স্থাপন করার দুটি বিকল্প রয়েছে: স্থানীয় এবং দূরবর্তী।
- লোকাল মডেল প্রধানত আপনার অ্যাপ বাইনারিতে ইমেজ ক্লাসিফিকেশন মডেল বান্ডল করার জন্য ব্যবহৃত হয়, যদিও লোকাল স্টোরেজে সংরক্ষিত মডেলও সরবরাহ করা যেতে পারে। বান্ডলিং-এর ফলে, ব্যবহারকারীরা অ্যাপ স্টোর / প্লে স্টোর থেকে আপনার অ্যাপ ডাউনলোড করার সাথে সাথেই মডেলটি তাদের জন্য উপলব্ধ হয় এবং এটি ইন্টারনেট সংযোগ ছাড়াই কাজ করবে।
- রিমোট মডেল মানে হলো, মডেলটি ফায়ারবেসে হোস্ট করা থাকে এবং এটি শুধুমাত্র প্রথমবার প্রয়োজনের সময় আপনার ব্যবহারকারীর ডিভাইসে ডাউনলোড করা হবে। এরপর, মডেলটি অফলাইনেও কাজ করবে।

অ্যান্ড্রয়েড অ্যাপ
- অ্যান্ড্রয়েড স্টুডিও খুলুন।
-
android/mlkit-automl/অধীনে অ্যান্ড্রয়েড অ্যাপটি ইম্পোর্ট করুন। - (ঐচ্ছিক) আপনার ডাউনলোড করা মডেলটি এক্সট্র্যাক্ট করুন এবং এর কন্টেন্টগুলো স্যাম্পল অ্যাপে অন্তর্ভুক্ত মডেলটির উপর কপি করুন।

- এখন রান-এ ক্লিক করুন (
অ্যান্ড্রয়েড স্টুডিও টুলবারে ) যোগ করুন এবং যাচাই করুন যে এটি বিভিন্ন ধরণের ফুল চিনতে পারে!

iOS অ্যাপ
- টার্মিনাল খুলুন এবং
ios/mlkit-automl/ফোল্ডারে যান। - Cocoapods-এর মাধ্যমে ডিপেন্ডেন্সিগুলো ডাউনলোড করতে
pod installচালান। - Xcode-এ প্রোজেক্ট ওয়ার্কস্পেসটি খুলতে
open MLVisionExample.xcworkspace/চালান। - (ঐচ্ছিক) আপনার ডাউনলোড করা মডেলটি এক্সট্র্যাক্ট করুন এবং এর কন্টেন্টগুলো
ios/ml-automl/Resources/automl/অধীনে থাকা স্যাম্পল অ্যাপের অন্তর্ভুক্ত মডেলটির উপর কপি করুন।
- এখন রান-এ ক্লিক করুন (
Xcode টুলবারে ) যোগ করুন এবং যাচাই করুন যে এটি বিভিন্ন ধরণের ফুল চিনতে পারে কিনা!

৬. (ঐচ্ছিক) রিমোট মডেল ব্যবহার করুন
এমএল কিট-এর রিমোট মডেল আপনাকে আপনার অ্যাপ বাইনারিতে টেনসরফ্লো লাইট মডেল অন্তর্ভুক্ত না করে, প্রয়োজন অনুযায়ী ফায়ারবেস থেকে তা ডাউনলোড করার সুযোগ দেয়। লোকাল মডেলের তুলনায় রিমোট মডেলের বেশ কিছু সুবিধা রয়েছে:
- ছোট অ্যাপ বাইনারি
- অ্যাপ আপডেট না করেই মডেল আপডেট করতে পারা
- একটি মডেলের একাধিক সংস্করণ ব্যবহার করে এ/বি টেস্টিং
এই ধাপে, আমরা একটি রিমোট মডেল পাবলিশ করব এবং স্যাম্পল অ্যাপগুলোতে এটি ব্যবহার করব। অনুগ্রহ করে নিশ্চিত করুন যে আপনি এই কোডল্যাবের ৪ নং ধাপে আপনার মডেলের প্রশিক্ষণ সম্পন্ন করেছেন।
মডেলটি প্রকাশ করুন
- ফায়ারবেস কনসোলে যান।
- আপনার পূর্বে তৈরি করা 'ML Kit AutoML Codelab' প্রজেক্টটি নির্বাচন করুন।
- এমএল কিট > অটোএমএল নির্বাচন করুন।
- আপনি পূর্বে তৈরি করা 'Flowers' ডেটাসেটটি নির্বাচন করুন।
- প্রশিক্ষণ কাজটি সম্পন্ন হয়েছে কিনা তা নিশ্চিত করুন, তারপর মডেলটি নির্বাচন করুন।
- পাবলিশ নির্বাচন করুন এবং এর নাম দিন "mlkit_flowers"।

রিমোট মডেলের সাহায্যে ফুল শনাক্ত করুন
স্যাম্পল অ্যাপগুলো রিমোট মডেল উপলব্ধ থাকলে তা ব্যবহার করার জন্য কনফিগার করা আছে। রিমোট মডেলটি পাবলিশ করার পর, মডেল ডাউনলোড চালু করার জন্য আপনাকে শুধু অ্যাপগুলো পুনরায় রান করতে হবে। অ্যাপ স্ক্রিনের ফুটারে থাকা "Source" ভ্যালুটি দেখে আপনি যাচাই করতে পারেন যে অ্যাপটি রিমোট মডেল ব্যবহার করছে। যদি এটি কাজ না করে, তবে নিচের "Troubleshooting" সেকশনটি দেখুন।


সমস্যা সমাধান
যদি স্যাম্পল অ্যাপটি এখনও লোকাল মডেল ব্যবহার করে থাকে, তাহলে অনুগ্রহ করে যাচাই করুন যে কোডের মধ্যে রিমোট মডেলের নামটি সঠিকভাবে সেট করা আছে কিনা।
অ্যান্ড্রয়েড অ্যাপ
-
ImageClassifier.ktএ যান এবং এই ব্লকটি খুঁজুন।
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- যাচাই করুন যে কোডে সেট করা মডেলের নামটি, আপনার পূর্বে Firebase Console-এর মাধ্যমে প্রকাশ করা মডেলের নামের সাথে মিলেছে কিনা।
- এখন রান-এ ক্লিক করুন (
অ্যাপটি পুনরায় চালানোর জন্য অ্যান্ড্রয়েড স্টুডিও টুলবারে থাকা বোতামটি চাপুন।
iOS অ্যাপ
-
ImageClassifier.swiftএ যান এবং এই ব্লকটি খুঁজুন,
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- কোডে সেট করা মডেলের নামটি, আপনার পূর্বে Firebase Console-এর মাধ্যমে প্রকাশ করা মডেলের নামের সাথে মিলেছে কিনা তা যাচাই করুন।
- এখন রান-এ ক্লিক করুন (
অ্যাপটি পুনরায় চালানোর জন্য Xcode টুলবারে থাকা বোতামটি চাপুন।
৭. অভিনন্দন!
আপনি AutoML ব্যবহার করে আপনার নিজস্ব প্রশিক্ষণ ডেটা দিয়ে একটি ইমেজ ক্লাসিফিকেশন মডেলকে শুরু থেকে শেষ পর্যন্ত প্রশিক্ষণ দিয়েছেন এবং তারপর ML Kit ব্যবহার করে মডেলটিকে একটি মোবাইল অ্যাপে ব্যবহার করেছেন।
আপনার নিজের অ্যাপে ML Kit-এর AutoML Vision Edge কীভাবে ইন্টিগ্রেট করবেন তা জানতে আমাদের ডকুমেন্টেশন দেখুন।
Firebase ML Kit-এর অন্যান্য বৈশিষ্ট্যগুলো দেখতে আপনি আমাদের ML Kit স্যাম্পল অ্যাপগুলোও ব্যবহার করে দেখতে পারেন।
অ্যান্ড্রয়েড নমুনা
iOS নমুনা