崔建良,李建飛,陳春曉,姜睿林
(南京航空航天大學(xué)生物醫(yī)學(xué)工程系,南京 211106)
圖像數(shù)據(jù)間存在大量的冗余,圖像壓縮是減少數(shù)據(jù)冗余、提高圖像存儲效率以及實(shí)現(xiàn)高速高效傳輸?shù)募夹g(shù)。目前常用的圖像壓縮方法有預(yù)測編碼[1]、金字塔方法[2]、矢量編碼[3]、JPEG[4-5]和神經(jīng)網(wǎng)絡(luò)編碼[6]。
JPEG2000是最常用的圖像壓縮方法,小波變換是JPEG2000壓縮方法的核心算法。針對小波變換的編碼效率問題,詹為等[7]提出了改進(jìn)的嵌入式零樹小波算法,提高了編碼效率和峰值信噪比(peak signal-to-noise ratio,PSNR);針對小波變換重構(gòu)質(zhì)量較差的問題,王林等[8]提出基于譜圖小波變換的編碼方法,PSNR和壓縮比也得到了有效提升。隨著圖像數(shù)據(jù)的種類和數(shù)量愈來愈大,圖像壓縮方法面臨新的挑戰(zhàn)。近年來,深度學(xué)習(xí)在圖像處理領(lǐng)域取得了很多成果。任杰[9]提出了一種卷積神經(jīng)網(wǎng)絡(luò)與JPEG壓縮相結(jié)合的編解碼框架,可以提高圖像的壓縮比和視覺質(zhì)量。范靚[10]結(jié)合卷積神經(jīng)網(wǎng)絡(luò)與分形壓縮算法,有效縮短了圖像的編碼時(shí)間,提高了解碼圖像的質(zhì)量。Jiang等[11]提出了一種基于端到端的壓縮框架,它通過與JPEG等編解碼器相結(jié)合,實(shí)現(xiàn)圖像壓縮的功能,取得了較好的效果。深度學(xué)習(xí)技術(shù)給圖像壓縮方法的研究帶來了新的契機(jī)。以上深度學(xué)習(xí)方法雖然取得了較高的重建圖像的質(zhì)量,但均無大幅度提高壓縮率。對于同時(shí)提高重建效果和壓縮率的問題,本研究針對基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法,設(shè)計(jì)和構(gòu)建了CNNC圖像壓縮模型,在保證圖像質(zhì)量的前提下,進(jìn)一步提高圖像的壓縮比和PSNR等圖像壓縮評價(jià)指標(biāo)。
卷積神經(jīng)網(wǎng)絡(luò)一般包含輸入層、卷積層、池化層、全連接層和輸出層[12],不同的網(wǎng)絡(luò)所包含的層數(shù)及各種層所占的比例不同。卷積神經(jīng)網(wǎng)絡(luò)的基本模型見圖1。
圖1 卷積神經(jīng)網(wǎng)絡(luò)基本模型
卷積層可以自動(dòng)提取輸入信號的深層信息,具有局部感受野和權(quán)值共享的特點(diǎn)。池化層通過執(zhí)行下采樣操作,可以有效地控制過擬合。全連接層是指下層的每個(gè)神經(jīng)元根據(jù)權(quán)重接受上層網(wǎng)絡(luò)中每個(gè)神經(jīng)元傳遞的特征值,并利用偏置與激活函數(shù)提取特征,得到預(yù)期的結(jié)構(gòu)。
基于卷積神經(jīng)網(wǎng)絡(luò)的CNNC圖像壓縮模型的結(jié)構(gòu)見圖2,網(wǎng)絡(luò)主要由輸入層、編碼層、解碼層和輸出層組成,其中編碼層由卷積層和池化層組成,解碼層由卷積層和反卷積層組成。
圖2 CNNC壓縮模型網(wǎng)絡(luò)結(jié)構(gòu)
設(shè)置批處理量為50。圖像像素為M×N的數(shù)據(jù)集進(jìn)入到輸入層之前,數(shù)據(jù)的格式就被處理為[50,M,N]的三維矩陣形式。三維矩陣進(jìn)入輸入層以后,在輸入層中進(jìn)行預(yù)處理,圖像由原來的[M,N]二維矩陣變?yōu)閇M,N, 1]的三維矩陣,數(shù)據(jù)格式也從[50,M,N]的三維矩陣轉(zhuǎn)變?yōu)閇50,M,N, 1]的四維張量。
輸出層除了執(zhí)行數(shù)據(jù)的輸出外,還會(huì)對數(shù)據(jù)進(jìn)行后處理。輸出層后處理的方式是將數(shù)據(jù)格式從[50,M,N, 1]的四維張量轉(zhuǎn)變?yōu)閇50,M,N]的三維矩陣。至此,數(shù)據(jù)的一次前向傳播結(jié)束,然后通過損失函數(shù)和優(yōu)化函數(shù)進(jìn)行反向傳播。
本實(shí)驗(yàn)采用NVIDIA GTX1060 6 G顯存,16 G內(nèi)存,Tensorflow-GPU1.11.0版本在Python3.6.6模式下運(yùn)行,編譯環(huán)境為Pycharm。
訓(xùn)練集采用自己制作的數(shù)據(jù)集,數(shù)據(jù)集中的圖像包含風(fēng)景、動(dòng)物等,圖像大小為256×256;測試集采用Set12數(shù)據(jù)集,數(shù)據(jù)集中包含Cameraman、House、Pepper、Fishstar、Monarch、Airplane、Parrot、Lena、Barbara、Ship、Man、Couple共12張圖片。
實(shí)驗(yàn)中,分別設(shè)置CNNC網(wǎng)絡(luò)中卷積層、池化層的層數(shù)n=4,5,6此時(shí)CNNC壓縮比為2,8,32。JPEG壓縮比分別為2.106±0.281,7.993±0.125,32.322±1.691。CNNC訓(xùn)練500次后,對Set12數(shù)據(jù)集進(jìn)行測試,得到的結(jié)果與JPEG結(jié)果進(jìn)行對比,評價(jià)指標(biāo)采用PSNR和結(jié)構(gòu)相似性(structural similarity index,SSIM),評價(jià)結(jié)果見表1。
由表1可以看出,壓縮比為2時(shí), CNNC壓縮方法的PSNR和SSIM低于JPEG壓縮,此時(shí)JPEG壓縮接近無損壓縮,SSIM≈1;壓縮比為8時(shí),CNNC壓縮方法各指標(biāo)變化不大,但JPEG壓縮方法各個(gè)指標(biāo)性能明顯下降;壓縮比為32時(shí), CNNC壓縮方法的PSNR和SSIM都遠(yuǎn)高于JPEG壓縮方法。各種壓縮比情況下,圖像重建結(jié)果見圖3,可以看出,壓縮比為32時(shí),JPEG壓縮方法出現(xiàn)了明顯的失真,但是CNNC壓縮方法重建的圖像質(zhì)量仍然較好。
圖3CNNC與JPEG在不同壓縮比下的結(jié)果比較
Fig.3Comparison of CNNC and JPEG results at different compression ratios
為進(jìn)一步研究CNNC的壓縮能力,設(shè)置卷積池化層層數(shù)n=7,此時(shí)CNNC壓縮比為128,而JPEG已無法達(dá)到128倍的壓縮比。在CNNC訓(xùn)練500次后,對Set12數(shù)據(jù)集進(jìn)行測試,結(jié)果見表2。表2中,Set12數(shù)據(jù)集的PSNR為31.092±2.176,SSIM為0.932±0.016。由此可以看出,在壓縮比為128時(shí),CNNC壓縮方法的各個(gè)性能指標(biāo)仍然較好。CNNC壓縮128倍時(shí)重建結(jié)果見圖4。
表2 CNNC對Set12數(shù)據(jù)集的壓縮結(jié)果(壓縮比128)
圖4CNNC壓縮結(jié)果重建圖
Fig.4Reconstruction of CNNC compression result
研究結(jié)果顯示,當(dāng)壓縮比較低時(shí),JPEG壓縮方法與CNNC壓縮方法無顯著差異,但當(dāng)壓縮比較高時(shí), CNNC壓縮方法有明顯的優(yōu)勢,當(dāng)壓縮比為128時(shí),重建結(jié)果仍然較好。
本研究設(shè)計(jì)并搭建了基于卷積神經(jīng)網(wǎng)絡(luò)的CNNC圖像壓縮模型,通過多個(gè)卷積層和池化層對圖像進(jìn)行壓縮,并利用多個(gè)反卷積層和卷積層對壓縮圖像進(jìn)行解碼。結(jié)果表明,本研究提出的CNNC模型在高壓縮比的情況下,仍可保持較高的PSNR和SSIM,圖像失真小,壓縮性能明顯高于傳統(tǒng)的JPEG壓縮方法。