💡 مشاوره

مارک پلاس

تکنولوژی نوین اینترنتی

Segmentation در تصاویر

Segmentation در تصاویر

Segmentation در تصاویر

Image Segmentation یا بخش‌بندی تصویر یکی از مهم‌ترین مفاهیم در بینایی ماشین (Computer Vision) است که هدف آن تقسیم تصویر به نواحی معنادار و مشخص‌کردن پیکسل‌های متعلق به هر ناحیه است.

5

Segmentation چیست؟

فرض کنید یک تصویر شامل یک خودرو، خیابان، درخت و آسمان باشد.

در Classification فقط می‌گوییم:

این تصویر شامل خودرو است.

در Object Detection می‌گوییم:

خودرو در این قسمت تصویر قرار دارد.

اما در Segmentation مشخص می‌کنیم:

دقیقاً کدام پیکسل‌ها متعلق به خودرو هستند.

یعنی خروجی Segmentation معمولاً یک Mask است که برای هر پیکسل مشخص می‌کند به چه شیء یا ناحیه‌ای تعلق دارد.


انواع اصلی Image Segmentation

۱. Semantic Segmentation

در Semantic Segmentation، تمام پیکسل‌های متعلق به یک کلاس، یک برچسب مشترک دریافت می‌کنند.

مثلاً:

Sky       → آسمان
Road      → جاده
Car       → خودرو
Person    → انسان
Building  → ساختمان

اگر در تصویر سه خودرو وجود داشته باشد، هر سه با برچسب Car مشخص می‌شوند و از یکدیگر تفکیک نمی‌شوند.

کاربردها:

  • خودروهای خودران
  • تحلیل تصاویر ماهواره‌ای
  • پزشکی
  • تشخیص جاده
  • تحلیل محیط

۲. Instance Segmentation

در Instance Segmentation علاوه بر تشخیص کلاس، هر نمونه از یک شیء به‌صورت جداگانه مشخص می‌شود.

مثلاً اگر پنج خودرو داشته باشیم:

Car #1 → Mask 1
Car #2 → Mask 2
Car #3 → Mask 3
Car #4 → Mask 4
Car #5 → Mask 5

بنابراین حتی اگر دو خودرو کنار هم باشند، مدل می‌تواند آنها را از هم تفکیک کند.

یکی از مدل‌های معروف این حوزه Mask R-CNN است.


۳. Panoptic Segmentation

Panoptic Segmentation ترکیبی از Semantic و Instance Segmentation است.

برای اشیای قابل‌شمارش، مانند خودرو و انسان، هر Instance جدا می‌شود:

Person 1
Person 2
Car 1
Car 2

اما برای بخش‌های پس‌زمینه مانند:

Sky
Road
Grass
Building

یک برچسب معنایی اختصاص داده می‌شود.


تفاوت Classification، Detection و Segmentation

روشخروجی
Classificationکلاس تصویر
Object Detectionکلاس + Bounding Box
Semantic Segmentationکلاس هر پیکسل
Instance Segmentationکلاس + Mask برای هر شیء
Panoptic SegmentationSemantic + Instance

مثلاً برای یک تصویر از یک انسان:

Classification
       ↓
     Person

Detection
       ↓
   ┌──────────┐
   │  Person  │
   └──────────┘

Segmentation
       ↓
   ███████
   ███████
    █████
     ███

مدل‌های معروف Segmentation

امروزه مدل‌های مختلفی برای Segmentation استفاده می‌شوند:

U-Net

یکی از معروف‌ترین معماری‌ها، مخصوصاً در تصاویر پزشکی.

ساختار کلی:

Image
  ↓
Encoder
  ↓
Features
  ↓
Decoder
  ↓
Segmentation Mask

U-Net به دلیل وجود Skip Connection می‌تواند جزئیات مکانی تصویر را بهتر حفظ کند.


Mask R-CNN

برای Instance Segmentation بسیار معروف است.

ساختار مفهومی:

Image
  ↓
Backbone
  ↓
Region Proposal
  ↓
 ┌──────────────┐
 ↓       ↓      ↓
Class   Box    Mask

DeepLab

خانواده‌ای از مدل‌های قدرتمند برای Semantic Segmentation است که از تکنیک‌هایی مانند Atrous/Dilated Convolution استفاده می‌کند.


YOLO Segmentation

نسخه‌های جدید خانواده YOLO علاوه بر Detection می‌توانند Mask نیز تولید کنند.

برای پروژه‌هایی که سرعت اهمیت زیادی دارد، YOLO Segmentation گزینه جذابی است.


SAM

یکی از رویکردهای جدیدتر، Segment Anything Model (SAM) است.

ایده اصلی SAM این است که بتواند اشیای موجود در تصاویر را بر اساس ورودی‌هایی مانند:

  • نقطه
  • Bounding Box
  • Mask
  • Prompt

Segment کند.


مثال ساده

فرض کنید تصویر زیر را داریم:

┌─────────────────────────┐
│         SKY             │
│                         │
│       🚗       🚗       │
│                         │
│──────── ROAD ───────────│
│                         │
└─────────────────────────┘

Semantic Segmentation می‌تواند خروجی‌ای شبیه این ایجاد کند:

Sky  → Class 1
Car  → Class 2
Road → Class 3

اما Instance Segmentation:

Car 1 → Instance 1
Car 2 → Instance 2

را تولید می‌کند.


کاربردهای Segmentation

🏥 پزشکی

یکی از مهم‌ترین کاربردها:

  • تشخیص تومور
  • جداسازی اندام‌ها
  • تحلیل MRI
  • CT Scan
  • تشخیص سلول‌ها
  • تحلیل تصاویر X-Ray

مثلاً:

MRI
 ↓
Segmentation Model
 ↓
Tumor Mask

🚗 خودروهای خودران

خودرو باید بتواند محیط اطراف خود را به نواحی مختلف تقسیم کند:

Road
Sidewalk
Car
Person
Traffic Sign
Building
Sky
Vegetation

🛰 تصاویر ماهواره‌ای

برای شناسایی:

  • ساختمان‌ها
  • جاده‌ها
  • زمین کشاورزی
  • آب
  • جنگل
  • مناطق شهری

استفاده می‌شود.


🛒 فروشگاه‌های آنلاین

می‌توان از Segmentation برای حذف پس‌زمینه محصول استفاده کرد:

Product Image
      ↓
Segmentation
      ↓
Product Mask
      ↓
Background Removal

معیارهای ارزیابی

برای ارزیابی مدل‌های Segmentation معمولاً معیارهایی مانند IoU و Dice Score استفاده می‌شوند.

IoU

به‌صورت ساده:

IoU = Intersection / Union

اگر Mask واقعی و Mask پیش‌بینی‌شده تقریباً روی هم قرار بگیرند، IoU به ۱ نزدیک می‌شود.

مثلاً:

IoU = 0.90

یعنی تطابق بسیار خوبی وجود دارد.


Dice Score

معیار رایج دیگر:

Dice = 2 × Intersection / (Prediction + Ground Truth)

این معیار به‌خصوص در Medical Image Segmentation بسیار پرکاربرد است.


یک Pipeline واقعی

یک پروژه Segmentation معمولاً چنین ساختاری دارد:

                Dataset
                   │
                   ▼
             Image + Mask
                   │
                   ▼
             Preprocessing
                   │
                   ▼
              Model Training
                   │
                   ▼
              Validation
                   │
                   ▼
             IoU / Dice
                   │
                   ▼
               Inference
                   │
                   ▼
             Segmentation Mask

برای شروع عملی، یک Stack مناسب می‌تواند این باشد:

Python
   +
PyTorch
   +
OpenCV
   +
Albumentations
   +
U-Net / YOLO Segmentation

اگر هدفت یادگیری عملی Segmentation با Python و ساخت یک پروژه واقعی باشد، بهترین مسیر معمولاً این است که از U-Net روی یک Dataset ساده شروع کنیم و بعد به YOLO Segmentation و SAM برسیم.