EDVR介紹
概述
EDVR框架是適用于多種視頻重建任務(wù)(如超分铺然、去模糊)的統(tǒng)一框架烦周。
- 該模型贏得了NTIRE19視頻重建和增強(qiáng)挑戰(zhàn)賽的四項(xiàng)冠軍。并與第二名拉開(kāi)了較大差距女揭。
- 作者創(chuàng)新性的提出了 PCD 對(duì)齊模塊和 TSA 融合模塊窃植,使得視頻重建的效果大大提高特石。
面臨的困難
REDS是在NTIRE19發(fā)布的新的數(shù)據(jù)集,從兩個(gè)方面給現(xiàn)有的視頻重建方法帶來(lái)了挑戰(zhàn)卧秘。
- 如何在有大幅度運(yùn)動(dòng)的情況下對(duì)齊多個(gè)幀呢袱。
- 如何有效的融合帶有不同動(dòng)作和模糊的不同幀。
現(xiàn)有的方法
早期的研究將視頻重建看做是圖像重建的簡(jiǎn)單拓展翅敌,這樣的話相鄰幀之間的時(shí)間冗余信息未被充分利用羞福。最近的研究通過(guò)更精細(xì)的管道流程解決了上述問(wèn)題,這些管道流程通常由四個(gè)部分組成蚯涮,即特征提取治专,對(duì)準(zhǔn),融合和重建遭顶。
當(dāng)視頻包含遮擋张峰,大運(yùn)動(dòng)和嚴(yán)重模糊時(shí),該任務(wù)的挑戰(zhàn)在于對(duì)齊和融合模塊的設(shè)計(jì)棒旗。 為了獲得高質(zhì)量的輸出喘批,必須在多個(gè)幀之間對(duì)齊并建立準(zhǔn)確的對(duì)應(yīng)關(guān)系,以及有效地融合對(duì)準(zhǔn)的特征以進(jìn)行重建铣揉。
現(xiàn)有的方法多數(shù)采用在參考幀和相鄰幀間的光流場(chǎng)來(lái)對(duì)齊饶深;另一個(gè)研究分支是采用動(dòng)態(tài)濾波和形變卷積。而REDS在時(shí)間消耗和精準(zhǔn)性上對(duì)基于光流的方法提出了挑戰(zhàn)逛拱。
大多數(shù)現(xiàn)存的方法使用卷積在處理的早期進(jìn)行融合或者采用rnn逐漸融合多個(gè)幀敌厘。這些現(xiàn)有方法都沒(méi)有考慮每個(gè)幀的潛在視覺(jué)信息。不同的幀和位置對(duì)重建的信息和增益不是相同的朽合,因?yàn)橐恍騾^(qū)域受到不完美對(duì)齊和模糊的影響
EDVR的方法
作者提出了EDVR框架處理這些挑戰(zhàn)俱两。首先設(shè)計(jì)了金字塔級(jí)聯(lián)變形對(duì)齊模塊處理大的運(yùn)動(dòng),其中使用形變卷積以由粗到細(xì)的方式在特征級(jí)別進(jìn)行幀對(duì)齊旁舰。其次锋华,作者提出了時(shí)空注意力融合模塊,在這個(gè)模塊中箭窜,時(shí)間和空間的注意力都被應(yīng)用毯焕,以強(qiáng)調(diào)后續(xù)重建的重要特征。
算法原理
EDVR
給定 2N+1 個(gè)連續(xù)低質(zhì)量幀 ,定義中間幀 作為參考幀纳猫,其他幀作為相鄰幀婆咸。視頻重建的目標(biāo)是得到一個(gè)與GT幀 足夠相似的高質(zhì)量參考幀輸出 。結(jié)構(gòu)如圖所示:
EDVR將2N+1個(gè)LR幀作為輸入并產(chǎn)生1個(gè)輸出芜辕,每一個(gè)相鄰幀都被PCD對(duì)齊模塊與參考幀對(duì)齊尚骄,TSA融合模塊融合了不同幀的圖像信息,融合后的特征傳到重建模塊侵续,重建模塊是連續(xù)的殘差塊倔丈,并可以容易的被其他單一圖像超分的高級(jí)模塊替換。上采樣操作在網(wǎng)絡(luò)的末端增加圖像的空間尺寸大小状蜗,最后高分辨率幀由預(yù)測(cè)圖像殘差和上采樣圖像相加得到需五。
雖然單獨(dú)的EDVR模型可以達(dá)到最好的表現(xiàn),為了在比賽中取得更好的表現(xiàn)轧坎,作者采用了2-stage的策略宏邮,在深層的EDVR模型后面接了一個(gè)淺層的EDVR模型。
PCD(Pyramid, Cascading and Deformable convolutions)
思路簡(jiǎn)述
PCD由TDAN(Temporally deformable alignment network for video super-resolution)啟發(fā)缸血,TDAN使用形變卷積在特征級(jí)別對(duì)齊相鄰的幀蜜氨。
Different from TDAN, we perform alignment in a coarse-to-fine manner to handle large and complex motions. Specifically, we use a pyramid structure that first aligns features in lower scales with coarse estimations, and then propagates the offsets and aligned features to higher scales to facilitate precise motion compensation, similar to the notion adopted in optical flow estimation.
與TDAN不同,我們以粗到細(xì)的方式執(zhí)行對(duì)齊以處理大而復(fù)雜的運(yùn)動(dòng)捎泻。具體來(lái)說(shuō)飒炎,我們使用金字塔結(jié)構(gòu),首先將較低比例的特征與粗略估計(jì)對(duì)齊族扰,然后將偏移和對(duì)齊特征傳播到更高的比例厌丑,以便于精確的運(yùn)動(dòng)補(bǔ)償,類似于光流估計(jì)中采用的概念渔呵。
并且后面在金字塔對(duì)齊操作之后加了額外的形變卷積用來(lái)提高對(duì)齊的魯棒性怒竿。模塊圖如下:
細(xì)節(jié)原理
定義每一幀的特征為,給定一個(gè)有K個(gè)采樣點(diǎn)的變形卷積核扩氢,我們定義和作為第k個(gè)位置的權(quán)重和偏移耕驰。舉例而言,3x3的卷積核則K=9录豺,p為{(-1,-1),(-1,0),...,(1,0),(1,1)}朦肘。在每個(gè)p0位置的對(duì)齊的特征可以由下面的公式得到:
可學(xué)習(xí)的偏移量和調(diào)制標(biāo)量都可以從相鄰幀和參考幀連接的特征得到:
其中,f 是由多個(gè)卷積層組成的通用方法双饥,[.,.]表示連接操作媒抠。為了簡(jiǎn)單起見(jiàn),在描述和圖表中只考慮可學(xué)習(xí)的偏移值忽略咏花。在DCN中的雙線性插值法提到趴生。
為了處理在對(duì)齊中的復(fù)雜的動(dòng)作和視差問(wèn)題阀趴,
we propose PCD module based on wellestablished principles in optical flow: pyramidal processing and cascading refinement.
我們提出了基于光流中完善的原理的PCD模塊:金字塔形處理和級(jí)聯(lián)細(xì)化
在模塊圖中用黑色虛線展示,產(chǎn)生在第l層的特征苍匆。作者使用步長(zhǎng)為2的卷積核在l-1層金字塔層級(jí)對(duì)特征降采樣刘急,在第l層,偏移和對(duì)齊后的特征被預(yù)測(cè)浸踩,使用x2上采樣的偏移和對(duì)齊特征叔汁,圖中用紫色虛線表示。
是上采樣s倍检碗,DConv是形變卷積据块,g 是由數(shù)個(gè)卷積層組成的通用方法,Bilinear interpolation是上采樣2倍折剃。作者在EDVR中使用3級(jí)金字塔(L=3)瑰钮。為了減小計(jì)算消耗,沒(méi)有隨著空間大小的減小而增加通道數(shù)量微驶。
Following the pyramid structure, a subsequent deformable alignment is cascaded to further refine the coarsely aligned features (the part with light purple background in Fig. 3)
在金字塔結(jié)構(gòu)之后,后續(xù)的的可變形對(duì)齊可以進(jìn)一步細(xì)化开睡、提純粗對(duì)齊特征(在圖中的淺紫色背景展示)因苹。
PCD模塊在這種粒度從粗到細(xì)的處理提高了像素對(duì)齊的精確性。作者在消融實(shí)驗(yàn)部分闡述了PCD模型的有效性篇恒,值得注意的是扶檐,PCD對(duì)齊模塊是隨著整個(gè)網(wǎng)絡(luò)一起訓(xùn)練的,而沒(méi)有如光流一樣的額外的監(jiān)督或者在其他任務(wù)上的預(yù)訓(xùn)練胁艰。
TSA(Temporal and Spatial Attention)
TSA是一個(gè)融合模塊款筑,幫助融合多個(gè)對(duì)齊特征的信息。為了更好的考慮每一幀的視覺(jué)信息腾么,我們引入了時(shí)間注意力機(jī)制奈梳,通過(guò)計(jì)算參考幀和相鄰幀之間的元素級(jí)相關(guān)性。相關(guān)系數(shù)對(duì)每個(gè)位置處的每個(gè)相鄰特征進(jìn)行賦權(quán)解虱,指示重建參考圖像的信息量攘须。所有幀中被賦權(quán)的特征會(huì)卷積、融合到一起殴泰。在帶有時(shí)間注意力的融合之后于宙,還引入了空間注意力為每一個(gè)通道的每一個(gè)位置分配權(quán)重,去更有效的利用跨通道和空間信息悍汛。模塊圖如下所示:
幀間的時(shí)序相關(guān)和幀內(nèi)的空間相關(guān)性在融合中是很重要的捞魁,因?yàn)椋?/p>
- different neighboring frames are not equally informative due to occlusion,blurry regions and parallax problems;
- misalignment and unalignment arising from the preceding alignment stage adversely affect the subsequent reconstruction performance.
- 由于遮擋,模糊區(qū)域和視差問(wèn)題离咐,不同的相鄰幀不能提供相同的信息谱俭;
- 由前一對(duì)齊階段引起的錯(cuò)誤對(duì)齊和未對(duì)齊對(duì)隨后重建的性能產(chǎn)生不利影響。
因此,在像素級(jí)動(dòng)態(tài)的融合相鄰幀在融合的效果和效率上是必不可少的旺上。為了處理以上的問(wèn)題瓶蚂,作者提出了TSA融合模塊去為每一幀分配像素級(jí)別的融合權(quán)重。特別的宣吱,作者在融合過(guò)程中使用了時(shí)間和空間的注意力機(jī)制窃这。
時(shí)間注意力是在embedding空間中計(jì)算幀的相似性,直覺(jué)上征候,在嵌入空間中杭攻,一個(gè)相鄰幀與相鄰幀更相似,則應(yīng)該擁有更多的注意力疤坝。對(duì)于每一幀兆解,相似性距離可以被計(jì)算為:
和是兩個(gè)嵌入,可以被簡(jiǎn)單的卷積層實(shí)現(xiàn)跑揉。sigmoid激活函數(shù)用來(lái)約束輸出值到0-1锅睛,穩(wěn)定梯度的反向傳播。對(duì)于每一個(gè)空間位置历谍,時(shí)間注意力都可以用空間來(lái)描述现拒,比如空間大小和相同。
時(shí)間注意力映射在像素級(jí)別和原始對(duì)齊后的特征相乘望侈,一個(gè)額外的融合卷積層被采用去融合這些注意力化的特征可以計(jì)算為:
和[.,.,.]是元素級(jí)相乘和連接印蔬。
空間注意力mask從融合后的特征計(jì)算。一個(gè)金字塔設(shè)計(jì)可以增加注意力的感受野脱衙。在這止嘔侥猬,融合的特征被mask用元素級(jí)相乘和連接調(diào)制。TSA的有效性在消融實(shí)驗(yàn)有闡述捐韩。
形變卷積 DCN
Deformable convolutional networks:其中學(xué)習(xí)額外的偏移以允許網(wǎng)絡(luò)從其常規(guī)局部鄰域獲得信息退唠,從而提高常規(guī)卷積的能力“铝保可變形卷積廣泛用于各種任務(wù)铜邮,如視頻目標(biāo)檢測(cè)(Object detection in video with spatiotemporal sampling networks.),動(dòng)作識(shí)別(Trajectory convolution for action recognition)寨蹋,語(yǔ)義分割[Deformable convolutional networks]和視頻超分辨率松蒜。
特別地,TDAN使用可變形卷積來(lái)在特征級(jí)別對(duì)齊輸入幀而無(wú)需顯式運(yùn)動(dòng)估計(jì)或圖像變形已旧。 受TDAN的啟發(fā)秸苗,PCD模塊采用可變形卷積作為對(duì)齊的基本操作。
Attention 機(jī)制
在論文 Robust video super-resolution with learned temporal dynamics 中运褪,學(xué)習(xí)了一系列權(quán)重圖為不同時(shí)間分支的特征賦權(quán)惊楼。非局部運(yùn)算(Non-local neural networks)計(jì)算位置處的響應(yīng)玖瘸,以獲取遠(yuǎn)程范圍依賴的所有位置處的特征的加權(quán)和。由這些成功的工作啟發(fā)檀咙,作者將時(shí)空注意力機(jī)制引入到TSA融合模塊雅倒。
實(shí)驗(yàn)
訓(xùn)練的細(xì)節(jié)
- 網(wǎng)絡(luò)配置:PCD對(duì)齊模塊采用5個(gè)RBs(residual blocks,殘差塊)做特征提取弧可,用40個(gè)RBs做重建蔑匣,20個(gè)RBs在第二個(gè)stage,卷積通道的大小都設(shè)置為128棕诵,使用64*64和256*256的圖作為視頻超分和去模糊的輸入裁良,mini-batch的大小為32,使用五個(gè)連續(xù)幀作為網(wǎng)絡(luò)的輸入校套,使用水平翻轉(zhuǎn)和旋轉(zhuǎn)90度做數(shù)據(jù)擴(kuò)增价脾,使用charbonnier作為損失函數(shù)。
- 訓(xùn)練過(guò)程:使用adam優(yōu)化器笛匙,參數(shù)為0.9和0.999侨把,學(xué)習(xí)率為4*10e-4,為了快速收斂妹孙,深層網(wǎng)絡(luò)通過(guò)淺層網(wǎng)絡(luò)得到座硕。
- 論文中使用pytorch實(shí)現(xiàn)網(wǎng)絡(luò),用8個(gè)NVIDIA Titan Xp GPU訓(xùn)練涕蜂,迭代了600000次,用時(shí)約40小時(shí)映琳。
實(shí)驗(yàn)結(jié)果對(duì)比
自己訓(xùn)練模型迭代了146000次在Vid4上的實(shí)驗(yàn)結(jié)果:
Clip Name | Average PSNR | Center PSNR | Border PSNR |
---|---|---|---|
calendar | 23.821341 | 23.845426 | 23.680849 |
city | 27.669887 | 27.669345 | 27.672416 |
foliage | 26.114071 | 26.109127 | 26.149501 |
walk | 30.673578 | 30.671510 | 30.687713 |
Average | 27.069719 | 27.073852 | 27.047620 |
由于采用Vimeo90k測(cè)試集的全部數(shù)據(jù)做測(cè)試會(huì)消耗很多時(shí)間机隙,我取了Vimeo90k測(cè)試集中的前1000個(gè)clip做測(cè)試集。
實(shí)驗(yàn)結(jié)果如下:
模型迭代次數(shù)(iter) | PSNR(db) |
---|---|
公開(kāi)模型EDVR_Vimeo90K_SR_L.pth | 21.212242 |
公開(kāi)模型EDVR_REDS_SR_L.pth | 22.271980 |
26000 | 25.502264 |
48000 | 25.502447 |
86000 | 25.509339 |
96000 | 25.550892 |
100000 | 25.573008 |
120000 | 25.604280 |
總結(jié)實(shí)驗(yàn)結(jié)果
- 在Vid4上基本達(dá)到了論文中的結(jié)果萨西。
- 在vimeo90k上有鹿,效果和論文中的差距較大,超過(guò)了提供出來(lái)的預(yù)訓(xùn)練模型谎脯。實(shí)驗(yàn)結(jié)果相比論文給出的結(jié)果較差的原因應(yīng)該是訓(xùn)練的迭代次數(shù)不夠葱跋,以及DCN訓(xùn)練不穩(wěn)定所導(dǎo)致。論文中使用2-stage分別迭代了600000次源梭,而這里只迭代了120000次娱俺。論文中進(jìn)行一次完整訓(xùn)練需要用到的時(shí)間是40小時(shí),這里訓(xùn)練120000次就耗費(fèi)近50小時(shí)废麻,自己的實(shí)驗(yàn)迭代的次數(shù)遠(yuǎn)遠(yuǎn)不夠荠卷。另外,查閱了github的issue發(fā)現(xiàn)烛愧,其他的人復(fù)現(xiàn)論文時(shí)遇到訓(xùn)練不收斂的問(wèn)題油宜,無(wú)法得到很好的測(cè)試結(jié)果掂碱。作者給出的回答主要是由變形卷積引起,不易收斂慎冤,這也是該模型的缺陷之一疼燥。
參考
SRCNN: 最初使用神經(jīng)網(wǎng)絡(luò)做SR
TOFlow: 揭露了光流不是最佳的運(yùn)動(dòng)表示
比較新的模型:
EDSR
WDSR
SPMC
DBPN
DUF 和TDAN :通過(guò)隱式運(yùn)動(dòng)補(bǔ)償來(lái)規(guī)避問(wèn)題并超越基于流的方法
光流:
Realtime video super-resolution with spatio-temporal networks and motion compensation
Frame-recurrent video super-resolution
Detail-revealing deep video super-resolution
Enhanced deep residual networks for single
image super-resolution
Ntire 2017 challenge on single image super-resolution: Methods and results
Photorealistic single image super-resolution using a generative adversarial network
Non-local recurrent network for image restoration
Path-restore: Learning network path selection for image restoration.
Crafting a toolchain for image restoration by deep reinforcement learning
Robust video super-resolution with learned temporal dynamics
其他問(wèn)題
為什么在殘差中不加BN層
現(xiàn)在一般的殘差塊是卷積層、激活函數(shù)層蚁堤、BN層的結(jié)構(gòu)醉者,但是在EDVR的代碼實(shí)現(xiàn)中殘差塊沒(méi)有BN層。作者說(shuō)违寿,他試過(guò)全部加BN層湃交,但是結(jié)果要差于不加BN的結(jié)構(gòu)。他認(rèn)為即使在某些地方加了藤巢,也只能帶來(lái)少量的提升搞莺。所以就沒(méi)有在BN上面做過(guò)多的嘗試。
訓(xùn)練不穩(wěn)定的問(wèn)題 參考
由于DCN訓(xùn)練的時(shí)候無(wú)法穩(wěn)定的收斂掂咒,導(dǎo)致整個(gè)網(wǎng)絡(luò)不好收斂才沧,這是作者認(rèn)識(shí)到的一個(gè)問(wèn)題,也是這個(gè)模型存在的訓(xùn)練上的缺陷绍刮。
在實(shí)驗(yàn)中温圆,如果訓(xùn)練不穩(wěn)定則會(huì)輸出 Offset mean is larger than 100
作者自己實(shí)驗(yàn)的時(shí)候的方法是,遇到了不收斂孩革,就退回到上一個(gè)checkpoint繼續(xù)訓(xùn)練岁歉。
有以下這些點(diǎn)可以去嘗試,但是也不一定有效:
先訓(xùn)練一個(gè)可以收斂的小模型膝蜈,再通過(guò)小模型轉(zhuǎn)去大模型锅移。
- 對(duì)DCN使用更小的學(xué)習(xí)率。
- 有人嘗試這樣做:先把DCN轉(zhuǎn)成普通conv饱搏,訓(xùn)練得到初始模型非剃,再用這個(gè)模型訓(xùn)練網(wǎng)絡(luò),然后凍結(jié)某些層繼續(xù)訓(xùn)練推沸。
參考:
訓(xùn)練的細(xì)節(jié)
理論的細(xì)節(jié)
失真的問(wèn)題
https://github.com/xinntao/EDVR/issues/28
為什么要用CharbonnierLoss函數(shù) https://github.com/xinntao/EDVR/issues/40
創(chuàng)建lmdb需要內(nèi)存較大
創(chuàng)建lmdb的腳本需要很大內(nèi)存备绽,不能依次讀入,分別創(chuàng)建鬓催。
字幕區(qū)域無(wú)法處理
字幕區(qū)域subtitle region無(wú)法對(duì)齊肺素,由于使用了鄰域的信息,在跳到另一句話的時(shí)候宇驾,字幕會(huì)有殘影压怠。用SISR方法處理》晌或者拿什么方法單獨(dú)處理并發(fā)現(xiàn)字幕的區(qū)域菌瘫。
實(shí)驗(yàn)記錄 0 參考這里
安裝依賴
git clone https://github.com/xinntao/EDVR.git
cd EDVR
# python requirement 蜗顽, 最好是 python3
# 安裝合適版本的pytorch 參考 https://pytorch.org/get-started/locally/
pip install numpy opencv-python lmdb pyyaml
# TensorBoard:
# PyTorch >= 1.1:
pip install tb-nightly future
# PyTorch == 1.0:
pip install tensorboardX
Vimeo90K數(shù)據(jù)集準(zhǔn)備
- 下載數(shù)據(jù)集
點(diǎn)擊下載 Ground-Truth(GT) 數(shù)據(jù)集 Septuplets dataset --> The original training + test set (82GB) - 將GT數(shù)據(jù)集轉(zhuǎn)化為lmdb格式
使用 codes/data_scripts/create_lmdb_mp.py 生成lmdb文件,需要注意:(1)需要修改腳本中的配置信息(configuration)雨让,輸入圖片路徑雇盖、輸出路徑、文件列表路徑栖忠。(2)這個(gè)腳本會(huì)讀取所有的圖片到內(nèi)存中崔挖,所以會(huì)占用很大的內(nèi)存,如果想減小內(nèi)存消耗庵寞,需要修改腳本狸相,可以參照這里。 - 產(chǎn)生低分辨率的圖像
在Vimeo90K測(cè)試集中的低分辨率圖像(LR)是由matlab bicubic downsampling kernel生成的捐川,在matlab中使用這個(gè)腳本產(chǎn)生低分辨率圖像. - 將LR數(shù)據(jù)集轉(zhuǎn)化為lmdb格式脓鹃,參照第二點(diǎn),修改配置信息
測(cè)試和訓(xùn)練 參考這里
測(cè)試
- 從這里下載預(yù)訓(xùn)練模型EDVR_Vimeo90K_SR_L.pth古沥,放到experiment/pretrained_models文件夾下
- 從下載測(cè)試數(shù)據(jù)集瘸右,解壓后將Vid4文件夾放到datasets文件夾下。
- 運(yùn)行 codes/test_Vid4_REDS4_with_GT.py 岩齿,結(jié)果保存在results中太颤。
訓(xùn)練
使用8GPU分布式訓(xùn)練
python -m torch.distributed.launch --nproc_per_node=8 --master_port=4321 train.py -opt options/train/train_EDVR_woTSA_M.yml --launcher pytorch
python3 -m torch.distributed.launch --nproc_per_node=1 --master_port=4321 train.py -opt options/train/train_EDVR_vimeo_M.yml --launcher pytorch
提供了一個(gè)適中的模型訓(xùn)練配置,channel=64盹沈,back residual block = 10
Train with the config train_EDVR_woTSA_M.yml
Train with the config train_EDVR_M.yml, whose initialization is from the model of Step 1.
排錯(cuò)指南
報(bào)圖像尺寸問(wèn)題龄章,不能被4整除,需要把圖片填充0或者切割乞封。
編譯DCN錯(cuò)誤 見(jiàn)這里
作者已經(jīng)上傳了編譯好的DCN瓦堵,可以下載
一般都是gcc版本問(wèn)題 1 2
NTIRE2019數(shù)據(jù)集
https://competitions.codalab.org/competitions/21482#participate-get-data
實(shí)驗(yàn)記錄 1
imresize
作者提供了一個(gè)matlab的imresize方法(bicubic+抗鋸齒),用來(lái)將GT縮小4倍產(chǎn)生LR的訓(xùn)練數(shù)據(jù)歌亲。python中常見(jiàn)的resize方法(opencv,skimage澜驮,PIL)不具備matlab中的抗鋸齒效果陷揪。如果使用python中默認(rèn)的resize,會(huì)使得縮小后的圖片有鋸齒杂穷,在神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的過(guò)程中悍缠,會(huì)讓模型學(xué)習(xí)到帶鋸齒到不帶鋸齒的效果;而在正常實(shí)際拍攝耐量、錄制過(guò)程中不會(huì)出現(xiàn)帶鋸齒的圖片飞蚓,所以模型學(xué)到的這種映射是冗余的。
在對(duì)bicubic插值法研究后廊蜒,結(jié)合現(xiàn)有的實(shí)現(xiàn)趴拧,將作者用matlab寫(xiě)的generate_LR_vimeo.m轉(zhuǎn)成python實(shí)現(xiàn)溅漾。代碼見(jiàn)data_script/generate_LR.py和imresize.py。
產(chǎn)生測(cè)試集
vimeo數(shù)據(jù)集中著榴,訓(xùn)練集和測(cè)試集都存放在一個(gè)文件夾添履,通過(guò)sep_trainlist和sep_testlist文件來(lái)區(qū)分訓(xùn)練集和測(cè)試集。在EDVR項(xiàng)目中脑又,測(cè)試數(shù)據(jù)存放在datasets/xxxx文件夾暮胧。文件夾內(nèi)有BIx4子目錄和GT子目錄。BIx4是LR圖像问麸,GT是GroundTruth往衷。由BIx4生成HR,與GT對(duì)比严卖,計(jì)算得到PSNR和SSIM席舍,用于評(píng)估模型。
為了方便起見(jiàn)妄田,制作腳本俺亮,由sep_testlist文件將測(cè)試數(shù)據(jù)生成到datasets目錄,方便直接運(yùn)行現(xiàn)有的test程序疟呐。
另外脚曾,由于vimeo中圖片文件命名為im1/im2/imx.png,而test中有一步操作需要將圖片名字需要轉(zhuǎn)成int型启具,故需要重命名圖片名字本讥。也加入了此功能到腳本中。代碼見(jiàn)data_script/generate_test_datasets.py鲁冯。
如何從淺模型載入到深模型
在論文中的實(shí)驗(yàn)部分拷沸,作者提到:
We initialize deeper networks by parameters from shallower ones for faster convergence
為了更快的收斂,我們用淺層的網(wǎng)絡(luò)初始化深層的網(wǎng)絡(luò)薯演。40層的RB是直接將10層的RB的參數(shù)復(fù)制過(guò)來(lái)撞芍。
修改codes/model/basic_model.py中l(wèi)oad_network(),在for k, v 前面加上一句 load_net_clean = network.state_dict()
即可實(shí)現(xiàn)跨扮。