JPEG XL และ Pareto Front
- เปิดตัว libjxl เวอร์ชัน 0.10: มีการเปิดตัวเวอร์ชันใหม่ของ libjxl ซึ่งเป็น implementation อ้างอิงของ JPEG XL โดยการปรับปรุงสำคัญของเวอร์ชันนี้คือการทำ API สำหรับ 'streaming encoding' ได้อย่างสมบูรณ์
- Streaming encoding API: ทำให้สามารถเข้ารหัสภาพขนาดใหญ่เป็น 'ชิ้นส่วน' ได้ แทนที่จะประมวลผลทั้งภาพในครั้งเดียว จึงสามารถทำงานได้ในแบบที่เป็นมิตรต่อหน่วยความจำมากกว่า
แบบไม่สูญเสียข้อมูล: ปรับปรุงการใช้หน่วยความจำและความเร็วอย่างมาก
- การปรับปรุงเมื่อเทียบกับ libjxl เวอร์ชัน 0.9: ในเวอร์ชันก่อนหน้า การเข้ารหัส JPEG XL แบบไม่สูญเสียข้อมูลใช้หน่วยความจำสูงและใช้เวลานาน ซึ่งอาจก่อให้เกิดปัญหาร้ายแรงเมื่อเข้ารหัสภาพขนาดใหญ่
- ตัวอย่างภาพโลกยามค่ำคืนของ NASA: การบีบอัดภาพขนาด 13500×6750 ด้วย libjxl 0.9 ต้องใช้ RAM ราว 8GB และใช้เวลามากกว่า 2 นาที หลังอัปเกรดเป็น libjxl 0.10 สามารถบีบอัดได้ด้วย RAM 0.7GB และใช้เวลาเพียง 30 วินาที
- ผลลัพธ์ตามค่า effort ที่หลากหลาย: มีการแสดงตารางเปรียบเทียบการใช้หน่วยความจำ เวลา และขนาดไฟล์บีบอัดตามค่า effort ต่างๆ (e1~e9) โดยเมื่อเพิ่มค่า effort การบีบอัดจะดีขึ้น แต่การปรับปรุงจะไม่เป็นเชิงเส้น
Pareto Front
- การเปรียบเทียบเทคโนโลยีการบีบอัด: ไม่ได้สำคัญแค่ขนาดไฟล์หลังบีบอัดเท่านั้น แต่ความเร็วในการเข้ารหัสก็สำคัญด้วย จึงต้องพิจารณาทั้งความหนาแน่นของการบีบอัดและความเร็วในการเข้ารหัสในสองมิติ
- Pareto optimal: คือกรณีที่ไม่สามารถใช้วิธีอื่นเพื่อให้ได้ความหนาแน่นการบีบอัดเท่ากันในเวลาที่น้อยกว่าได้ วิธีที่เป็น Pareto optimal จะให้ไฟล์ที่เล็กที่สุดภายใต้งบประมาณด้านเวลาที่กำหนด
- การแสดงภาพของ Pareto Front: แสดงเป็นกราฟที่บอกความเร็วในการเข้ารหัสและความหนาแน่นของการบีบอัด โดยใช้ชุดภาพหลากหลายเพื่อเปรียบเทียบค่าเฉลี่ยของความเร็วและความหนาแน่นการบีบอัด
ภาพที่ไม่ใช่ภาพถ่าย
- ความสำคัญของการเลือกภาพทดสอบ: หากภาพส่วนใหญ่เป็นภาพถ่าย จะบีบอัดได้ยากเนื่องจากมี noise ตามธรรมชาติจำนวนมาก
- กรณีของภาพการ์ตูน: ภาพที่ไม่ใช่ภาพถ่ายสามารถบีบอัดได้ดีกว่าภาพถ่ายมาก โดยภาพการ์ตูนสามารถบีบอัดได้ประมาณ 4bpp
- การปรับปรุงของ libjxl: libjxl เวอร์ชันใหม่เร็วกว่าเวอร์ชันก่อนหน้ามาก และยังมีอัตราการบีบอัดที่ดีกว่า
ว่าด้วยการบีบอัดแบบสูญเสียข้อมูล
- เบนช์มาร์กของการบีบอัดแบบสูญเสียข้อมูล: สิ่งสำคัญมีเพียงขนาดไฟล์ที่บีบอัดและความเร็วเท่านั้น ส่วนคุณภาพของภาพต้องพิจารณาเป็นมิติที่สาม
- ประสิทธิภาพของ lossy image codec และ encoder: อาจทำงานแตกต่างกันไปในแต่ละจุดคุณภาพ encoder ที่ทำงานได้ดีในงานเข้ารหัสคุณภาพสูง ไม่ได้แปลว่าจะทำงานได้ดีในงานเข้ารหัสคุณภาพต่ำเสมอไป
Lossy Pareto Front
- encoder ที่นำมาทดสอบ: ทดสอบเวอร์ชันล่าสุดของ encoder หลายตัว เช่น libjpeg-turbo, sjpeg, mozjpeg, jpegli, libavif / libaom, libjxl, libwebp, libheif เป็นต้น
- คุณภาพระดับกลาง: เป็นผลลัพธ์จากการตั้งค่าที่สอดคล้องกับคะแนน SSIMULACRA2 ที่ 60 ซึ่งเกี่ยวข้องมากที่สุดในกรณีที่การลดน้ำหนักของหน้าเว็บสำคัญกว่าความเที่ยงตรงของภาพ
- คุณภาพระดับกลางค่อนสูงและคุณภาพสูง: เป็นผลลัพธ์จากการตั้งค่าที่สอดคล้องกับคะแนน SSIMULACRA2 ที่ 70 และ 85 โดยในจุดคุณภาพสูง JPEG XL ครอง Pareto Front เป็นหลัก
บทสรุป
- การปรับปรุงของ libjxl เวอร์ชัน 0.10: การใช้หน่วยความจำลดลงอย่างมาก และโดยเฉพาะอย่างยิ่งความเร็วของการเข้ารหัสแบบไม่สูญเสียข้อมูลแบบหลายเธรดดีขึ้น
- การยืนยันตำแหน่งของ JPEG XL: ยืนยันว่าเป็นตัวเลือกที่ Pareto optimal ในการตั้งค่าความเร็วหลายระดับ ตั้งแต่คุณภาพสูงไปจนถึงระดับที่แทบไม่สูญเสียให้เห็นทางสายตา
- เสน่ห์ที่ยังคงอยู่ของ JPEG: encoder ใหม่อย่าง jpegli ช่วยปรับปรุงทั้งด้านความเร็วและการบีบอัด และอาจยังเป็นตัวเลือกที่ดีที่สุดเมื่อจำเป็นต้องเข้ารหัสให้เร็วมาก
- การมีส่วนร่วมของ Cloudinary: มีส่วนร่วมอย่างแข็งขันในการมอบประสบการณ์ผู้ใช้ที่ดีที่สุด ด้วยการนำเทคโนโลยีและอินไซต์ล่าสุดในด้านการบีบอัดภาพมาใช้
ความเห็นของ GN⁺
- การเปิดตัว libjxl 0.10 ถือเป็นความก้าวหน้าสำคัญของเทคโนโลยีการบีบอัดภาพ โดยเฉพาะการปรับปรุงการใช้หน่วยความจำและความเร็วในการเข้ารหัสอย่างมากเมื่อจัดการภาพขนาดใหญ่ ซึ่งจะเป็นประโยชน์อย่างมากต่อผู้ใช้
- การเน้นว่า JPEG XL เป็น Pareto optimal ในหลายระดับคุณภาพและความเร็ว มีประโยชน์เพราะช่วยให้ผู้ใช้หาจุดสมดุลที่เหมาะสมที่สุดระหว่างคุณภาพของภาพกับขนาดไฟล์ได้
- ในมุมมองเชิงวิพากษ์ การนำเทคโนโลยีใหม่อย่าง libjxl มาใช้อาจก่อให้เกิดปัญหาความเข้ากันได้กับโครงสร้างพื้นฐานเดิม ดังนั้นจึงจำเป็นต้องค่อยๆ นำมาใช้โดยคำนึงถึงการผสานรวมกับระบบที่มีอยู่
- เมื่อต้องเลือกเทคโนโลยีการบีบอัดภาพ ควรพิจารณาหลายปัจจัย เช่น ความเร็วในการเข้ารหัสและถอดรหัส ขนาดไฟล์ แพลตฟอร์มและอุปกรณ์ที่รองรับ เป็นต้น JPEG XL เป็นตัวเลือกที่น่าสนใจสำหรับการบีบอัดภาพคุณภาพสูง แต่ยังไม่ได้รับการรองรับอย่างแพร่หลายในผู้ใช้และทุกระบบ
- ประโยชน์ของการนำเทคโนโลยีนี้มาใช้คือการลดการใช้หน่วยความจำ เพิ่มความเร็วในการเข้ารหัส และลดขนาดไฟล์ ส่วนต้นทุนอาจเป็นปัญหาความเข้ากันได้กับระบบเดิมและช่วงการเรียนรู้ของเทคโนโลยีใหม่
2 ความคิดเห็น
เอนโค้ดเดอร์
jpegliกำลังยืดอายุให้ jpg ได้อีกครั้งต่อจาก mozjpeg...แม้จะถูกสร้างขึ้นโดยฝั่ง JXL แต่ก็น่าแดกดันที่มันอาจขัดขวางการแพร่หลายของ JXL เองก็ได้...
ความคิดเห็นจาก Hacker News
ประสิทธิภาพการบีบอัดแบบไม่สูญเสียของฟอร์แมต WebP ยอดเยี่ยมมาก
การประเมินความสามารถของ JPEG ในการรักษารายละเอียดที่การตั้งค่าคุณภาพต่ำ
ความยากลำบากของผู้ใช้ในการหาข้อมูลเชิงลึกเกี่ยวกับฟอร์แมต JPEG XL
ข้อสงสัยต่อบทความที่โฟกัสความเร็วในการเข้ารหัส
การประเมินคุณภาพและความสามารถในการบีบอัดของ JPEG XL
ไลบรารีประมวลผลขนานตัวใหม่ที่พัฒนาขึ้นจากโปรเจกต์ JPEG XL
ปฏิกิริยาต่อการรวมฟอร์แมต QOI
เวอร์ชันใหม่ของ libjxl ลดการใช้หน่วยความจำลงอย่างมาก
ข้อดีของการบีบอัดไฟล์ JPEG เก่าซ้ำด้วย JPEG XL
การกล่าวถึงความเป็นไปได้ในการประหยัดเพิ่มเติมของ AVIF แบบไม่สูญเสีย