ভূমিকা
একটি ডেটা সায়েন্স বা মেশিন লার্নিং প্রজেক্টের সবচেয়ে গুরুত্বপূর্ণ অংশ হলো ডেটা ক্লিনিং (Data Cleaning)। আপনি ইন্টারনেট থেকে যে ছবিগুলো নামান, সেগুলো সবসময় সরাসরি ব্যবহারের উপযোগী থাকে না। এই টিউটোরিয়ালে আমরা শিখব কীভাবে পাইথন (Python) এবং ওপেনসিভি (OpenCV) ব্যবহার করে আমাদের সংগৃহীত ছবিগুলোকে পরিষ্কার বা 'ক্রপ' (Crop) করতে হয়, যাতে শুধুমাত্র প্রয়োজনীয় অংশ বা মানুষের মুখগুলোই আমাদের মডেলে প্রশিক্ষণের জন্য থাকে।
১. কেন ডেটা ক্লিনিং প্রয়োজন?
ভিডিও রেফারেন্স: [00:00] থেকে [02:22]
মেশিন লার্নিং মডেলে যখন আমরা কোনো ব্যক্তিকে শনাক্ত করতে বলি, তখন সেটি মূলত সেই ব্যক্তির মুখের বৈশিষ্ট্যের ওপর ভিত্তি করে কাজ করে। কিন্তু ইন্টারনেট থেকে ডাউনলোড করা অনেক ছবিতে মানুষের মুখ অস্পষ্ট থাকতে পারে, আবার অনেক ছবিতে একাধিক মানুষ থাকতে পারে। ভুল বা অস্পষ্ট ছবি দিয়ে মডেল তৈরি করলে মডেলটি ভুল ফলাফল দেবে। তাই অস্পষ্ট বা অপ্রয়োজনীয় ছবিগুলো বাদ দিয়ে শুধুমাত্র স্পষ্ট মুখগুলোর অংশ আলাদা করাই হলো আমাদের মূল লক্ষ্য।
২. ওপেনসিভি (OpenCV) এবং হার ক্যাসকেড (Haar Cascade) ব্যবহার
ভিডিও রেফারেন্স: [01:32] থেকে [15:17]
আমরা এখানে OpenCV ব্যবহার করছি, যা ইমেজ প্রসেসিংয়ের জন্য খুব জনপ্রিয় একটি টুল। আর মুখ ও চোখ শনাক্ত করার জন্য আমরা Haar Cascade প্রযুক্তি ব্যবহার করি।
- সহজ ব্যাখ্যা: হার ক্যাসকেড হলো এমন একটি প্রযুক্তি যা ছবির পিক্সেল বা রঙের পার্থক্য দেখে বুঝতে পারে কোথায় চোখ বা নাক আছে। এটি একটি 'মুভিং উইন্ডো'র মতো কাজ করে যা পুরো ছবি খুঁজে দেখে কোথায় মানুষের মুখ আছে।
কোডিং স্নিপেট:
Python
# ফেস ডিটেকশনের জন্য কোড
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray_image, 1.3, 5)
# মুখ শনাক্ত হলে সেটি ক্রপ করা বা আয়তাকার বক্সে আনা
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2)
- ব্যাখ্যা: এখানে আমরা প্রথমে একটি প্রি-ট্রেইনড এক্সএমএল (XML) ফাইল ব্যবহার করেছি।
detectMultiScaleকমান্ডটি ছবি থেকে মুখ খুঁজে বের করে। এরপরcv2.rectangleব্যবহার করে শনাক্তকৃত মুখটির চারপাশে একটি লাল বক্স আঁকা হয়েছে।
৩. স্বয়ংক্রিয়ভাবে ডেটা ক্রপ করা
ভিডিও রেফারেন্স: [17:24] থেকে [35:10]
সব ছবি ম্যানুয়ালি বা হাতে পরিষ্কার করা অনেক কঠিন। তাই আমরা এমন একটি ফাংশন তৈরি করেছি যা প্রতিটি ফোল্ডারের ভেতর গিয়ে ছবিগুলো পরীক্ষা করে। যদি ছবিতে মুখ এবং দুই চোখ স্পষ্টভাবে পাওয়া যায়, তবেই সেটিকে একটি নতুন 'Cropped' ফোল্ডারে সেভ করবে।
- সহজ ব্যাখ্যা:
OS moduleব্যবহার করে আমরা কম্পিউটারকে নির্দেশ দিয়েছি প্রতিটি ফোল্ডার চেক করতে। ফাংশনটি ছবি পড়ে, যদি দুই চোখ খুঁজে না পায়, তবে সেই ছবিটিকে বাতিল করে দেয়।
৪. ম্যানুয়াল ভেরিফিকেশন (মানুষের হস্তক্ষেপ)
ভিডিও রেফারেন্স: [36:16] থেকে [39:41]
স্বয়ংক্রিয়ভাবে কোড দিয়ে ডেটা পরিষ্কার করলেও ১০% ক্ষেত্রে ভুল হতে পারে (যেমন: অন্য কারো ছবি বা অস্পষ্ট ছবি থেকে যেতে পারে)। তাই সব শেষে আমাদের চোখ দিয়ে ছবিগুলো একবার দেখে ভুল ছবিগুলো ডিলিট করে দিতে হয়। একে বলে Manual Remediation বা মানুষের সাহায্যে ভুল সংশোধন।
বিশ্লেষণ এবং আমার মতামত
এই ভিডিওটিতে প্রজেক্টের একটি খুবই বাস্তবসম্মত অংশ তুলে ধরা হয়েছে। অনেক সময় বিগিনাররা ভাবেন মেশিন লার্নিং মানেই শুধু মডেল ট্রেইন করা, কিন্তু আসল লড়াই হলো ভালো ডেটাসেট তৈরি করা।
-
চিন্তা: অটোমেশন কোড এবং ম্যানুয়াল চেক—এই দুয়ের সমন্বয় একটি প্রফেশনাল অ্যাপ্রোচ।
-
পরামর্শ: যদি প্রজেক্ট আরও বড় হতো, তবে আমি 'Crowdsourcing' (যেমন Amazon Mechanical Turk) ব্যবহার করার পরামর্শ দিতাম, যেখানে অনেক মানুষকে সামান্য খরচে এই কাজগুলো করার জন্য নিয়োগ দেওয়া যায়।
-
সারসংক্ষেপ: এই প্রসেসটি অনুসরণ করলে আপনার মডেলের নির্ভুলতা (Accuracy) বহুগুণ বেড়ে যাবে। কোডগুলো বেশ সহজ এবং পাইথন জানা থাকলে যে কেউ এটি সহজে নিজের প্রজেক্টে ব্যবহার করতে পারবে।
অতিরিক্ত তথ্য: Requirement.txt ফাইলটি ব্যবহার করে লাইব্রেরিগুলো ইনস্টল করতে ভুলবেন না, নাহলে কোড রান করবে না।
[
Data Science & Machine Learning Project - Part 3 Data Cleaning | Image Classification
codebasics · 149K views
](http://www.youtube.com/watch?v=kwKfWBb6frs)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d