楊海迎
(云南機電職業(yè)技術學院 云南省昆明市 650203)
實驗對于硬件的要求不是很高,我們在intel (R) Core i5 CPU,2G DDR3 的硬件環(huán)境下進行實驗,在 Window 7 操作系統(tǒng)下即可實現(xiàn)本文的算法。由于圖像數(shù)據(jù)量大,以字節(jié)型存儲,綜合各方面考慮,本文選用Matlab7.0 作為實驗平臺,采用Matlab 編程語言完成算法的實現(xiàn)。
本文實驗在中科院的CAS-PEAL 人臉數(shù)據(jù)庫[1]上進行。CASPEAL 人臉數(shù)據(jù)庫包括1040 個人的正面圖像,男性595 人,女性445 人,每個人有不同光照、表情、距離、附加物(眼鏡)的正面圖像,一共9954 張圖像。本文采用均勻光照、正常表情下的正面無附加物人臉庫Gallery 作為訓練集和測試集,Gallery 總共有1040幅正面圖像,我們隨機挑選800 幅作為訓練集,其余的240 幅作為測試集。在試驗之前,首先要把訓練集和測試集里的正面圖像進行預處理,原始圖像的大小為120×96,因為每幅人臉都是正面圖像,并且包括頭發(fā)、衣服等其他黑色區(qū)域,首先定位到眼睛區(qū)域,再通過水平投影和垂直投影找到眼睛的最復雜區(qū)域,即眼球中心,用白點標識。通過旋轉、平移變換,讓所有的圖像的眼睛都在一條線上,裁剪出人臉區(qū)域并縮放成統(tǒng)一大小的人臉圖像。本文經過預處理后的圖像大小為112×96,裁剪后的人臉如圖1所示。在本文中,下采樣因子為4,下采樣后的低分辨率圖像的尺寸為28×24,GoLPP的迭代終止閾值ξ=0.001。
圖1:圖像預處理
在殘差補償?shù)膶嶒炛?,我們沒有采用更多的人臉圖像來訓練,而直接使用訓練集中的每一幅圖像作為輸入,用輸入以外的其他訓練圖像來完成全局重建。本文采用均方差(Mean Square Error,MSE)來和峰值信噪比(Peak Signal to Noise Ratio, PSNR)作為算法性能的評判標準,MSE 的計算公式定義如下:
其中Ior為測試圖像It對應的原始高分辨率圖像,Ih為本文的重建圖像,m 和n 分別為高分辨率圖像對應的長度和寬度,在本文的實驗中,m=112, n=96。從MSE 的定義可以看出,MSE 越小則重建結果與原始圖像越接近。PSNR 則不同,PSNR 越大,則說明與原圖越接近,PSNR 大于30 則說明失真很小,與原圖基本上吻合。PSNR 的計算公式如下:
為了充分說明在GoLPP 上加上K 近鄰限制的必要性,我們給K 取不同的值來驗證。另外因為基于學習的算法很大程度上依賴于訓練集,我們又在不同數(shù)目的訓練集下做了試驗,還分析了不同GoLPP 的特征數(shù)對實驗結果的影響。
現(xiàn)有的人臉超分辨率算法大多都只考慮普通人臉圖像(正常光照、中性表情、無附加物)的重建,本節(jié)也只考慮普通人臉的重建。為驗證本文提出的算法的有效性,分別與Bicubic 插值、PCA 方法和LPH 方法做了比較。因為在GoLPP 的基礎上加入了K 近鄰限制,還對K 近鄰的影響進行了分析。GoLPP 是一種降維方法,低維空間的維數(shù)(GoLPP 保留的特征數(shù))如何確定,以及訓練樣本集大小對本文算法的影響,針對這兩個問題,我們也做了進一步的分析。
在CAS_PEAL 人臉數(shù)據(jù)庫上,我們隨機選取800 幅正常光照下的人臉圖像作為訓練集,其余240 幅作為測試集。實驗中,高斯函數(shù)的方差σ=128,GoLPP 保留的維數(shù)dim=200,近鄰數(shù)K=10,降采樣因子γ=4,殘差補償過程中低分辨率殘差塊的大小為3×3,則對應的高分辨率殘差塊的大小為12×12。為了評判本文算法的優(yōu)劣,我們與幾種經典的方法做了比較。實驗結果如圖2所示。
圖2:實驗結果比較
從直觀上看,Bicubic 插值的結果比較模糊,特別在眼睛、鼻子和嘴巴部位尤為突出,這是因為插值法只從輸入圖像中獲取信息,而因為輸入圖像本身就已丟失了很多高頻信息,所以插值法不能有效地補充缺失信息。PCA 是一種線性方法,不能夠學習出人臉內部的非線性信息。PCA 方法重建的人臉圖像在邊緣和嘴巴區(qū)域都比較模糊,整幅圖像都顯得不夠平滑,視覺效果不好。從肉眼上看,感覺Zhuang 的LPH 方法和本文提出的方法效果差不多, Zhuang 采用LPP 方法來提取人臉圖像的潛在特征,LPP 的鄰居圖是人為預定義的,并不能保證這樣構建的圖是最優(yōu)的,而本文的GoLPP 方法則是使用一個迭代的機制去求解最優(yōu)權值,從而得到最優(yōu)變換矩陣,從這個層面上說,本文的方法理應得到比LPH 方法更好的效果。圖3 列出了Bicubic 插值、PCA 方法、LPH 方法和本文方法的PSNR 和MSE。
圖3:MSE 比較
從圖2 和圖3 可以看出,本文的方法能夠取得很好的重建效果。LPH 方法利用徑向基函數(shù)在LPP 特征子空間重建全局人臉,本文采用加上K 近鄰約束的GoLPP 提取潛在特征,然后用GRNN 得到全局人臉,殘差補償方法使用的都是基于鄰域嵌入的方法。從實驗結果可以看出,GoLPP 方法更為合理,它的權值分布是服從高斯分布的。PCA 方法不能有效發(fā)掘數(shù)據(jù)潛在的非線性結構,重建的效果有局限。Bicubic 插值方法得到的結果過于模糊。
出于時間效率方面的考慮,我們選取400 幅訓練圖像來完成這部分實驗,其余640 幅圖像用于測試。GoLPP 中初始權值的賦值參數(shù)σ=128,經過GoLPP 降維后,保留的維數(shù)為200。圖4 分別列出了K=5、K=15、K=50、K=100 和K=400(不加K 近鄰限制的GoLPP)得到的實驗結果。
圖4:不同取值的K 對應的重建結果
在人臉超分辨率重建中,過多的鄰居只會導致重建的圖像缺失自身特有的信息,當K=400 時,也就是全部圖像都加入到鄰居圖的構建,雖然還是能夠重建出人的相貌特征,但是卻不夠平滑,并且有冗余信息,導致圖像的視覺效果很差,在K=100 和K=300 時也體現(xiàn)了這一點。也就是說基于GoLPP 在人臉超分辨率重建中,給鄰居圖的構建加上K 近鄰約束是必要的,并且鄰居數(shù)超過一定范圍后只會導致效果變差。圖5列出了隨K值的增加MSE的變化過程。
圖5:鄰居數(shù)K 對實驗結果的影響
從圖5 可以看出,當K 取值介于[10,20]之間時,MSE 最小,而MSE 越小,說明結果圖像與原圖越接近。當K=400 時,MSE 為488,與原圖相差太大,也說明了一個事實:GoLPP 用于人臉超分辨率中應該加上K 近鄰限制,且K 的值不宜太大。在比較了K 取不同值對應的實驗結果后,本文后面的實驗均取K=10。
基于學習的超分辨率算法很大程度上依賴于訓練集的選取,一般情況而言,訓練樣本數(shù)越多,重建效果越好。本文也是在基于學習的方法上來完成超分辨率重建的,也避免不了這個問題,圖6 給出了訓練樣本數(shù)分別為400、600、800、1000 時候的實驗結果。
圖6:不同大小的訓練樣本集的重建結果
圖6 中,N 表示訓練樣本數(shù),當N=400 是,重建的人臉略為平滑,但是重建效果也很不錯,與N=500、600的差不多,到N>700 后,可以看到在亮度和一些細節(jié)上有些許改善,但也是不太明顯。光從肉眼看,我們很難分辨出隨著N 的增大,效果是否變好。圖2.5 列出了隨著訓練樣本數(shù)增大,所對應的PSNR 的變化情況。
PSNR 越大,說明重建圖像失真越小,越接近原始圖像。從上圖我們可以看到,當訓練樣本數(shù)小于400 時,PSNR 值均小于28,并且隨著樣本數(shù)的增加,PSNR 上升很快。當N>600 后,PSNR 增幅明顯減緩,并且在N=700 處有輕微下降。圖7 說明,一般情況下,訓練樣本數(shù)越多,重建效果越好,但是當達到一定上限后,增幅將會變小。在本實驗中,最佳訓練樣本數(shù)為800,當大于800 后,PSNR 值會有少許波動。本文提出的方法在訓練樣本數(shù)很小的情況下也能有效重建人臉圖像,對訓練樣本數(shù)目不太敏感。
圖7:訓練樣本數(shù)對重建結果的影響
基于PCA 的人臉超分辨率方法的重建結果會受到主成分個數(shù)的影響,GoLPP 也是一種降維方法,重建的結果也會受到保留的特征數(shù)的影響。假設GoLPP 保留的特征數(shù)為dim,表1 列出了GoLPP 保留的特征數(shù)對重建結果的影響。
表1: GoLPP 保留的特征數(shù)對重建結果的影響
當dim取值太小時,也就是GoLPP保留的特征數(shù)很少的情況下,重建的圖像包含的細節(jié)特征不足,會丟失很多高頻信息。而當dim太大時,GoLPP 保留的特征就會出現(xiàn)冗余,當達到一定的特征數(shù)后,更多的特征并不會改善實驗結果,反而會加大計算量。從表1 可以看出,當訓練樣本數(shù)為400 時,GoLPP 保留的特征數(shù)大于160 后,重建結果就不會隨著dim 的增加而改善了。圖8所示是GoLPP 保留不同的特征數(shù)dim 對應的重建結果??梢钥闯觯攄im=25 時,重建的人臉圖像的邊緣有模糊,在dim=50 的時候有有輕微的模糊,這種情況在dim=100 時就不太明顯了。通過實驗,我們發(fā)現(xiàn)特征數(shù)應該取160 以上,在本文算法的實現(xiàn)過程中,我們取dim=200。
圖8:不同特征數(shù)的重建結果
在現(xiàn)實生活中,很大一部分人是戴眼鏡的,或者捕捉到的圖像是帶有表情的,目前大多數(shù)的人臉超分辨率算法都沒有考慮眼鏡和表情等情況。本文在800 幅中性表情、無眼鏡的訓練集上來嘗試重建這兩類人臉圖像。
本文在CAS-PEAL 人臉數(shù)據(jù)庫中挑選了20 幅戴眼鏡的人臉圖像來做測試,這20 個人都不在訓練集中。因為我們的訓練集里并不包含戴眼鏡的圖片,我們希望能夠通過本文的算法重建出測試圖像沒戴眼鏡時對應的高分辨率圖像。
圖9 給出了測試圖像戴眼鏡時對應的重建結果。由于基于學習的方法很大程度上都依賴于訓練集,訓練集沒有眼鏡,也就很難重建出眼鏡來。PCA 和LPH 方法也有去眼鏡的功能,但是因為PCA不能有效重建出人臉的非線性信息,重建的結果很不平滑,特別是在眼睛和輪廓部分。LPH 的重建結果比PCA 方法好很多,LPH 的核心算法是LPP,LPP 的轉換矩陣并不能保證是最優(yōu)的,對重建結果必然會造成影響,在輪廓部分還不夠平滑。GoLPP 可以自適應地找出最優(yōu)矩陣,所以本文提出的算法在眼睛恢復方面也是優(yōu)于LPH方法和PCA 方法的。
圖9:戴眼鏡的人臉圖像重建
在CAS-PEAL 人臉數(shù)據(jù)庫中,有一部分人是有不同表情時候的照片的,我們在里面找了20 幅帶表情的圖像來進行測試,這20個人沒有照片在訓練集中。仍然是使用800 幅中性圖像作為訓練集,這800 幅圖像都是中性表情。圖10 給出了帶表情圖像的重建結果。可以看出,本文提出的算法還能有效重建帶表情的圖像,效果也是明顯好于PCA 方法的重建結果,略好于LPH 方法。
圖10:帶表情的人臉圖像重建
實驗表明,本文提出的算法具有較好的魯棒性,在訓練集為中性表情、沒有附加物的情況下,能夠有效地去除眼鏡,重建人臉的眼睛部分,并且能夠有效地重建出帶表情的人臉圖像。
本章首先介紹了實現(xiàn)本文算法的實驗條件和實驗結果的評判依據(jù),并給出了相關的實驗結果。通過一系列的實驗分析了K 近鄰、訓練樣本數(shù)和GoLPP 特征數(shù)對算法的影響,并給出比較合理的取值范圍。實驗表明,本文提出的算法能夠適用訓練集較小的情況,對表情和眼鏡具有魯棒性,比Bicubic 插值、PCA 方法和LPH 方法更能有效重建高分辨率人臉圖像。