المثال رقم 1 — المحطة القديمة: عرض المقارنة بدقة 24 بت عالية الدقة، الصورة الأصلية CC-BY-SA @siv-athens.
كما رأينا على شاشة التلفزيون! ماذا لو كان بإمكانك زيادة دقة صورك باستخدام التكنولوجيا من مختبرات CSI؟ بفضل التعلم العميق و #NeuralEnhance
، أصبح من الممكن الآن تدريب شبكة عصبية لتكبير صورك بمعدل 2x أو حتى 4x. ستحصل على نتائج أفضل من خلال زيادة عدد الخلايا العصبية أو التدريب باستخدام مجموعة بيانات مشابهة لصورتك ذات الدقة المنخفضة.
الصيد؟ تقوم الشبكة العصبية بهلوسة التفاصيل بناءً على تدريبها من أمثلة الصور. إنها لا تعيد بناء صورتك تمامًا كما لو كانت عالية الدقة. هذا ممكن فقط في هوليوود - ولكن استخدام التعلم العميق باعتباره "الذكاء الاصطناعي الإبداعي" يعمل وهو أمر رائع تمامًا! إليك كيف يمكنك البدء...
يسمى البرنامج النصي الرئيسي enhance.py
، والذي يمكنك تشغيله باستخدام Python 3.4+ بمجرد إعداده على النحو التالي. الوسيطة --device
التي تتيح لك تحديد وحدة معالجة الرسومات (GPU) أو وحدة المعالجة المركزية (CPU) التي تريد استخدامها. بالنسبة للعينات أعلاه، إليك نتائج الأداء:
الافتراضي هو استخدام --device=cpu
، إذا كان لديك إعداد بطاقة NVIDIA مع CUDA بالفعل، فجرّب --device=gpu0
. على وحدة المعالجة المركزية، يمكنك أيضًا تعيين متغير البيئة إلى OMP_NUM_THREADS=4
، وهو أمر مفيد للغاية عند تشغيل البرنامج النصي عدة مرات بالتوازي.
قائمة بأمثلة أسطر الأوامر التي يمكنك استخدامها مع النماذج المدربة مسبقًا المتوفرة في إصدارات GitHub:
# Run the super-resolution script to repair JPEG artefacts, zoom factor 1:1.
python3 enhance.py --type=photo --model=repair --zoom=1 broken.jpg
# Process multiple good quality images with a single run, zoom factor 2:1.
python3 enhance.py --type=photo --zoom=2 file1.jpg file2.jpg
# Display output images that were given `_ne?x.png` suffix.
open * _ne ? x.png
فيما يلي قائمة بالنماذج وأنواع الصور ومستويات التكبير/التصغير المدعومة حاليًا في جدول واحد.
سمات | --model=default | --model=repair | --model=denoise | --model=deblur |
---|---|---|---|---|
--type=photo | 2x | 1x | … | … |
يتم توفير النماذج المدربة مسبقًا في إصدارات GitHub. يعد التدريب الخاص بك عملية دقيقة قد تتطلب منك اختيار المعلمات بناءً على مجموعة بيانات الصورة الخاصة بك.
# Remove the model file as don't want to reload the data to fine-tune it.
rm -f ne ? x * .pkl.bz2
# Pre-train the model using perceptual loss from paper [1] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=50
--perceptual-layer=conv2_2 --smoothness-weight=1e7 --adversary-weight=0.0
--generator-blocks=4 --generator-filters=64
# Train the model using an adversarial setup based on [4] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=250
--perceptual-layer=conv5_2 --smoothness-weight=2e4 --adversary-weight=1e3
--generator-start=5 --discriminator-start=0 --adversarial-start=5
--discriminator-size=64
# The newly trained model is output into this file...
ls ne ? x-custom- * .pkl.bz2
المثال رقم 2 — ردهة البنك: عرض المقارنة بدقة 24 بت عالية الدقة، الصورة الأصلية CC-BY-SA @benarent.
أسهل طريقة للتشغيل هي تثبيت Docker. بعد ذلك، يجب أن تكون قادرًا على تنزيل الصورة المعدة مسبقًا وتشغيلها باستخدام أداة سطر أوامر docker
. تعرف على المزيد حول صورة alexjc/neural-enhance
على صفحة Docker Hub الخاصة بها.
إليك أبسط طريقة يمكنك من خلالها استدعاء البرنامج النصي باستخدام docker
، بافتراض أنك معتاد على استخدام الوسيطة -v
لتركيب المجلدات، يمكنك استخدام هذا مباشرة لتحديد الملفات لتحسينها:
# Download the Docker image and show the help text to make sure it works.
docker run --rm -v ` pwd ` :/ne/input -it alexjc/neural-enhance --help
صورة واحدة - من الناحية العملية، نقترح عليك إعداد اسم مستعار يسمى enhance
لعرض المجلد الذي يحتوي على صورتك المحددة تلقائيًا، حتى يتمكن البرنامج النصي من قراءته وتخزين النتائج حيث يمكنك الوصول إليها. هذه هي الطريقة التي يمكنك القيام بها في وحدة التحكم الطرفية الخاصة بك على OSX أو Linux:
# Setup the alias. Put this in your .bashrc or .zshrc file so it's available at startup.
alias enhance= ' function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne '
# Now run any of the examples above using this alias, without the `.py` extension.
enhance --zoom=1 --model=repair images/broken.jpg
صور متعددة - لتحسين صور متعددة في صف واحد (بشكل أسرع) من مجلد أو مواصفات حرف البدل، تأكد من اقتباس الوسيطة إلى أمر الاسم المستعار:
# Process multiple images, make sure to quote the argument!
enhance --zoom=2 " images/*.jpg "
إذا كنت تريد التشغيل على NVIDIA GPU، فيمكنك بدلاً من ذلك تغيير الاسم المستعار لاستخدام الصورة alexjc/neural-enhance:gpu
التي تأتي مع CUDA وCUDNN المثبتين مسبقًا. ثم قم بتشغيله داخل nvidia-docker ويجب أن يستخدم أجهزتك الفعلية!
يتطلب هذا المشروع إصدار Python 3.4+ وستحتاج أيضًا إلى numpy
و scipy
(مكتبات الحوسبة الرقمية) بالإضافة إلى تثبيت python3-dev
على مستوى النظام. إذا كنت تريد المزيد من التعليمات التفصيلية، فاتبع ما يلي:
بعد جلب المستودع، يمكنك تشغيل الأوامر التالية من جهازك الطرفي لإعداد بيئة محلية:
# Create a local environment for Python 3.x to install dependencies here.
python3 -m venv pyvenv --system-site-packages
# If you're using bash, make this the active version of Python.
source pyvenv/bin/activate
# Setup the required dependencies simply using the PIP module.
python3 -m pip install --ignore-installed -r requirements.txt
بعد ذلك، يجب أن يكون لديك pillow
theano
lasagne
مثبتة في بيئتك الافتراضية. ستحتاج أيضًا إلى تنزيل هذه الشبكة العصبية المدربة مسبقًا (VGG19، 80 ميجابايت) ووضعها في نفس المجلد الذي يوجد به البرنامج النصي لتشغيلها. لإلغاء تثبيت كل شيء، يمكنك فقط حذف المجلد #/pyvenv/
.
المثال رقم 3 - دقة فائقة متخصصة للوجوه، تم تدريبها على أمثلة عالية الدقة لوجوه المشاهير فقط. تكون الجودة أعلى بكثير عند تضييق المجال من "الصور" بشكل عام.
يستخدم هذا الكود مجموعة من التقنيات من الأوراق التالية، بالإضافة إلى بعض التحسينات الطفيفة التي لم يتم توثيقها بعد (شاهد هذا المستودع للحصول على التحديثات):
شكر خاص لمساعدتهم ودعمهم بطرق مختلفة:
يوجد مترجم ملحق Python يسمى Cython، وهو مفقود أو تم تثبيته بشكل غير صحيح. حاول الحصول عليه مباشرةً من مدير حزم النظام بدلاً من PIP.
إصلاح: sudo apt-get install cython3
يحدث هذا عند التشغيل بدون وحدة معالجة الرسومات، ولم يتم العثور على مكتبات وحدة المعالجة المركزية (على سبيل المثال libblas
). لا يمكن تقييم تعبيرات الشبكة العصبية بواسطة Theano وهي تثير استثناءً.
إصلاح: sudo apt-get install libblas-dev libopenblas-dev
تحتاج إلى تثبيت Lasagne وTheano مباشرةً من الإصدارات المحددة في requirements.txt
، بدلاً من إصدارات PIP. هذه البدائل أقدم ولا تحتوي على الميزات المطلوبة.
الإصلاح: python3 -m pip install -r requirements.txt
يبدو أن جهازك الطرفي قد تم تكوينه بشكل خاطئ وغير متوافق مع الطريقة التي تتعامل بها Python مع اللغات المحلية. قد تحتاج إلى تغيير هذا في ملف .bashrc
أو أي برنامج نصي آخر لبدء التشغيل. وبدلاً من ذلك، سيصلح هذا الأمر المشكلة مرة واحدة لمثيل الصدفة هذا.
إصلاح: export LC_ALL=en_US.UTF-8
المثال رقم 4 — التجوّل الافتراضي: مقارنة المشاهدة بدقة عالية 24 بت، الصورة الأصلية CC-BY-SA @cyalex.