隨著互聯(lián)網(wǎng)的發(fā)展,人們對高清圖片的需求也在不斷增加,在保證圖像畫質(zhì)的情況下最大程度降低圖像體積已成為行業(yè)發(fā)展趨勢。
目前比較出名的圖像壓縮格式是:WebP與HEIF。
WebP:谷歌旗下的一款可以同時提供有損壓縮和無損壓縮的圖片文件格式,其以VP8編碼為內(nèi)核,在2011年11月開始可以支持無損和透明色功能。目前facebook等網(wǎng)站都已采用這種圖片格式。
BPG:知名程序員、ffmpeg和QEMU等項目作者Fabrice Bellard推出的圖像格式,它以HEVC編碼為內(nèi)核,在相同體積下,BPG文件大小只有JPEG的一半。另外BPG還支持8位和16位通道等等。盡管BPG有很好的壓縮效果,但是HEVC的專利費很高,所以目前的市場使用比較少。
這兩大技術(shù)都各有優(yōu)劣,為了最大程度的應(yīng)對市場需求采用深度學(xué)習(xí)技術(shù)做圖片壓縮算法已受到業(yè)界越來越多的關(guān)注。
深度學(xué)習(xí)技術(shù)設(shè)計圖片壓縮算法
通過深度學(xué)習(xí)技術(shù)設(shè)計壓縮算法不僅能在不借助HEVC的情況下設(shè)計出更適合商用的更高壓縮比的圖片壓縮算法,還可以在保持圖片畫質(zhì)同時,盡可能降低圖片體積。
在圖片壓縮領(lǐng)域主要用到的深度學(xué)習(xí)技術(shù)是卷積神經(jīng)網(wǎng)絡(luò)(CNN)。卷積神經(jīng)網(wǎng)絡(luò)就像搭積木一樣,一個卷積神經(jīng)網(wǎng)絡(luò)由卷積、池化、非線性函數(shù)、歸一化層等模塊組成,最終的輸出根據(jù)應(yīng)用而定;如在人臉識別領(lǐng)域,我們可以用它來提取一串特征表示一幅人臉圖片,然后通過比較特征的異同進行人臉識別。
圖1:卷積神經(jīng)網(wǎng)絡(luò)示意圖(來源http://blog.csdn.net/hjimce/article/details/47323463)
如何利用卷積神經(jīng)網(wǎng)絡(luò)做壓縮?
如圖2所示,完整的框架包括CNN編碼器、量化、反量化、CNN解碼器、熵編碼、碼字估計和碼率-失真優(yōu)化等幾個模塊。編碼器的作用是將圖片轉(zhuǎn)換為壓縮特征,解碼器就是從壓縮特征恢復(fù)出原始圖片。其中編碼網(wǎng)絡(luò)和解碼器,可以用卷積、池化、非線性等模塊進行設(shè)計和搭建。
圖2:用深度學(xué)習(xí)進行圖片壓縮示意圖
如何評判壓縮算法?
目前評判一個壓縮算法的重要指標(biāo)有三個:PSNR(Peak Signal to Noise Ratio)、BPP(bit per pixel)和MS-SSIM(multi-scaleSSIM index)。我們知道,任何數(shù)據(jù)在計算機內(nèi)都是以比特形式存儲,所需比特數(shù)越多則占據(jù)的存儲空間越大。PSNR用來評估解碼后圖像恢復(fù)質(zhì)量,BPP用于表示圖像中每個像素所占據(jù)的比特數(shù),MS-SSIM值用來衡量圖片的主觀質(zhì)量,簡單來說在同等的Rate/BPP下PSNR更高,壓縮效果更好,MSSIM更高,主觀感受更好。
下圖為圖鴨圖片格式Tiny Network Graphics (TNG) 與其他圖片格式在同一壓縮比下的PSNR值與MS-SSIM值對比:
圖3:圖鴨TNG圖片格式與其他圖片格式在同一壓縮比下的PSNR值與MS-SSIM值對比
從上圖對比中可以看到,圖鴨的TNG在MS-SSIM值上一直處于領(lǐng)先狀態(tài),其PSNR值也已超過WebP、JPEG2000等商用算法。
如何用深度學(xué)習(xí)做壓縮?
談到如何用深度學(xué)習(xí)做壓縮,我們以圖片來舉例。將一張大小 768 * 512 的三通道圖片送入編碼網(wǎng)絡(luò),進行前向處理后,會得到占據(jù) 96 * 64 * 192 個數(shù)據(jù)單元的壓縮特征。有計算機基礎(chǔ)的讀者可能會想到,這個數(shù)據(jù)單元中可放一個浮點數(shù),整形數(shù),或者是二進制數(shù)。那到底應(yīng)該放入什么類型的數(shù)據(jù)呢?
從圖像恢復(fù)角度和神經(jīng)網(wǎng)絡(luò)原理來講,如果壓縮特征數(shù)據(jù)都是浮點數(shù),恢復(fù)圖像質(zhì)量是最高的。但一個浮點數(shù)占據(jù)32個比特位,圖片的計算公式為( 96 * 64 * 192 * 32)/(768*512)=96,壓縮后反而每個像素占據(jù)比特從24變到96!圖片大小非但沒有壓縮,反而增加了,這是一個糟糕的結(jié)果,很顯然浮點數(shù)不是好的選擇。
所以為了設(shè)計靠譜的算法,可以使用一種稱為量化的技術(shù),它的目的是將浮點數(shù)轉(zhuǎn)換為整數(shù)或二進制數(shù),最簡單的操作是去掉浮點數(shù)后面的小數(shù),浮點數(shù)變成整數(shù)后只占據(jù)8比特,則表示每個像素要占據(jù)24個比特位。與之對應(yīng),在解碼端,可以使用反量化技術(shù)將變換后的特征數(shù)據(jù)恢復(fù)成浮點數(shù),如給整數(shù)加上一個隨機小數(shù),這樣可以一定程度上降低量化對神經(jīng)網(wǎng)絡(luò)精度的影響,從而提高恢復(fù)圖像的質(zhì)量。
即使壓縮特征中每個數(shù)據(jù)占據(jù)1個比特位,可是壓縮還是有可進步的空間。那如何進一步優(yōu)化算法?再看下BPP的計算公式。
假設(shè)每個壓縮特征數(shù)據(jù)單元占據(jù)1個比特,則公式可寫成:(96*64*192*1)/(768*512)=3,計算結(jié)果是3 bit/pixel,從壓縮的目的來看,BPP越小越好。在這個公式中,分母由圖像決定,我們進行調(diào)整的只有分子:96、64、192,這三個數(shù)字與網(wǎng)絡(luò)結(jié)構(gòu)相關(guān)。所以,如果我們設(shè)計出更優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu),這三個數(shù)字也會變小。
那1與哪些模塊相關(guān)?1表示每個壓縮特征數(shù)據(jù)單元平均占據(jù)1個比特位,量化會影響這個數(shù)字,但它不是唯一的影響因素,它還與碼率控制和熵編碼有關(guān)。碼率控制的目的是在保證圖像恢復(fù)質(zhì)量的前提下,讓壓縮特征數(shù)據(jù)單元中的數(shù)據(jù)分布盡可能集中、出現(xiàn)數(shù)值范圍盡可能小,這樣我們就可以通過熵編碼技術(shù)來進一步降低1這個數(shù)值,圖像壓縮率會進一步提升。
總結(jié)
總體而言,借助于深度學(xué)習(xí)設(shè)計視頻和圖像壓縮算法是一項非常具有前景,但同時也非常有挑戰(zhàn)性的技術(shù)。
最后,大家可以點擊閱讀原文獲取TNG測試鏈接(建議在PC端測試)。
-
帶寬
+關(guān)注
關(guān)注
3文章
897瀏覽量
40795 -
圖片壓縮
+關(guān)注
關(guān)注
0文章
6瀏覽量
5525
原文標(biāo)題:深度學(xué)習(xí)為圖片壓縮算法賦能:節(jié)省55%帶寬
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論