يسهل اختيار إعداد جودة AVIF إذا كان حجم الملف هو المعيار الوحيد. أما الجزء الصعب فهو تحديد مقدار التدهور المرئي المقبول. فقيمة جودة تبلغ 40 لا تعني أن درجة الجودة الإدراكية تساوي 40، ولا تضمن الحصول على النتيجة نفسها لكل صورة. إذ يمكن أن تتفاوت استجابة الصور المصدرية المختلفة تفاوتًا كبيرًا لإعدادات الترميز المتطابقة.
يساعد SSIMULACRA2 على سد هذه الفجوة من خلال مقارنة الصورة المضغوطة بعد فك ترميزها بصورة مرجعية. لكن إجراء بحث شامل عن الجودة المناسبة لكل صورة يمكن أن يحوّل مسار تحويل بسيطًا نسبيًا إلى عبء كبير من عمليات الترميز. عندما يكون الهدف تحقيق جودة مناسبة لصور الويب، لا الوصول إلى أفضل تحسين ممكن لكل ملف، فهناك طريقة أبسط: عاير إعداد جودة AVIF واحدًا باستخدام عينة ممثلة، وافحص النتائج بصريًا، ثم استخدم هذا الإعداد لبقية المجموعة.
جودة AVIF ودرجة SSIMULACRA2 رقمان مختلفان
الخيار quality الذي يُمرَّر إلى مرمّز AVIF هو تعليمة تتعلق بالضغط. أما SSIMULACRA2 فهو قياس لنتيجة الترميز. ولا يمكن التعامل مع مقياسيهما باعتبارهما متكافئين: فالقيمة quality: 40 في AVIF لا تعني أن درجة SSIMULACRA2 ستساوي 40 أو 60 أو أي قيمة ثابتة أخرى.
لقياس نتيجة الترميز، فك ترميز الصورة وقارنها بالمرجع:
ssimulacra2 reference.png encoded-decoded.png
تشير درجات SSIMULACRA2 الأعلى إلى تشابه إدراكي أكبر. وتصف وثائقه الرسمية الدرجة القريبة من 50 بأنها تمثل جودة متوسطة، والدرجة القريبة من 70 بأنها تمثل جودة عالية. ويمكن استخدام عتبة 60 هدفًا عمليًا مفيدًا، لكنها خيار يعتمد على سياسة الجودة المتبعة، وليست تعريفًا عالميًا للصورة المقبولة. افحص دائمًا نتائج ممثلة بالحجم الذي ستُعرض به الصور فعليًا.
لماذا يصبح التحسين الشامل لكل صورة مكلفًا؟
يمكن لأداة تحسين صارمة أن ترمّز الصورة مرارًا باستخدام قيم جودة مختلفة، ثم تقيس كل نتيجة مرشحة باستخدام SSIMULACRA2، وتحتفظ بأصغر ملف يحقق المستوى المقبول. وغالبًا ما يحقق ذلك كفاءة ضغط أعلى، لأن صورة سهلة الضغط قد تتجاوز العتبة عند جودة منخفضة، بينما تحتاج صورة صعبة إلى جودة أعلى.
لكن العيب هو عدد عمليات الترميز. إذا كان هناك N من الصور وتحتاج كل صورة إلى K عمليات ترميز مرشحة للوصول إلى إعداد مقبول، فسيكون عدد عمليات الترميز في حدود N × K، إضافة إلى فك الترميز وحساب الدرجات. وعمليًا، قد تهيمن عملية ترميز AVIF ذات الجهد الحسابي المرتفع على التكلفة؛ وليس بالضرورة أن يكون حساب مقياس SSIMULACRA2 نفسه الجزء المكلف.
اختيار قيمة جودة واحدة لكل مجلد يقلل العمل المطلوب للبحث، لكنه يظل بحاجة إلى أخذ عينات وقياس النتائج وإدارة إعدادات منفصلة للمجموعات المختلفة. وبالنسبة إلى مجموعات الصور التي تتشابه متطلبات عرضها وتسمح بوجود بعض الحالات الاستثنائية، قد لا يستحق هذا التعقيد الإضافي العناء.
| الاستراتيجية | العمل المطلوب للمعايرة | المفاضلة الرئيسية |
|---|---|---|
| جودة تكيفية لكل صورة | عدة عمليات ترميز مرشحة لكل صورة | تحكم دقيق وتكلفة معايرة هي الأعلى |
| جودة تكيفية لكل مجموعة | عدة عمليات ترميز مرشحة لعينة من كل مجموعة | عمل أقل، لكن بإعدادات أكثر ونتائج تختلف باختلاف المجموعة |
| جودة ثابتة واحدة | عمليات ترميز مرشحة على عينة معايرة محدودة | تعقيد تشغيلي منخفض، مع قبول بعض الصور المضغوطة أكثر أو أقل مما ينبغي |
الفرق المهم: متوسط الدرجة مقابل معدل اجتياز العتبة
قبل اختيار قيمة الجودة، حدّد ما المقصود بعبارة «جيدة بما يكفي». فهناك هدفان يبدوان متشابهين، لكنهما يؤديان إلى إعدادات مختلفة جدًا للمرمّز:
- هدف متوسط الدرجات: أن يكون متوسط درجات SSIMULACRA2 للعينة نحو 60.
- هدف معدل اجتياز العتبة: أن تحصل قرابة 90% من الصور على درجة SSIMULACRA2 ≥ 60، مع السماح لبقية الصور بأن تكون دون هذه العتبة.
هذان الهدفان غير متكافئين. فعند حساب المتوسط، يمكن لدرجة مرتفعة لصورة بسيطة أن تعوّض درجة ضعيفة لصورة صعبة. على سبيل المثال، إذا حصل نصف الصور على 75 والنصف الآخر على 55، فسيكون المتوسط 65، لكن نصف الصور فقط سيحقق عتبة 60.
بالنسبة إلى مسار عمل عام لصور الويب، حيث ينبغي أن تبدو معظم الصور مقبولة مع إمكانية تحمّل إخفاق أقلية منها، غالبًا ما يكون هدف معدل اجتياز العتبة أكثر فائدة. احسب:
pass_rate = count(scores >= 60) / count(all_scores)
وسجّل أيضًا توزيع درجات الصور التي لم تجتز العتبة، وافحص الصور التي تبدو الأسوأ. فعينة تحصل فيها 9% من الصور على درجة 59 تختلف اختلافًا جوهريًا عن عينة تحصل فيها 9% على درجة 30، رغم تطابق معدل اجتياز العتبة في الحالتين.
ما الذي أظهرته تجربة معايرة فعلية؟
في تجربة استكشافية لمعايرة AVIF، اختار إجراء تكيفي إعدادات جودة مختلفة لمجموعات الصور المختلفة، تراوحت تقريبًا من منتصف الثلاثينيات إلى منتصف الأربعينيات. كان هذا متوقعًا: فقد احتوت بعض المجموعات على صور تجاوزت عتبة SSIMULACRA2 المختارة عند قيم جودة منخفضة، بينما احتاجت بضع عينات صعبة إلى جودة ترميز أعلى بكثير.
لكن القاعدة التكيفية كانت أشد صرامة من متطلبات العرض الفعلية. فقد حاولت جعل جميع الصور المختبرة تقريبًا في كل مجموعة تجتاز العتبة، مع السماح بحالة استثنائية ضمن حدود ضيقة جدًا. وهذا يحمي الصور الصعبة، لكنه قد يرفع جودة مجموعة كاملة بسبب عينة استثنائية واحدة.
عند إعادة فحص القياسات وفق هدف مختلف، وهو وصول نحو تسع صور من كل عشر إلى درجة SSIMULACRA2 تبلغ 60 أو أكثر، بدت قيمة جودة AVIF ثابتة في حدود 39–40 حلًا وسطًا معقولًا. وفي هذه المقارنة، رجّحت القيمة 39 جانب تقليل حجم الناتج، بينما وفرت القيمة 40 هامش أمان أكبر للصور القريبة من العتبة. استُمدت هذه القيم من بيانات المعايرة والتحليل اللاحق؛ ولم يكن قد أُجري تحويل كامل بجودة ثابتة أو تحقق مستقل يشمل مجموعة الصور بأكملها. كما لم يُحدَّد بدقة مقدار الفائدة في حجم الملفات عند استخدام 39 بدلًا من 40.
الدرس ليس أن جودة AVIF البالغة 39 أو 40 مناسبة في جميع الحالات، بل إن الإعداد الثابت قد يكون معقولًا عندما يطابق توزيع الجودة الذي جرى اختياره صراحةً. فقد يؤدي اختلاف المرمّز أو مزيج الصور أو مسار معالجة الألوان أو عتبة الجودة الإدراكية إلى نتيجة مختلفة.
كيفية معايرة جودة AVIF مرة واحدة
- حدّد معدل الإخفاق المقبول. على سبيل المثال، اشترط أن تحقق قرابة 90% من الصور درجة SSIMULACRA2 ≥ 60. وقرّر ما إذا كان هذا هدفًا مرنًا أم شرطًا صارمًا للنشر.
- أنشئ عينة ممثلة فعلًا. ضمّن صورًا بأبعاد وتنسيقات مصدر مختلفة، وتدرجات لونية وحواف حادة وأنسجة بصرية ومناطق قليلة التفاصيل. اختر عينات عشوائية من عبء العمل الحقيقي، واستخدم أخذ العينات الطبقي إذا كان هناك نوع قد لا يظهر في العينة بطريقة أخرى. واختيار الملفات اعتمادًا على عدد البايتات المضغوطة لكل بكسل فقط قد يكون مؤشرًا مفيدًا لتغطية نطاق متنوع، لكنه لا يضمن تمثيل الاختلافات الإدراكية.
- اختبر نطاقًا صغيرًا من قيم جودة المرمّز. ابدأ ببضع قيم مرشحة قريبة من إعداد مقبول بصريًا، بدلًا من اختبار مقياس الجودة بالكامل. مثلًا، اختبر قيمًا متقاربة مثل 38 و39 و40 و42 على الصور نفسها.
- أبقِ مسار الترميز متطابقًا. ثبّت الدقة والاتجاه وتحويل الألوان وتنفيذ المرمّز ومستوى الجهد واختزال العينات اللونية وعمق البت والمعالجة المسبقة. إذا أضفت علامة مائية، فيجب أن تتضمن الصورة المرجعية العلامة المائية نفسها والتحويلات نفسها قبل مقارنتها بالنتيجة المضغوطة.
- سجّل الدرجة والحجم معًا. احسب لكل قيمة مرشحة نسبة الصور التي تحقق درجة 60 على الأقل، وتوزيع الدرجات دون العتبة، ومجموع البايتات الناتجة عن ترميز العينة نفسها. لا تستنتج مقدار توفير نقل البيانات من رقم الجودة وحده.
- افحص حالات الإخفاق. انظر إلى الوجوه والنصوص والخطوط الرفيعة والتدرجات وغيرها من التفاصيل المهمة لطريقة العرض المستهدفة. افحص الصور بأحجام عرض واقعية، لا بالمقارنات المكبرة فقط.
- اختر أدنى جودة مرضية، ثم تحقق منها. اختبر القيمة المرشحة باستخدام عينة عشوائية مستقلة لم تؤثر في الاختيار. إذا كان عدم تحقيق هدف 90% مكلفًا، فاترك هامش أمان وتعامل بجدية مع عدم اليقين الناتج عن أخذ العينات. أما إذا كان الإخفاق العرضي مقبولًا، فقد تكون قيمة أكثر جرأة معقولة.
المعايرة مرة واحدة لا تعني تجاهل التغييرات المستقبلية. كرّر فحص عينة صغيرة عندما يتغير مزيج الصور المصدرية أو أبعادها أو إصدار المرمّز أو تحويلات العرض أو المتطلبات البصرية.
مقارنة مبسطة باستخدام Sharp وSSIMULACRA2
يستخدم هذا المثال المبسط مرمّز AVIF في Sharp لإنشاء نتيجتين مرشحتين من المدخل نفسه. وهو مقطع توضيحي للمعايرة، وليس ادعاءً بأن على كل مشروع استخدام خيارات المرمّز أو قيم الجودة هذه. شغّله بوصفه وحدة ES بعد تثبيت sharp.
import sharp from 'sharp';
const source = 'sample.png';
const encoding = {
effort: 9,
chromaSubsampling: '4:4:4',
bitdepth: 8,
tune: 'iq',
lossless: false
};
// Use the same orientation and color conversion in both paths.
await sharp(source)
.rotate()
.toColourspace('srgb')
.png()
.toFile('reference.png');
for (const quality of [39, 40]) {
const encoded = `candidate-q${quality}.avif`;
await sharp(source)
.rotate()
.toColourspace('srgb')
.avif({ ...encoding, quality })
.toFile(encoded);
await sharp(encoded)
.png()
.toFile(`candidate-q${quality}.png`);
}
بعد ذلك، قارن النتائج المرشحة بعد فك ترميزها بالمرجع المُعدّ:
ssimulacra2 reference.png candidate-q39.png
ssimulacra2 reference.png candidate-q40.png
في اختبار حقيقي، أتمت هذه العملية على الصور المأخوذة في العينة واجمع الدرجة وحجم الملف لكل قيمة مرشحة. وإذا كان مسار الإنتاج يعيد تحجيم الصور أو يقصها أو يضيف طبقات فوقها أو يجري عليها تحويلات أخرى، فطبّق العمليات نفسها على الصورة المرجعية المستخدمة للمقارنة. وإلا فسيقيس SSIMULACRA2 أثر التحويلات جزئيًا بدلًا من قياس خسارة الجودة الناتجة عن الضغط وحده.
بمجرد اختيار قيمة جودة عامة، تصبح عملية الإنتاج تحويلًا عاديًا إلى AVIF بتمريرة ترميز واحدة. ولن تحتاج بعد ذلك إلى إجراء بحث عن الجودة لكل صورة أو مجلد. وهذا يزيل عمليات الترميز التجريبية المتكررة، لكنه لا يلغي تكلفة عملية الترميز الواحدة التي تظل مطلوبة لكل صورة ناتجة.
متى يكون اختيار قيمة جودة AVIF واحدة قرارًا غير مناسب؟
الإعداد الثابت مفاضلة، وليس الحل الأمثل في كل الحالات. يبقى الترميز التكيفي مفيدًا عندما تكون الحدود الدنيا لجودة الصور الفردية منصوصًا عليها تعاقديًا، أو تكون العيوب البصرية غير مقبولة، أو تتفاوت المصادر تفاوتًا كبيرًا، أو تبرر قيمة توفير كل بايت إضافي التكلفة الحسابية وتعقيد التنفيذ.
توخَّ حذرًا خاصًا مع أنواع الصور المختلطة. فالصور الفوتوغرافية والرسومات المسطحة والنصوص الدقيقة والمصادر المضغوطة سابقًا لا تستجيب بالضرورة بالطريقة نفسها. إذا كان نوع معين يفشل مرارًا في اختبار القبول، فقد يكون استخدام عدد صغير من ملفات إعدادات الترميز الخاصة بالتنسيق أو المحتوى أكثر كفاءة من أي من الطرفين: جودة واحدة شاملة أو تحسين كامل لكل صورة.
ميّز أيضًا بين سرعة المرمّز وسرعة المعايرة. فاستخدام قيمة جودة واحدة يجنبك التجارب المتكررة، لكن ترميز جميع الصور بقيمة effort مرتفعة جدًا قد يظل مكلفًا حسابيًا. ويُعد استخدام إعداد مرمّز أقل جهدًا خيارًا آخر صالحًا للتحسين، بشرط إعادة المعايرة، لأن العلاقة بين قيمة الجودة والدرجة المقاسة قد تتغير مع خيارات المرمّز.
القاعدة العملية
استخدم SSIMULACRA2 بوصفه أداة معايرة، لا بالضرورة خطوة إنتاج إلزامية لكل صورة. اختر هدف جودة يعكس طريقة عرض الصور فعليًا، ورمّز عينة ممثلة عند بضع قيم متقاربة، وقارن درجات التشابه الإدراكي وأحجام الملفات معًا، وافحص حالات الإخفاق، ثم اعتمد أدنى إعداد يحقق هامش التحمل الذي حددته.
في إحدى تجارب المعايرة الاستكشافية، بدت جودة AVIF في حدود 39–40 نقطة توقف منطقية. كان ذلك قرارًا ضمن عتبة ومستوى تحمل محددين، وليس إعدادًا عامًا صالحًا للجميع أو اختبار أداء مؤكدًا للمجموعة الكاملة. والدرس الأوسع قابلية للتطبيق أبسط من ذلك: عندما يكون الوقت والقدرة الحسابية محدودين، غالبًا ما تكون قيمة جودة ثابتة جرى التحقق منها بعناية أكثر عملية من الاستمرار في تحسين كل صورة على حدة بلا نهاية.