مقياس الصورة: هل تريد مقياس تكبير أم مقياس تغيير الحجم؟
يقوم مقياس تغيير الحجم بالتداخل بين البكسلات بينما يقوم مقياس التكبير بإعادة بنائها. أيهما تحتاج، مع نتائج مقاسة 2x و 4x والقيود الحقيقية للمتصفح.
"مقياس الصورة" يغطي أداتين تقومان بأشياء متعارضة لملف. يقوم مقياس تغيير الحجم بإعادة أخذ عينات من البكسلات التي لديك بالفعل، بحيث يصبح عرض 4000 بكسل 1080 بكسل ويصبح التفصيل متوسطًا إلى عينات أقل. يقوم مقياس التكبير بتشغيل الصورة من خلال نموذج مدرب يعيد بناء الحواف والملمس الذي لم يتم تخزينه أصلاً. كلاهما يغير الرقم في صندوق الأبعاد. يمكن لأحدهما فقط إضافة تفاصيل، وهو يقدم فقط 2x أو 4x.
كلاهما يعمل داخل علامة تبويب المتصفح. يقوم مقياس التكبير بتنزيل نموذجه إلى جهازك مرة واحدة، ثم يتم حساب كل بلاطة بعد ذلك على وحدة معالجة الرسومات الخاصة بك. لا يتم نشر أي شيء في أي مكان، لأنه لا يوجد مسار API للنشر ولا إجراء خادم في قاعدة الشيفرة (هذه هي البنية الكاملة، الموضحة في صفحة الخصوصية). كل مقياس آخر في هذه الفئة يقوم بتحميل ملفك ثم يعد بحذفه بعد ساعة أو ساعتين.
ما الفرق بين تغيير الحجم والتكبير؟
تغيير الحجم هو التداخل. يقوم مقياس تغيير الحجم بتسليم العمل إلى المتصفح، إما من خلال createImageBitmap مع `resizeQuality: "high"` أو من خلال `drawImage` على لوحة رسم مع imageSmoothingQuality مضبوطة على عالية. في كلتا الحالتين، تكون بكسل الإخراج متوسطًا مرجحًا للبكسلات المدخلة من حوله. لا يمكن للتداخل إنتاج حافة لم تكن في بيانات المصدر، لذا فإن التكبير من خلال التداخل يعطيك نسخة أكبر وأكثر نعومة من نفس المعلومات.
التكبير هو إعادة البناء. يقوم مقياسنا بتشغيل Real-ESRGAN realesr-general-x4v3، وهو نموذج توليدي مدرب على تخيل تفاصيل معقولة عند 4x، موصوف في ورقة 2021. يعالج الصورة في بلاطات 256 بكسل مع تداخل 16 بكسل على كل جانب، بحيث ترى البلاطة دائمًا سياق جيرانها قبل أن يتم كتابة المنطقة الأساسية. يقوم النموذج بالتخمين. عادةً ما تكون تلك التخمينات صحيحة على الوجوه والأقمشة والنصوص، ويمكن أن تكون خاطئة بشدة على الأنماط المتكررة الدقيقة.
أي واحد أحتاجه فعلاً؟
إذا كانت الحجم المستهدف أصغر من المصدر، فأنت بحاجة إلى مقياس تغيير الحجم ولا يوجد شيء لمناقشته. إذا كان الهدف أكبر، فالسؤال هو ما إذا كنت تستطيع تحمل القيود أدناه. إليك ما تفعله الأداتان فعليًا في بناءنا، مأخوذ من الشيفرة بدلاً من نصوص التسويق.
| مقياس تغيير الحجم | مقياس التكبير | |
|---|---|---|
| الاتجاه | أي حجم مستهدف، سواء للأعلى أو للأسفل | 2x أو 4x فقط |
| الطريقة | تداخل لوحة المتصفح | Real-ESRGAN realesr-general-x4v3 |
| تنسيق الإخراج | يتم الاحتفاظ بالتنسيق المصدر (يخرج GIF و AVIF كـ PNG) | دائمًا PNG |
| تحكم الجودة | PNG بدون فقد، وكل شيء آخر يعاد ترميزه بجودة 90 | لا شيء، PNG ليس لديه مفتاح جودة |
| حد الدفعة | 10 ملفات، 50 MB إجمالي | 1 ملف |
| حد الإدخال | فقط حد الدفعة | حوالي 32 ميجابكسل مع WebGPU، حوالي 1.1 ميجابكسل بدون |
| الإعدادات المسبقة | 15 حجم اجتماعي بالإضافة إلى 25/50/75 بالمئة | لا شيء، فقط أزرار 2x و 4x |
تستحق صف واحد تحذيرًا. يتم تعيين مقياس تغيير الحجم افتراضيًا على "عدم التكبير"، مما يقيد أي هدف مكتوب إلى الأبعاد الأصلية. تتجاوز الإعدادات الاجتماعية المسماة هذا القيد عن عمد، لأن إطار القصة المقيد 1080x1920 لا يتوافق مع أي مواصفات منصة على الإطلاق.
كم ينمو الملف عندما أقوم بالتكبير؟
الكثير، و PNG هو السبب. قمنا بتشغيل small.png، 400x269 و 177.1 KB، من خلال كلا الإعدادين. عند 2x، أصبح 800x538 و 782.8 KB. عند 4x، أصبح 1600x1076 و 2.7 MB. هذا تقريبًا 15 ضعف حجم الإدخال مقابل 16 ضعف البكسلات، وهو ما يبدو عليه الإخراج بدون فقد عندما يكون النموذج قد ملأ كل منطقة مسطحة بنسيج دقيق جديد. يقوم مقياس التكبير بكتابة PNG في كل حالة، لذا لا يوجد منزلق جودة للتداول ضده.

أرسل النتيجة إلى الضاغط قبل أن تستخدمها في أي مكان. وضع PNG "بدون ضغط" لدينا هو oxipng المستوى 3، بدون فقد حقيقي، وقد أخذ ملف alpha.png بحجم 942.4 KB إلى 383.9 KB. وضع اللوحة (imagequant) أخذ نفس الملف إلى 98.3 KB، وهو جيد للرسوم البيانية المسطحة وخاطئ لتكبير الصور الفوتوغرافية.
لماذا يبدو خيار 2x أكثر نعومة من 4x؟
لأن 2x ليس نموذجًا منفصلًا. يحتوي realesr-general-x4v3 على مقياس إخراج واحد فقط، وهو 4x. عندما تختار 2x، نقوم بتشغيل الاستدلال المتطابق ثم نقوم بتقليص كل بلاطة إلى نصف الحجم باستخدام مداخل المتداخل عند جودة تنعيم عالية. لذا فإن عمل وحدة معالجة الرسومات هو نفسه لكل من الزرين، و 2x هو إعادة بناء تليها إعادة أخذ عينات بهذا الترتيب. يحدث التقليل لكل بلاطة، مما يعني أن الصورة الكاملة 4x لا توجد أبدًا في الذاكرة خلال وظيفة 2x. إذا كنت تريد الإخراج الخام للنموذج، اختر 4x وقلصه بنفسك في مقياس تغيير الحجم بعد ذلك. عرض عرض المصدر الذي يحتاجه كل مضاعف للوصول إلى 3840 بكسل يتم حسابه بشكل منفصل.
لماذا لا يأخذ مقياس التكبير صورتي بحجم 24 ميجابكسل؟
يعتمد ذلك تمامًا على ما إذا كان متصفحك يبدأ WebGPU. مع تشغيل WebGPU، تقبل وظيفة 4x حوالي 32 ميجابكسل من الإدخال. بدونه، يتراجع onnxruntime-web إلى WASM أحادي الخيط وينخفض حد الإدخال إلى حوالي 1.1 ميجابكسل، وهو أصغر من أي صورة هاتف تقريبًا. هذه ليست حدًا تعسفيًا. يستغرق الاستدلال على هذا النموذج دقائق لكل ميجابكسل، وستعلق وظيفة 24 ميجابكسل علامة التبويب لبقية فترة ما بعد الظهر. ملف واحد في كل مرة، دائمًا.
ماذا يغير مقياس تغيير الحجم بخلاف عدد البكسلات؟
أكثر مما يتوقع الناس. يبقى مصدر PNG PNG ويظل بدون فقد. كل شيء آخر يتم إعادة ترميزه، بجودة 90 بشكل افتراضي، لذا فإن تغيير حجم JPEG هو أيضًا إعادة ضغط سواء أردت ذلك أم لا. يخرج مصدر GIF كـ PNG، وإذا كان ذلك GIF متحركًا، تفقد كل إطار باستثناء الأول. مصادر AVIF أيضًا تخرج كـ PNG. تهم أوضاع الملاءمة الثلاثة عندما تختلف نسب العرض إلى الارتفاع بين المصدر والهدف: يغطي المركز، والتشويه يمدد، ويقلص الاحتواء اللوحة إلى المنطقة الملائمة بدلاً من تعبئتها بشريط. إذا كنت بحاجة إلى منطقة محددة بدلاً من حجم محدد، فإن المقص هو الأداة المناسبة، على الرغم من أنه يأخذ ملفًا واحدًا في كل مرة ويعيد ترميز التنسيقات المفقودة بجودة مشفرة 92.
ماذا يجب أن أفعل بملفي الآن؟
تحقق من الحافة الطويلة أولاً. إذا كانت أقل من حوالي 1600 بكسل وتحتاج إلى تكبيرها، افتح مقياس التكبير، قم بتشغيل 2x، ثم ادفع PNG من خلال الضاغط في وضع بدون فقد. إذا كان ذلك أكبر، أو بالفعل عند الدقة التي تحتاجها، استخدم مقياس تغيير الحجم واختر إعدادًا اجتماعيًا حتى لا تضطر إلى البحث عن الأبعاد. إذا كان الهدف هو تغذية، فإن الأشكال الأربعة التي تقبلها إنستغرام والحد الأقصى 1080 بكسل خلفها هي القائمة التي يجب العمل منها.