تقسيم الصور
Image Segmentation
التصنيف على مستوى البكسل: التقسيم الدلالي وتقسيم النسخ والتقسيم الشامل، ومقاييس Dice وIoU.
الأنواع الثلاثة
| النوع | السؤال | مثال |
|---|---|---|
| دلالي | ما فئة كل بكسل؟ | طريق، رصيف، سماء |
| النسخ | أي بكسلات لكل جسم؟ | سيارة 1، سيارة 2 |
| شامل (Panoptic) | الاثنان معاً | أجسام معدودة + خلفيات |
بنية مشفر-مفكك
- المشفر: يقلص الأبعاد المكانية ويستخلص سمات دلالية (غالباً CNN مدربة مسبقاً).
- المفكك: يعيد الدقة المكانية بالتكبير (upsampling أو الالتفاف المنقول) لينتج خريطة بحجم الصورة.
- وصلات التخطي: تنقل التفاصيل الدقيقة من المشفر إلى المفكك، وهي جوهر U-Net.
المقاييس
$$\text{Dice} = \frac{2|P \cap G|}{|P| + |G|} \qquad \text{IoU} = \frac{|P \cap G|}{|P \cup G|}$$
import numpy as np
def dice(pred, gt, eps=1e-7):
pred, gt = pred.astype(bool), gt.astype(bool)
return (2 * (pred & gt).sum() + eps) / (pred.sum() + gt.sum() + eps)للتقسيم الدلالي متعدد الفئات يُحسب IoU لكل فئة ثم المتوسط (mIoU).
تجربة نموذج مدرب مسبقاً
import torch
from torchvision.models.segmentation import deeplabv3_resnet50, DeepLabV3_ResNet50_Weights
from torchvision.io import read_image
weights = DeepLabV3_ResNet50_Weights.DEFAULT
model = deeplabv3_resnet50(weights=weights).eval()
img = read_image("street.jpg")
with torch.no_grad():
out = model(weights.transforms()(img).unsqueeze(0))["out"]
mask = out.argmax(1)[0] # فئة لكل بكسلنماذج التقسيم العامة
نموذج Segment Anything (SAM) يقسم أي جسم انطلاقاً من نقطة أو مربع يحدده المستخدم، وقد دُرب على أكثر من مليار قناع. مفيد في التسمية السريعة، مع ضرورة التحقق من دقته في المجالات المتخصصة كالطب.
مصطلحات الدرس
- التقسيم الدلالي Semantic Segmentation
- إسناد فئة لكل بكسل في الصورة دون التمييز بين الأجسام المنفصلة من الفئة نفسها.
- تقسيم النسخ Instance Segmentation
- تحديد قناع منفصل لكل جسم في الصورة مع فئته.
- معامل Dice Dice Coefficient
- مقياس للتداخل بين قناعين يساوي ضعف التقاطع مقسوماً على مجموع مساحتيهما.
الملخص
تقسيم الصور يسند تسمية لكل بكسل. التقسيم الدلالي يحدد فئة كل بكسل دون التمييز بين نسخ الفئة الواحدة، وتقسيم النسخ يفصل كل جسم بقناع مستقل، والتقسيم الشامل يجمع الاثنين. تعتمد المعماريات على بنية مشفر-مفكك مثل FCN وU-Net وDeepLab، أو على امتداد الكاشفات مثل Mask R-CNN. يُقيَّم بمعامل Dice وIoU على مستوى البكسل، وله أهمية كبيرة في التصوير الطبي.
أسئلة مراجعة
-
ما الفرق بين التقسيم الدلالي وتقسيم النسخ في صورة فيها ثلاث سيارات؟
الدلالي يسمي كل بكسلات السيارات «سيارة» معاً، وتقسيم النسخ يعطي كل سيارة قناعاً مستقلاً.
-
ما العلاقة بين Dice وIoU؟
Dice = 2·IoU/(1 + IoU)، فكلاهما يقيس التداخل لكن Dice أعلى قيمة لنفس التداخل الجزئي.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة