
يحتوي هذا المستودع على رمز للتثبيت ونشر محسن دقة الصور. هذا النموذج قادر على زيادة صورة البكسل بعامل 4 ، مع توليد تفاصيل واقعية للصور.
يعتمد GAN على مستودع GitHub هذا وعلى هذا المقال البحثي.
تم تدريب النموذج على 600000 صورة من مجموعة بيانات OpenImages V4 ، ويتم استضافة ملفات النموذج على تخزين كائن Cloud IBM. ينشر الرمز في هذا المستودع النموذج كخدمة ويب في حاوية Docker. تم تطوير هذا المستودع كجزء من تبادل الأصول Model Developer Developer و API العام مدعوم من IBM Cloud.
| اِختِصاص | طلب | صناعة | نطاق | بيانات التدريب | تنسيق بيانات الإدخال |
|---|---|---|---|---|---|
| رؤية | الدقة الفائقة | عام | Tensorflow | OpenImages v4 | الصورة (RGB/HWC) |
| set5 | المؤلف Srgan | هذا srgan |
|---|---|---|
| PSNR | 29.40 | 29.56 |
| ssim | 0.85 | 0.85 |
| set14 | المؤلف Srgan | هذا srgan |
|---|---|---|
| PSNR | 26.02 | 26.25 |
| ssim | 0.74 | 0.72 |
| BSD100 | المؤلف Srgan | هذا srgan |
|---|---|---|
| PSNR | 25.16 | 24.4 |
| ssim | 0.67 | 0.67 |
تم تقييم أداء هذا التنفيذ على ثلاث مجموعات بيانات: Set5 و Set14 و BSD100. تم تقييم مقاييس PSNR (إشارة الذروة إلى نسبة الضوضاء) ومقاييس SSIM (مؤشر التشابه الهيكلي) ، على الرغم من أن الورقة تناقش MOS (متوسط درجة الرأي) باعتبارها المقياس الأكثر ملاءمة. في جوهرها ، يتداول تطبيق SRGAN درجة أفضل من PSNR أو SSIM لتحقيق نتيجة أكثر جاذبية للعين البشرية. هذا يؤدي إلى مجموعة من صور الإخراج مع تفاصيل أكثر واقعية وواقعية.
ملاحظة: تم تدريب SRGAN في الورقة على عينة من 350K ImageNet ، في حين تم تدريب SRGAN على 600 ألف صورة V4.
| عنصر | رخصة | وصلة |
|---|---|---|
| هذا المستودع | Apache 2.0 | رخصة |
| الأوزان النموذجية | Apache 2.0 | رخصة |
| رمز النموذج (الطرف الثالث) | معهد ماساتشوستس للتكنولوجيا | رخصة |
| اختبار عينات | CC بواسطة 2.0 | الأصول readme |
| CC0 | الأصول readme |
docker : واجهة سطر الأوامر Docker. اتبع تعليمات التثبيت لنظامك.لتشغيل صورة Docker ، التي تبدأ تلقائيًا في واجهة برمجة تطبيقات التقديم النموذجية:
$ docker run -it -p 5000:5000 quay.io/codait/max-image-resolution-enhancer
سيؤدي ذلك إلى سحب صورة تم إنشاؤها مسبقًا من سجل حاوية quay.io (أو استخدام صورة موجودة إذا تم تخزينها محليًا بالفعل) وقم بتشغيلها. إذا كنت تفضل الخروج وإنشاء النموذج محليًا ، فيمكنك اتباع الخطوات المحلية أدناه.
يمكنك نشر الخدمات الدقيقة التي تخدم النماذج على Red Hat OpenShift من خلال اتباع التعليمات الخاصة بوحدة التحكم على شبكة الإنترنت OpenShift أو CLI منصة حاوية OpenShift في هذا البرنامج التعليمي ، مع تحديد quay.io/codait/max-image-resolution-enhancer كاسم صورة.
يمكنك أيضًا نشر النموذج على Kubernetes باستخدام أحدث صورة Docker على Quay.
على مجموعة Kubernetes الخاصة بك ، قم بتشغيل الأوامر التالية:
$ kubectl apply -f https://github.com/IBM/max-image-resolution-enhancer/raw/master/max-image-resolution-enhancer.yaml
سيكون النموذج متاحًا داخليًا في المنفذ 5000 ، ولكن يمكن الوصول إليه أيضًا خارجيًا من خلال NodePort .
يمكن العثور هنا على برنامج تعليمي أكثر تفصيلاً حول كيفية نشر هذا النموذج الأقصى على الإنتاج على IBM Cloud.
استنساخ هذا المستودع محليا. في محطة ، قم بتشغيل الأمر التالي:
$ git clone https://github.com/IBM/max-image-resolution-enhancer.git
تغيير الدليل إلى مجلد قاعدة المستودع:
$ cd max-image-resolution-enhancer
لبناء صورة Docker محليًا ، قم بتشغيل:
$ docker build -t max-image-resolution-enhancer .
سيتم تنزيل جميع أصول النماذج المطلوبة أثناء عملية الإنشاء. لاحظ أن صورة Docker هذه هي وحدة المعالجة المركزية هذه فقط (سنضيف دعمًا لصور GPU لاحقًا).
لتشغيل صورة Docker ، التي تبدأ تلقائيًا في واجهة برمجة تطبيقات التقديم النموذجية:
$ docker run -it -p 5000:5000 max-image-resolution-enhancer
يقوم خادم API تلقائيًا بإنشاء صفحة وثائق اختيارية تفاعلية. انتقل إلى http://localhost:5000 لتحميله. من هناك يمكنك استكشاف API وأيضًا إنشاء طلبات اختبار.
استخدم model/predict بنقطة النهاية لتحميل صورة اختبار (يمكنك استخدام إحدى صور الاختبار من samples/test_examples/low_resolution ) من أجل إرجاع صورة إخراج عالية الدقة.
صورة الإدخال المثالية هي ملف PNG بدقة بين 100 × 100 و 500 × 500 ، ويفضل أن يكون ذلك دون أي معالجة بعد الالتحاق والألوان المبهجة. هذا النموذج قادر على إنشاء تفاصيل من صورة بكسل (منخفضة DPI) ، ولكنه غير قادر على تصحيح صورة "غير واضحة".
اليسار: صورة الإدخال (128 × 80). اليمين: صورة الإخراج (512 × 320)

يمكنك أيضًا اختباره على سطر الأوامر ، على سبيل المثال:
$ curl -F "image=@samples/test_examples/low_resolution/food.png" -XPOST http://localhost:5000/model/predict > food_high_res.png
سيرسل الأمر أعلاه ملف food.png منخفض الدقة إلى النموذج ، وحفظ صورة الإخراج عالية الدقة إلى ملف food_high_res.png في دليل الجذر.
لتشغيل تطبيق Flask API في وضع التصحيح ، قم بتحرير config.py لتعيين DEBUG = True ضمن إعدادات التطبيق. ستحتاج بعد ذلك إلى إعادة بناء صورة Docker (انظر الخطوة 1).
يرجى تذكر تعيين DEBUG = False عند تشغيل النموذج في الإنتاج.
لإيقاف حاوية Docker ، اكتب CTRL + C في المحطة الخاصة بك.
model/predict بنقطة النهاية يقتل حاوية Docker مع Killed الرسالةمن المحتمل أن يكون ذلك بسبب القيد الافتراضي لتخصيص ذاكرة Docker إلى 2 جيجابايت. انتقل إلى قائمة
Preferencesضمن تطبيق سطح المكتب Docker. استخدم شريط التمرير لزيادة الذاكرة المتاحة إلى 8 جيجابايت وأعد تشغيل سطح المكتب Docker.
يولد هذا النموذج التفاصيل بشكل أساسي "من الهواء الرقيق". إن إنشاء شيء من لا شيء غير ممكن دون وضع افتراضات. تحاول الشبكة التعرف على العناصر في الصورة منخفضة الدقة التي يمكن أن تستنتج منها الواقع (العين البشرية | الدقة الفائقة). إذا كانت مجموعة من وحدات البكسل تشبه بقوة ملاحظة لا تتعلق بمحتوى الصورة ، فقد يؤدي ذلك إلى مراقبة النتائج التي ليست "ممكنة جسديًا".
على سبيل المثال: ربما تم تحويل بكسل أبيض في صورة منخفضة الدقة إلى ندفة الثلج ، على الرغم من أن الصورة الأصلية قد تكون قد تم التقاطها في الصحراء. هذا المثال خيالي ولم يتم ملاحظته بالفعل.
للأسف ، لا مفر من مراقبة المصنوعات اليدوية في بعض الصور ، لأن أي شبكة عصبية تخضع لقيود وخصائص بيانات التدريب الفنية.
ضع في اعتبارك أن أفضل النتائج تتحقق مع ما يلي:
- صورة PNG
- صورة تم تكبيرها بشكل كافٍ. خلال هذه العملية ، تجمع الشبكة كتلة من وحدات البكسل معًا. إذا كانت الكتلة تحتوي على تفاصيل أكثر مما تنتجها الشبكة ، فستكون النتيجة زائفة.
- صورة تم التقاطها تحت الضوء الطبيعي ، بدون مرشحات ، وبضمان ألوان مشرقة أو مبهجة. لم يتم تدريب الشبكة العصبية على صور تم تحريرها بشكل كبير.
- الصورة التي لها دقة عالية بما فيه الكفاية لعدم إرباك الشبكة مع إمكانيات متعددة (مثل بكسل وحيد في صورة منخفضة الدقة يمكن أن تمثل سيارة كاملة ، شخص ، شطيرة ، ..)
- هذا النموذج قادر على إنشاء تفاصيل من صورة بكسل (منخفضة DPI) ، ولكنه غير قادر على تصحيح صورة "غير واضحة".
إذا كنت مهتمًا بالمساهمة في مشروع تبادل الأصول النموذجية أو لديك أي استفسارات ، فيرجى اتباع التعليمات هنا.