崔建良,李建飛,陳春曉,姜睿林
(南京航空航天大學生物醫學工程系,南京 211106)
圖像數據間存在大量的冗余,圖像壓縮是減少數據冗余、提高圖像存儲效率以及實現高速高效傳輸的技術。目前常用的圖像壓縮方法有預測編碼[1]、金字塔方法[2]、矢量編碼[3]、JPEG[4-5]和神經網絡編碼[6]。
JPEG2000是最常用的圖像壓縮方法,小波變換是JPEG2000壓縮方法的核心算法。針對小波變換的編碼效率問題,詹為等[7]提出了改進的嵌入式零樹小波算法,提高了編碼效率和峰值信噪比(peak signal-to-noise ratio,PSNR);針對小波變換重構質量較差的問題,王林等[8]提出基于譜圖小波變換的編碼方法,PSNR和壓縮比也得到了有效提升。隨著圖像數據的種類和數量愈來愈大,圖像壓縮方法面臨新的挑戰。近年來,深度學習在圖像處理領域取得了很多成果。任杰[9]提出了一種卷積神經網絡與JPEG壓縮相結合的編解碼框架,可以提高圖像的壓縮比和視覺質量。范靚[10]結合卷積神經網絡與分形壓縮算法,有效縮短了圖像的編碼時間,提高了解碼圖像的質量。Jiang等[11]提出了一種基于端到端的壓縮框架,它通過與JPEG等編解碼器相結合,實現圖像壓縮的功能,取得了較好的效果。深度學習技術給圖像壓縮方法的研究帶來了新的契機。以上深度學習方法雖然取得了較高的重建圖像的質量,但均無大幅度提高壓縮率。對于同時提高重建效果和壓縮率的問題,本研究針對基于卷積神經網絡的深度學習方法,設計和構建了CNNC圖像壓縮模型,在保證圖像質量的前提下,進一步提高圖像的壓縮比和PSNR等圖像壓縮評價指標。
卷積神經網絡一般包含輸入層、卷積層、池化層、全連接層和輸出層[12],不同的網絡所包含的層數及各種層所占的比例不同。卷積神經網絡的基本模型見圖1。

圖1 卷積神經網絡基本模型
卷積層可以自動提取輸入信號的深層信息,具有局部感受野和權值共享的特點。池化層通過執行下采樣操作,可以有效地控制過擬合。全連接層是指下層的每個神經元根據權重接受上層網絡中每個神經元傳遞的特征值,并利用偏置與激活函數提取特征,得到預期的結構。
基于卷積神經網絡的CNNC圖像壓縮模型的結構見圖2,網絡主要由輸入層、編碼層、解碼層和輸出層組成,其中編碼層由卷積層和池化層組成,解碼層由卷積層和反卷積層組成。

圖2 CNNC壓縮模型網絡結構
設置批處理量為50。圖像像素為M×N的數據集進入到輸入層之前,數據的格式就被處理為[50,M,N]的三維矩陣形式。三維矩陣進入輸入層以后,在輸入層中進行預處理,圖像由原來的[M,N]二維矩陣變為[M,N, 1]的三維矩陣,數據格式也從[50,M,N]的三維矩陣轉變為[50,M,N, 1]的四維張量。


輸出層除了執行數據的輸出外,還會對數據進行后處理。輸出層后處理的方式是將數據格式從[50,M,N, 1]的四維張量轉變為[50,M,N]的三維矩陣。至此,數據的一次前向傳播結束,然后通過損失函數和優化函數進行反向傳播。
本實驗采用NVIDIA GTX1060 6 G顯存,16 G內存,Tensorflow-GPU1.11.0版本在Python3.6.6模式下運行,編譯環境為Pycharm。
訓練集采用自己制作的數據集,數據集中的圖像包含風景、動物等,圖像大小為256×256;測試集采用Set12數據集,數據集中包含Cameraman、House、Pepper、Fishstar、Monarch、Airplane、Parrot、Lena、Barbara、Ship、Man、Couple共12張圖片。
實驗中,分別設置CNNC網絡中卷積層、池化層的層數n=4,5,6此時CNNC壓縮比為2,8,32。JPEG壓縮比分別為2.106±0.281,7.993±0.125,32.322±1.691。CNNC訓練500次后,對Set12數據集進行測試,得到的結果與JPEG結果進行對比,評價指標采用PSNR和結構相似性(structural similarity index,SSIM),評價結果見表1。
由表1可以看出,壓縮比為2時, CNNC壓縮方法的PSNR和SSIM低于JPEG壓縮,此時JPEG壓縮接近無損壓縮,SSIM≈1;壓縮比為8時,CNNC壓縮方法各指標變化不大,但JPEG壓縮方法各個指標性能明顯下降;壓縮比為32時, CNNC壓縮方法的PSNR和SSIM都遠高于JPEG壓縮方法。各種壓縮比情況下,圖像重建結果見圖3,可以看出,壓縮比為32時,JPEG壓縮方法出現了明顯的失真,但是CNNC壓縮方法重建的圖像質量仍然較好。

圖3CNNC與JPEG在不同壓縮比下的結果比較
Fig.3Comparison of CNNC and JPEG results at different compression ratios
為進一步研究CNNC的壓縮能力,設置卷積池化層層數n=7,此時CNNC壓縮比為128,而JPEG已無法達到128倍的壓縮比。在CNNC訓練500次后,對Set12數據集進行測試,結果見表2。表2中,Set12數據集的PSNR為31.092±2.176,SSIM為0.932±0.016。由此可以看出,在壓縮比為128時,CNNC壓縮方法的各個性能指標仍然較好。CNNC壓縮128倍時重建結果見圖4。

表2 CNNC對Set12數據集的壓縮結果(壓縮比128)

圖4CNNC壓縮結果重建圖
Fig.4Reconstruction of CNNC compression result
研究結果顯示,當壓縮比較低時,JPEG壓縮方法與CNNC壓縮方法無顯著差異,但當壓縮比較高時, CNNC壓縮方法有明顯的優勢,當壓縮比為128時,重建結果仍然較好。
本研究設計并搭建了基于卷積神經網絡的CNNC圖像壓縮模型,通過多個卷積層和池化層對圖像進行壓縮,并利用多個反卷積層和卷積層對壓縮圖像進行解碼。結果表明,本研究提出的CNNC模型在高壓縮比的情況下,仍可保持較高的PSNR和SSIM,圖像失真小,壓縮性能明顯高于傳統的JPEG壓縮方法。