本發(fā)明涉及深度學(xué)習(xí)圖像重建領(lǐng)域,尤其是涉及一種筆觸預(yù)測器訓(xùn)練方法及序列化筆觸神經(jīng)繪畫方法。
背景技術(shù):
1、基于筆觸的渲染(stroke-based?rendering,sbr)旨在通過預(yù)測一系列參數(shù)化筆觸來重建圖像,該筆觸的重建結(jié)果與輸入圖像盡可能相近,以模仿人類繪畫的順序過程。不同于變分自編碼器、生成對抗網(wǎng)絡(luò)、擴(kuò)散模型等生成式模型,基于筆觸的渲染聚焦于將圖像轉(zhuǎn)換為一系列的參數(shù)化筆觸,這些參數(shù)化筆觸能夠通過筆觸渲染器或神經(jīng)渲染器轉(zhuǎn)換為新的圖像。傳統(tǒng)的基于筆觸的渲染算法大多依賴于優(yōu)化算法、貪婪搜索算法以及試錯法。
2、在基于筆觸的渲染,筆觸渲染是其中重要的一環(huán)。傳統(tǒng)的筆觸渲染器通過對具有紋理的筆觸蒙版進(jìn)行幾何變換,通常也叫做紋理渲染器。然而紋理渲染器是不可微的,導(dǎo)致其在訓(xùn)練過程中無法計算梯度。為了解決這一問題,研究人員提出了更為通用的辦法,也就是訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)來模擬該渲染過程,通常稱為神經(jīng)渲染器。向神經(jīng)渲染器輸入筆觸參數(shù),可以輸出渲染后的筆觸圖像,在訓(xùn)練過程中需要使用一個固定的紋理渲染器來生成不同類型的筆觸作為真值。
3、隨著深度學(xué)習(xí)的發(fā)展,研究人員開發(fā)許多神經(jīng)繪畫方法,這些方法使用深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)方法來預(yù)測筆觸序列,并模仿人類的繪畫過程。有些方法提出結(jié)合對抗策略來讓智能體理解圖像的結(jié)構(gòu)并重建圖像。隨著循環(huán)神經(jīng)網(wǎng)絡(luò)的發(fā)展,一些方法在簡筆觸和肖像畫上取得不錯的效果。近來,有研究人員提出將圖像分為前景與背景來分別重建已提高重建質(zhì)量。由于筆觸參數(shù)是一個序列化向量,因此筆觸參數(shù)是transformer架構(gòu)理想的數(shù)據(jù)格式。此前也有基于transformer架構(gòu)的方法,但該方法是一個自回歸的模型,需要迭代式的預(yù)測來生成最終的筆觸序列。此外,隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,一些基于優(yōu)化和基于搜索的神經(jīng)繪畫方法也取得了不錯的進(jìn)展,然而這些方法通常受限于巨大的計算開銷,導(dǎo)致漫長的推理時間,限制了其應(yīng)用空間。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的是為了提供一種筆觸預(yù)測器訓(xùn)練方法及序列化筆觸神經(jīng)繪畫方法,訓(xùn)練得到的筆觸預(yù)測器能夠在單次前向傳播過程中預(yù)測大量筆觸參數(shù),得到高質(zhì)量的繪畫重建結(jié)果。
2、本發(fā)明的目的可以通過以下技術(shù)方案來實現(xiàn):
3、一種筆觸預(yù)測器訓(xùn)練方法,包括以下步驟:
4、將訓(xùn)練圖像輸入構(gòu)建的筆觸預(yù)測器,輸出筆觸參數(shù)序列;
5、將筆觸參數(shù)序列輸入神經(jīng)渲染器,輸出筆觸圖;
6、基于筆觸圖,利用快速筆觸堆疊算法選取部分筆觸圖并進(jìn)行堆疊,渲染得到重建訓(xùn)練圖像,其中,所述快速筆觸堆疊算法對筆觸圖基于透明度進(jìn)行二值化,得到二值筆觸圖,并基于二值筆觸圖和初始索引張量計算掩膜索引張量,對掩膜索引張量中的每一像素選取最大的預(yù)設(shè)個數(shù)的索引作為最大索引張量,基于最大索引張量選取需要進(jìn)行堆疊的筆觸圖并進(jìn)行堆疊;
7、基于重建訓(xùn)練圖像與輸入的訓(xùn)練圖像的范數(shù)損失和筆觸密度損失構(gòu)建損失函數(shù),對筆觸預(yù)測器進(jìn)行訓(xùn)練。
8、所述筆觸預(yù)測器包括依次連接的嵌入模塊、特征提取器和筆觸預(yù)測頭,其中,所述嵌入模塊對輸入的圖像進(jìn)行處理,輸出特征序列;所述特征提取器使用vit-small提取輸入圖像的區(qū)域特征;所述筆觸預(yù)測頭采用transformer框架,基于區(qū)域特征輸出筆觸參數(shù)序列。
9、所述嵌入模塊包括一個卷積層和一個歸一化層,其中,卷積層的輸入維度為3,即圖像的rgb三通道。
10、所述筆觸預(yù)測頭包括1個交叉注意力模塊和4個自注意力模塊,所述交叉注意力模塊計算區(qū)域特征和筆觸的相關(guān)性,所述自注意力模塊對交叉注意力模塊輸出的特征進(jìn)行處理以輸出筆觸參數(shù)序列。
11、所述交叉注意力模塊添加一個殘差通道和一個多層感知器mlp,對輸入特征執(zhí)行如下操作:
12、c′=mpl(ca(f,c)+c)+ca(f,c)+c,
13、其中c′代表交叉注意力模塊的輸出特征,f代表區(qū)域特征,c代表筆觸查詢向量;
14、
15、其中,lq,lk,lv是線性層,d是縮放特征的常數(shù)。
16、所述筆觸參數(shù)序列中的每一個筆觸參數(shù)包括形狀參數(shù)和顏色參數(shù)。
17、所述筆觸圖中包含筆觸顏色和筆觸透明度信息。
18、所述筆觸密度損失的計算方法如下:
19、基于預(yù)設(shè)的閾值將筆觸圖中的筆觸透明度二值化為0或1,獲得二值筆觸圖;
20、計算每個筆觸的面積并乘以相應(yīng)的二值筆觸圖得到筆觸面積圖;
21、基于快速筆觸堆疊算法選取預(yù)設(shè)個數(shù)的筆觸面積圖;
22、使用筆觸堆疊操作對選取的筆觸面積圖進(jìn)行計算,得到筆觸密度圖;
23、利用sobel算子和平均池化算法提取輸入的訓(xùn)練圖像中的密度信息,得到信息密度圖;
24、將信息密度圖乘以筆觸密度圖并計算平均值得到筆觸密度損失。
25、所述快速筆觸堆疊算法包括以下步驟:
26、初始化初始索引張量,其中,第i通道的張量值為i;
27、基于預(yù)設(shè)的閾值將筆觸圖中的筆觸透明度二值化為0或1,獲得二值筆觸圖;
28、將二值筆觸圖與索引張量做點乘得到掩膜索引張量;
29、對掩膜索引張量中每一像素選取最大的k個索引作為最k大索引張量;
30、從初始的筆觸顏色和筆觸透明度張量中按照最k大索引張量選取其中每個像素中相應(yīng)的k個筆觸顏色和透明度值;
31、使用筆觸堆疊操作對k個筆觸顏色和透明度值計算筆觸堆疊結(jié)果,得到重建結(jié)果。
32、一種序列化筆觸神經(jīng)繪畫方法,包括以下步驟:
33、將輸入圖像輸入訓(xùn)練完成的筆觸預(yù)測器,輸出預(yù)測筆觸參數(shù)序列,所述筆觸預(yù)測器采用如上述所述的方法進(jìn)行訓(xùn)練;
34、將預(yù)測筆觸參數(shù)序列輸入神經(jīng)渲染器或紋理渲染器,輸出預(yù)測筆觸圖;
35、基于預(yù)測筆觸圖,利用快速筆觸堆疊算法選取部分預(yù)測筆觸圖并進(jìn)行堆疊,渲染得到重建圖像。
36、與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果:
37、1)重建效果的優(yōu)勢
38、本發(fā)明的方法能夠很好的提取圖片的特征信息,并將其轉(zhuǎn)為具有實際意義的筆觸參數(shù)序列,這些參數(shù)通過筆觸渲染器能夠輸出高質(zhì)量的重建繪畫。在可視化重建比較中,本發(fā)明得到的重建繪畫與原始圖像更加相近,同時相較于現(xiàn)有方法具有更加豐富的細(xì)節(jié)信息。
39、2)快速筆觸堆疊算法的優(yōu)勢
40、由于傳統(tǒng)筆觸堆疊算法需要對所有的筆觸進(jìn)行堆疊操作,因此當(dāng)筆觸數(shù)量較大時,傳統(tǒng)筆觸堆疊算法需要較多時間來堆疊所有筆觸,導(dǎo)致不可避免的時間開銷。然而實際上,前面的許多筆觸對最終的重建結(jié)果的影響較小,因此本發(fā)明對每個像素只選取了最上方的k個筆觸顏色和透明度,在最后的渲染中只需要堆疊k個筆觸顏色和透明度,大大減少了渲染時間。
41、3)筆觸密度損失的優(yōu)勢
42、為了獲得更加豐富的細(xì)節(jié),本發(fā)明設(shè)計了結(jié)合筆觸面積的筆觸密度損失。該損失促使模型在圖像信息密度較大的地方使用較小的筆觸,在圖像信息密度較小的地方使用較大的筆觸,幫助模型聚焦于更加細(xì)節(jié)的信息。