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

深度學(xué)習(xí)算法和應(yīng)用涌現(xiàn)的背后,是各種各樣的深度學(xué)習(xí)工具和框架
基于MobileNet的多目標(biāo)跟蹤深度學(xué)習(xí)算法

評(píng)論