阮 杰,蔣 暢,朱靜潔,戴玲娜,李榮生,高 飛,李 鵬,4
(1.杭州電子科技大學 計算機學院,浙江 杭州 310018;2.杭州妙繪科技有限公司,浙江 杭州 311200;3.國網山東省電力公司 煙臺供電公司,山東 煙臺 264000;4.北京大學 信息技術高等研究院,浙江 杭州 311200)
隨著人工智能的蓬勃發展,肖像繪畫機器人[1-2]應運而生,成為了眾多研究者研究的熱點。肖像繪畫機器人在很多方面的應用都大有前景,如繪制明信片,制作公司文化產品等。肖像繪畫機器人技術的核心問題是如何用計算機將人臉照片轉換為高質量的肖像畫。現有的肖像畫生成算法在清晰度、人臉特征保存、細節紋理上仍存在很大的短板。因此,面向繪畫機器人的簡約人臉線條畫生成方法具有重要研究意義。
生成對抗網絡常用在圖像生成領域[3-4],其中可以生成多風格人臉圖像,比如線條畫生成任務[5],素描肖像畫生成任務[6-7],均取得了較好的生成質量。文獻[8-9]提出了多尺度素描生成來提高素描生成質量,后續半監督學習[10-11]、自適應調制[12-13]等方法也被廣泛應用于生成素描線條畫。文獻[14]對人臉肖像畫合成進行研究,提出了APDrawingGAN算法。它通過復合網絡的設計,先局部肖像翻譯生成,再通過像素拼接實現全局肖像融合,但它存在生成大面積黑色塊、線條混亂等問題。文獻[15]提出的AISketcher基于AdaIN進行改進,實現了出色的人臉線條畫合成效果,兼顧了生成質量與運算速度,但對于線條畫的頭發部分會生成多余稀疏線條。文獻[16]對非配對人臉肖像畫生成進一步研究,提出了一種非對稱循環映射圖去強制重建信息映射,以學習多風格肖像畫生成的UPDG算法,但仍存在生成白斑、人臉生成不夠立體等問題。這些生成人臉線條畫算法都較為復雜,所需計算資源也較為龐大,不方便部署在資源有限的機器人終端設備。
最近,有研究學者提出了許多種模型壓縮和加速技術,這類技術包括輕量級網絡設計[17-18]、模型修剪[19]、模型量化[20-21]、知識蒸餾[22-23]等。知識蒸餾是模型壓縮最有效的方法之一,其通過構建一個輕量化的小模型,利用性能更好的大模型去指導輕量模型訓練,期望小模型能達到更好的性能和精度。知識蒸餾分為離線蒸餾、在線蒸餾和自蒸餾3類。離線蒸餾采用預訓練大模型,提取中間層特征知識來指導輕量模型的訓練。在線蒸餾是教師模型和學生模型同時更新,并且整個蒸餾過程是端到端訓練的,相比離線蒸餾效率更高。不過,在師生模型參數量相差較大的時候,在線蒸餾可能會導致性能更差,往往訓練效果不理想。自蒸餾思想是利用同構模型或利用模型自身進行知識蒸餾,以達到自我精度提升的目的。
為了降低模型的計算量和參數量并生成高質量的人臉線條畫,本文提出了一種基于知識蒸餾的簡約人臉線條畫生成方法。具體而言,本文使用離線蒸餾的思想,將大模型作為教師網絡,指導輕量型學生網絡的訓練過程,從而使輕量型網絡達到較好的生成效果。此外,本文引入了風格損失,來生成更精細的線條,使生成畫像與目標畫像具有相近的風格。
本文的知識蒸餾框架中,包含一個教師模型U2-NetT和一個學生模型U2-NetS。其中,教師模型U2-NetT是U2-Net模型引入風格損失優化得到的預訓練模型[24],能生成更清晰立體的人臉線條畫。學生模型U2-NetS在知識蒸餾的約束算法下,用教師模型引導層信息去監督學生模型U2-NetS表示層進行訓練。通過知識蒸餾使學生模型U2-NetS生成的簡約藝術線條畫能夠和教師模型U2-NetT生成的人臉線條畫有相當效果,并大幅度減少模型運算量和參數量。本算法模型結構如圖1所示。

圖 1 蒸餾模型整體架構
圖1中,對于給定的人臉圖像x,首先通過教師模型U2-NetT得到生成圖片T(x)、各級編碼層和解碼層的特征圖;然后通過學生模型U2-NetS得到S(x)和各層特征圖,并對2個模型間每層特征圖進行KL(Kullback Leibler)散度計算,以此作為蒸餾損失。用蒸餾損失來約束學生模型的編碼層和解碼層,使二者每層特征分布盡量一致,最后學生模型能夠生成與教師模型生成效果相近的人臉線條畫。
教師模型U2-NetT結構如圖2所示。

圖 2 U2-NetT模型結構
圖2采用的是2層嵌套的U型結構,該設計可以提取更豐富的上下文信息,得到并融合多尺度的感受野特征。整體模型是一個由11個Stage(圖2中的虛線框)組成的大U型結構,每個Stage由一個U型殘差模塊組成。U型殘差模塊從下采樣的輸入特征中提取到多尺度的特征,然后在通道維度上,通過級聯和卷積等方法將特征映射到高分辨率的6個特征圖中,最后將6個特征圖融合得到最后生成的簡約線條畫。
在得到預訓練好的教師網絡后,為了能在降低其運算量以及模型大小的同時,保持人臉線條畫的生成效果,本文采用知識蒸餾的技術。知識蒸餾是通過構建一個輕量化的小模型,利用性能更好的大模型的監督信息,來訓練這個小模型,以期望達到更好的性能和精度。關鍵問題是如何將知識從龐大復雜的教師模型中遷移到簡單的學生模型上。本算法采用離線蒸餾的思想,對U2-NetT教師模型進行基于特征知識的知識蒸餾。通過教師模型輸出的特征圖和學生模型輸出的特征圖去計算蒸餾損失,來約束學生模型特征層。
蒸餾模型是從教師網絡中引入每個編碼層和解碼層的特征圖作為提示層的輸出,同樣,學生網絡中的引導層也是每個編碼層和解碼層,并通過蒸餾損失對其進行信息約束。通用的基于特征信息的知識蒸餾損失可表示為
LFea(ft(x),fs(x))=
LF{Φt[ft(x)],Φs[fs(x)]}
(1)
式中:ft(x)為教師模型中間層的特征圖;fs(x)為學生模型的特征圖;Φt(ft(x)),Φs(fs(x))為轉換函數,通常在教師和學生模型的特征圖不在相同維度時應用;LF(·)為匹配教師網絡特征圖和學生網絡特征圖的相似性的蒸餾損失。在本文的具體實現中,使用的蒸餾損失為
(2)
式中:DKL(·)為KL散度函數;ci為對應編碼器和解碼器的通道數。
本文中學生模型U2-NetS和教師模型U2-NetT的結構一致,區別在于U2-NetT模型的每層編碼器和解碼器的通道數為c1=64,c2=128,c3=256,c4=512,c5=512,U2-NetS模型的每層編碼器和解碼器的通道數c1~c5大小都為64。因此,本文對U2-NetS模型每層輸出的特征圖進行1×1的卷積,使教師模型輸出的特征圖與學生模型提示層的大小相匹配。這可以方便教師模型知識監督學生模型,使得學生模型更好地學習到教師模型的特征分布。
U2-NetT模型的損失函數使用二分類交叉熵損失和風格重建損失等進行約束。
二分類交叉熵損失。基準模型的損失函數,通過二分類交叉熵損失提取人臉整體結構:
(1-yn)(1-T(x)n))
(3)
式中:T(x)為學生模型提取到的特征向量;y為教師模型提取的特征向量。
風格損失。為了使教師網絡生成得到的線條能有訓練數據集中畫師所繪線條一樣的視覺感受(線條清晰柔順),因此在訓練過程中引入風格損失。將真實圖像和教師模型生成的圖片分別提取得到高維特征(本文使用VGG19[25]來提取)作比較,通過格拉姆(Gram)矩陣計算特征之間的相關性,使得高維信息(內容和全局結構)接近。Gram矩陣表示為
(4)
式中:C為通道數;H為向量高度;W為向量寬度;X代表特征向量。Gram矩陣是由特征向量之間內積得到的,因此Gram矩陣可以衡量特征向量之間的關聯程度,這種關系表現的特點即是人們眼里的“風格”[26]。因此風格損失為
G(V(y))‖2
(5)
式中:V(·)為VGG19網絡輸出。
U2-NetT模型損失函數為
LT=λ1LBce+λ2LStyle
(6)
U2-NetS模型需要使用蒸餾損失對從U2-NetT學到的監督信息進行約束,故U2-NetS模型除了采用U2-NetT模型相同的損失外,還使用了額外的蒸餾損失。蒸餾損失的作用在于匹配教師模型的提示層和學生模型的引導層的特征圖輸出,用教師模型知識監督學生模型。U2-NetS模型損失函數為
LS(S(x),y)=λ1LBce+λ2LStyle+λ3LDis
(7)
式中:λ1、λ2、λ3為權重系數。
本節介紹了實驗訓練策略和采用的數據集,并通過定量和定性實驗來證明本文方法的有效性。在預訓練教師模型和知識蒸餾學生模型時,都是采用線條畫人臉數據集。此外,本文使用APDrawing[14]數據集中的人臉照片作為外部測試樣本。
線條畫人臉數據集。該數據集包括從網絡收集的1 224張人臉圖片。對應的肖像線條畫由3位畫師根據人臉照片以線條畫特點(筆畫清晰連貫且柔順)繪制而得到的高分辨率圖像。將照片和對應藝術線條畫進行對齊并裁剪,分辨率為512×512。其中1 000張圖片作為訓練樣本,224張圖片作為測試樣本來測試生成結果。在訓練過程中,本文對訓練集進行了數據增廣,即將輸入的人臉照片分別下采樣2倍、4倍、6倍再上采樣回原尺寸,目的是捕捉更多細節信息。
APDrawing數據集。該數據集是清華大學開源數據集,它共有490張人臉照片以及對應藝術風格畫像。將人臉照片與對應藝術風格圖像進行對齊并裁剪,分辨率為512×512。本文在外部數據測試中,使用該數據集的人臉照片作為測試樣本。
在此項工作中,本文選擇結構相似度(structural similarity index measure, SSIM)[27]、特征相似度(feature similarity,FSIM)[28]、峰值信噪比(peak signal to noise ratio, PSNR)和梯度幅相似性偏差(gradient magnitude similarity deviation,GMSD)4個性能指標進行測試。
SSIM中圖像是高度結構化的,即圖像的相鄰像素之間具有較強的關聯性。這一關聯性反映的是圖像中語義結構信息。SSIM通過計算2個圖像在亮度、對比度和結構上的數值距離,來表示2個圖像之間的結構相似性。SSIM度量結果的數值越大,表示圖像之間結構越相似,即生成圖像的內容質量越好。
FSIM是SSIM的一個變種方法。FSIM的質量評估是基于特征相似度計算的,利用相位一致性、相對不變性的特點,可以提取得到圖像的特征。為解決由于圖像變化而影響視覺體驗的問題,FSIM引入梯度特征。FSIM的數值越大,表示圖像失真越小。
PSNR計算的是圖像最大像素值和背景噪聲之間的比值。PSNR是一個完全基于數學度量的評價指標。PSNR度量結果的數值越大,表示圖像之間越相似,即生成模型生成得到的圖像質量越好。
GMSD用計算局部梯度幅值相似性來衡量局部圖像質量,計算局部圖像質量的標準差來衡量圖像全局的質量。
在優化方面,采用隨機梯度下降的自適應矩估計優化器來優化生成器和判別器,生成器和判別器進行交替優化。學習率都設置為0.001,β1=0.5,β2=0.99。總損失函數中的超參數λ1為10,λ2為1,λ3為1 000。并運行280 000次迭代。在型號為3090的GPU上訓練U2-NetS模型。整個訓練過程大概使用了4 d。
首先評估模型蒸餾及風格損失對于性能的影響,表1列出了教師基準模型U2-Net、改進的教師模型(引入風格損失)U2-NetT、學生的基準模型U2-Netp及本文學生模型U2-NetS的性能指標。表1中,MACs為模型計算量指標,越小則說明計算量越小;Parameter為模型參數量指標,越小則說明模型參數量越小。加粗數據為所有模型中最優指標。

表 1 不同模型的性能指標
從表1可以看出,改進的教師模型U2-NetT和教師基準模型U2-Net相比,PSNR上漲了約6.5%,FSIM上漲了約15.0%,SSIM上漲了約12.6%,GMSD下降了約25.5%,生成圖像的指標表現都有所提升。這表明使用風格損失,能夠提升生成畫像的質量。此外,學生基準網絡U2-Netp在蒸餾前的指標效果很差,而使用蒸餾算法后的本文學生模型U2-NetS的評測指標較其取得了明顯提升,PSNR指標上漲了約16.2%,FSIM上漲了約4.2%,SSIM上漲了約11.8%,GMSD下降了約10.6%,生成圖像的指標表現都較大提升。這表明,對模型進行蒸餾可以有效提升學生模型的性能。最后,與改進的教師模型U2-NetT相比,本文學生模型U2-NetS計算量減少了約65.3%,參數量減少了約97%。U2-NetS模型推理速度更快,更方便在繪畫機器人設備上進行部署。
將本文線條畫蒸餾模型U2-NetS與現有的線條畫合成方法進行比較,生成的圖片分辨率均為128×128,對比結果如圖3所示。

圖 3 5種人臉線條畫模型對比結果
圖3中,第1行的第1、2、3幅照片來自文獻[1],第4、5、6幅照片來自文獻[2],第7、8、9幅照片來自文獻[29],且第2行所示線條畫結果分別對應圖片所在文獻。第3~6行的生成結果來自APDrawingGAN[14]、AISketcher[15]、UPDG[16]、本文蒸餾模型U2-NetS。
從圖3的實驗結果可知,第2行生成結果可以保留照片的身份信息,但是生成的肖像畫線條鋸齒感強,缺少藝術美觀性;APDrawingGAN生成結果可以較好地保留身份信息,但頭發生成易受光線影響,會保存大量黑色色塊,不利于機器人進行繪制。AISketcher生成的結果雖然在美觀和相似性上有了很大提升,但會生成大量稀疏且無用的短線條,顯得不夠整潔有序。UPDG生成的五官線條拖沓不夠干凈、缺少藝術感。而本文U2-NetS模型生成的結果極大地解決了之前模型的不足。本文模型生成的線條畫在面部五官特征的處理上更為精致,如雙眼皮、瞳孔、鼻梁和更加精準的眉毛和眉形等。而且本文模型生成的肖像畫包含的線條較少,但仍然能夠表現出人物的特征,具有很強的可辨識度,這對于機器人快速繪制具有重要的優勢。圖4為對比結果通過繪畫機器人繪制于紙上的效果。

圖 4 5種人臉線條畫模型繪制對比結果
圖4中,第2行生成結果的平均繪制時間為208 s,可以看到生成圖片鋸齒感較強,相對于其他結果藝術美觀性不強;第3行APDrawingGAN生成結果的平均繪制時間為202 s,大片的黑色塊拖慢了它的繪制時間;第4行AISketcher生成結果的平均繪制時間為182 s,大量的稀疏線條也使得繪畫時間較長;第5行UPDG生成結果平均繪制時間為246 s,與APDrawingGAN的結果有著相同的問題;而第6行本文蒸餾模型U2-NetS的生成結果平均繪制時間為130 s,沒有大量的黑色塊與稀疏線條的影響,U2-NetS的繪制時間是最短的。綜合表1的客觀評價指標,U2-NetS相較于其他4種模型,可以取得更好的客觀性能。
將蒸餾后得到的本文學生模型U2-NetS部署在繪畫機器人上,輸入圖片通過繪畫機器人繪制于紙上。如圖5為繪畫機器人繪制的簡約線條畫效果。

圖 5 繪畫機器人繪制結果
從圖5中看到,繪畫機器人能將本文教師網絡與學生網絡得到的線條畫人臉的整體結構與細節紋理都呈現在紙上。繪畫機器人將生成圖片轉換為可繪制筆畫的軌跡規劃算法時,為了縮短機器人的繪制時間,非常短和淺色的筆畫會被舍棄。教師網絡生成結果線條多,平均繪制時間需要12 min左右。學生網絡的五官生成效果毫不遜色于教師網絡,且筆畫數少,體現了簡約線條畫簡中求美的藝術特點,且繪制速度非常迅速,平均可以在2 min之內完成一幅線條畫的繪制,既保留了素描生成質量,又減少了機器人繪制的時間,并且由于學生網絡的計算復雜度和參數量都很小,所以非常方便部署在資源有限的終端設備上。
為了能更好地分析本文所提出的模塊對教師模型生成效果的影響,從模型的消融實驗結果來證明。在模型方面,將分別對比U2-Net、U2-NetT、U2-Netp、U2-NetS(本文方法),結果對比見圖6。

圖 6 消融實驗結果
消融實驗均在APDrawing數據集進行測試,從圖6可以觀察到,U2-Net模型得到的線條畫線條結構較亂,發尾部分生成較差,生成的藝術線條畫線條分叉不連貫。而在引入風格損失約束的U2-NetT模型,明顯改善了這個問題。因為風格損失約束使模型保留了線條畫風格,使線條畫的線條更加清晰柔順。目前U2-NetT的生成結果是高質量且清晰的,但線條較多,最終轉換為機器人可繪制的筆畫數較多,不方便機器人在短時間內繪制完成,且計算量和模型較大不易部署。而U2-Netp是本文學生模型U2-NetS的基準模型,生成的圖片背景有雜亂的線條,且頭發部分非常模糊,面部也有雜亂細條,人臉線條畫的主要特點是以簡為美、簡中求美,所以生成結果中有大量的模糊部分是不可行的。本文的U2-NetS模型是在U2-Netp的基礎上對U2-NetT模型進行知識蒸餾得到,生成結果線條更加柔順,且線條粗細均勻。線條數減少的情況下五官細節特征并未減少,更像簡約線條畫的風格。并且本文模型有著更輕量的計算量和參數量、推理速度更快、更適合部署繪畫機器人使用。
由于本文模型以真實人臉以及人臉半身照為訓練數據進行模型訓練,所以本節分別使用動漫人臉和動漫人物全身照進行生成線條畫并通過繪畫機器人進行繪制,以此來測試本文的U2-NetS模型泛化能力與魯棒性,效果如圖7所示。

圖 7 動漫人臉線條畫生成效果和繪制效果
圖7中,第1列和第4列為輸入圖像,第2列和第5列為本文模型生成效果,第3列和第6列是繪畫機器人繪制效果。從圖7可以看出,動漫人臉的頭發細節生成也非常好,線條柔順清晰,面部特征把握得很好,包括動漫人物眼睛的神韻也得到保留,對于身體的細節特征也能把握到位。證明了U2-NetS模型良好的泛化能力和魯棒性。
為解決肖像繪畫機器人普遍存在的畫像質量較低、繪畫藝術風格單一、繪制時間較長等問題,本文提出了一種基于知識蒸餾的簡約人臉線條畫生成算法,通過知識蒸餾利用教師網絡指導學生模型訓練,引入風格損失約束有效解決了線條雜亂的難點,生成高質量線條畫,可以降低計算復雜度,并減少生成線條的數量,生成簡潔、美觀的人臉線條畫,提升繪畫機器人繪制速度,使之能夠在2 min內繪制完成。本算法相比于教師模型減少了約65.3%計算量和約97.1%的參數量,并且在性能指標上優于原始的輕量型網絡。
本文實現了簡約人臉線條畫的生成,但是該模型仍然停留在單風格單模型的生成上,當生成不同風格的人臉肖像畫時,則需要重新訓練一個新的模型。因此多風格的藝術人臉肖像畫生成是后續需要展開深入研究的方向,使繪畫機器人能夠實現多風格的藝術肖像畫生成。