李文靜
(四川大學計算機學院,成都610065)
計算機圖形學廣泛應用在計算機視覺、電子游戲、虛擬現實等領域,通過繪制系統,可構建出滿足各領域需求的畫面。而隨著這些領域的發展,對繪制系統的輸出分辨率、刷新頻率以及繪制結果的真實感提出了更高的要求。由于單機繪制系統的計算能力無法滿足以上要求,并行繪制系統隨之被提出。并行繪制系統主要通過將繪制任務分配給多個處理器同時繪制的方法,來提升繪制系統的效率,以使系統實時地產生高分辨率,高刷新頻率及高真實感的畫面。
并行繪制系統中,負載平衡是實現實時并行的關鍵,其目的是將繪制任務盡量均勻的分配給各個繪制節點,使各繪制節點的繪制時間大致相同,從而縮短各繪制節點相互等待的時間,提升一幀圖像的整體繪制效率。為了實現多個繪制節點的負載平衡,本文提出一種基于學習的并行繪制系統,主要思想是將繪制任務基于屏幕進行劃分,并結合機器學習模型來進行每個子屏幕的負載預測,以此為基礎找到一種令各子屏負載平衡的劃分方式。通常來說,繪制算法提取的特征具有高維、維度間存在相關性的特點,并且系統對尋找負載平衡的劃分方式這一過程有較高的效率要求。針對以上問題,本文選擇具有天然并行性和能適應高維稀疏數據預測的隨機森林(RF)模型[1]作為該系統中的機器學習模型。隨機森林的預測準確度決定了并行繪制中的負載平衡程度,預測越準確,子屏之間的負載越平衡。而經驗證明,機器學習中的訓練集是影響機器學習模型好壞的主要因素[2]。因此,為得到一個好的訓練集,通常基于已有的數據集,進行數據集增強。
數據集增強[3]是一種改善有監督學習模型的方法,它通過特定的變換來擴展訓練集,從而使訓練集變得更加完備。對于每一個新領域的數據集需求,已有的數據增強工具都需要經過非常仔細地設計、實現和測試才能獲得變換集(即通過工具新合成的數據集)。針對本文并行繪制系統,本文提出了基于繪制算法特征的重采樣策略,在初始采樣的粗糙訓練集的基礎上,結合每個已有采樣點的重要程度,生成新的采樣點,加入到粗糙訓練集里,以此得到更加完備的訓練集。
在機器學習領域,一個好的訓練集體現在與真實測試數據的匹配程度、完整性、無重復性、準確性和及時性等方面[4-5]。在本文的應用場景中,由于繪制系統本身的復雜性,負載函數將是一個高維函數,而訓練集的大小和特征維度呈正相關。由此在數據采集階段帶來的一個重要問題就是,如何采集到有代表性的數據,使得可以將訓練集的規模控制在一定的范圍,而盡可能提高訓練所得到的機器學習模型的性能。
由于本文的并行繪制系統應用于具有交互行為的游戲過程中,一個高質量的訓練集應該需要捕捉到這種交互模式,確保與用戶真實漫游得到的數據同分布。因此,本文采取一種模擬用戶漫游習慣的方式來采集粗糙訓練集,雖然這樣的粗糙訓練集能保證與測試集的視點信息分布一致,但其他繪制算法的分布是隨機分布,而事實上,這些維度的特征對負載的影響程度可能并不比視點信息小。因此,如何采集到在各個維度的特征都具有代表性的數據,加入到訓練集中使其更加完備成為本文研究的一個問題。針對以上問題,本文提出一個重采樣方案,基于現有的粗糙訓練集,以負載為依據來采集更具代表性的數據,加入到訓練集中,以得到更加完備的訓練集。
粗糙訓練集采取了一種基于用戶漫游習慣的方式采集得到,因此,為了保證漫游習慣的分布,本文基于已有的粗糙訓練集進行重采樣。重采樣的步驟是先確定重采樣數據的特征,再根據特征得到負載,將兩者結合成完整數據加入到訓練集中。而其中,重采樣數據的特征取決于該特征維度與負載之間的分布函數,但由于本文每個維度對負載的影響程度不一致,且每個維度之間具有相關性,會同時對負載產生影響,因此,無法將每一維視作獨立的分布進行采樣。基于以上分析,該問題轉化為一個基于高維空間采樣的問題,由蒙特卡洛重要性采樣[6]的思想得知,某一區域的采樣數目與負載變化呈正相關關系,負載變化越大的地方,采樣點數目越多。而高維空間與負載的變化關系的擬合是一大難題,因此,本文將一個大的高維空間分割為小的“鄰域”空間,針對每一個鄰域空間,用負載的方差反映此空間的變化程度;然后,根據映射函數得到該空間需要采樣的數目;再按照數目隨機投射采樣點,得到多個新的特征序列;最后根據這些特征序列進行繪制,得到響應負載(繪制時間),然后構成數據加入到粗糙訓練集中。
基于粗糙訓練集,重采樣過程主要包括特征的生成與負載的獲取兩個過程,具體流程如下:
(1)讀取粗糙訓練集DO中未被訪問過的數據點,尋找其鄰域范圍內的數據點;
(2)根據找到的這些數據點,計算出方差v 并將v帶入映射公式(1)得到需要采樣的數目n。
(3)依據數目在該鄰域范圍內進行隨機采樣,得到特征序列集合{X1,X2,…,Xn} ,其中,Xi=( x1,x2,…,xm),xi為第i 維特征,m 為特征維度;
(4)將特征序列逆轉到并行繪制系統中的原始序列,傳給系統進行繪制,得到對應的負載{Y1,Y2,…,Yn};
(5)將特征序列和負載組合成數據集合{S1,S2,…,Sn} ,加入到重采樣訓練集DIs中。
(6)檢測粗糙訓練集DO中的點是否被全部訪問,若是,則將DO和Dis合成為一個大的訓練集D;否則,返回步驟(1)。

在本文的算法流程中,關鍵在于以下兩點:①如何確定點的鄰域;②得到新的特征序列后,如何逆轉成繪制系統可用的原始序列。
由本文算法思想可知,“鄰域”即為每個點周圍的空間。對于量綱一致的維度來說,可以利用歐氏距離來確定鄰域[7],但是對于本文的應用場景,幾乎每一維特征的量綱都不一致。因此,本文提出了利用相對AABB 的方法確定鄰域,相對AABB 的大小由每一維空間的范圍和比例參數σ 決定。首先,將所有數據的每個維度的范圍保存下來得到{R1,R2,…,Rm},利用σ確定相對AABB;然后針對數據點,基于相對AABB 能得到一個空間范圍,即為該數據點的鄰域。
特征序列轉原始序列,依賴于特征序列和原始序列的格式,而其中,特征序列的格式與實驗場景的算法相關。本文采用了光源鏈表(Light Linked List,LLL)算法,順序獨立透明(Order Independent Transparency,OIT)算法和屏幕空間環境光遮蔽(Screen Space Ambient Occlusion,SSAO)算法,基于這些圖形繪制算法,本文用于學習的特征如表1 所示;而表2 展示本文繪制系統中原始序列的組成形式。

表1 特征序列的構成

表2 原始序列的構成
通過兩個形式的對應關系,特征序列轉化為原始序列主要包括下面幾個步驟:首先,將7 維的相機信息轉換為9 維,由于相機坐標不變,主要是將球坐標系中的look at 和up 向量轉換為世界坐標系中的look at 和up 向量。由于相機up 向量一直向上,因此Up=(0,1,0);look at 向量的轉換公式如(2),其中(α,β)表示球坐標系下的look at 向量,Eye 表攝像機所在位置,At 表示得到的look at 向量;然后,將光源信息由7維的分層個數轉化為100 個光源的坐標,例如,對于距離范圍為[Li,Li+1]的分層,其中一個光源的逆轉化公式如(3)所示,其中,Δx,Δy表示經過光源中心點得到的平面的長,寬的一半(橫切視錐體并且與近平面平行),Dirx和Diry分別表示視點坐標系的x 軸和y 軸方向;另外,由于場景中的透明物體是靜態的,因此可以直接獲取到而不必通過特征來進行逆轉化。通過上面的步驟,即可得到對應的原始序列。

PC 配置:Intel Core i3-4160 3.60GHz CPU,16G 內存,NVIDIA GeForce RTX 2060 顯卡
場景配置:100 個動態光源,兩個固定的透明物體
實驗數據:基于用戶漫游習慣采集38105 條數據作為原始粗糙訓練集,3801 條作為測試集,另外,額外采取了61359 作為候選訓練集。
本文研究的目的在于得到更好的訓練集,從而提升隨機森林的預測準確率。因此,本實驗通過對比兩種訓練集訓練出的RF 的準確度,來驗證本文數據集增強算法的有效性。RF 準確度可以用均方誤差(MSE)[8]和決定系數(R2_Score)[9]進行評估。MSE 反映真實值和預測值的差異程度,其值越小,預測準確率越高;而R2_Score 反映回歸模型的擬合程度,其值越大,擬合程度越高,預測準確率就越高。表3 為該實驗對比結果。

表3 基于原始采樣與重要性采樣訓練集的RF 性能對比
由以上結果看出,對于原始粗糙訓練集來說,額外進行原始采樣和重要性采樣構成的訓練集都對RF 的性能帶來一定的提升,但是,對比兩種額外采樣方式,用重要性采樣方式形成的訓練集比原始采樣方法構成的訓練集更好。比如,用重要性采樣的方式添加了52179 條數據到粗糙訓練集后,MSE 為5.2706,R2_Score 為0.7688;而用原始采樣方式添加了52244條數據到粗糙訓練集后,MSE 為5.4602,R2_Score 為0.7605。前者比后者MSE 降低了0.1896,R2_Score 上升了0.0083。因此,可以得出,本文提出的重要性采樣方式可以提升訓練集,從而構建出更好的隨機森林模型。
本文提出了基于粗糙采樣集進行重要性采樣的數據集增強算法,意在得到更為完備的數據集,從而構建出更好的學習模型,以使基于學習的并行繪制系統表現出更好的性能。該算法在保證了采樣的數據符合漫游習慣的同時,也能根據方差來采集到粗糙采樣集缺失空間的數據,以獲得更完備的數據集。最后,用實驗證明了該算法的有效性。