U-Net Image Segmentation
ست متغيرات للتجزئة مقيسة على البيانات نفسها
أي خيارات تصميم U-Net تهم فعلاً: وصلات التخطي، والتجميع، وعمق الكتل، والمتبقيات، كل منها راية ورقم.
- Pet: IoU 0.679 / Dice 0.809
- الوصلات: IoU من 0.489 إلى 0.560
التقنياتPyTorch
torchvision
pytestMatplotlib
NumPy
Kaggle
Google Colab

نظرة عامة
بدأ هذا كدفتر واجب دراسي في الرؤية الحاسوبية يطرح أربعة أسئلة عن U-Net: هل يتفوق التجميع الأقصى (max-pooling) على الالتفاف بخطوة (strided convolution)، وكم تضيف وصلات التخطي (skip connections)، وكيف يقارَن مشفّر-مفكّك بشبكة كاملة الاتصال، وكيف ينبغي اختيار عتبة الاستدلال. أعدت بناءه كحزمة يكون فيها كل سؤال راية (flag) واحدة، والنماذج صغيرة (1 إلى 2M معلمة، دقائق لكل تشغيل على CPU)، ويُعاد قياس كل إجابة بـ IoU وDice بدلاً من دقة البكسل.
ستة إعدادات مسبقة تتشارك فئة EncoderDecoder واحدة: U-Net العادي، ونسخة بالالتفاف بخطوة، ونسخة بالتفاف مفرد، ونسخة متبقية، ونموذج شبيه بـ SegNet بلا وصلات تخطٍّ، وخط أساس كامل الاتصال مكوّن من طبقات Linear فقط. تتدرب كلها على الأشكال الاصطناعية نفسها وعلى مجموعة فرعية من Oxford-IIIT Pet، بخسارة BCE + Dice، وتُقيَّم من مصفوفة التباس واحدة. ومسح للعتبة على قسم التحقق يختار الحد الفاصل، لا على قسم الاختبار أبداً.
على الأشكال يبلغ U-Net العادي IoU اختبار قدره 0.560 مقابل 0.422 للالتفافات بخطوة و0.489 بلا وصلات تخطٍّ؛ ويسجل النموذج كامل الاتصال 0.102 بعشرة أضعاف المعلمات. وعلى صور الحيوانات الأليفة يتصدر U-Net المتبقي بـ0.679، ثم U-Net بـ0.641، وبلا وصلات تخطٍّ 0.630، وكامل الاتصال 0.524. كشف نقل الدفتر أيضاً أن مجموعتي التحقق والاختبار فيه كانتا معزَّزتين، وأن مسح العتبة فيه جرى على المدى 40 إلى 80 بدلاً من 0.40 إلى 0.80، وأن نموذجه كامل الاتصال كان ينتهي بـ ReLU يمنع الـ logits السالبة.
السؤال
ماذا تضيف وصلات التخطي والتجميع الأقصى والالتفافات المزدوجة والكتل المتبقية، كلٌّ على حدة، إلى شبكة تجزئة، عندما يُدرَّب كل متغير على البيانات نفسها ويُقيَّم بالمقياس نفسه؟
أهم الميزات
- ستة إعدادات مسبقة من فئة نموذج واحدة: unet وunet-strided وunet-single وunet-residual وsegnet (بلا وصلات تخطٍّ) وfcn، إضافة إلى مفاتيح لدمجها بحرية.
- الخسارة كراية: BCE لكل بكسل، أو Dice ناعم، أو كلاهما (الافتراضي)، لقياس أثر خسارة التداخل على الاحتمالات.
- مقاييس من مصفوفة التباس واحدة: IoU وDice ودقة البكسل والدقة (precision) والاستدعاء (recall) ومتوسط IoU لكل صورة؛ وتُختار نقاط الحفظ على IoU التحقق.
- مسح للعتبة من 0.1 إلى 0.9 على قسم التحقق، مع الإبلاغ عن نتيجة الاختبار عند 0.5 وعند العتبة المختارة.
- مجموعتا بيانات بأمر واحد: مولّد أشكال اصطناعية دون اتصال (800 / 100 / 100 صورة في 4 ثوانٍ) ومجموعة فرعية عشوائية من Oxford-IIIT Pet بأقنعة ثنائية.
- سكربتات مقارنة وقبل/بعد تدرّب كل متغير على البيانات نفسها، وتكتب جدول النتائج، وتسجل التنبؤات بعد كل حقبة في أشكال وملفات GIF.
- 29 فحصاً بـ pytest، منها اختبار أن U-Net يفرط في تخصيص دفعة واحدة وأن الرأس كامل الاتصال يستطيع إخراج logits سالبة، إضافة إلى دفتر Kaggle / Colab يشرح كل متغير بين الخلايا.
كيف يعمل
تقليل الدقة أربع مرات
كتلة ConvBlock ابتدائية تليها أربع خطوات نزول تنصّف الدقة في كل مرة، بتجميع أقصى 2 × 2 ثابت أو التفاف 3 × 3 متعلَّم بخطوة 2، مع التفاف واحد أو اثنين في كل كتلة ومسار متبقٍّ اختياري.
رفع الدقة والضم
أربع خطوات ConvTranspose 2 × 2 تعيد عنق الزجاجة إلى الحجم الكامل؛ مع تفعيل وصلات التخطي تضم كل خطوة خريطة المشفّر ذات الحجم نفسه، ومع تعطيلها لا يرى المفكّك سوى عنق الزجاجة.
أو الاستغناء عن الالتفافات
يسطّح خط الأساس كامل الاتصال الصورة، ويمررها عبر مكدس من طبقات Linear، ويعيد تشكيل المخرج، فلا يملك أي محلية ولا أي تسلسل هرمي على الإطلاق.
التدريب بـ BCE + Dice
AdamW بإحماء وتناقص جيب التمام، ودفعة 16، وصور 96 px؛ تقيّم BCE كل بكسل ويقيّم Dice الناعم التداخل، ما يدفع الاحتمالات نحو 0 أو 1.
التقييم واختيار العتبة
الاحتمالات فوق عتبة ما تصبح القناع؛ وتُقرأ IoU وDice والدقة والاستدعاء من مصفوفة التباس واحدة، وتُمسح العتبة على قسم التحقق قبل تقييم قسم الاختبار.
أمثلة



المدخل
unetseg-data shapes && python scripts/compare_all.py --data data/shapes --epochs 6 --max-train 600 --threads 1 --out runs/shapes
المخرج
test IoU: unet-single 0.660, unet-residual 0.633, unet 0.560, segnet 0.489, unet-strided 0.422, fcn 0.102 (Dice 0.796, 0.775, 0.718, 0.657, 0.593, 0.184); pixel accuracy above 0.83 for every model, including fcn.
التقنيات المستخدمة
متغيرات النموذج والخسائر والمقاييس وحلقة التدريب
تنزيل Oxford-IIIT Pet والتعزيزات المشتركة الافتراضية
29 فحصاً على النماذج وأقسام البيانات والمقاييس وفرط تخصيص دفعة واحدة
المنحنيات وشبكات التنبؤ وتراكبات TP / FP / FN ومخططات العتبة والالتباس
مولّد الأشكال ومقاييس مصفوفة الالتباس
دفتر GPU يدرّب U-Net أعرض على صور Pet الـ7,390 كلها
الدفتر نفسه
ما تعلمته
- دقة البكسل تخفي كل شيء: كل نموذج على الأشكال، بما فيه كامل الاتصال، يسجل فوق 0.83، لذا فإن IoU هو الرقم الذي تُختار عليه نقاط الحفظ
- تدريبات الست حقب مشوّشة: نفس U-Net بلغ IoU اختبار 0.47 أو 0.56 بحسب عدد الخيوط (threads) فقط، لذا فالفروق دون 0.1 بين صفوف جدول الأشكال ضجيج
الحدود
- الأرقام تدريبات قصيرة على CPU (600 صورة تدريب، 96 px، 6 حقب) غايتها مقارنة المتغيرات لا المعايرة؛ وتدريب GPU على المجموعة الكاملة في الدفتر لا أرقام مبلَّغاً عنها له
- U-Net بالالتفاف المفرد وU-Net المتبقي يتقدمان على U-Net العادي بعد 6 حقب لأنهما يتعلمان أسرع؛ والعادي كان لا يزال يتحسن، لذا فالترتيب النهائي مجهول
الكلمات المفتاحية
U-Net · تجزئة الصور · التجزئة الثنائية · وصلات التخطي · التجميع الأقصى مقابل الالتفاف بخطوة · الكتل المتبقية · SegNet · شبكة التفافية كاملة · خسارة Dice · IoU · مسح العتبة · Oxford-IIIT Pet · PyTorch · الرؤية الحاسوبية · التعلم العميق