المعلوماتية > برمجيات

Guetzli - خوارزميّة غوغل الجديدة لتشفير الصور

تمتلك غوغل مصلحةً كبيرةً في تقليل الوقت المستغرَق لتحميل الخدمات ومواقع الويب. إحدى هذه الطُّرق هي تقليل حجمِ الصُّور على الإنترنت، وهو ما تمَّ إنجازه مسبقًا وفق صيغة WebP في 2014، حيث تمَّ تخفيض حجم الصُّور بمقدار 10%.

يتمُّ استهلاك ثُلثي متوسّطِ حجم صفحة الويب على تمثيل الصّور : JPEGs ، GIFs و PNGs . ما يَقرُب من نصفِ طلباتِ الصّور هي صيغة  JPEG، والّتي تميل إلى أن تكون أكبرُ بكثيرٍ في الحجم من GIFs وَ PNGs. وبالنّظر إلى أنّ العديدَ من المستخدمين، و خصوصًا مستخدمي الهواتف المحمولةِ، عادةً ما يكونون مقيَّدين بسرعةِ الإنترنت وحجمِ البياناتِ المستخدَم، فإنّنا نستطيعُ تسريعَ عمليّةِ تحميلِ مواقعِ الويب وتقليلِ البياناتِ المُستخدَمة في هذه العمليّةِ من خلالِ تقليل حجم صور JPEG.

Guetzli، والّتي تعني الكعكةَ الصَّغيرةَ "cookie" في اللّغةِ الألمانيّةِ السّويسريّةِ - آخرُ تطويرٍ في هذا السّياقِ -  وهي ترميزُ JPEG للصّور الرّقميّةِ والرّسوماتِ على شبكةِ الإنترنت والّذي يمكّن من إنتاجِ صورٍ بحجمٍ أصغرَ بالتّالي تحميلٌ أسرعَ للصّفحاتِ، مع استمراريّةِ المحافظةِ على التّوافقِ مع المتصفّحاتِ، وتطبيقاتِ معالجةِ الصّور وكذلكَ المعاييرِ الحاليّةِ.

من النّاحيةِ العمليّةِ،  يتشابه إلى حدٍّ كبيرٍ مع خوارزميّةِ Zopfli، والّتي تُنتجُ ملفّاتِ PNG وَ gzip أصغرُ حجمًا دونَ الحاجةِ لتقديمِ صيغةٍ جديدةٍ، والّتي تختلفُ أيضًا عن التّقنيّاتِ المُستخدَمةِ في كلٍّ من RAISR وَ  WebP وَضغطِ الصّورِ بالاعتمادِ على RNN، والّتي تحتاجُ جميعُها إلى تغييراتٍ من طرفِ المستخدِمِ للاستفادةِ من الضّغطِ على نطاقِ الإنترنت.

إنّ ترميزَ JPEG الحاليِّ يسمحُ بالمقايضةِ بين الحجمِ والجودة البصريّة من خلال ضبط وموازنةِ عاملِ الجودة، إلّا أنّ تخفيضَ حجمِ صورِ JPEG دونَ التّأثيرِ على جودةِ الإدراكِ البصريّةِ للصّورِ كان الهدفُ الأساسيُّ لهذه الخوارزميّةِ.

ترتبطُ الجودةُ البصريّةُ للصّورِ بصيغةِ JPEG بشكلٍ مباشرٍ بعمليّةِ الضّغطِ متعدِّدةِ المراحلِ والّتي تتألّف من: تحويلِ مدى اللّون (color space transform)، وتحويل جَيب التّمامِ المُتقطّع (discrete cosine transform) وَكذلكَ التّكميمِ (quantization). تستهدفُ هذه الخوارزميّةُ مرحلةَ التّكميمِ بشكلٍ خاصٍّ، فكلّما انخفضتِ الجودةُ البصريّةُ فيها كلّما تسبّبَ ذلك بنقصِ حجم الملفِّ النّاتج . تعمل Guetzli على تحقيق التّوازن بين الحدِّ الأدنى للخسارة وحجم الملفِّ من خلال توظيف خوارزميّةِ البحثِ الّتي تسعى للتّغلُّبِ على الفرقِ بين نمذجةِ الرّؤية النّفسيّة (psychovisual) لصيغة  JPEG وَنموذجِ الرّؤية النّفسيّة لِـ Guetzli، والّتي تُقارب الإدراكَ اللّونيَّ والإخفاءَ البصريَّ بطريقةٍ أكثرَ تعمُّقًا وتفصيلًا ممّا يمكن تحقيقه عن طريقِ تحويلاتِ اللّون المبسّطة وتحويلات جَيب التّمام المُتقطِّعة.

 

حيث يهدف الضّغطُ الجديد إلى إنتاجِ صورٍ بمعدّلِ بتّاتٍ أقلَّ من صيغةِ JPEG الشّائعةِ دون القدرة على تمييزِ ذلك بصريًّا. فهو يعمل على تحسين جداول التّكميم العالميّة لـ jpeg وقيمِ معاملات DCT (تحويلُ جَيب التّمام المُتقطِّعِ) في كلِّ كتلةٍ من كتل jpeg باستخدام نظامِ تحسّينٍ ذو حلقةٍ مغلقةٍ " closed-loop optimizer  " .

تقومُ Guetzli باستخدامِ Butteraugli، وهو مقياسُ البُعد الإدراكيِّ المُستخدَمِ في غوغل (أي كيفَ نستطيع تخفيضَ دقةِ وحجم الصّور دونَ قدرةِ الانسان على ملاحظةِ ذلك)، كمصدرٍ للتّغذيةِ العكسيّةِ المُستخدَمةِ في عمليّةِ التّحسين. إذ يمكن الوصول لتخفيضٍ مقداره 29 – 45 % من حجمِ البياناتِ لبعدٍ إدراكيٍّ معيّنٍ مُقارنةً بطرقِ الضّغطِ الأخرى الّتي تمَّ اختبارها.

 

إنَّ صيغةَ JPEG تتضمّن كلًّا من تحويل الصّورةِ إلى المجال اللّونيِّ YUV ( وهو مجالٌ لونيٌّ يقومُ على تشفيرِ الصّورِ الملوّنةِ أو مقاطعِ الفيديو آخذًا الإدراكَ البشريَّ بعين الاعتبار، ممّا يسمحُ بتخفيضِ عرضِ النّطاقِ التّردّديِّ لمكوّناتِ التّلوّنِ، حيث يتمُّ تخزينُ اللّونِ عبرَ قيم Y وَ U وَ V ، فيُخزِّنُ السّطوعَ "brightness" في قيمةِ Y والتّلوّن "chrominance" في القيمِ U وَ V )، وتجزئتها إلى كتلٍ، وتحويلُ كلِّ كتلةٍ إلى مجالٍ تردّديٍّ باستخدام DCT ومن ثمَّ تكميمُ المعاملاتِ النّاتجةِ وضغطها دون التّسبُّبِ بخسارةٍ.

في هذا الشّكل، يتمّ تفكيكُ الصّورةِ في الزّاويةِ اليسرى العُلويّةِ إلى ثلاثِ مستوياتٍ YUV في صورة JPEG، وتحويل كلِّ مربعٍ 8 * 8 إلى مجالِ DCT، وتكميمُ قيم DCT، ومن ثمَّ تحويلُ القيمِ الصّغيرةِ إلى أصفارٍ.

وسائل التّحسين

تستخدم Guetzli عمليّةَ التّحسينِ التّكراريّةِ، فمن أجلِ تبسيطِ المشكلةِ، لا يعتمدُ المُحسّنُ (optimizer )على حجمِ الملفِّ بل على جودةِ الإدراك فقط، فهو يهدف إلى تشكيلِ تشفيّرِ JPEG في مجالٍ إدراكيٍّ تحتَ عتبةٍ معيّنةٍ بحيثُ يكونُ أقرب ما يمكن إليها. وحيث سيتشكّلُ من كلِّ تكرارٍ خرجٌ مُرشّحٌ من JPEG، ليتمَّ في النّهايةِ اختيارُ الأفضلِ من بينهم (وهو ليس الأخير بالضّرورةِ).

كما ذُكر آنفاً، هناك تعديلاتٌ يمكن تنفيذهما على الصّورِ: تعدبلاتٌ عامّةٌ (جداولُ التّكميم) وتعديلاتٌ محليّةٌ (استبدالُ المعاملاتِ بالأصفارِ)، تمَّ تنظيمُ ذلك في الشّكلِ التّالي:

تحسين جدول التّكميم العام

التّغييرات على جدولِ التّكميمِ العامِ تؤثّر على التّشوه على كامل الصّورة، وعادةً ما يتمُّ ذلكَ بطريقةِ وَسِعَةٍ مختلفتين بمناطقَ متنوعةٍ. إذ أنَّ جدول التّكميمِ العالميِّ هو عبارةٌ عن مصفوفةٍ مؤلَّفةٍ من 192 قيمةٍ، حيث من غيرِ المجدي القيامُ بأيِّ بحثٍ مُفصّلٍ عن تلكَ المساحةِ.

بدلًا من ذلك، تمّ اختيارُ مجموعةٍ من جداولِ التّكميمِ المُعرَّفَةِ مُسبقًا والعملُ على إيجادِ جدولِ تكميمٍ منها يُنتج مجالُ رؤيةٍ نفسيّةٍ α أصغرُ من المجالِ الأعظميِّ المرغوبِ عندما لا يتمُّ تطبيق أيّةِ تشوّهاتٍ أخرى. وتمَّ اختيارُعاملِ التّضعيفِ α قريبًا من القيمة 0.97 الّتي أسفرت عن تشكيلِ أصغرِ حجمٍ ممكنٍ للصّورِ النّاتجة، فهذه القيمةُ الصّغيرةُ من التّضعيفِ تسمحُ بتنفيذِ عمليّاتِ التّحسين المحليِّ في جميعِ أماكنِ الصّورة.

استبدال المعاملات الفرديّة بالأصفار

تلعب صيغة JPEG دورًا فعّالًا للغايةِ في تشفيرِ معاملاتِ DCT الصّفريّةِ، فهي تمتلكُ طريقةً مشتركةً تعتمدُ على RLE (Run-length encoding)، وهي صيغةٌ بسيطةٌ جدًّا لضغطِ البياناتِ دونَ التّسبُّبِ بضياعٍ، فيتمُّ تخزينُ سلسلةِ البياناتِ على شكل قيمِ بياناتٍ فريدةٍ، و بالتّالي فإنَّ تشفيرَ صفرٍ بجوارِ صفرٍ آخرَ لا يكادُ يتسبَّبُ بشيءٍ فعليًّا. وهكذا فإنَّ استبدالَ مُعاملٍ بصفرٍ، عندما يكون الجوارُ صفريًّا، يقلِّلُ حجمَ الملفّاتِ من خلالِ تخفيضِ حجمِ المُعاملاتِ . وحتّى في حالِ لم يكن الجوارُ مكوّنًا من أصفارٍ فإنّ عمليّةَ تشفيرِ الصّفرِ تكونُ دائمًا أقصرَ فعليًّا من القيمةِ غيرِ الصّفريّةِ.

عمليًّا، كلّما ازدادات أعدادُ الأصفارِ لدينا، كلّما انخفضَ حجمُ ملفّاتِ JPEG النّاتجةِ، لذلك فإنّ أغلبَ قوةِ خوارزميّةِ Guetzli تكمُنُ في اختيارِ المُعاملاتِ الصّحيحةِ الّتي سيتمُّ استبدالها بأصفارٍ.

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

و من أجلِ أخذِ هذه الاعتباراتِ بالحُسبان، يتمُّ ضبطُ اختياراتِ عمليّةِ الاستبدالِ بأصفارٍ لجميعٍ الكُتلِ في آنٍ واحدٍ. و بشكلٍ مشابهٍ لمرحلةِ التّحسينِ العامّةِ، يتمُّ تشكيلُ صورةٍ ناتجةٍ مُرشّحةٍ بعدَ كلِّ عمليّةِ تعديلٍ.

ثمَّ يتمُّ حسابُ مدى القدرةِ على التّمييزِ بينَ الصّورةِ الأصليّةِ والمُرشّحةِ واستخدامها لاتّخاذ ِالقرارِ في التّعديلِ التّالي، و بالتّالي فإنَّ حلقةَ التّغذيةِ العكسيةِ، والّتي تستخدِم عاملَ المسافةِ – الّذي يتجاهلُ الكتلة -، تؤمِّنُ التّنسيقَ المطلوبَ عبرَ الكُتلِ المتجاورةِ.

بهدفِ تبسيط التّعديلاتِ، تُحدَّدُ أولًا الأهميّةِ المتعلّقةِ بالمعاملات في كلِّ كتلةٍ، ويتمُّ ذلك من خلالِ الاستفادة من استنتاجِ Butteraugli، ليتمَّ بعد ذلك تصفيرُ بعض المعاملاتِ الأقلِّ أهميّةً في كلِّ كتلةٍ وفقًا للتّقديراتِ المُستخلصة.

و قبل إنتاجِ المُرشحِ التّالي، يتمُّ ضبطِ هذه المعاملاتِ بحيثُ يكون خطأ الرّؤيةِ النّفسيّةِ أقلَّ من العتبةِ، وأقربَ ما يُمكن إليها في أيِّ مكان في الصّورة.

إنّ عمليّةَ التّحويلِ إلى أصفارٍ يمكن أن تُعدَّ الجزءَ الأكثرَ قوّةً في Guetzli، علمًا أنّ انخفاضَ الحجمِ الّذي يتمُّ اكتسابُه من خلالِ استخدام عمليّةِ التّحسينِ المحليّةِ والعالميّةِ زيادةً عن استخدامِ التّحسينِ المحليِّ فقط (مع بعض الافتراضاتِ المنطقيّةِ لجداولِ التّكميمِ) هو 10 % فقط.

يجدر القولُ أن عمليّةَ الحسابِ الخاصّةِ بـ Guetzli بطيئةٌ حاليًّا، ممّا يُقلِّلُ من قدرتها على ضغطِ المحتوى الثّابت، إلّا أنَّ هدفَ الباحثين من هذه الخوارزميّةِ هو جعلُ تجربةِ المستخدمينَ أكثرَ سلاسةٍ على مواقعِ الويبِ المُثقلةِ بالصّورِ، إضافةً إلى تقليلِ أوقاتِ التّحميلِ وتكاليفِ الحزمةِ التّردّديّةِ لمُستخدمي الهواتفِ المحمولةِ، ليبقى الأملُ النّهائيُّ لذلك هو في أن تُلهم الخوارزميّةُ الجديدةُ من غوغل أبحاثًا مستقبليّةً جديدةً في طرق ضغطِ الفيديو والصّور.

 

----------------------------------------------------

المصادر:

Alakuijala، Jyrki، et al. "Guetzli: Perceptually Guided JPEG Encoder." arXiv preprint arXiv:1703.04421 (2017).

Google's new algorithm shrinks JPEG files by 35 percent

Announcing Guetzli: A New Open Source JPEG Encoder