2
雷鋒網(wǎng) AI 科技評論按,本文為圖鴨科技投稿,正文內(nèi)容如下:
說到圖像壓縮算法,最典型的就是 JPEG、JPEG2000 等。
圖 1:典型圖像壓縮算法 JPEG、JPEG2000
其中 JPEG 采用的是以離散余弦轉(zhuǎn)換(Discrete Cosine Transform)為主的區(qū)塊編碼方式(如圖 2)。JPEG2000 則改用以小波轉(zhuǎn)換(Wavelet Transform)為主的多解析編碼方式,小波轉(zhuǎn)換的主要目的是將圖像的頻率成分抽取出來。
圖 2:JPEG 編碼框圖
在有損壓縮下,JPEG2000 的明顯優(yōu)勢在于其避免了 JPEG 壓縮中的馬賽克失真效果。JPEG2000 的失真主要是模糊失真,而模糊失真的主要原因在于高頻量在編碼過程中一定程度的衰減。在低壓縮比情形下(比如壓縮比小于 10:1),傳統(tǒng)的 JPEG 圖像質(zhì)量有可能比 JPEG2000 好。JPEG2000 在高壓縮比的情形下,優(yōu)勢才開始明顯。
整體來說,JPEG2000 相比于傳統(tǒng) JPEG,仍有很大技術(shù)優(yōu)勢,通常壓縮性能可提高 20% 以上。當(dāng)壓縮比達(dá)到 100:1 時,JPEG 壓縮的圖像已經(jīng)嚴(yán)重失真并開始難以識別了,而 JPEG2000 的圖像仍可識別。
深度學(xué)習(xí)技術(shù)設(shè)計壓縮算法的目的
通過深度學(xué)習(xí)技術(shù)設(shè)計壓縮算法的目的之一是學(xué)習(xí)一個比離散余弦變換或小波變換更優(yōu)的變換,同時借助于深度學(xué)習(xí)技術(shù)還可以設(shè)計更簡潔的端到端算法,因而能夠設(shè)計出比 JPEG2000 等商用算法性能更優(yōu)的算法。
在圖片、視頻壓縮領(lǐng)域,使用最多的深度學(xué)習(xí)技術(shù)就是卷積神經(jīng)網(wǎng)絡(luò)(CNN),下面會就卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行簡單介紹。如圖 3 所顯示,像搭積木一樣,一個卷積神經(jīng)網(wǎng)絡(luò)由卷積、池化、非線性函數(shù)、歸一化層等模塊組成。最終的輸出根據(jù)應(yīng)用而定,如在人臉識別領(lǐng)域,我們可以用它來提取一串?dāng)?shù)字(專業(yè)術(shù)語稱為特征)來表示一幅人臉圖片。然后通過比較特征的異同進(jìn)行人臉識別。
圖 3 :卷積神經(jīng)網(wǎng)絡(luò)示意圖
(來源 http://blog.csdn.net/hjimce/article/details/47323463)
那如何利用卷積神經(jīng)網(wǎng)絡(luò)做壓縮?如圖 4 所示,完整的框架包括 CNN 編碼網(wǎng)絡(luò)、量化、反量化、CNN 解碼、熵編碼等幾個模塊。編碼網(wǎng)絡(luò)的作用是將圖片轉(zhuǎn)換為壓縮特征,解碼網(wǎng)絡(luò)就是從壓縮特征恢復(fù)出原始圖片。其中編碼網(wǎng)絡(luò)和解碼網(wǎng)絡(luò),可以用卷積、池化、非線性等模塊進(jìn)行設(shè)計和搭建。
圖 4:用深度學(xué)習(xí)進(jìn)行圖片壓縮示意圖
如何評判壓縮算法
在深入技術(shù)細(xì)節(jié)前,我們先來了解一下如何評判壓縮算法。評判一個壓縮算法好壞的重要指標(biāo)有兩個:一個是每個像素占據(jù)的比特位數(shù)(bit per pixel,BPP),一個是 PSNR。我們知道,數(shù)據(jù)在計算機中以比特形式存儲,所需比特數(shù)越多則占據(jù)的存儲空間越大。BPP 用于表示圖像中每個像素所占據(jù)的比特數(shù),如一張 RGB 三通道圖,表示每個像素需要消耗 24 個比特。PSNR 用來評估解碼后圖像的恢復(fù)質(zhì)量,簡單理解就是 PSNR 越高,恢復(fù)質(zhì)量越好。
我們舉個例子,假設(shè)長寬為 768*512 的圖片大小為 1M,利用深度學(xué)習(xí)技術(shù)對它編碼,通過編碼網(wǎng)絡(luò)后產(chǎn)生包括 96*64*192 個數(shù)據(jù)單元的壓縮特征數(shù)據(jù),如果表示每個數(shù)據(jù)單元平均需要消耗 1 個比特,則編碼整張圖需要 96*64*192 個比特。經(jīng)過壓縮后,編碼每個像素需要的比特數(shù)為(96*64*192)/(768*512)=3,所以 BPP 值為 3bit/pixel,壓縮比為 24:3=8:1。這意味著一張 1M 的圖,通過壓縮后只需要消耗 0.125M 的空間,換句話說,之前只能放 1 張照片的空間,現(xiàn)在可以放 8 張。
如何用深度學(xué)習(xí)做壓縮
談到如何用深度學(xué)習(xí)做壓縮,還是用剛才那個例子。將一張大小 768*512 的三通道圖片送入編碼網(wǎng)絡(luò),進(jìn)行前向處理后,會得到占據(jù) 96*64*192 個數(shù)據(jù)單元的壓縮特征。有計算機基礎(chǔ)的讀者可能會想到,這個數(shù)據(jù)單元中可放一個浮點數(shù),整形數(shù),或者是二進(jìn)制數(shù)。那問題來了,到底應(yīng)該放入什么類型的數(shù)據(jù)?從圖像恢復(fù)角度和神經(jīng)網(wǎng)絡(luò)原理來講,如果壓縮特征數(shù)據(jù)都是浮點數(shù),恢復(fù)圖像質(zhì)量是最高的。但一個浮點數(shù)占據(jù) 32 個比特位,那之前講的比特數(shù)計算公式變?yōu)椋?6*64*192*32)/(768*512)=96,壓縮后反而每個像素占據(jù)比特從 24 變到 96,非但沒有壓縮,反而增加了,這是一個糟糕的結(jié)果,很顯然浮點數(shù)不是好的選擇。
所以為了設(shè)計靠譜的算法,我們使用一種稱為量化的技術(shù),它的目的是將浮點數(shù)轉(zhuǎn)換為整數(shù)或二進(jìn)制數(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 個比特位,可是 8:1 的壓縮比在我們看來并不是一個很理想的結(jié)果。那如何進(jìn)一步優(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)。很顯然,當(dāng)我們設(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ù)來進(jìn)一步降低 1 這個數(shù)值,圖像壓縮率會進(jìn)一步提升。
用深度學(xué)習(xí)做視頻壓縮,可以看作是在深度學(xué)習(xí)圖片壓縮基礎(chǔ)上的擴展,可結(jié)合視頻序列幀間的光流等時空信息,在單張壓縮的基礎(chǔ)上,進(jìn)一步降低碼率。
圖 5:在 kodak24 標(biāo)準(zhǔn)數(shù)據(jù)集上測評結(jié)果,上圖為 PSNR 結(jié)果,下圖為 MS-SSIM 的結(jié)果
總結(jié)
總體而言,借助于深度學(xué)習(xí)設(shè)計視頻和圖像壓縮算法是一項非常具有前景但也非常具有挑戰(zhàn)性的技術(shù)。目前,其已經(jīng)在人臉識別等領(lǐng)域證明了它的強大能力,有理由相信在不久的將來,深度學(xué)習(xí)技術(shù)將為圖像視頻壓縮領(lǐng)域帶來更大的突破。
圖 6:在同等壓縮率下壓縮視覺效果對比。上圖為圖鴨所提出的算法,下圖為 JPEG2000 算法。在紋理細(xì)節(jié)上,上圖的效果更好。
圖 7:在同等壓縮率下,對復(fù)雜圖像壓縮視覺效果對比。上圖為圖鴨所提出的算法,下圖為 JPEG2000 算法。在細(xì)節(jié)上,可以看到上圖的效果更好。
圖 8:圖鴨科技,BPG,JPEG2000,JPEG,CNN-google 算法的圖像亮度分量的 rate-distortion 曲線,上圖為感知質(zhì)量,由多尺度結(jié)構(gòu)相似性度量(MS-SSIM)。下圖為峰值信噪比。
(完)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。