بسام أحمد
←العودة إلى المشاريع

إعادة تنفيذ وتقييم ورقة بحثية

تحسين الصور تحت الماء بفصل الخصائص متعدد المقاييس

تنفيذ وتقييم بلغة PyTorch لبنية تعلّم عميق متعددة المقاييس تستعيد الصور المتدهورة تحت الماء.

الرؤية الحاسوبيةالتعلّم العميقاستعادة الصورقابلية إعادة الإنتاج
صور تحت الماء قبل التحسين وبعده جنبًا إلى جنب

الأدوات

PythonPyTorchOpenCVNumPyscikit-image

01 — نظرة عامة

الصور تحت الماء تميل إلى الأزرق والأخضر، وتبدو ضبابية ومنخفضة التباين، لأن الماء يمتص الضوء ويشتّته بشكل غير متساوٍ. أعدت تنفيذ MD-Net، وهي شبكة لتحسين الصور تحت الماء تفصل الصورة إلى مكوناتها الفيزيائية على عدة مقاييس (Yan وآخرون، Scientific Reports، 2025)، ودرّبتها على مجموعتي LSUI وUIEB، وقيّمتها على ثلاث مجموعات اختبار بخمسة معايير مقابل خمس طرق كلاسيكية.

الحصيلة:

  • ترفع الشبكة PSNR من 13.3 dB إلى 21.5 dB على LSUI، ومن 17.0 dB إلى 20.3 dB على UIEB، وتتفوق على الطرق الكلاسيكية الخمس في كل المعايير المرجعية (PSNR وSSIM وLPIPS) على المجموعتين.
  • أرقامي المطلقة لا تطابق أرقام الورقة. فالورقة لا تحدد أي صور تشكّل مجموعة اختبارها، فكانت صوري مختلفة وأصعب. توضّح هذه الصفحة كيف قارنت بإنصاف مع ذلك.
  • في الطريق وجدت وأصلحت خللًا في التقييم جعل مخرجات جيدة تبدو معطوبة، ووثّقت حالات الفشل بدل إخفائها.

02 — المشكلة

الصورة تحت الماء ليست مجرد نسخة أغمق أو أقل تباينًا من صورة واضحة. فالماء يخمّد كل طول موجي بصورة مختلفة، فيختفي الأحمر خلال أمتار قليلة، وتعيد الجسيمات العالقة تشتيت الضوء نحو الكاميرا فتظهر كضباب. المطلوب هو استعادة صورة واضحة بألوان طبيعية من صورة واحدة متدهورة.

تستعمل الورقة نموذج التصوير المبسّط المعروف:

I(x) = J(x) · t(x) + B · (1 − t(x))

حيث I الصورة المرصودة، وJ الصورة الواضحة (إشعاع المشهد)، وt خريطة النفاذية، وB ضوء الخلفية العام.

03 — لماذا المشكلة صعبة

  • مسألة غير محدّدة جيدًا. يجب تقدير ثلاثة مجاهيل (J وt وB) من صورة واحدة.
  • التدهور غير منتظم. يعتمد على العمق ونوع الماء والإضاءة والطول الموجي، فلا يكفي تصحيح لوني أو تبايني واحد شامل.
  • لا توجد حقيقة مرجعية حقيقية. صور المرجع في UIEB اختارها محكّمون بشريون من مخرجات عدة طرق تحسين، فالقرب من المرجع مؤشر تقريبي على الجودة فقط.
  • المعايير تختلف. المعايير المرجعية (PSNR وSSIM وLPIPS) وغير المرجعية (UCIQE وUIQM) قد ترتّب الطرق نفسها ترتيبًا مختلفًا، لأن المعايير غير المرجعية تكافئ التباين.

04 — المنهج

لا تحوّل MD-Net الصورة المتدهورة مباشرة إلى صورة واضحة. بل تفصلها إلى الكميات الفيزيائية في نموذج التصوير، ثم تتحقق من نفسها بإعادة تركيبها:

  1. شبكة فرعية تقدّر الصورة الواضحة J،
  2. شبكة فرعية ثانية بالبنية نفسها تقدّر خريطة النفاذية t،
  3. تمويه غاوسي قوي للصورة المدخلة يعطي ضوء الخلفية B،
  4. تُركَّب الثلاثة في صورة مدخلة معاد بناؤها I'، وتقارن دالة الخسارة بينها وبين المدخل الحقيقي.

هذا يربط تنبؤات الشبكة بفيزياء المسألة بدل أن تبقى نموذجًا من صورة إلى صورة بصندوق أسود.

اتبعت الورقة والتنفيذ العلني للمؤلفين في البنية. مساهمتي هي خط التدريب، وتقييم دقيق، والطرق الأساسية للمقارنة، وتحليل مواضع النجاح والفشل.

05 — البنية

                  ┌────► SRD (إشعاع المشهد) ──────► J  الصورة المحسّنة
الصورة المدخلة I ─┼────► TMD (خريطة النفاذية) ────► t
                  └────► تمويه غاوسي ─────────────► B  ضوء الخلفية
                                   │
                  I' = J·t + B·(1 − t)  ──►  تُقارن مع I (خسارة إعادة البناء)

تستعمل SRD وTMD البنية نفسها بأوزان منفصلة. وتتكوّن كل منهما من كتلتين مخصصتين:

  • وحدة الدمج متعددة المستويات (MFM). ثلاثة فروع متوازية بالتفافات 3×3 و5×5 و7×7 تلتقط التفاصيل والسياق عند مجالات استقبال مختلفة. وتتنبأ شبكة صغيرة بأوزان لكل بكسل تدمج الفروع الثلاثة.
  • وحدة تقدير الوزن ثنائية الطبقة (DWEU). أربع وحدات متبقية متتالية، كل منها يجمع انتباه القنوات (أي خرائط الخصائص مهمة) مع انتباه البكسلات (أي المواضع مهمة).

الكتل وحدات PyTorch منفصلة وقابلة لإعادة الاستعمال (custom_blocks/)، وتُجمَّع في الشبكة الكاملة داخل neural_net.py.

06 — الصياغة الرياضية

دالة الخسارة من ثلاثة حدود بأوزان متساوية:

L = L_A + L_C + L_M

L_A = MSE( I , I' )                      إعادة البناء: الصورة المعاد تركيبها يجب أن تطابق المدخل
L_C = Σ_c ( mean(J_c) − 0.5 )²           مبدأ العالم الرمادي على الصورة المحسّنة
L_M = MSE( J , reference )               حد إشرافي مقابل صورة المرجع

L_A هو ما تسميه الورقة خسارة شبه تنافسية (pseudo-adversarial): خطأ إعادة بناء على مستوى الخصائص وليس شبكة GAN كاملة. ولا تذكر الورقة أوزان الحدود الثلاثة (بل تحتوي معادلة الخسارة الكلية فيها خطأً مطبعيًا)، فاعتماد الأوزان 1:1:1 هو افتراضي.

07 — التنفيذ

المستودع منظَّم كوحدات قابلة لإعادة الاستعمال وليس كدفتر تدريب واحد:

model/
  custom_blocks/   MFM وDWEU وطبقات وزن البكسل/القناة وضوء الخلفية
  datasets/        مجموعة البيانات المزدوجة ومجموعة التحدي بلا مرجع
  neural_net.py    SRD + TMD + نموذج التصوير
  total_loss.py    L_A + L_C + L_M
  trainer.py       حلقة التدريب والتحقق مع نقاط الحفظ والاستئناف
  util.py          تحويل tensor ↔ صورة (مع القصّ) وتحميل نقاط الحفظ
uie_metrics.py     PSNR وSSIM وUCIQE وUIQM
colab_notebook.ipynb   التدريب والاختبار والطرق الأساسية وLPIPS وSIFT/Canny والأشكال

ثلاثة دروس هندسية كانت بأهمية النموذج نفسه:

  • القصّ قبل الحفظ. خرج الشبكة غير مقيَّد. وتحويل القيم الخارجة عن النطاق إلى 8 بت دون قصّ يجعلها تلتف، فتظهر نقاط حمراء وبقع ساطعة بدت كأنها فشل في النموذج. القصّ إلى [0، 1] أصلحها.
  • التحقق من تحميل نقطة الحفظ. في مرحلة ما قرأت النتائج الضعيفة على أنها مشكلة تعميم، بينما كان التقييم يعمل على شبكة غير مدرَّبة. أضفت فحصًا يحذّر إذا بدت إحصاءات الخرج كشبكة غير مدرَّبة.
  • المقارنة بالدقة نفسها. UIQM وUCIQE يعتمدان على حجم الصورة، فتُصغَّر الصور الخام إلى حجم مدخل النموذج قبل المقارنة.

08 — الإعداد التجريبي

البند الإعداد
بيانات التدريب 3,794 زوجًا من LSUI + 800 زوج من UIEB
بيانات الاختبار 485 صورة LSUI، و90 UIEB، و60 UIEB Challenging (بلا مرجع)
حجم المدخل 350 × 350
المحسّن Adam بمعدل تعلم 1e-4
الجدول 50 دورة، حجم الدفعة 4
المعايير PSNR وSSIM وLPIPS (مرجعية)؛ UCIQE وUIQM (غير مرجعية)
الطرق الأساسية (baselines) Gray-World وCLAHE وGray-World + CLAHE وDCP وUDCP (تنفيذي أنا بمعاملات افتراضية)
اختبار تطبيقي مطابقات SIFT وتوافق حواف Canny مع المرجع

استعملت أحجام التقسيم نفسها في الورقة، آخذًا الصور بترتيب أسماء الملفات، لأن الورقة لا تحدد أي الصور في مجموعات الاختبار.

09 — النتائج

MD-Net مقابل الصورة الخام

المجموعة الطريقة PSNR ↑ SSIM ↑ LPIPS ↓ UCIQE ↑ UIQM ↑
LSUI خام 13.27 0.712 0.515 0.426 1.98
LSUI MD-Net 21.53 0.895 0.204 0.558 2.66
UIEB خام 17.04 0.765 0.251 0.518 2.54
UIEB MD-Net 20.33 0.872 0.167 0.596 2.89
Challenging خام – – – 0.474 1.92
Challenging MD-Net – – – 0.560 2.33

مقابل الطرق الكلاسيكية (المعايير المرجعية؛ الأفضل بخط عريض)

الطريقة LSUI PSNR LSUI SSIM LSUI LPIPS ↓ UIEB PSNR UIEB SSIM UIEB LPIPS ↓
خام 13.27 0.712 0.515 17.04 0.765 0.251
Gray-World 14.94 0.765 0.329 16.72 0.771 0.306
CLAHE 13.87 0.782 0.439 17.09 0.799 0.239
Gray-World + CLAHE 15.91 0.828 0.265 17.09 0.801 0.282
DCP 13.02 0.678 0.430 15.34 0.729 0.246
UDCP 12.00 0.613 0.394 12.45 0.618 0.304
MD-Net 21.53 0.895 0.204 20.33 0.872 0.167

تحفظان يستحقان القراءة:

  • المعايير المبنية على التباين تفضّل CLAHE. في UIQM غير المرجعي، يتفوق Gray-World + CLAHE على MD-Net في UIEB (3.03 مقابل 2.89) وفي مجموعة Challenging (2.45 مقابل 2.33). يكافئ UIQM التباين والحدة اللذين يرفعهما CLAHE مباشرة، فأقرأه إلى جانب المعايير المرجعية والصور.
  • مُشرَف عليه مقابل بلا تدريب. MD-Net يتعلم من صور المرجع والطرق الكلاسيكية لا تتعلم، فالمعايير المرجعية تميل طبيعيًا لصالحه.

فحص تطبيقي. توافق حواف Canny مع المرجع هو الأعلى لـ MD-Net على المجموعتين (F1 يساوي 0.745 على LSUI و0.862 على UIEB). ومطابقات SIFT مع المرجع هي الأعلى لـ MD-Net على LSUI (594 مقابل 507 لـ CLAHE)، بينما يتقدم CLAHE على UIEB (841 مقابل 803).

مقابل الورقة.

المجموعة الورقة (PSNR / SSIM) هذا العمل (PSNR / SSIM)
LSUI 23.21 / 0.837 21.53 / 0.895
UIEB 24.05 / 0.892 20.33 / 0.872

لا أدّعي مطابقة الورقة أو التفوق عليها. فأرقام الصور الخام عندي تختلف عن أرقام الورقة أيضًا (مثلًا 13.3 مقابل 21.3 dB في PSNR على LSUI)، وهذا يدل أن صور اختباري مختلفة وأصعب، فلا تصح مقارنة القيم المطلقة. أما مقدار التحسن عن الخام فهو المعيار الأعدل: +8.3 dB هنا مقابل +1.9 dB في الورقة على LSUI، و+3.3 dB مقابل +4.9 dB على UIEB.

10 — مقارنة نوعية

كل صف صورة اختبار واحدة؛ والأعمدة هي الصورة الخام، وCLAHE، وGray-World + CLAHE، وMD-Net، والمرجع. وتتضمن الصفوف حالات جيدة ومتوسطة وأسوأ الحالات بحسب PSNR، فلا تعرض الشبكة أفضل النتائج فقط.

LSUI: خام، CLAHE، Gray-World + CLAHE، MD-Net، المرجع UIEB: خام، CLAHE، Gray-World + CLAHE، MD-Net، المرجع UIEB Challenging: خام، CLAHE، Gray-World + CLAHE، MD-Net

انطباعي البصري، وهو ذاتي (لم تُجرَ دراسة مستخدمين): تصحح MD-Net الميل الأزرق-الأخضر بصورة أطبع من الطرق الأساسية، وفي كثير من الصور تبدو ألوانها أطبع حتى من صورة المرجع في المجموعة. أما Gray-World + CLAHE وصور المرجع فكثيرًا ما تكون أكثر حدة.

11 — حالات الفشل

  • الصور المهيمن عليها اللون الأحمر. حين يكون في الصورة ميل أحمر بدل الأزرق-الأخضر المعتاد، تكون النتيجة سيئة. فرضيتي، ولم أتحقق منها، أن الشبكة تعلّمت تعزيز الأحمر لأنه أكثر الألوان تخميدًا في بيانات التدريب، فتُصحَّح الصور الحمراء أصلًا أكثر من اللازم.
  • ضباب متبقٍّ. بعض المخرجات تحتفظ بغشاوة بيضاء خفيفة منتشرة، والتباين العام أقل من الطرق المبنية على CLAHE.
  • مراجع مشكوك فيها. قد تأتي بعض أدنى درجات PSNR من المرجع لا من المخرج: فالورقة نفسها تشير إلى تشوه لوني في بعض صور المرجع في هذه المجموعات. لم أتحقق من هذا صورة بصورة.

12 — ما تعلمته

  • تحويل ورقة بحثية إلى برنامج يعمل يعني حسم ما تسكت عنه: أوزان الخسارة، وخيارات التطبيع، وأي الصور في مجموعة الاختبار. كان عليّ أن أقرر كلًّا منها وأوثّقه.
  • التقييم يستحق من الهندسة بقدر النموذج. سطر قصّ ناقص ونقطة حفظ غير محمَّلة أنتج كلٌّ منهما استنتاجات مقنعة وخاطئة إلى أن أضفت فحوصات لهما.
  • المعايير تقيس أشياء مختلفة. النظر إلى خمسة معايير وخمس طرق أساسية والصور نفسها أعطى صورة أصدق بكثير من أي رقم منفرد.
  • إعادة إنتاج نتيجة وتفسيرها عملان مختلفان. مقارنة التحسن عن الصورة الخام بدل الأرقام المطلقة كانت الطريقة العادلة الوحيدة لربط نتائجي بنتائج الورقة.

ما كنت سأحسّنه لاحقًا

  • إصلاح حساب ضوء الخلفية الموروث من الكود المرجعي، الذي يستعمل أول صورة فقط من كل دفعة، وإعادة التدريب لرؤية الأثر.
  • إجراء تجارب الحذف (بدون DWEU أو بدون خسارة إعادة البناء) للتحقق من ادعاءات الورقة.
  • قياس الأثر على مهمة تطبيقية حقيقية، مثل دقة كشف الأجسام على إطارات محسّنة مقابل خام، والاختبار على لقطات من كاميرا ونوع ماء مختلفين.

13 — الشيفرة / الورقة

هذا تنفيذ مستقل لأغراض التعلم وليس تابعًا لمؤلفي الورقة. المجموعتان LSUI وUIEB مستعملتان وفق شروطهما.