符世園,汪 璐,程耀東,3,陳 剛
(1. 中國(guó)科學(xué)院高能物理研究所, 北京 100049; 2. 中國(guó)科學(xué)院大學(xué), 北京 100049; 3. 四川天府新區(qū)宇宙線研究中心, 四川 成都 610213)
作為眾多學(xué)科前沿領(lǐng)域不可或缺的大科學(xué)裝置,同步輻射光源裝置會(huì)產(chǎn)生海量數(shù)據(jù)。以正在建設(shè)中的北京高能同步輻射光源為例,一期工程預(yù)計(jì)平均每天產(chǎn)生200 TB的原始實(shí)驗(yàn)數(shù)據(jù),峰值可達(dá)每天500 TB[1],數(shù)據(jù)期望保存時(shí)長(zhǎng)為半年,其中成像實(shí)驗(yàn)線站產(chǎn)生的圖像數(shù)據(jù)量最大,所需存儲(chǔ)和傳輸資源最多。實(shí)驗(yàn)樣品被平行光照射后會(huì)得到一個(gè)投影圖,每次成像之間會(huì)將樣品在水平方向旋轉(zhuǎn)一個(gè)很小的角度,最終得到該樣品在不同角度的16 bit單通道灰度圖像序列,該序列具有高分辨率、高幀率的特點(diǎn)。持續(xù)大幅增長(zhǎng)的數(shù)據(jù)量和較長(zhǎng)的原始數(shù)據(jù)保存期限給數(shù)據(jù)存儲(chǔ)和傳輸帶來很大挑戰(zhàn),圖像壓縮將是解決這一問題的主要方法。同時(shí),為了充分挖掘原始數(shù)據(jù)中的科學(xué)潛力,圖像壓縮過程中最好沒有信息損失。
目前通用無損圖像壓縮方法主要通過消除圖像內(nèi)部冗余進(jìn)行壓縮,但是無法消除圖像序列中的時(shí)間冗余;視頻壓縮方法,比如通用的視頻無損壓縮和基于神經(jīng)網(wǎng)絡(luò)的視頻壓縮方法主要通過運(yùn)動(dòng)補(bǔ)償進(jìn)行幀間預(yù)測(cè),而同步輻射光源實(shí)驗(yàn)中樣品的運(yùn)動(dòng)軌跡是繞中心軸旋轉(zhuǎn),基于運(yùn)動(dòng)的幀間預(yù)測(cè)方法不適用于該場(chǎng)景。
本文提出了一種基于差分和神經(jīng)網(wǎng)絡(luò)的同步輻射光源圖像無損壓縮方法。首先基于圖像序列之間的強(qiáng)相關(guān)性,通過圖像差分去除圖像間線性冗余;然后對(duì)差分圖像進(jìn)行截?cái)嘤成?,解決了原神經(jīng)網(wǎng)絡(luò)壓縮方法對(duì)16 bit數(shù)據(jù)沒有明顯壓縮效果的問題;為消除模型大小對(duì)圖像壓縮率的影響,對(duì)一組圖像序列使用統(tǒng)一模型進(jìn)行預(yù)測(cè)壓縮,得到的壓縮率優(yōu)于傳統(tǒng)圖像壓縮方法;最后,為優(yōu)化壓縮時(shí)間,對(duì)差分映射圖像進(jìn)行像素位分裂,并行化處理以加速圖像壓縮過程。
通用無損圖像壓縮方法主要通過消除圖像局部的相似性,并結(jié)合編碼進(jìn)行壓縮。便攜式網(wǎng)絡(luò)圖形[2](portable network graphics,PNG)通過差分去除圖像內(nèi)部冗余,使用Deflate對(duì)剩余信息進(jìn)行壓縮;JPEG2000[3]將原始圖像分割成互不重疊的圖像塊,以塊為單位進(jìn)行離散變換,將得到的變換系數(shù)作為量化和熵編碼對(duì)象;自由無損圖像格式[4](free lossless image format,F(xiàn)LIF)基于元自適應(yīng)近零整數(shù)算術(shù)編碼(meta-adaptive near-zero integer arithmetic coding,MANIAC),通過構(gòu)建決策樹學(xué)習(xí)上下文模型。對(duì)于標(biāo)簽圖像文件格式(tagged image file format,TIF)圖像,常見的壓縮方法為串表壓縮(lempel-ziv-welch encoding,LZW)算法和位壓縮(PackBits)算法,LZW算法通過建立字符串表,用較短的代碼表示較長(zhǎng)的字符串來實(shí)現(xiàn)壓縮;PackBits算法通過字節(jié)重復(fù)或不重復(fù)個(gè)數(shù)來減少字節(jié)的數(shù)量,達(dá)到壓縮的目的。JPEG-LS[5]常用于醫(yī)學(xué)圖像無損壓縮。上述方法只能通過去除單個(gè)圖像內(nèi)部冗余的方法以減小圖像體積。
FFV1[6]是一種無損視頻編碼格式,通過上下文模型進(jìn)行視頻壓縮,根據(jù)相鄰像素預(yù)測(cè)當(dāng)前像素值,通過熵編碼壓縮真實(shí)值和預(yù)測(cè)值之間的差異;文獻(xiàn)[7]提出一種基于差分和JPEG2000的壓縮方法,用于處理紅外探測(cè)系統(tǒng)產(chǎn)生的圖像序列,對(duì)于序列中單張圖片的某一像素值,將其左側(cè)相鄰像素值或前一張圖像同一空間位置像素作為預(yù)測(cè)值,使用JPEG2000壓縮真實(shí)值與預(yù)測(cè)值的差。經(jīng)測(cè)試,該方法對(duì)于同步輻射光源圖像壓縮結(jié)果沒有明顯提升,這是由于相較于紅外圖像,同步輻射光源圖像更為復(fù)雜,雖然差分后像素值分布會(huì)更加集中,但是JPEG2000無法挖掘更深層次的相關(guān)性來降低圖像所需存儲(chǔ)空間。
神經(jīng)網(wǎng)絡(luò)包含卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)等,卷積神經(jīng)網(wǎng)絡(luò)為包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),循環(huán)神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)上引入了時(shí)序的概念[8],能對(duì)輸入時(shí)序信號(hào)逐層抽象并提取特征[9]。神經(jīng)網(wǎng)絡(luò)目前已經(jīng)在諸多場(chǎng)景中有了廣泛應(yīng)用和突破,比如機(jī)器翻譯[10]、語音識(shí)別[11]、摘要提取[12]等。而在數(shù)據(jù)壓縮方面,傳統(tǒng)壓縮方法無法對(duì)于特定數(shù)據(jù)進(jìn)行優(yōu)化,因此研究人員在基于學(xué)習(xí)的圖像和視頻壓縮方向進(jìn)行了諸多研究。
1.2.1 有損壓縮
基于神經(jīng)網(wǎng)絡(luò)的有損壓縮方法主要通過構(gòu)建自編碼器和自回歸模型等達(dá)到壓縮的目的。文獻(xiàn)[13]通過自編碼器學(xué)習(xí)圖像數(shù)據(jù)分布到潛在空間的可逆映射,其潛在空間經(jīng)過量化,最終壓縮量化后的潛在空間以有損壓縮數(shù)據(jù)。文獻(xiàn)[14]通過循環(huán)神經(jīng)網(wǎng)絡(luò)增加感受野,以感知更大圖像區(qū)域的信息;文獻(xiàn)[15]構(gòu)建基于神經(jīng)網(wǎng)絡(luò)的自編碼器進(jìn)行視頻壓縮,利用先驗(yàn)信息優(yōu)化壓縮效果;自回歸模型通過上下文建模預(yù)測(cè)圖像概率分布,目前主流的回歸模型包括PixelCNN[16]、PixelCNN++[17]、PixelRNN[18]以及Multiscale-PixelCNN[19]等。文獻(xiàn)[20]提出一種通過卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)學(xué)習(xí)原始圖像緊湊表示,用于優(yōu)化遙感圖像數(shù)據(jù)的傳輸過程。文獻(xiàn)[21]通過變分自編碼器模型實(shí)現(xiàn)了連續(xù)比特率可調(diào)的圖像壓縮方法。文獻(xiàn)[22]綜述了基于神經(jīng)網(wǎng)絡(luò)的視頻壓縮方法,該類方法主要通過構(gòu)建不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以預(yù)測(cè)運(yùn)動(dòng)矢量,并用于構(gòu)建后續(xù)預(yù)測(cè)幀?;谶\(yùn)動(dòng)補(bǔ)償?shù)姆椒ǜm用于平移等線性移動(dòng)的幀間預(yù)測(cè),而同步輻射光源圖像中樣品運(yùn)動(dòng)為繞中心軸旋轉(zhuǎn),像素值為多個(gè)點(diǎn)旋轉(zhuǎn)后的復(fù)合值,即單一像素值變化與同一行左右像素值相關(guān),不能簡(jiǎn)單地通過運(yùn)動(dòng)補(bǔ)償進(jìn)行預(yù)測(cè)。
1.2.2 無損壓縮
而神經(jīng)網(wǎng)絡(luò)在無損壓縮方面也極具潛力。由信息論可知,數(shù)據(jù)壓縮的極限與信源各元的概率分布以及信源各元之間的相關(guān)性有關(guān)。對(duì)于不同的壓縮方法,同一信源各元之間的相關(guān)性是固定不變的,因此壓縮方法的效果與概率分布相關(guān),概率分布指的是一定長(zhǎng)度的數(shù)據(jù)中各元的概率分布情況,理論上,當(dāng)長(zhǎng)度為1時(shí),僅該元真實(shí)值對(duì)應(yīng)概率為1,其余值對(duì)應(yīng)概率為0,此時(shí)能夠得到最好的壓縮率。而獲得下一個(gè)元真實(shí)值的概率有兩種方式:一是直接記錄下一個(gè)元取值的概率分布,這種方法會(huì)引入與信源長(zhǎng)度相同的概率分布數(shù)據(jù),無法達(dá)到壓縮信息的目的;二是通過前向序列推測(cè)下一個(gè)元的概率分布,推測(cè)的過程通過神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),因此神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力越強(qiáng),預(yù)測(cè)越準(zhǔn)確,從而獲得更好的壓縮率。理想情況下,模型學(xué)習(xí)能力達(dá)到根據(jù)前向序列推測(cè)出當(dāng)前元正確的值,當(dāng)前元被正確推測(cè)出之后,可用于后續(xù)元的推測(cè),此時(shí)數(shù)據(jù)壓縮的邊界大小僅為模型大小以及一段常數(shù)長(zhǎng)度的前向序列。
文獻(xiàn)[23-24]將神經(jīng)網(wǎng)絡(luò)用于RGB圖像無損壓縮,通過保存圖像的低分辨率作為輸入,以預(yù)測(cè)高分辨率圖像的概率,結(jié)合熵編碼達(dá)到無損壓縮的目的。文獻(xiàn)[25]將神經(jīng)網(wǎng)絡(luò)用于文本序列無損壓縮,通過神經(jīng)網(wǎng)絡(luò)挖掘數(shù)據(jù)內(nèi)部的非線性關(guān)系,通過前向序列值來預(yù)測(cè)當(dāng)前值在字典上的概率分布,其中字典由文本中出現(xiàn)的所有字符構(gòu)成,最后結(jié)合算術(shù)編碼進(jìn)行壓縮,該方法在DNA等字典較小的數(shù)據(jù)上得到了優(yōu)于傳統(tǒng)方法的結(jié)果。但該方法需要對(duì)每一個(gè)壓縮對(duì)象訓(xùn)練獨(dú)立的模型,并且壓縮時(shí)間較長(zhǎng),針對(duì)該問題,文獻(xiàn)[26]提出一種混合自適應(yīng)訓(xùn)練和半自適應(yīng)訓(xùn)練的架構(gòu),但是該方法在光源圖像壓縮問題上表現(xiàn)不佳;另外,對(duì)于16 bit的同步輻射光源圖像,存在字典范圍較大情況下壓縮不明顯的問題。同樣將神經(jīng)網(wǎng)絡(luò)用于無損壓縮的新方法還包括lstm-compress[27],該方法可直接用于16 bit數(shù)據(jù)壓縮。
同步輻射光源裝置生成的圖像是16 bit單通道灰度投影圖像序列,像素值代表該像素上光子數(shù)的多少。對(duì)任意樣品,投影圖像像素?cái)?shù)目一般為M2,圖像張數(shù)最少為M×Π/4(Π取3.14),具體取值與設(shè)備和樣品有關(guān),單個(gè)樣本會(huì)產(chǎn)生上千甚至上萬張圖像,數(shù)據(jù)量達(dá)到數(shù)GB,這些圖像具有高幀率、高分辨率和低對(duì)比度的特點(diǎn)。如圖1所示,示例圖像中的樣品為恐龍尾巴,圖像中樣本結(jié)構(gòu)復(fù)雜,相互重疊,圖像尺寸為1 200×2 048,掃描共產(chǎn)生1 622張投影圖,圖像像素值主要分布在0~40 000之間。
由于拍攝樣品投影圖時(shí),相鄰拍攝之間會(huì)對(duì)樣品旋轉(zhuǎn)一個(gè)極小的水平角度,同時(shí)樣品本身具有結(jié)構(gòu)信息,因此光源圖像序列在時(shí)間和空間上存在一定的相關(guān)性。其中空間相關(guān)性指圖像內(nèi)部某像素與相鄰像素之間的相似性,使用自相關(guān)系數(shù)衡量,對(duì)于尺寸為X×Y的圖像,空間相關(guān)性計(jì)算公式為:
(1)
其中,l為左側(cè)間距,k為上方間距,Uf為圖像像素值均值,f(x,y)為圖像對(duì)應(yīng)位置的像素值。
(a) 示例(a) Example
時(shí)間相關(guān)性指連續(xù)兩張圖像同一空間位置像素之間的相關(guān)性,使用互相關(guān)系數(shù)衡量,計(jì)算第i張圖像與第j張圖像的時(shí)間相關(guān)性公式,即:
(2)
對(duì)上述示例圖像序列,計(jì)算其圖像之間的時(shí)間相關(guān)性以及圖像內(nèi)部的空間相關(guān)性。其中,時(shí)間相關(guān)性分別取待計(jì)算圖像的前2n(0≤n≤6)張圖像進(jìn)行計(jì)算,空間相關(guān)性分別取間距為2n(0≤n≤6)的左、上、對(duì)角位置像素值進(jìn)行計(jì)算,取均值后得到結(jié)果如圖2所示。
圖2 原圖時(shí)間及空間相關(guān)性系數(shù)Fig.2 Temporal correlation and spatial correlation of original images
由圖2可知,該圖像序列時(shí)間相關(guān)性接近于1,說明該圖像序列具有極強(qiáng)的時(shí)間相關(guān)性,其中時(shí)間相關(guān)性大于空間相關(guān)性,而空間相關(guān)性整體較弱,不同位置元素相關(guān)性的差異隨著n的增大而增大,其中,左側(cè)元素相關(guān)性相對(duì)較強(qiáng),同時(shí)隨著n的變化下降最緩慢,對(duì)角元素相關(guān)性最弱;同時(shí),隨著間隔變大,時(shí)間相關(guān)性和空間相關(guān)性均呈下降趨勢(shì)。因此,對(duì)于原圖設(shè)計(jì)了兩種差分方式:一是時(shí)間差分,即將前一張圖像同空間位置的像素值作為預(yù)測(cè)值;二是空間差分,即選擇左側(cè)元素的像素值作為預(yù)測(cè)值。
本文提出的同步輻射光源圖像無損壓縮方法如圖3所示。首先對(duì)于原始圖像序列進(jìn)行差分,以去除圖像序列的線性相關(guān)性,差分分為時(shí)間差分和空間差分,時(shí)間差分即相鄰兩張圖像同一空間位置像素相減,序列中第一張圖像不做處理,空間差分即從圖像第二列開始,像素值減去左側(cè)相鄰元素原始像素值。然后訓(xùn)練神經(jīng)網(wǎng)絡(luò)挖掘差分圖像序列內(nèi)部的非線性相關(guān)性,將像素分布范圍作為字典取值范圍,使用訓(xùn)練好的模型以預(yù)測(cè)像素值在字典范圍內(nèi)的概率分布,結(jié)合算術(shù)編碼進(jìn)行壓縮,其中為了解決字典過大導(dǎo)致的壓縮效果不明顯的問題,提出可逆的截?cái)嘤成浞椒ㄒ源蠓s小數(shù)據(jù)范圍,對(duì)于壓縮過程耗時(shí)問題,提出像素位分裂策略,將像素值分裂為高位和低位兩部分并行處理。解壓為壓縮的逆過程,讀取壓縮時(shí)保存的模型參數(shù)初始化模型,保證解壓得到的數(shù)據(jù)與原始數(shù)據(jù)相同,最終達(dá)到無損壓縮的目的。
圖3 光源圖像壓縮流程Fig.3 Dataflow of the compression method
圖像差分用于減弱圖像間或圖像內(nèi)部的相似部分,突出不同部分,分為時(shí)間差分和空間差分。以時(shí)間差分為例,如圖4所示,第一行圖像從左到右為原始圖像序列,第二行圖像為對(duì)應(yīng)上方原始圖像減去前一張圖像空間位置像素值后得到的時(shí)間差分圖像,為對(duì)比明顯,將原圖和時(shí)間差分映射后的圖像由16 bit轉(zhuǎn)換到8 bit。原始圖像由于對(duì)比度低,樣本輪廓模糊,同時(shí),由于圖像像素值代表平行光透過樣品后的光子數(shù),所以包含樣品信息的部分像素值較小,而不含樣品信息的部分像素值較大。經(jīng)過時(shí)間差分后,圖像中樣品的特征更加明顯,包含樣品信息的部分像素值增大,而由于前后相鄰圖像中樣本信息含量較少的部分像素值比較接近,因此減弱了噪聲信息對(duì)樣本信息的干擾。
圖4 原始圖像與時(shí)間差分映射圖像對(duì)比Fig.4 Original images and temporal-difference mapping images
截?cái)嘤成溆糜谶M(jìn)一步縮小差分圖像的像素值分布范圍,該映射是可逆的。經(jīng)過差分后,圖像像素值分布更加集中,因此,壓縮過程中選擇不壓縮部分長(zhǎng)拖尾數(shù)據(jù)值,將其統(tǒng)一映射到新的像素分布范圍右側(cè)邊界加1的值,原始數(shù)據(jù)按順序直接存放至壓縮數(shù)據(jù)流末尾,即將數(shù)據(jù)分為不壓縮和待壓縮兩部分,用較小的空間代價(jià)換取更小的數(shù)據(jù)分布范圍,定義該過程為截?cái)嘤成?。新的?shù)據(jù)分布范圍以0為起始點(diǎn),因此映射后待壓縮數(shù)據(jù)均為非負(fù)值,確定分布范圍終點(diǎn)時(shí),首先將數(shù)據(jù)右移一段距離,這段距離是新的數(shù)據(jù)分布范圍的中軸對(duì)應(yīng)值,然后判斷在這個(gè)范圍內(nèi)是否包含了超過98%的數(shù)據(jù),當(dāng)判斷成功時(shí)即獲得了新的分布范圍。
選定像素值范圍界限如式(3)所示。像素值分布整體向右平移Bound(index)/2后,統(tǒng)計(jì)像素值落在[0,Bound(index)]中的百分比,當(dāng)百分比大于98%時(shí)即獲得截?cái)嘤成涞倪吔绶秶怠?/p>
(3)
以上述差分圖像為例,可得Bound為3 000,說明差分圖像像素值98%以上在[-1 500,1 500]之間。將在范圍內(nèi)的數(shù)據(jù)平移到[0,3 000],同時(shí)將范圍外像素值使用3 001替代,圖5為將數(shù)據(jù)范圍進(jìn)一步縮小到[0,3 001]之后的數(shù)據(jù)分布圖,末尾為壓縮過程中不壓縮的數(shù)據(jù)量。
圖5 時(shí)間差分映射圖像像素值分布Fig.5 Pixel value distribution of temporal-difference mapping image
經(jīng)過差分后,圖像的時(shí)間相關(guān)性和空間相關(guān)性會(huì)發(fā)生變化,兩種差分方式均可有效去除圖像序列中存在的時(shí)間冗余和空間冗余。以經(jīng)過截?cái)嘤成涞目臻g差分圖像為例,如圖6所示,圖像的時(shí)間相關(guān)性和空間相關(guān)性相較原圖大幅度減小,其中時(shí)間相關(guān)性降低到0.4以下,不同位置空間相關(guān)性降低到0.2以下,隨著n的增大,時(shí)間相關(guān)性降低到0.2以下,空間相關(guān)性趨近于0。因此,差分操作可以有效降低圖像序列內(nèi)的線性時(shí)間相關(guān)性和空間相關(guān)性。
圖6 空間差分映射圖像相關(guān)系數(shù)Fig.6 Correlation factor of spatial-difference mapping images
模型的輸入來源是差分映射圖像、對(duì)應(yīng)時(shí)間相關(guān)性和空間相關(guān)性,模型的輸入分為兩種,即時(shí)間序列和空間序列,輸入輸出構(gòu)造如圖7所示。以預(yù)測(cè)T時(shí)刻圖像某一像素值(即圖7(c)中T時(shí)刻紅色像素塊)概率分布為例,時(shí)間序列為前K張圖像中與預(yù)測(cè)像素值空間位置相同的像素按時(shí)間順序排列得到的輸入序列,圖7(a)為K=3的情況;空間序列為待預(yù)測(cè)像素塊左上方共N×(N-1)個(gè)像素塊按行掃描順序排列的輸入序列,圖7(b)所示為N=2的情況。
(a) 時(shí)序輸入構(gòu)造(a) Construction of input in temporal
模型輸出是一個(gè)長(zhǎng)度與圖像像素取值個(gè)數(shù)相同的稀疏向量,向量中每一個(gè)元素值的大小代表當(dāng)前像素取值與對(duì)應(yīng)元素相同的可能性。訓(xùn)練時(shí)構(gòu)造的輸出如圖7(c)所示,該向量?jī)H在預(yù)測(cè)像素值對(duì)應(yīng)位置為1,其余位置為0;預(yù)測(cè)時(shí),模型的輸出為預(yù)測(cè)值的概率分布。
將經(jīng)過差分映射后的圖像數(shù)據(jù)看作文本序列,使用嵌入層將輸入轉(zhuǎn)換為具有特定大小的向量,隨后輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行處理,輸出層為softmax,輸出為待預(yù)測(cè)像素值的概率分布。模型訓(xùn)練基于Tensorflow[28]、sklearn[29]等框架,損失函數(shù)選用交叉熵?fù)p失函數(shù)。以三種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)作對(duì)比:全連接層(fully connect layer,F(xiàn)C)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long short-term memory,LSTM)、門控循環(huán)單元(gated recurrent units, GRU)。
FC中,當(dāng)前層每一個(gè)節(jié)點(diǎn)均與上一層每個(gè)節(jié)點(diǎn)連接,由自身反向傳播確定準(zhǔn)確的權(quán)重。每個(gè)神經(jīng)元接收的權(quán)重將優(yōu)先選擇最合適的標(biāo)簽,最終,綜合神經(jīng)元在每個(gè)標(biāo)簽上的選擇得出結(jié)果。
LSTM使用時(shí)間記憶單元記錄當(dāng)前時(shí)刻的狀態(tài),一般稱為長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)的細(xì)胞。每個(gè)細(xì)胞與三個(gè)信息傳遞開關(guān)門相連接,分別是遺忘門、輸入門和輸出門,以共同控制信息流入和流出,“門”機(jī)制解決了循環(huán)神經(jīng)網(wǎng)絡(luò)的梯度消失問題,從而學(xué)習(xí)到長(zhǎng)距離依賴。
GRU與LSTM都是為了解決長(zhǎng)期記憶和反向傳播中的梯度等問題,不同于LSTM,GRU只有兩個(gè)門用于控制信息的傳遞,即更新門和重置門,因此網(wǎng)絡(luò)結(jié)構(gòu)更加簡(jiǎn)單,更易訓(xùn)練,能夠很大程度上提高訓(xùn)練效率。
像素位分裂即將像素值所占比特位分為高位和低位兩部分并行處理。由于循環(huán)神經(jīng)網(wǎng)絡(luò)壓縮方法用時(shí)較長(zhǎng),因此探索在保證壓縮率不受影響的前提下,像素位分裂對(duì)于本方法加速的空間。
相較于分裂之前,將差分和截?cái)嘤成浜蟮膱D像像素值分裂后,可以得到更規(guī)律的高位像素值分布,分裂之后的可以得到更規(guī)律的高位像素值分布,而低位像素值隨機(jī)性更強(qiáng),這是因?yàn)楣庠磮D像經(jīng)過差分和截?cái)嘤成浜螅瑯颖拘畔⒌南袼刂底兇?,噪聲部分集中在?shù)據(jù)的低位,所以像素值高位數(shù)據(jù)包含更強(qiáng)的樣本結(jié)構(gòu)信息,可學(xué)習(xí)性更強(qiáng),訓(xùn)練得到的模型預(yù)測(cè)效果會(huì)更好,雖然低位數(shù)據(jù)包含噪聲,隨機(jī)性更強(qiáng),導(dǎo)致可壓縮空間降低,但是經(jīng)過像素位分裂之后,低位數(shù)據(jù)所占比特位進(jìn)一步縮小,因此其像素值范圍可以得到進(jìn)一步減小,此外,高位數(shù)據(jù)可壓縮空間變大,一定程度上可以緩解甚至彌補(bǔ)低位可壓縮性變差的問題。
像素位分裂后,像素值預(yù)測(cè)可以分為兩部分并行預(yù)測(cè),同時(shí)減小像素值范圍,縮短模型預(yù)測(cè)和編碼過程所需時(shí)間,在不影響分裂前壓縮率優(yōu)化效果的前提下,對(duì)壓縮過程進(jìn)行加速。
數(shù)據(jù)集來自上海同步輻射光源掃描樣品得到的圖像序列,如圖8所示。圖像大小為1 200×2 048,每張圖像4.68 MB,共1 622張。對(duì)圖像進(jìn)行差分和截?cái)嘤成?,得到時(shí)間差分映射圖像和空間差分映射圖像。由于同一圖像序列相似度較高,相鄰圖像壓縮率相近,因此每隔100張選取一張圖像進(jìn)行壓縮測(cè)試,共16張圖像。
圖8 數(shù)據(jù)集示例Fig.8 Dataset example
由于壓縮的目的是為節(jié)省存儲(chǔ)空間,這里定義壓縮率為壓縮后整體大小與原圖像大小之比,壓縮率越小,所需存儲(chǔ)空間越小。由于截?cái)嘤成浜?,圖像數(shù)據(jù)分為待壓縮和直接存放兩部分?jǐn)?shù)據(jù),因此壓縮后圖像大小為不壓縮部分的大小與待壓縮部分壓縮后大小的和,整體大小為壓縮后圖像大小與訓(xùn)練得到的模型參數(shù)大小的和。
本文使用的基準(zhǔn)方法中,圖像無損壓縮方法包括PNG、JPEG2000、JPEG-LS、TIF的壓縮方法以及視頻無損壓縮方法FFV1,同時(shí)增加通用無損壓縮方法gzip、bzip2以及神經(jīng)網(wǎng)絡(luò)無損壓縮方法lstm-compress進(jìn)行壓縮率對(duì)比。對(duì)于測(cè)試數(shù)據(jù)集使用上述無損壓縮方法進(jìn)行壓縮,計(jì)算壓縮率并取均值。
結(jié)果如圖9所示,TIF格式常用壓縮方法LZW和PACKBITS沒有壓縮效果,gzip和PNG壓縮結(jié)果在80%以上,bzip2、JPEG2000、FLIF以及FFV1的壓縮結(jié)果均在70%以上,而基于神經(jīng)網(wǎng)絡(luò)的壓縮方法lstm-compress的壓縮結(jié)果為76.72%。其中,最優(yōu)壓縮率是由JPEG-LS方法壓縮得到的結(jié)果69.77%,以此作為后續(xù)對(duì)比基準(zhǔn)。
圖9 不同圖像無損壓縮方法的壓縮率Fig.9 Compression ratio of different image lossless compressed methods
模型訓(xùn)練epoch設(shè)置為5,當(dāng)epoch達(dá)到最大值或者損失函數(shù)值連續(xù)三次不下降時(shí)結(jié)束訓(xùn)練,使用隨機(jī)種子隨機(jī)化設(shè)置隱藏層中的權(quán)重值和偏差值,Adam更新網(wǎng)絡(luò)中的參數(shù)。分別對(duì)測(cè)試數(shù)據(jù)構(gòu)造時(shí)間輸入序列和空間輸入序列,與基準(zhǔn)測(cè)試結(jié)果進(jìn)行比對(duì),得到差分方法和輸入序列構(gòu)造方法的最優(yōu)組合方式,然后對(duì)比該結(jié)果與像素位分裂后的壓縮率和壓縮時(shí)間。
3.3.1 模型輸入選擇
由于差分方式和構(gòu)造方式的差異,可以得到四種模型輸入:時(shí)間差分映射圖構(gòu)造時(shí)間序列、時(shí)間差分映射圖構(gòu)造空間序列、空間差分映射圖構(gòu)造時(shí)間序列、空間差分映射圖構(gòu)造空間序列。
為對(duì)比不同輸入構(gòu)造下的壓縮結(jié)果,時(shí)間序列與空間序列選取相同的長(zhǎng)度,時(shí)間序列長(zhǎng)度為K,空間序列長(zhǎng)度為N×(N-1),K與N均為正整數(shù),因此K=N×(N-1)。此處選擇FC對(duì)單張圖像進(jìn)行預(yù)測(cè)壓縮。四種輸入構(gòu)造方式結(jié)果對(duì)比如圖10所示。
(a) 時(shí)序輸入壓縮率(a) Compression ratio of input in temporal
對(duì)于時(shí)間序列構(gòu)造方式,隨著K取值的增大,壓縮率呈下降趨勢(shì),當(dāng)K增大到一定程度,壓縮率變化不明顯;在這種序列構(gòu)造方式下,時(shí)間差分映射圖像的壓縮率優(yōu)于空間差分映射圖4%~5%。對(duì)于空間序列構(gòu)造方式,隨著N的增大,壓縮率呈先下降后上升趨勢(shì),對(duì)于時(shí)間差分映射圖像,壓縮率在64%以上,隨著N的增大,壓縮率在70%左右,對(duì)于空間差分映射圖,壓縮率變化相對(duì)穩(wěn)定,結(jié)果為70%左右。因此,時(shí)間序列結(jié)合時(shí)間差分的構(gòu)造方式得到的壓縮率提升是最優(yōu)的,圖片壓縮率在45%左右,相較于FLIF降低25%。
但是模型本身的大小會(huì)抵消部分壓縮效果,因此需要對(duì)于一組圖像使用統(tǒng)一模型進(jìn)行壓縮,以減小模型大小對(duì)最終壓縮結(jié)果的影響。
3.3.2 統(tǒng)一模型壓縮驗(yàn)證
對(duì)每一張圖片建立的獨(dú)立模型方式會(huì)消耗一定的時(shí)間和空間,模型訓(xùn)練時(shí)間大于圖像壓縮的時(shí)間,以時(shí)間差分映射圖K=8的時(shí)間序列構(gòu)造輸入訓(xùn)練得到的模型為例,不同模型大小不同,F(xiàn)C模型為2.4 MB左右,LSTM與GRU模型為1.2 MB左右。為保證無損壓縮,模型參數(shù)需作為壓縮后圖像的一部分進(jìn)行保存,模型大小嚴(yán)重影響甚至抵消了圖像的壓縮效果,因此需要對(duì)多張圖片建立單一模型。由于同一樣品得到的圖像序列相似度較高,所以不同于上述對(duì)于每一張圖像建立一個(gè)模型的方法,僅使用單個(gè)樣品的圖像序列中的單張圖片建立一個(gè)模型,測(cè)試對(duì)于單個(gè)樣品的整個(gè)圖像序列的壓縮結(jié)果。這里選擇16張圖片中的第1張,通過時(shí)間差分和截?cái)嘤成浜髽?gòu)造時(shí)間序列,其中K=8,訓(xùn)練得到不同的模型(FC/LSTM/GRU),對(duì)16張圖片進(jìn)行壓縮,壓縮率如圖11所示。
圖11 16張圖片的壓縮率Fig.11 Compression ratio of 16 images
對(duì)于不同模型,壓縮率變化趨勢(shì)和大小非常相近,LSTM與GRU最接近,F(xiàn)C壓縮率高于另外兩個(gè)模型,說明在同步輻射光源圖像序列壓縮任務(wù)上,GRU與LSTM表現(xiàn)類似于其他深度學(xué)習(xí)任務(wù),而兩者對(duì)于時(shí)序數(shù)據(jù)具有較強(qiáng)的學(xué)習(xí)能力使得其能夠達(dá)到比僅使用FC更好的效果,也說明通過消除時(shí)間冗余信息能夠進(jìn)一步優(yōu)化同步輻射光源圖像的壓縮效果,同時(shí),三者壓縮率的趨勢(shì)變化是相似的,說明在該任務(wù)下,三種模型的泛化能力相似。
該方法整體壓縮率在46%上下震蕩,最低46%,最高52%,對(duì)比傳統(tǒng)無損壓縮方法,有20%以上的提升。三種神經(jīng)網(wǎng)絡(luò)模型均在光源圖像壓縮上表現(xiàn)出低于傳統(tǒng)圖像無損壓縮方法的壓縮率。
將本文提出的方法中神經(jīng)網(wǎng)絡(luò)結(jié)合算術(shù)編碼部分替換成傳統(tǒng)算術(shù)編碼進(jìn)行對(duì)比,傳統(tǒng)算術(shù)編碼中,編碼概率分布通過統(tǒng)計(jì)全部圖像像素值的概率分布獲得。將經(jīng)過差分和截?cái)嘤成浜蟮膱D像通過算術(shù)編碼方法[30]進(jìn)行壓縮,并與本文提出的方法進(jìn)行對(duì)比。對(duì)于上述測(cè)試圖像通過傳統(tǒng)算術(shù)編碼壓縮后得到壓縮率結(jié)果為72.98%,因此本文引入神經(jīng)網(wǎng)絡(luò)是優(yōu)化同步輻射光源圖像壓縮率的有效方法。
3.3.3 像素位分裂
考慮將像素位分裂為兩部分并行壓縮,由于差分映射階段像素值范圍被壓縮至[0,3 001],因此,像素值所需比特位為12位,像素值分裂為高Q位和低(12-Q)位,Q∈[2,4,6,8,10],選擇時(shí)間序列構(gòu)造方式K=8,N=1,F(xiàn)C模型,測(cè)試五種分裂方式下壓縮結(jié)果和壓縮時(shí)間的變化情況。
位分裂后圖像序列的壓縮率如表1所示。由于數(shù)據(jù)分為高位和低位兩部分,因此壓縮率為兩部分壓縮率之和,最優(yōu)的分裂為高2位和低10位,隨著分裂位置右移,壓縮率總和呈先上升后下降的趨勢(shì);高位壓縮率呈上升趨勢(shì),上升幅度越來越小,說明當(dāng)分裂位置右移時(shí),模型對(duì)于高位數(shù)據(jù)的變化情況學(xué)習(xí)能力越來越差,這是因?yàn)殡S著分裂位置右移,加入了更多環(huán)境噪聲的影響,同時(shí)像素范圍也進(jìn)一步增大;低位壓縮率在前三種方式中差距較小,隨著像素值范圍的縮小沒有產(chǎn)生明顯變化,去除掉高位包含樣本信息較多的數(shù)據(jù)后,低位數(shù)據(jù)更加復(fù)雜,而后隨著像素值范圍的進(jìn)一步縮小,壓縮率有所下降。對(duì)于最優(yōu)的分裂方式,壓縮結(jié)果與分裂前壓縮結(jié)果接近,為46%。
表1 不同分裂方式下的壓縮率
整個(gè)壓縮過程分為三個(gè)階段:構(gòu)建模型輸入、模型預(yù)測(cè)和算術(shù)編碼,而模型輸入構(gòu)建過程極短,模型預(yù)測(cè)和編碼階段是壓縮時(shí)間的主要組成部分,主要耗時(shí)階段是模型預(yù)測(cè)和編碼階段,各階段耗時(shí)如圖12所示。
圖12 各階段耗時(shí)Fig.12 Time-consuming of different stages
由圖12可知,像素位分裂后預(yù)測(cè)時(shí)間和編碼時(shí)間均小于分裂前用時(shí),高低位處理的時(shí)間之和與原始用時(shí)相當(dāng)。由于并行操作,分裂后壓縮需要的時(shí)間總和為低位壓縮用時(shí),較原壓縮方式節(jié)省1/3的時(shí)間。所以,位分裂操作可以有效縮短壓縮過程中的編碼時(shí)間和預(yù)測(cè)時(shí)間。
因此,對(duì)于光源圖像序列,位分裂操作能夠在不影響分裂前圖像壓縮率的同時(shí)節(jié)省30%以上的壓縮時(shí)間。
本文提出了一種基于圖像差分和神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的光源圖像壓縮方法,驗(yàn)證了差分方法對(duì)于壓縮結(jié)果的有效性,其中,通過差分和截?cái)嘤成?,有效降低像素值所占比特位,大大緩解了神?jīng)網(wǎng)絡(luò)對(duì)于16 bit數(shù)據(jù)壓縮困難的問題。此外,不同于傳統(tǒng)無損壓縮方法通過統(tǒng)計(jì)一定長(zhǎng)度數(shù)據(jù)的概率分布,該方法通過神經(jīng)網(wǎng)絡(luò)僅預(yù)測(cè)后續(xù)單個(gè)像素值的概率分布,最終得到的壓縮率比傳統(tǒng)無損圖像壓縮方式節(jié)省20%以上的存儲(chǔ)空間。最后,通過像素位分裂方法探索通過該方法進(jìn)行并行加速的同時(shí)能否保證壓縮率優(yōu)化效果不受影響,對(duì)比基于神經(jīng)網(wǎng)絡(luò)的壓縮方法在像素位分裂前壓縮用時(shí),該方法可以在保證壓縮率優(yōu)化效果的前提下降低30%壓縮時(shí)間。
后續(xù)可以嘗試更多不同的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行壓縮測(cè)試,引入視頻插值和視頻超分辨率的技術(shù)代替差分模塊,從空間維度和時(shí)間維度進(jìn)一步探索圖像壓縮的潛力。由于預(yù)測(cè)方法中同一張圖像的像素值預(yù)測(cè)編碼具有相互獨(dú)立性,后續(xù)可以通過分塊并行減少圖像壓縮時(shí)間,同時(shí),可以結(jié)合神經(jīng)網(wǎng)絡(luò)剪枝算法等進(jìn)一步優(yōu)化模型預(yù)測(cè)時(shí)間。
致謝
本文的數(shù)據(jù)處理得到了國(guó)家高能物理科學(xué)數(shù)據(jù)中心和中國(guó)科學(xué)院高能物理數(shù)據(jù)中心提供的計(jì)算和數(shù)據(jù)資源支持。