🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

TL;DR

我製作了一個可以比較影像壓縮性能的網路介面,請看看。
https://fukushimalab.github.io/spcp/
登陸頁面加載100MB。
注意,切換不同選項後,總數據量大概有3GB。

如果您希望就包括這些內容的影像壓縮進行合作研究或技術諮詢,請聯絡作者福嶋

本文是根據以下內容(影像壓縮及影片壓縮的國際會議)撰寫的。
原稿可從上述鏈接獲得。

N. Fukushima, Y. Maeda, Y. Kameda, and O. Watanabe,
"Benchmarking JPEG, MozJPEG, Jpegli, JPEG2000, JPEG XR, JPEG XL, WebP, HEIC, and AVIF-AOM/SVT: An Objective Quality and Coding Time Evaluation Across Encoder Configurations,"
in Proc. Picture Coding Symposium (PCS), Dec. 2025.

引言

影像壓縮是影像處理中使用的基本技術。
儘管如此,卻常常受到隨意的對待。
本文將指出影像壓縮時需要關注的項目,並介紹一個確認這些項目的介面。

品質評估中不應該做的事情

影像壓縮透過品質切換的QP值(約為0-100的數值)來控制品質和大小。
然而,很多性能評估網站將這個QP值統一,並比較各種壓縮工具,這實在是太多了。
這樣做完全沒有意義。

  • 就像比較車A和車B在相同油門深度下的速度。
  • 就像比較家和辦公室中打開水龍頭的水量。

所統一的,只是控制速度或流量的操作杆,將操作量統一並無意義。
必須用「每公升的速度」或「每單位水量的清洗能力」等進行評估。

在影像壓縮的情況下,必須要統一「壓縮後的影像大小」或「影像質量」,才能進行比較。

下圖為以QP為橫軸的比較圖。
乍看之下,HEIC(HEIF)、JPEG XR 和 AVIF 似乎性能最佳,但實際上並非如此(詳情見後文)。

圖:以QP統一各影像壓縮工具的品質(PSNR)

此外,此評估軸使用的是PSNR,但PSNR的優異不代表對人類而言畫質就是好的。
存在無數比PSNR更好的指標,如SSIM、MS-SSIM等評估標準。

評估壓縮工具(編碼器)所需的項目

壓縮工具的性能可通過壓縮影像的「大小」及當時的「影像質量」來理解,且這些是逐步變化的表現。(例如,50%壓縮時品質為40,70%壓縮時品質為60等)

在影像壓縮產業中,大小通常用 bpp(每像素位元數)來表示。
對於8位的彩色影像,24bpp是未壓縮狀態。如果大小為8bpp,則表示被壓縮至33%。

品質則有很多圖像品質評估方法,其中PSNR是代表性的一種,其他還包括SSIM,GMSD,VMAF等。請參考這裡使用OpenCV的圖像評價。
雖然PSNR的性能明顯不佳,但目前仍然沒有明確的最佳指標。

換句話說,對於每個影像,在改變QP值的過程中收集大小資訊(bpp)及多種品質資訊,就可以衡量各壓縮工具的性能。
這樣生成的圖,橫軸為bpp,縱軸為評價指標,被稱為RD曲線
與先前的圖有所不同,橫軸現在是bpp。
這樣可以有效地測量影像大小相同時的影像品質值,從而評估各種編碼器的性能。
以下是RD曲線的例子。從RD曲線中,越接近左上角的點代表以較少的位元數能夠復原良好品質影像的編碼器。
當畫質分數越大為代表好的畫質時,則左上代表較高品質,當數值接近0代表較好的畫質情況(如GSMD或Butteraugli)則為右下越好。
以下顯示RD曲線的圖。
HEIC和AVIF以PSNR指標是表現最優異的編碼器。

圖:RD曲線(PSNR)

以下是使用SSIMULACRA2指標寫的同樣RD曲線(+x軸為對數軸)。
在這個情況下,AVIF的性能顯示出來是最好的編碼器。
圖:x對數軸的RD曲線(SSIMULACRA2)

如上所示,由於評估指標不同,好的編碼器會有所變化,但沒有決定版,因此進行比較時必須逐一試驗。

當評估圖表變得麻煩時,將使用BD-Rate(Bjøntegaard delta bitrate)。
以下圖表是繪製的RD曲線,表示從基準編碼器(此次為JPEG)增量的情況。
這顯示出在各個bpp下的增量性能。
簡單來說,這個增量是在期望的bpp範圍內進行加權整合後得到的BD-rate。
這分數顯示在該範圍內,從基準編碼器減少文件尺寸的平均百分比。

圖:JPEG的相對性能所構成的RD曲線(PSNR)

所做的工作

必備資訊是影像的大小和各種影像品質度量。
此外,若能包含壓縮所需的計算時間及重播時的計算時間會更好。
因此,我利用各種壓縮工具和設置,努力收集了所有數據。

計算時間大約需要3個月
針對917張影像采用408種編碼器以QP100階段進行壓縮,並用28種評估指標進行評估,

  • 壓縮影像達37,413,600(3700萬)次,
  • 收集了1,047,580,800(10億)對大小和指標的資料。
    • 這些數據長達3GB。

影像數據集

  • 917張影像(平均尺寸1M像素)
    如下面所示,從各種用於影像質量評估及影像壓縮的數據集中收集影像並進行壓縮。
    圖:數據集中的代表性影像(已統一大小)

影像質量評估指標

  • 28種指標+{bpp,QP,壓縮時間,複合時間,總計時間}
    採用的如下:
    PSNR(Y, all),SSIM(Y, color),MS-SSIM(Y, color),IW-SSIM(Y, color),VIPp(Y, color),GMSD(Y, color),NLPD(Y, color),FSIM(Y, color),MDSI,Butteraugli(p1,2,3 max),SSIMULACRA2,VMAF。

這些指標的原始版本有Matlab實現或C++實現,但因為評估時間遠長於影像壓縮時間,所有都用SIMD重寫了。

為了能夠從OpenCV中調用,畫質評估的成果將在未來進行重構,並公開。

壓縮編碼器

  • 10種及其各類設定值408
    編碼器分為3個系統,共10種:
    • JPEG系3種:JPEG、MozJPEG、Jpegli
    • 次世代JPEG系4種:JPEG2000、JPEG XR、JPEG XL
    • 基於影片壓縮工具的4種:WebP、HEIC-x265、AVIF-AOM、AVIF-SVT

關於各種設定的說明,由於有408種需要說明,這裡將簡略說明。

在JPEG中,為了壓縮,會有YUV420和不進行抽樣的YUV444兩種選擇。
此外,壓縮模式有標準模式與漸進模式,這兩種有不同的信息源編碼方法,包括哈夫曼編碼、最優哈夫曼編碼、算術編碼,以及通過JPEG-XL的轉碼所得到的ANS等。
每種工具的優化方法略有不同,因此JPEG、MozJPEG、Jpegli的輸出結果也會有所不同。
MozJPEG甚至有針對PSNR、SSIM、MS-SSIM、PSNR-HVS的四個評估指標的最佳化模式。
如果全面試驗將達到90種的組合。

WebP、JPEG XL、HEIF、AVIF中都配有speed、method、effort等開關,以大約10級的選擇控制壓縮的複雜度。
目的在於調整從重型壓縮到最輕量壓縮的方式。
另外,WebP引入的YUV420 sharp可以在抽樣時稍微強調細節,現在也可以使用。

以上這些操作,目前已經整合並且運行到408個類型。

成果物

這些結果可以透過網頁介面檢視,如同開頭介紹的那樣。
https://fukushimalab.github.io/spcp/

可以從不同的角度顯示影像壓縮結果的圖表。
手冊的連結在開頭部分。
↓這個
image.png

可以做的事情如下:

  • 選擇數據集
  • 選擇數據集內的影像並預覽
  • 從408種編碼器中選擇
  • 從28種中選擇畫質評估指標,橫軸選擇bpp、QP或計算時間
  • 顯示RD曲線、RD曲線的增量,以及BD-rate對計算時間的散佈圖

上傳的數據約為3GB
數據不包含影像,僅保存bpp及評估指標、計算時間的計算結果,經過gzip壓縮後為3GB大小。

RD曲線已在上文展示,下面將顯示計算時間對影像質量評估的圖表及BD率對計算時間的散佈圖。

壓縮時間(編碼)對畫質評估的圖表
JPEG的時間為毫秒級,而AVIF則最大需要約10秒。
黃色和灰色代表AVIF,灰色的AVIF是採用SVT實現的,雖然速度較快,但畫質略差。
其次是JPEG XL的速度較慢。

圖:壓縮時間 vs PSNR

壓縮時間(編碼)對畫質評估的對數圖表
由於AVIF的原因,返回的圖幾乎不可見,因此橫軸已更改為對數軸。
這樣比較起來會更加清晰些。
顏色有所中斷,但同樣表現的是之前的圖表。
此外,圖表的擺動部分是無法修正的,十次取平均需要花費約3年的計算時間。

圖:壓縮時間(x軸對數) vs PSNR

另外,點擊圖表中想隱藏的圖標,該標籤會被加入刪除線,將其從圖表中刪除。

顯示時間(解碼) 的情況。
與的編碼時間不同,差異不大,皆為毫秒級。
在實用層面上差異不大。

圖:顯示時間 vs PSNR

BD-rate(PSNR)對計算時間的散點圖
越接近左下提供了更高速度的壓縮率與畫質的折衷。
雖然AVIF計算時間長,但BD-rate卻優秀。
被認為沒有優點的JPEG2000,實則在速度及性能上出色。
不過,JPEG2000在瀏覽器上幾乎無法顯示。

圖:BD-rate(PSNR)與壓縮時間的散點圖

BD-rate(SSIMURACLA2)對計算時間的散點圖
使用最新的影像質量評估指標SSIMURACLA2來製作圖表。
SSIMURACLA2目前是十分能體現人眼畫質的影像壓縮指標。
JPEG XL的GitHub上已公開該工具。
最初不帶s的SIMURACLA是拉丁文中意味著幻影或模仿。
此指標是對SSIM的延伸,讓AVIF的性能更加突出。

圖:BD-rate(SSIMURACLA2)與計算時間的散點圖

接下來僅針對JPEG製作BD-rate(SSIMURACLA2)對計算時間的散點圖
下方的(BD-rate表現良好)全部為Jpegli。
MozJPEG的性能雖然優於普通JPEG(libjpeg),但卻不及Jpegli的品質。
而且,Jpegli還更快。

圖:BD-rate(SSIMURACLA2)對計算時間的散點圖(JPEG的情況)

總結

為了解決「影像壓縮工具哪個最佳的問題」,我展示了我所進行的庞大粗暴攻擊的結果。

透過各種圖表繪製,可以發現,在比較範圍內,AVIF(也可用於OpenCV)的性能似乎是最優的。
而且,如果是當前的瀏覽器,AVIF的顯示應該沒有問題,且顯示時的解碼時間也很快。
(不過,壓縮所需的時間已超過JPEG的1000倍)
JPEG方面,雖然MozJPEG等工具不少,但Jpegli似乎性能最優。
需知道,OpenCV的預設編碼器是libjpeg。

透過多種圖表可知,WebP的表現並未如預期中的優異。
若JPEG XL可以在瀏覽器中支援無損壓縮的再壓縮,便能在保持原有資源的同時,相較於WebP達成更好的性能。

以上內容要完整解釋需數十頁資料,所以僅作簡略說明。
如有不足之處,請留言。
(因為在高解析度顯示的顯示圖出現巨大化的問題,未來將進行修正。)

在這個工作過程中,我深刻感受到的一點:

「Windows更新是最大的敵人」

不知多少次計算被他殺掉……


原文出處:https://qiita.com/fukushima1981/items/deaf8e97df2d1b9d6865


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬9   ❤️4
346
🥈
我愛JS
📝1   💬7   ❤️2
56
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付