高偉,吳順
(1.上海文廣科技(集團)有限公司,上海 200233;2.上海交通大學 圖像通信與網絡工程研究所,上海 200240)
照片具有直觀、鮮明、形象生動、信息量豐富的特點,是社會記憶中的重要組成部分[1]。老照片一般都以紙等介質存在,隨著時間、存儲環(huán)境等因素的影響,會造成照片的劃痕損傷。雖然造成劃痕損傷的原因不同,但都有類似的視覺效果和一些共同的特征。傳統(tǒng)修復方法通過專業(yè)人員手工修復,修復過程復雜且成本高。隨著數字化技術的成熟,基于數字圖像處理技術為老照片修復提供了便利[2-3],如美圖秀秀、Remini Photo Enhancer 等圖像編輯軟件具有老照片修復功能,但好的修復效果仍需依靠專業(yè)人員手工修復,費時且價格昂貴[4]。
老照片往往同時含有多種損傷,文獻[5]指出老照片包括結構性損傷和非結構性損傷,結構性損傷主要是指劃痕、破損等,而非結構性損傷主要是指顏色泛黃、低分辨率等。盡管老照片包含多種損傷,但是多數的老照片都存在劃痕/折痕樣損傷,和老電影膠片劃痕類似,也有研究人員進行老電影膠片劃痕的自動修復[6]。盡管老電影可以利用相鄰幀的時序信息[7],但是老照片是靜態(tài)圖像,不能利用時序信息,且老電影劃痕都是直線,而老照片的劃痕不一定是直線,所以修復老照片劃痕更加困難。
數字圖像修復的方法可以分為傳統(tǒng)方法和基于深度學習的方法。傳統(tǒng)的修復方法一般都是先檢測圖像劃痕[8],再利用劃痕周邊特征進行修復[9]。隨著深度學習技術的發(fā)展,深度學習方法能夠在紋理修復的基礎上獲取圖像的語義信息并預測語義內容,使修復的整體效果更加符合客觀事實[10]。文獻[11]利用疊加部分卷積運算和掩模更新步驟進行圖像修復,恢復干凈的圖像。文獻[12]則提出一種全新的注意力模塊,該模塊不僅有效利用了上下文信息,同時能夠捕捉到生成補丁之間的相關性去修復那些不規(guī)則的劃痕和孔洞。文獻[13]則將不規(guī)則劃痕和孔洞修復任務分為結構重建和紋理生成兩部分。上述方法都需要在網絡訓練中同時加入掩碼,才能得到較好的修復效果。
深度學習是一種數據驅動的學習方法,文獻[5]為研究老照片深度學習修復方法,從網絡上搜集真實的老照片,并且模擬老照片的退化過程制作了合成數據集,但由于版權原因,搜集到的真實老照片和合成數據集都沒有公開。因此,搜集老照片進行數據增強以形成劃痕老照片數據集,對于深度學習的劃痕自動修復方法研究具有重要意義。
本文針對老照片劃痕修復缺少劃痕數據集的問題,參考去雨痕的全監(jiān)督MSFA 方法,提出一種基于半監(jiān)督學習的Semi-MSFA 老照片修復方法。通過搜集劃痕分布圖像,制作了700 張圖像的SynOld 老照片劃痕合成數據集,同時搜集含有劃痕的537 張真實老照片用于訓練和測試。在此基礎上,對合成數據集與真實老照片同時加入網絡進行學習,以提升在合成數據集與真實老照片上的修復效果。
目前,針對圖像劃痕的數據集主要有Quick Draw Irregular Mask Dataset(QD-IMD)、NVIDIA Irregular Mask Dataset(NVIDIA-IMD)[11]、II-CGAN[14]等數據集,如表1 所示。QD-IMD 和NVIDIA-IMD 分別生成了不同數量的不規(guī)則掩碼,如圖1 所示,QD-IMD 在CelebAHQ[15]人臉數據集上加上這些圖像掩碼得到最終的劃痕數據集,NVIDIA-IMD 則是在ImageNet[16]、Places2[17]和CelebA-HQ 3 個數據集上添加圖像掩模制作出最終的數據集,如圖2 所示。II-CGAN 重點關注繪畫的破損修復,數據集搜集了800 張繪畫,制作了50 個掩碼,其中30 個來自互聯網,其他20 個由計算機生成,背景像素為0,劃痕像素為255。這些劃痕數據集都是人工合成的數據集,掩碼也是人工隨機生成的,白色劃痕像素值為255,而老照片白色劃痕值范圍為0~255,并且人工生成的隨機劃痕掩碼寬度大,與老照片的細長劃痕相差較遠。文獻[5]搜集了62 種劃痕圖像來模擬老照片的結構性劃痕,制作了模擬老照片退化的數據集,如圖3 所示,但因圖像版權問題,所建劃痕圖像集未公開。
圖2 NVIDIA-IMD 數據集中掩碼疊加后的圖像與原圖Fig.2 Images after mask overlay and original images in NVIDIA-IMD dataset
圖3 模擬的老照片劃痕圖像Fig.3 Simulated old photos scratch image
表1 劃痕數據集Table 1 Scratch datasets
圖1 QD-IMD 與NVIDIA-IMD 劃痕數據集的掩模示例Fig.1 Mask examples of QD-IMD and NVIDIA-IMD scratch datasets
要完全模擬出老照片的退化過程是十分困難和不切實際的,因為老照片退化可能會出現以下類型的缺陷:不準確的處理或原始圖像存儲不當;由化學因素引起退化;由底層支架的分解造成的退化。但是,不同的缺陷可能在文檔數字化后看起來是相似的[18],并且劃痕沿著所有圖像以任何方向和顏色延伸,寬度和方向的變化可能很小,有可能存在中斷,且沒有分支[19],但也有的劃痕呈現彎曲狀,和鏡子破碎時的裂紋類似。除未公開的文獻[5]制作的數據集外,表1 中的數據集也無法達到模擬出受損的老照片的效果。
針對老照片劃痕自動修復學習任務要求,本文盡可能地去逼近老照片退化的過程,減少和真實老照片之間的差異??紤]到老照片的損傷多數是劃痕類型的結構性損傷,所以本文重點關注劃痕的修復過程。通過對老照片白色劃痕位置處像素值分析,劃痕像素值并不是255,從網絡上搜集了133 張符合老照片劃痕分布的圖像,如圖4 所示,背景像素為0,白色劃痕像素值為[1,255],這些劃痕均是細條紋,同時還存在小塊白色區(qū)域,可類比老照片中部分缺失區(qū)域。在此基礎上,從Pascal VOC 2012[20]中選取圖像作為背景圖像,隨機選取數據增加后的白色劃痕圖像進行圖層疊加,制作生成了SynOld 老照片劃痕數據集,如圖5 所示,該數據集共有700 張圖像。
圖4 劃痕掩模圖像Fig.4 Scratch mask images
圖5 SynOld 數據集中老照片合成示例Fig.5 Example of old photo synthesis in the SynOld dataset
考慮到生成的老照片劃痕數據集不能完全模擬真實老照片劃痕中存在的各類情況,直接應用所生成的SynOld 數據集進行學習實現劃痕修復效果并不理想。為此,本文參考多尺度特征注意力(MSFA)網絡[21]的監(jiān)督學習模型方法,提出一種綜合利用合成數據集與真實老照片的半監(jiān)督學習的Semi-MSFA 劃痕修復方法,以更好地適用于老照片修復任務。
Semi-MSFA 的網絡結構如圖6 所示。本文方法將合成圖像和真實老照片圖像同時加入到網絡中進行訓練,合成圖像為有真值的數據對,其中,分別代表第i張劃痕合成圖像和對應的目標圖像,共有l(wèi)對;代表第i張真實劃痕老照片,共有u張。在整體的網絡框架中使用具有多尺度特征注意力的MSFA 方法[21],將兩條MSFA 分支作為相應的生成器:第1 條有監(jiān)督的分支用于訓練劃痕合成圖像,輸出為;第2 條無監(jiān)督的分支用于學習真實劃痕老照片修復,輸出為。同時,引入判別器D來計算網絡生成后的圖像和對應的修復圖像之間的差異,判別器D由五層卷積層和一層全連接層組成,利用卷積-歸一化層-激活函數提取圖像高級特征。
圖6 Semi-MSFA 劃痕修復網絡Fig.6 Semi-MSFA scratch repairing network
為減少網絡參數,有監(jiān)督與無監(jiān)督修復兩條分支共享參數,在訓練過程中迭代更新參數,即隨機從有真值的數據樣本中選取批次大小為2 的圖像塊計算對應的損失函數。同時,從無標簽的老照片樣本中選取批次為2 的圖像塊,計算相應的損失函數。綜合兩條分支得到總的損失函數,根據反向傳播來更新參數。
判別器D參數如下:
對于有監(jiān)督分析,損失函數有以下3 種:
1)為了讓合成圖像經過網絡之后的復原圖像盡可能地靠近真值,因此本文采用了均方差損失,均方差損失Lmse為:
2)感知損失Lper為:
其中:φ(·)代表特征層輸出。感知損失是將網絡修復后的圖像卷積后得到的特征和真值卷積后得到的特征進行比較,使得高層特征接近,用于衡量修復之后的圖像與真值之間的相似性,起到去除偽影的作用。
3)對抗損失Lgan為:
其中:D代表判別器。加入判別器引入了額外的對抗損失,為網絡增加了新的正則化,幫助網絡恢復出更好的結果,用于判別是網絡生成的圖像還是真值圖像。
對于無監(jiān)督分支,采用總變差損失(Total Variation Loss)Ltv為:
其中:?h和?v分別代表水平和垂直方向上的微分運算矩陣,用于保存圖像細節(jié),使得恢復后的圖像更加真實[22]。
總的損失函數為:
其中:α、β和γ是超參數。
算法1Semi-MSFA 迭代訓練過程
為了評估所提出的方法,本文使用SynOld 中700 張合成圖片及網上搜集的537 張劃痕老照片進行半監(jiān)督去劃痕學習,其中500 張SynOld 圖片與355 張老照片用于訓練,200 張SynOld 圖片及182 張老照片用于測試。損失函數L中參數設定為:α=0.1,β=0.01,γ=0.01。
在訓練過程當中,網絡總共訓練90 個epoch,每個epoch 迭代5 次,學習率為10-4,在后45 個epoch 中學習率線性遞減,學習率為10-4–(10-4-10-6)(E-45)/45,其中,E代表訓練輪數。采用Adam 優(yōu)化算法,β1=0.9,β2=0.99。在訓練過程中,將圖像裁剪為256×256 像素大小,隨機旋轉90°或者翻轉180°進行數據增強。
為更清晰地了解各個損失函數的作用,本文做了以下消融實驗:即無監(jiān)督分支的損失函數不發(fā)生變化,有監(jiān)督分支僅使用均方差損失、感知損失、均方差損失和感知損失、均方差損失和對抗損失、感知損失和對抗損失、均方差損失和感知損失及對抗損失進行實驗,表2 為在合成數據集的測試集上得到的PSNR 與SSIM 值。從表2 可以看出,在同時使用均方差損失、感知損失和對抗損失條件下,PSNR 與SSIM 值最高。
表2 不同損失函數條件下的PSNR 與SSIM 結果Table 2 PSNR and SSIM results under different loss functions
為了對比本文方法的去劃痕效果,對于SynOld 中的劃痕合成圖片,圖7 給出了與文獻[5,21]方法去劃痕效果的對比,圖8 給出了其中手臂、人臉細節(jié)部分的劃痕修復結果對比。在合成數據集上,文獻[5]的方法有一定的劃痕修復效果,但也存在細小噪聲點不能修復的問題。可以看出,在修復第1 張合成圖像劃痕圖像的同時,人臉修復失敗,但MSFA 與Semi-MSFA 方法并未出現這種情況,在修復劃痕的同時也能保存完整人臉細節(jié)。觀察第2 張合成圖像劃痕修復情況,在圖8中人手臂的細節(jié)圖像部分,可以發(fā)現文獻[5]方法修復噪點失敗,造成手臂和真值圖像相差甚遠。對于第4 張合成圖像劃痕修復情況,通過對比截取放大部分人臉的細節(jié),發(fā)現雖然人臉處沒有受到劃痕的影響,但是文獻[5]方法模糊了人臉處的細節(jié),文獻[21]方法雖然沒有模糊細節(jié),但是修復劃痕的效果卻不如本文Semi-MSFA 網絡方法。
圖7 合成圖像修復結果對比Fig.7 Comparison of synthetic image repairing results
圖8 圖7 中第2 張手臂與第4 張人臉局部細節(jié)對比Fig.8 Comparison of the details of the human hand in the second image and the face in the fourth image on figure 7
對于在加入網絡學習的真實老照片修復結果中,文獻[5]方法在對比度方面有增強效果,在人臉方面也比其他的方法更清晰,主要是在訓練網絡時加入了人臉增強的網絡,但是有時恢復人臉的過程中會出現差錯,比如圖9 第1 張老照片中鼻子附近區(qū)域的恢復過程中出現白色區(qū)域的缺失(見圖10)。對于嘴唇上方有需要修復的細小劃痕,文獻[21]也未能修復,而Semi-MSFA 方法更能保護細節(jié)。對于未加入網絡訓練的真實老照片,圖11 給出了這3 種方法修復結果:第1 張老照片中耳朵附近區(qū)域存在白色斑點需要修復(見圖12),可以觀察到,文獻[5,21]方法沒有修復完全,Semi-MSFA 方法能很好地修復斑點及劃痕。第5 張人臉部位也有劃痕需要修復,對比局部細節(jié)可以看出,除Semi-MSFA 方法外,文獻[5,21]方法結果中劃痕均存在不同程度未被修復的情況。
圖9 訓練過程老照片修復結果Fig.9 Repairing results of old photos from the training process
圖10 圖9 中方框標示區(qū)域局部細節(jié)對比Fig.10 Comparison of local details in the area marked by the box in figure 9
圖11 未訓練老照片的修復結果對比Fig.11 Comparison of repairing results of untrained old photos
圖12 圖11 中方框標示區(qū)域局部細節(jié)對比Fig.12 Comparison of local details in the area marked by the box in figure 11
劃痕是老照片最常見的損傷,基于生成對抗網絡,通過有監(jiān)督學習方法進行老照片劃痕修復是當前老照片劃痕修復的主要方法。針對真實劃痕老照片缺少原始圖片用于監(jiān)督學習的問題,本文建立人工劃痕合成數據集,同時搜集建立含有劃痕的真實老照片數據集。對于老照片劃痕修復,在有監(jiān)督MSFA 方法基礎上,提出一種Semi-MSFA 老照片劃痕修復方法。實驗結果表明,與MSFA 方法相比,本文提出的Semi-MSFA 方法實現了對老照片劃痕修復的半監(jiān)督學習,在合成數據測試集及真實老照片上具有較好的修復效果。本文方法修復后的老照片在色彩方面不夠鮮明,下一步將在顏色恢復方面進行研究。此外,老照片多數都存在人臉圖像,因此在修復老照片劃痕的同時,將考慮對人臉進行增強,提升人臉部分的修復質量。