Sheng Cao ، Chao-Yuan Wu ، Philipp Krähenbühl.

@article { cao2020lossless ,
title = { Lossless Image Compression through Super-Resolution } ,
author = { Cao, Sheng and Wu, Chao-Yuan and and Kr{"a}henb{"u}hl, Philipp } ,
year = { 2020 } ,
journal = { arXiv preprint arXiv:2004.02872 } ,
}إذا كنت تستخدم قاعدة الكود الخاصة بنا ، فيرجى النظر أيضًا في الإشارة إلى L3C
هذا هو التنفيذ الرسمي لـ SREC في Pytorch. تقوم SREC بتطوير الضغط غير المفقود كمشكلة فائقة الدقة وتطبق الشبكات العصبية لضغط الصور. يمكن لـ SREC تحقيق معدلات الضغط الحديثة على مجموعات البيانات الكبيرة مع أوقات تشغيل عملية. التدريب والضغط وإزالة الضغط مدعوم بالكامل ومصادر مفتوحة.
نوصي الخطوات التالية للبدء.
انظر هنا للحصول على تعليمات التثبيت.
لقد أصدرنا نماذج مدربة لكل من ImageNet64 والصور المفتوحة (PNG). يتم قياس جميع نتائج الضغط في أجزاء لكل بكسل فرعي (BPSP).
| مجموعة البيانات | BPSP | الأوزان النموذجية |
|---|---|---|
| ImageNet64 | 4.29 | النماذج/ImageNet64.pth |
| فتح الصور | 2.70 | النماذج/openImages.pth |
لتشغيل الرمز ، يجب أن تكون في دليل المستوى الأعلى.
python3 -um src.train
--train-path "path to directory of training images"
--train-file "list of filenames of training images, one filename per line"
--eval-path "path to directory of eval images"
--eval-file "list of filenames of eval images, one filename per line"
--plot "directory to store model output"
--batch "batch size"
يجب تنظيم الصور التدريبية في شكل train-path/filename من اسم الملف في ملف القطار. نفس الشيء ينطبق على صور تقييم.
لقد قمنا بتضمين ملفات التدريب والتقييم المستخدمة لـ ImageNet64 و Open Images (PNG) في دليل datasets .
بالنسبة لـ ImageNet64 ، نستخدم مجموعة مختلفة قليلاً من أجهزة الفصوص الفائقة عن الصور المفتوحة ، والتي هي الافتراضي. لتدريب ImageNet64 بناءً على إعدادات من ورقنا ، قم بتشغيل
python3 -um src.train
--train-path "path to directory of training images"
--train-file "list of filenames of training images, one filename per line"
--eval-path "path to directory of eval images"
--eval-file "list of filenames of eval images, one filename per line"
--plot "directory to store model output"
--batch "batch size"
--epochs 10
--lr-epochs 1
--crop 64
قم بتشغيل python3 -um src.train --help للحصول على قائمة من المقاييس المفرطة للضبط.
بالنظر إلى نقطة تفتيش نموذج ، يقوم هذا بتقييم البتات/البكسل الفرعي (BPSP) النظري على أساس احتمالية السجل. يتراجع LOG-RIBEDBOUD BPSP بين الضغط الفعلي BPSP.
python3 -um src.eval
--path "path to directory of images"
--file "list of filenames of images, one filename per line"
--load "path to model weights"
مع تثبيت Torchac ، يمكنك تشغيل الضغط/إلغاء الضغط لتحويل أي صورة إلى ملفات .SREC. ما يلي يضغط دليل الصور.
python3 -um src.encode
--path "path to directory of images"
--file "list of filenames of images, one filename per line"
--save-path "directory to save new .srec files"
--load "path to model weights"
إذا كنت تريد وقت تشغيل دقيق ، فإننا نوصي بتشغيل Python مع علم -O لتعطيل التأكيدات. نقوم أيضًا بتضمين علامة اختيارية --decode حتى تتمكن من التحقق مما إذا كان إلغاء ضغط ملف .SREC يعطي الصورة الأصلية ، بالإضافة إلى توفير وقت التشغيل لفك التشفير.
لتحويل ملفات .SREC إلى PNG ، يمكنك التشغيل
python3 -um src.decode
--path "path to directory of .srec images"
--file "list of filenames of .srec images, one filename per line"
--save-path "directory to save png files"
--load "path to model weights"
يمكنك تنزيل مجموعات التدريب والتحقق من ImageNet64 هنا.
نستخدم نفس مجموعة التدريب والتحقق من صحة الصور المفتوحة مثل L3C.
للحصول على صور التحقق من الصحة ، يمكنك تنزيلها هنا .
للتدريب على الصور ، يرجى استنساخ L3C Repo وتشغيل البرنامج النصي من هنا
شاهد هذه المشكلة للاطلاع على الاختلافات بين الصور المفتوحة JPEG والصور المفتوحة PNG.
بفضل L3C لتطبيقات EDSR ، والمخاليط اللوجستية ، والترميز الحسابي. شكر خاص لـ Fabian Mentzer لإعلامنا به حول المشكلات المتعلقة بالنص المعالجة المسبقة للصور المفتوحة JPEG وحلها بسرعة.