李金航 肖 亮 韋志輝
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210094)
分辨率是圖像像素時(shí)空密度的重要表征指標(biāo),是數(shù)字圖像質(zhì)量描述的一個(gè)重要指標(biāo)。分辨率越高的圖像,往往包含更豐富的紋理細(xì)節(jié),是后期有效、準(zhǔn)確、可靠、針對(duì)性地展開分析的基礎(chǔ)。
但是在實(shí)際成像過程中,由于外界環(huán)境干擾以及成像設(shè)備本身物理器件的影響,都會(huì)導(dǎo)致成像視頻的分辨率下降。要想提高獲得的視頻圖像分辨率,主要有以下兩種方式:
一是從成像設(shè)備入手。縮小成像像素元器件的尺寸或者提高密集傳感陣列容積率。由于生產(chǎn)期間所需要的精密度技術(shù)限制,短期內(nèi)實(shí)現(xiàn)的技術(shù)成本較大。
二是通過軟件方式進(jìn)行智能重建。不需要依賴硬件設(shè)備的性能提升,直接通過軟件的方式來復(fù)原成像過程中損失的高頻信息,同時(shí)還能夠去除噪聲和模糊現(xiàn)象,這種通過軟件提高圖像分辨率的方法被稱為超分辨率重建[1]。
近年來,隨著對(duì)深度學(xué)習(xí)的大量研究以及取得的良好效果,利用深度學(xué)習(xí)[2~3]進(jìn)行視頻超分辨的研究成為一種新的解決超分辨重構(gòu)的有效方法[4~5]。
卷積神經(jīng)網(wǎng)絡(luò)是一種特殊的深度卷積網(wǎng)絡(luò),已經(jīng)被成功地用于單幅圖像的超分辨和分類、視頻的分類領(lǐng)域[6-10]。但基于恢復(fù)目的的視頻圖像訓(xùn)練遺留了一個(gè)具有挑戰(zhàn)性的問題,因?yàn)榫矸e神經(jīng)網(wǎng)絡(luò)的輸出是真實(shí)視頻圖像而不僅僅是一個(gè)標(biāo)簽,所以對(duì)訓(xùn)練集中的視頻圖像質(zhì)量要求很高。
本文通過利用視頻序列中相鄰幀間的圖像在時(shí)間尺度上的軌跡變化(即時(shí)空相關(guān)性),利用相鄰多幀圖像的信息來重構(gòu)中間幀圖像,以獲得更多的重建細(xì)節(jié),并通過預(yù)訓(xùn)練來初始化模型,縮短訓(xùn)練時(shí)間。同時(shí)利用相鄰幀間的運(yùn)動(dòng)軌跡一致性來對(duì)超分辨重構(gòu)的圖像與真實(shí)圖像進(jìn)行損失判別。通過充分利用視頻序列的時(shí)空相關(guān)性,來達(dá)到提升重建效果和減少訓(xùn)練時(shí)間的目的。
對(duì)于單幅圖像的超分辨,只能直接使用該幅圖像進(jìn)行超分辨,往往很難達(dá)到滿意的效果。但對(duì)于視頻圖像來說,相鄰幀之間存在很多相似且具有關(guān)聯(lián)的信息,通過直接使用相鄰幾幀的圖像信息來增強(qiáng)當(dāng)前幀的細(xì)節(jié)信息,以此來提高視頻超分辨的效果。基于卷積神經(jīng)網(wǎng)絡(luò)的視頻超分辨算法結(jié)構(gòu)如圖1所示。
圖1 視頻超分辨算法結(jié)構(gòu)
視頻超分辨率重建過程中,分別取當(dāng)前幀圖像的前、后各相同數(shù)目幀圖像(本文中使用3幀圖像)來作為當(dāng)前幀圖像的補(bǔ)充信息。先分別對(duì)每幀圖像進(jìn)行特征提取,然后將提取到的特征圖像級(jí)聯(lián)為一個(gè)整體,進(jìn)行后續(xù)的特征提取,最終得到超分辨率重構(gòu)后的高分辨率圖像。
好的模型初始參數(shù)對(duì)于訓(xùn)練時(shí)間長(zhǎng)短具有重要的影響。為了減少視頻超分辨模型的訓(xùn)練時(shí)間,使用文獻(xiàn)[6]中介紹的SRCNN方法得到的模型(下文簡(jiǎn)稱參考模型)參數(shù)來初始化視頻超分辨模型,直接將參考模型訓(xùn)練得到的結(jié)果參數(shù)作為視頻超分辨模型的初始參數(shù)。參考模型與視頻超分辨模型中核的大小及數(shù)量相同,區(qū)別在于級(jí)聯(lián)層的濾波深度不同。在使用時(shí)需要將參考模型的級(jí)聯(lián)層濾波器深度與視頻超分辨模型的級(jí)聯(lián)層濾波器深度保持一致。具體操作是使用三張相同的圖像作為輸入來替換掉視頻超分辨模型中級(jí)聯(lián)層中使用的三張連續(xù)的圖像,這樣視頻超分辨模型的輸出結(jié)果將與參考模型輸出的結(jié)果完全相同。
在級(jí)聯(lián)層處,參考圖像模型維度為M×N×C,其中C為卷積核數(shù)目。元素h(i,j,c)計(jì)算公式為
其中c是卷積核索引,b(.)為偏置項(xiàng),ω(.)是權(quán)值,yt為時(shí)間t時(shí)的輸入幀,權(quán)值維度為M×N×1×C,第三維是輸入圖像數(shù)目。
對(duì)于視頻超分辨模型,元素h( i ,j,c)計(jì)算公式如下:
其中ωv(.)是權(quán)值,bv(.)為偏置項(xiàng),yˉ包含相連的3幀圖像yt-1,yt,yt+1,維度為M×N×3×C。將yˉ展開后:
假設(shè)式(1)與式(3)相等。即hv=h。并將式(3)中yt-1和yt+1用yt代替。于是式(1)和式(3)右部相等,即:
于是在實(shí)驗(yàn)中,我們將視頻超分辨模型的濾波器值初始化為
本模型中采用基于局部-整體的全變差(CLG-TV)[11]方法來進(jìn)行運(yùn)動(dòng)估計(jì)。可以有效減少大的位移或運(yùn)動(dòng)模糊對(duì)視頻超分辨的影響[12]。采用了一種自適應(yīng)的運(yùn)動(dòng)補(bǔ)償方法來減少大位移所帶來的邊界影響或者幻影。自適應(yīng)運(yùn)動(dòng)補(bǔ)償公式如下:
其中像素(i,j)處相鄰幀與參考幀的凸組合為r(i,j),ymt-cT(i,j)是進(jìn)行過運(yùn)動(dòng)補(bǔ)償?shù)南噜弾?,yt是中間幀,yat-mTc是應(yīng)用自適應(yīng)運(yùn)動(dòng)補(bǔ)償后的相鄰幀。r(i,j)定義如下:
其中k是一個(gè)常數(shù),e(i,j)是運(yùn)動(dòng)補(bǔ)償(也叫偏移誤差)。當(dāng)e(i,j)越小,r(i,j)將變得越大,說明此時(shí)運(yùn)動(dòng)補(bǔ)償后的圖像越可靠,自適應(yīng)運(yùn)動(dòng)補(bǔ)償時(shí)應(yīng)該選擇運(yùn)動(dòng)補(bǔ)償后的幀。當(dāng)e(i,j)越大時(shí),對(duì)應(yīng)的r(i,j)值將變得越小,說明較大的偏移誤差對(duì)應(yīng)著較大的遮擋、運(yùn)動(dòng)或模糊等,此時(shí)運(yùn)動(dòng)補(bǔ)償后的圖像不可靠,自適應(yīng)運(yùn)動(dòng)補(bǔ)償時(shí)應(yīng)選擇當(dāng)前幀。
圖像超分辨算法通過使用超分辨后的圖像與真實(shí)圖像的歐氏距離來作為損失函數(shù)進(jìn)行誤差反向傳播的判斷準(zhǔn)則。在視頻超分辨算法中,由于相鄰幀間存在時(shí)空相關(guān)性,相鄰幀間提供的互補(bǔ)信息可以有效提升超分辨的性能,基于超分辨后圖像與真實(shí)視頻序列圖像存在運(yùn)動(dòng)軌跡一致性,提出了一種基于運(yùn)動(dòng)軌跡一致的損失函數(shù)判別方法。
本文提出基于多尺度的金字塔LK光流法來獲得相鄰幀間的運(yùn)動(dòng)軌跡。
由于算法原理的限制,單一的金字塔LK算法不能很好地跟蹤每個(gè)運(yùn)動(dòng)場(chǎng)景中的運(yùn)動(dòng)目標(biāo)[13~14]。將金字塔式LK光流算法與幀間差分法相結(jié)合,形成一種多尺度的金字塔LK光流算法,能夠更好地檢測(cè)運(yùn)動(dòng)目標(biāo),提高運(yùn)動(dòng)目標(biāo)的跟蹤率。我們使用下面的算法過程對(duì)多幀圖像中的運(yùn)動(dòng)目標(biāo)進(jìn)行運(yùn)動(dòng)估計(jì)。
1)平滑處理多幀圖像中的每一幀,以消除噪聲;
2)使用幀間差分法粗略跟蹤運(yùn)動(dòng)目標(biāo),獲得初始特征點(diǎn)集;
3)使用Harris算子計(jì)算特征點(diǎn)[15],并與幀間差分法計(jì)算的特征點(diǎn)集進(jìn)行比較,得到最優(yōu)特征點(diǎn)集;
4)使用金字塔LK光流估計(jì)方法估計(jì)運(yùn)動(dòng)目標(biāo)在下一幀的位置。
圖2 運(yùn)動(dòng)估計(jì)算法流程圖
基于真實(shí)視頻序列圖像與超分辨重建圖像在運(yùn)動(dòng)中保持軌跡的一致性,設(shè)計(jì)使用多尺度金字塔LK光流法對(duì)真實(shí)視頻序列圖像與超分辨重建圖像進(jìn)行運(yùn)動(dòng)跟蹤,分別描繪出真實(shí)視頻序列圖像與超分辨重建圖像的運(yùn)動(dòng)軌跡,通過運(yùn)動(dòng)軌跡一致性來作為損失函數(shù)。算法流程圖如圖3所示。
圖3 基于時(shí)空相關(guān)性的損失函數(shù)算法
算法實(shí)現(xiàn)步驟如下:
1)利用多尺度金字塔LK光流法對(duì)真實(shí)視頻序列圖像進(jìn)行運(yùn)動(dòng)目標(biāo)跟蹤,描繪真實(shí)視頻序列圖像的運(yùn)動(dòng)目標(biāo)軌跡;
2)利用多尺度金字塔LK光流法對(duì)超分辨率重建后的圖像進(jìn)行運(yùn)動(dòng)目標(biāo)跟蹤,描繪超分辨率重建后的圖像的運(yùn)動(dòng)目標(biāo)軌跡;
3)計(jì)算真實(shí)視頻序列圖像的運(yùn)動(dòng)軌跡與超分辨率重建后的圖像的運(yùn)動(dòng)軌跡的平方和,并將平方和作為卷積神經(jīng)網(wǎng)絡(luò)的損失值用于后續(xù)判斷。
將提出的基于時(shí)空相關(guān)性的損失函數(shù)算法替換掉第二部分中介紹的視頻超分辨模型中的損失函數(shù)方法,得到了基于時(shí)空相關(guān)性的視頻超分辨重建算法。該方法不僅將視頻圖像序列中相鄰幀間的時(shí)空相關(guān)性應(yīng)用于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,還應(yīng)用于損失函數(shù)的判別。與單幅圖像相比,視頻圖像具有第三維的優(yōu)勢(shì),相鄰幀間的互補(bǔ)信息使得視頻超分辨率重建過程中能夠獲得更多的特征,提高了視頻超分辨率重建算法的性能?;跁r(shí)空相關(guān)性的視頻超分辨重建算法流程如圖4所示。
圖4 視頻超分辨算法流程圖
我們使用caffe框架實(shí)現(xiàn)了本文中提出的基于時(shí)空相關(guān)性的視頻超分辨率重建算法。實(shí)驗(yàn)運(yùn)行在使用NVIDIA Tesla k20c和NVIDIA quadro k4000雙核GPU的windows7平臺(tái),cuda使用7.5版本。
本文中所使用的訓(xùn)練和測(cè)試數(shù)據(jù)集來自于一個(gè)4K公共視頻數(shù)據(jù)集[16]中的Myanmar視頻集。其中包含60個(gè)不同場(chǎng)景的視頻,選用其中的53個(gè)場(chǎng)景作為訓(xùn)練素材,其中6個(gè)場(chǎng)景作為測(cè)試素材。最后在每個(gè)測(cè)試序列中選取4幀,共計(jì)24幀。評(píng)價(jià)指標(biāo)采用SSIM和PSNR。Myanmar視頻集是一個(gè)未經(jīng)壓縮的4K超清視頻集,分辨率均為3840×2160。為了方便與其他算法進(jìn)行對(duì)比,需要對(duì)Myanmar視頻集進(jìn)行下采樣,得到分辨率為960×540的視頻。同時(shí)為了避免使用同一個(gè)視頻集進(jìn)行訓(xùn)練和測(cè)試帶來的爭(zhēng)議,我們使用了其他來源[17]的第二個(gè)數(shù)據(jù)集Videoset4,其中包含walk、foliage、city、calendar四個(gè)測(cè)試視頻。數(shù)據(jù)集的參數(shù)如表1所示。在視頻超分辨率重建過程中,通過跳過開始和結(jié)束的兩幀來獲得完整的連續(xù)5幀圖像。
首先我們對(duì)修改與未修改損失函數(shù)的視頻超分辨重建算法進(jìn)行了對(duì)比。未修改的損失函數(shù)采用真實(shí)視頻序列圖像與超分辨率重建后的輸出圖像的歐式距離進(jìn)行計(jì)算,修改后的損失函數(shù)采用真實(shí)視頻序列圖像與超分辨率重建后的輸出圖像的運(yùn)動(dòng)軌跡圖進(jìn)行歐式距離計(jì)算。實(shí)驗(yàn)結(jié)果如表1所示。
表1 修改與未修改損失函數(shù)性能對(duì)比(a)PSNR值/dB
從表1可以看出,加入時(shí)空相關(guān)性的損失函數(shù)可以獲得更好的性能。通過充分利用相鄰幀間的相似信息可以更好地重建出中間幀的細(xì)節(jié)。
我們將本文中提出的算法與目前先進(jìn)及經(jīng)典的圖像或視頻超分辨率重建算法模型進(jìn)行比較。將雙三次插值算法作為比較的基準(zhǔn)算法。所有的視頻超分辨算法輸入均使用當(dāng)前幀及其前后相鄰兩幀,共計(jì)5幀。表2和表3分別展示了在Videoset4和Myanmar兩個(gè)數(shù)據(jù)集上,使用不同尺度進(jìn)行測(cè)試時(shí),計(jì)算出的平均SSIM和PSNR值。
從表2和表3可以看出,提出的算法在大部分性能上優(yōu)于經(jīng)典的圖像及視頻超分辨算法。在Videoset4數(shù)據(jù)集上,提出的算法相較于SRCNN在λ=4上PSNR值增加了0.46dB,在λ=3上PSNR值增加了0.34dB,λ=2上PSNR值增加了0.7dB;在Myanmar數(shù)據(jù)集上,提出的算法相較于SRCNN,在λ=4上PSNR值增加了0.59dB,在λ=3上PSNR值增加了0.62dB,在λ=2上PSNR值增加了0.8dB。但在λ=4上,提出的算法還是比傳統(tǒng)Bayesian算法稍差一些,雖然PSNR值相差不大,但SSIM相差比較大,主要因?yàn)锽ayesian算法中應(yīng)用了大量去模糊算法使得超分辨后的圖像從視覺上更加清晰。
表2 Myanmar數(shù)據(jù)集測(cè)試下平均PSNR和SSIM
表3 Videoset4數(shù)據(jù)集測(cè)試下平均PSNR和SSIM
圖5 λ=2時(shí),算法性能比較
視頻超分辨重建算法通過利用特有的時(shí)空相關(guān)性屬性,可以充分利用相鄰幀間的互補(bǔ)信息來提高當(dāng)前幀的超分辨重構(gòu)精度。本文分別在卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程、損失函數(shù)判別過程中利用視頻的時(shí)空相關(guān)性。同時(shí)利用參考模型參數(shù)來初始化視頻超分辨模型的初始參數(shù),有效減少了視頻超分辨模型的運(yùn)行時(shí)間。近年來,單幅圖像超分辨使用的網(wǎng)絡(luò)層次日趨變深,但視頻超分辨依舊停留在幾層網(wǎng)絡(luò)上,后續(xù)研究可以通過加深網(wǎng)絡(luò)層次來獲得更多的特征,提高視頻超分辨的效果。本文算法建立在視頻幀間的時(shí)空相關(guān)性,相鄰幀的信息互補(bǔ),如果相鄰幀間存在大位移或運(yùn)動(dòng)模糊,則相鄰幀間信息參考價(jià)值降低,甚至產(chǎn)生誤導(dǎo)信息,效果等同于單幀圖像的超分辨重建。如何對(duì)存在大位移或運(yùn)動(dòng)模糊的視頻進(jìn)行超分辨重建,仍然是一件值得探索的難題。