78 lines
12 KiB
Markdown
78 lines
12 KiB
Markdown
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "d7f8a25ff13cfe9f4cd671cc23351fad",
|
|
"translation_date": "2025-08-26T09:10:04+00:00",
|
|
"source_file": "lessons/4-ComputerVision/12-Segmentation/README.md",
|
|
"language_code": "bn"
|
|
}
|
|
-->
|
|
# সেগমেন্টেশন
|
|
|
|
আমরা পূর্বে অবজেক্ট ডিটেকশন সম্পর্কে শিখেছি, যা আমাদের *বাউন্ডিং বক্স* প্রেডিক্ট করে ছবিতে অবজেক্টের অবস্থান নির্ধারণ করতে সাহায্য করে। তবে, কিছু কাজের জন্য শুধুমাত্র বাউন্ডিং বক্স যথেষ্ট নয়, বরং আরও সুনির্দিষ্ট অবজেক্ট লোকালাইজেশন প্রয়োজন। এই কাজটিকে **সেগমেন্টেশন** বলা হয়।
|
|
|
|
## [প্রাক-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/112)
|
|
|
|
সেগমেন্টেশনকে **পিক্সেল ক্লাসিফিকেশন** হিসেবে দেখা যেতে পারে, যেখানে ছবির **প্রত্যেক** পিক্সেলের জন্য তার ক্লাস (*ব্যাকগ্রাউন্ড* একটি ক্লাস হিসেবে গণ্য) প্রেডিক্ট করতে হয়। সেগমেন্টেশনের দুটি প্রধান অ্যালগরিদম রয়েছে:
|
|
|
|
* **সেমান্টিক সেগমেন্টেশন** শুধুমাত্র পিক্সেলের ক্লাস জানায়, এবং একই ক্লাসের বিভিন্ন অবজেক্টের মধ্যে পার্থক্য করে না।
|
|
* **ইনস্ট্যান্স সেগমেন্টেশন** ক্লাসগুলোকে বিভিন্ন ইনস্ট্যান্সে ভাগ করে।
|
|
|
|
ইনস্ট্যান্স সেগমেন্টেশনের ক্ষেত্রে, এই ভেড়াগুলো আলাদা অবজেক্ট, কিন্তু সেমান্টিক সেগমেন্টেশনের ক্ষেত্রে সব ভেড়া একটি ক্লাস হিসেবে দেখানো হয়।
|
|
|
|
<img src="images/instance_vs_semantic.jpeg" width="50%">
|
|
|
|
> ছবি [এই ব্লগ পোস্ট](https://nirmalamurali.medium.com/image-classification-vs-semantic-segmentation-vs-instance-segmentation-625c33a08d50) থেকে নেওয়া হয়েছে।
|
|
|
|
সেগমেন্টেশনের জন্য বিভিন্ন নিউরাল আর্কিটেকচার রয়েছে, তবে এগুলোর গঠন একই রকম। একভাবে, এটি পূর্বে শেখা অটোএনকোডারের মতো, তবে এখানে মূল ছবিকে ডিকন্সট্রাক্ট করার পরিবর্তে আমাদের লক্ষ্য একটি **মাস্ক** ডিকন্সট্রাক্ট করা। সুতরাং, একটি সেগমেন্টেশন নেটওয়ার্কের নিম্নলিখিত অংশগুলো থাকে:
|
|
|
|
* **এনকোডার** ইনপুট ছবির থেকে ফিচার এক্সট্রাক্ট করে।
|
|
* **ডিকোডার** সেই ফিচারগুলোকে **মাস্ক ইমেজে** রূপান্তরিত করে, যার সাইজ এবং চ্যানেলের সংখ্যা ক্লাসের সংখ্যার সাথে সামঞ্জস্যপূর্ণ।
|
|
|
|
<img src="images/segm.png" width="80%">
|
|
|
|
> ছবি [এই প্রকাশনা](https://arxiv.org/pdf/2001.05566.pdf) থেকে নেওয়া হয়েছে।
|
|
|
|
সেগমেন্টেশনের জন্য ব্যবহৃত লস ফাংশন বিশেষভাবে উল্লেখযোগ্য। ক্লাসিক্যাল অটোএনকোডার ব্যবহার করার সময়, আমাদের দুটি ছবির মধ্যে সাদৃশ্য পরিমাপ করতে হয়, এবং আমরা এর জন্য মীন স্কয়ার এরর (MSE) ব্যবহার করতে পারি। সেগমেন্টেশনে, টার্গেট মাস্ক ছবির প্রতিটি পিক্সেল ক্লাস নম্বর (তৃতীয় ডাইমেনশনে এক-হট-এনকোডেড) উপস্থাপন করে, তাই আমাদের ক্লাসিফিকেশনের জন্য নির্দিষ্ট লস ফাংশন ব্যবহার করতে হয় - ক্রস-এনট্রপি লস, যা সমস্ত পিক্সেলের উপর গড় করা হয়। যদি মাস্ক বাইনারি হয় - **বাইনারি ক্রস-এনট্রপি লস** (BCE) ব্যবহার করা হয়।
|
|
|
|
> ✅ এক-হট এনকোডিং একটি ক্লাস লেবেলকে ক্লাসের সংখ্যার সমান দৈর্ঘ্যের ভেক্টরে এনকোড করার একটি পদ্ধতি। এই পদ্ধতি সম্পর্কে [এই আর্টিকেল](https://datagy.io/sklearn-one-hot-encode/) দেখুন।
|
|
|
|
## মেডিকেল ইমেজিংয়ের জন্য সেগমেন্টেশন
|
|
|
|
এই পাঠে, আমরা সেগমেন্টেশনকে কার্যকরভাবে দেখতে পাবো, যেখানে নেটওয়ার্ককে মেডিকেল ছবিতে মানব নেভি (যা মোল নামেও পরিচিত) সনাক্ত করতে প্রশিক্ষণ দেওয়া হবে। আমরা <a href="https://www.fc.up.pt/addi/ph2%20database.html">PH<sup>2</sup> ডাটাবেস</a> ব্যবহার করব ডার্মোস্কপি ছবির উৎস হিসেবে। এই ডাটাসেটে তিনটি ক্লাসের ২০০টি ছবি রয়েছে: টিপিক্যাল নেভাস, অ্যাটিপিক্যাল নেভাস, এবং মেলানোমা। সমস্ত ছবির সাথে একটি **মাস্ক** রয়েছে যা নেভাসের আউটলাইন নির্দেশ করে।
|
|
|
|
> ✅ এই প্রযুক্তি বিশেষভাবে এই ধরনের মেডিকেল ইমেজিংয়ের জন্য উপযুক্ত, তবে আপনি বাস্তব জীবনে এর আর কী কী ব্যবহার কল্পনা করতে পারেন?
|
|
|
|
<img alt="navi" src="images/navi.png"/>
|
|
|
|
> ছবি PH<sup>2</sup> ডাটাবেস থেকে নেওয়া হয়েছে।
|
|
|
|
আমরা একটি মডেল প্রশিক্ষণ দেবো যাতে এটি ব্যাকগ্রাউন্ড থেকে যেকোনো নেভাস সেগমেন্ট করতে পারে।
|
|
|
|
## ✍️ অনুশীলন: সেমান্টিক সেগমেন্টেশন
|
|
|
|
নিচের নোটবুকগুলো খুলুন, বিভিন্ন সেমান্টিক সেগমেন্টেশন আর্কিটেকচার সম্পর্কে আরও জানুন, সেগুলো নিয়ে কাজ করার অনুশীলন করুন এবং সেগুলোকে কার্যকরভাবে দেখুন।
|
|
|
|
* [সেমান্টিক সেগমেন্টেশন পাইটর্চ](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationPytorch.ipynb)
|
|
* [সেমান্টিক সেগমেন্টেশন টেন্সরফ্লো](../../../../../lessons/4-ComputerVision/12-Segmentation/SemanticSegmentationTF.ipynb)
|
|
|
|
## [পোস্ট-লেকচার কুইজ](https://red-field-0a6ddfd03.1.azurestaticapps.net/quiz/212)
|
|
|
|
## উপসংহার
|
|
|
|
সেগমেন্টেশন একটি অত্যন্ত শক্তিশালী প্রযুক্তি যা ইমেজ ক্লাসিফিকেশনে বাউন্ডিং বক্সের বাইরে গিয়ে পিক্সেল-লেভেল ক্লাসিফিকেশন করে। এটি মেডিকেল ইমেজিংসহ অন্যান্য ক্ষেত্রে ব্যবহৃত হয়।
|
|
|
|
## 🚀 চ্যালেঞ্জ
|
|
|
|
শরীরের সেগমেন্টেশন মানুষের ছবি নিয়ে করা সাধারণ কাজগুলোর মধ্যে একটি। অন্য গুরুত্বপূর্ণ কাজগুলোর মধ্যে রয়েছে **স্কেলেটন ডিটেকশন** এবং **পোজ ডিটেকশন**। [OpenPose](https://github.com/CMU-Perceptual-Computing-Lab/openpose) লাইব্রেরি ব্যবহার করে দেখুন কীভাবে পোজ ডিটেকশন ব্যবহার করা যায়।
|
|
|
|
## পর্যালোচনা ও স্ব-অধ্যয়ন
|
|
|
|
এই [উইকিপিডিয়া আর্টিকেল](https://wikipedia.org/wiki/Image_segmentation) সেগমেন্টেশনের বিভিন্ন প্রয়োগ সম্পর্কে একটি ভালো ওভারভিউ প্রদান করে। ইনস্ট্যান্স সেগমেন্টেশন এবং প্যানোপটিক সেগমেন্টেশনের সাবডোমেইন সম্পর্কে আরও জানুন।
|
|
|
|
## [অ্যাসাইনমেন্ট](lab/README.md)
|
|
|
|
এই ল্যাবে, [Segmentation Full Body MADS Dataset](https://www.kaggle.com/datasets/tapakah68/segmentation-full-body-mads-dataset) ব্যবহার করে **মানব শরীরের সেগমেন্টেশন** চেষ্টা করুন।
|
|
|
|
**অস্বীকৃতি**:
|
|
এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় থাকা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হয়। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই। |