賀丹






摘要:圖像修復技術是利用計算機技術將圖像中的多余部分去除或者填補圖像中的缺失部分,該技術廣泛應用于醫(yī)學圖像處理、文物修復、人臉識別等領域。早期的圖像修復技術在小區(qū)域缺失圖像處理中取得了良好的效果,但面對大區(qū)域缺失圖像,修復效果往往不夠理想。隨著深度學習、人工智能技術的發(fā)展,深度學習技術為圖像修復提供了新的解決方案。文中重點介紹了基于深度學習的圖像修復模型,以PyTorch深度學習框架為基礎,以PASCAL VOC2012數據集為實驗對象。實驗表明,基于深度學習的圖像修復模型在圖像修復問題上取得了良好效果。
關鍵詞: PyTorch; 圖像修復; 深度學習; 人工智能; 神經網絡
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)09-0075-03
1 引 言
隨著多媒體技術和信息技術的發(fā)展,圖像作為最重要的信息載體之一,在醫(yī)學圖像處理、遙感影像處理、人臉識別等領域發(fā)揮著越來越重要的作用。與此同時,人們對圖像質量提出了更高的要求,在圖像內容和圖像完整度上都有較高的要求,從而促使如何提高圖像質量問題成為當前計算機視覺領域重點研究問題之一。圖像修復[1]的概念最早由Bertalmio等人于2000年提出,圖像修復就是利用圖像處理算法將原始圖像中多余的部分去除,得到修復后的圖像,或者是在原始圖像中的缺損區(qū)域填充合理信息,讓圖像信息更完整的過程[2-5]。但在圖像修復過程中往往面臨著如下問題:首先,原始圖像中能利用的有價值信息十分有限,不能單純地利用已有信息填補缺損區(qū)域;其次,圖像修復算法的性能直接決定了修復后圖像在視覺上的真實合理性,尤其是涉及人臉圖像的修復,細微的差距就將影響圖像整體的視覺效果;最后,原始圖像中缺失區(qū)域的大小、形狀、位置等都將影響圖像修復的難度。因此,圖像修復是計算機視覺和圖像處理領域一個經典且具有挑戰(zhàn)性的研究課題。
2? 圖像修復技術
2.1 圖像修復問題描述
圖像修復問題主要包括兩種類型:第一種是去除原始圖像中多余的部分,讓圖像中的核心內容更清晰,這種類型主要應用在圖像遮擋物去除、無關物去除等場景,如圖1所示。第二種是填充原始圖像中的缺失部分,讓圖像更完整,這種類型主要應用在圖像缺失填補的場景,如圖2所示。
2.2 圖像修復技術國內外研究現狀
根據研究內容的側重點不同,可以將傳統(tǒng)的圖像修復技術分成兩類:基于結構的圖像修復技術、基于紋理的圖像修復技術。其中基于結構的圖像修復技術以基于偏微分方程的修復算法[1,6]為代表,這種算法主要面向小尺寸的圖像缺失問題,以單個像素作為圖像修復的基本單元,利用像素擴散的方式完成缺失圖像的填充,但這種方式的魯棒性較差,容易造成圖像模糊。基于紋理的圖像修復技術以基于樣本塊紋理合成算法[7-8]為代表,這種算法是從原始圖像的已知區(qū)域中尋找目標塊,并將目標塊的信息復制到缺失區(qū)域中,達到圖像修復的目的。在處理場景圖像的修復問題上,雖然基于結構的圖像修復技術和基于紋理的圖像修復技術取得了良好的修復效果,但是這兩種算法只能對簡單的、紋理特征明顯的圖像進行修復,在實際應用中具有較大的局限性。
近年來,人工智能技術取得飛速發(fā)展,深度學習算法日新月異,深度學習算法在計算機視覺、圖像處理等領域的應用越來越廣泛的同時,也取得了巨大的研究進展和良好的研究成果。基于深度學習的圖像修復技術在生產實踐中廣泛應用的同時,也得到越來越多學者的關注,并提出了基于深度學習的圖像修復模型,深度學習的修復方法通過從大規(guī)模的數據集中學習圖像中的語義信息,大幅度提升圖像修復效果。縱觀國內外現有研究成果,基于深度學習的圖像修復模型可以總結為下述三種[9]:基于自編碼的圖像修復方法[10]、基于生成模型的圖像修復方法[11]和基于網絡結構的圖像修復方法[12]。
基于自編碼的圖像修復方法主要用到了自編碼器結構(Autoencoder, AE),自編碼器由編碼器和解碼器兩部分組成,其結構如圖3所示。從圖3中可知編碼器由卷積神經網絡構成,從而實現對原始圖像的降維編碼操作,解碼器由反卷積神經網絡組成,利用編碼階段提取的原始圖像特征實現圖像的解碼重構。在編碼階段,利用編碼器將原始圖像壓縮并映射到特征空間,隨著卷積層級的不斷加深,通道數逐漸增加,特征圖尺寸逐漸減小。在解碼階段,通過從多個通道的深層特征實現圖像重構,隨著通道數逐漸減小,圖像尺寸逐漸增大,直至恢復至原始圖像的尺寸。
基于生成模型的圖像修復方法主要用到了生成對抗網絡(Generative Adversarial Networks, GAN),GAN網絡中包括了兩套獨立的網絡,分別是生成器網絡G網絡、判別器網絡D網絡,這兩套網絡用來作為相互對抗的目標。生成器網絡用來生成類似于真實樣本的隨機樣本,并作為假樣本數據,判別器網絡是需要訓練的網絡,用來分辨是真實數據還是假樣本數據。當生成器網絡生成的圖像內容不合理,或者圖像內容與真實圖像不符時,判別器網絡會將圖像判別為假,從而計算出生成圖像與真實圖像之間的差距,并將差距作為反饋傳回生成器網絡,指導生成網絡不斷提高生成圖像的質量,直到判別器網絡無法分辨生成圖像的真假為止。
基于網絡結構的圖像修復方法是以一個未被訓練的生成網絡為基礎,對該生成網絡進行隨機初始化處理,一方面利用初始化的網絡擬合待修復圖像,另一方面對單張缺失圖像的已知部分進行訓練,以生成網絡結構作為先驗信息,執(zhí)行迭代操作反向推導出圖像缺失區(qū)域的圖像內容,迭代操作需要根據推導出缺失區(qū)域的圖像內容來確定。基于網絡結構的圖像修復方法較好地利用了深度生成網絡的捕獲大量低級圖像統(tǒng)計信息的能力,在學習之前就能從深度生成網絡的結構中捕獲,從而避免從大量數據集中獲取統(tǒng)計信息。這種方式在難以獲得大量的圖像訓練集時十分有效,但是圖像修復的計算量較大,迭代次數較多,影響算法執(zhí)行效率。
3? PyTorch框架
PyTorch是由Facebook公司開發(fā)的深度學習框架,是基于Torch深度學習框架開發(fā),它是一個基于Python語言的計算包,不僅提供強大的GPU加速的張量計算,同時也包含自動求導系統(tǒng)的深度神經網絡。深度學習技術的快速發(fā)展也為PyTorch框架的發(fā)展帶來了新的動力,日益豐富的張量運算操作加入PyTorch框架中,越來越成熟的深度學習模塊也被PyTorch框架所吸收,同時也支持更多的損失函數和優(yōu)化器,在計算性能上顯著提高,應用日益廣泛。
PyTorch中主要包括了16個常用子模塊,現重點介紹其中常用的幾個子模塊。torch模塊提供了PyTorch中常用的激活函數(包括Sigmoid函數、RELU函數、Tanh函數等),同時提供了PyTorch張量的常用參考,主要有矩陣的乘法操作、張量元素選擇操作等。torch.Tensor模塊定義了torch中的張量類型和數值類型。torch.nn模塊則是PyTorch神經網絡模塊化的核心,在這個模塊中定義了卷積層nn.ConvNd(N=1,2,3)和線性層(全連接層)nn.Linear等。torch.optim模塊定義了一系列的優(yōu)化器,包括torch.optim.SGD(隨機梯度下降算法)、torch.optim.Adagrad(AdaGrad算法)、torch.optim.Adam(Adam算法)等。
正由于PyTorch框架提供了良好的張量計算模型,同時其中的子模塊功能十分豐富,能幫助高效地解決圖像修復問題,因此本文依托PyTorch框架實現圖像修復實驗。
4? 實驗
為了研究基于PyTorch的圖像修復技術,通過實驗對自編碼的圖像修復方法(AE)、基于生成模型的圖像修復方法(GAN)、基于網絡結構的圖像修復方法進行性能對比。在展示圖像修復效果時,以生成模型(GAN)為代表進行展示。
4.1 實驗環(huán)境
本次實驗采用Windows10操作系統(tǒng),實驗設備的CPU為Inter i5-7200U,以Python 3.8為開發(fā)語言、PyCharm 2021.2為集成開發(fā)平臺,借助PyTorch深度學習框架,搭建完整的實驗環(huán)境。
4.2 實驗數據
本實驗采用的數據為PASCAL VOC2012數據集,該數據集的下載地址為http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html#data。該數據集在2012年視覺對象類挑戰(zhàn)賽VOC2012中推出,該數據集中一共包含了17125張圖片,包括了20個對象類,如人、鳥、貓、飛機、自行車、瓶子、椅子等常見對象。
為了實現圖像修復的研究,從PASCAL VOC2012數據集中選取出500張圖像組成實驗數據集Dataset500,同時確保Dataset500中的圖像尺寸均大于等于500×375像素。在選取數據集之后,對數據進行預處理,將Dataset500數據集中的所有圖像尺寸截取為500×375像素。
為了實現圖像修復,需要對Dataset500數據集增加掩膜,結合數據集中圖像的尺寸信息,設置掩膜的尺寸大小為100×100像素。以數據集中的4個圖像為例,將加掩膜前的圖像如圖4所示,加掩膜后的圖像如圖5所示。
4.3 實驗結果
通過對Dataset500數據集執(zhí)行數據預處理、加掩膜等操作后,利用PyTorch模型構建GAN網絡,分別實現GAN網絡的生成器網絡和鑒別器網絡。在模型訓練時,將batch size設置為64,epoch設置為1000,學習率設置為0.0001。將加掩膜之后的圖像依次輸入GAN網絡,得到修復后的圖像,從500個處理結果中選取4個進行圖像修復效果展示,如圖6所示。
從圖6中圖像修復結果可知,運用GAN網絡實施圖像修復,能得到較好的修復效果,在內容上與真實圖像接近,同時視覺效果上與真實圖像幾乎一致。
5? 結論
本文重點研究了圖像修復技術,以深度學習框架PyTorch為實驗框架,實現了GAN網絡,進行了生成器網絡generator和鑒別器網絡discriminator的搭建,同時以PASCAL VOC2012數據集為實驗對象,通過實驗驗證了GAN網絡在圖像修復中能體現出良好的效果。通過對圖像修復技術的研究,為數字圖像修復、文物修復等領域帶來了新的解決方案,在后續(xù)的研究中,將研究修復效率更高的圖像修復算法,并進一步提高圖像修復的視覺效果。
參考文獻:
[1] Bertalmio M,Sapiro G,Caselles V,et al.Image inpainting[C]//Proceedings of the 27th annual conference on Computer graphics and interactive techniques - SIGGRAPH '00.Not Known.New York:ACM Press,2000:417-424.
[2] 王琛.基于生成對抗網絡的圖像修復算法研究[D].北京:北京工業(yè)大學,2020.
[3] 范春奇,任坤,孟麗莎,等.基于深度學習的數字圖像修復算法最新進展[J].信號處理,2020,36(1):102-109.
[4] 劉昱.基于深度生成模型的圖像修復研究[D].徐州:中國礦業(yè)大學,2019.
[5] 陳杰,李旭姣.圖像修復技術綜述[J].電信快報,2021(2):44-46.
[6] 阮秋琦,仵冀穎.數字圖像處理中的偏微分方程方法[J].信號處理,2012,28(3):301-314.
[7] Soheil Darabi,Eli Shechtman,Connelly Barnes,Dan B Goldman,Pradeep Sen.Image Melding: Combining Inconsistent Images using Patch-based Synthesis[J].ACM Transactions on Graphics,2012,31(4CD):82.1-82.10
[8] Wilczkowiak M M,Brostow G J,Tordoff B,et al.Hole filling through photomontage[C]//Proceedings of the British Machine Vision Conference 2005.Oxford.British Machine Vision Association,2005.
[9] 沈玲.基于語義感知深度模型的圖像修復方法研究[D].合肥:合肥工業(yè)大學,2020.
[10] Liu G L,Reda F A,Shih K J,et al.Image inpainting for irregular holes using partial convolutions[M]//Computer Vision – ECCV 2018.Cham:Springer International Publishing,2018:89-105.
[11] Dolhansky B,Ferrer C C.Eye in-painting with exemplar generative adversarial networks[C]//2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition.June 18-23,2018,Salt Lake City,UT,USA.IEEE,2018:7902-7911.
[12] Gao R H,Grauman K.On-demand learning for deep image restoration[C]//2017 IEEE International Conference on Computer Vision.October 22-29,2017,Venice,Italy.IEEE,2017:1095-1104.
【通聯編輯:唐一東】