王天彤,朱 毅,喬卓曉
(大連外國語大學(xué) 軟件學(xué)院,遼寧 大連 116000)
體素網(wǎng)格(Voxel)就是用規(guī)則的有體積的小網(wǎng)格去表達(dá)3D模型,這種方式會(huì)損失一些細(xì)節(jié),并且分辨率越高,小網(wǎng)格也就越多,而體素就是固定分辨率的三維柵格地圖,體素網(wǎng)格是固定分辨率的,與之對(duì)應(yīng)可變分辨率的網(wǎng)格叫八叉樹地圖(Octomap)。但相對(duì)的計(jì)算量較大,通過衡量分辨率和計(jì)算量,發(fā)現(xiàn)最優(yōu)方式是選擇固定分辨率的體素網(wǎng)格。體素網(wǎng)格的表達(dá)方式比較容易輸入到卷積神經(jīng)網(wǎng)絡(luò)(CNN)中,也被稱為粗略版點(diǎn)云。
多邊形網(wǎng)格(Polygonal Mesh)是構(gòu)成3D對(duì)象的頂點(diǎn),邊緣和面的集合。多邊形網(wǎng)格能夠清晰的將3D對(duì)象的形狀和外部細(xì)節(jié)展示出來,因此,用其技術(shù)構(gòu)造的模型被廣泛用于動(dòng)畫電影、廣告和視頻游戲中。大型表單是由小體積且互相關(guān)聯(lián)的平面(通常是三角形或矩形)所構(gòu)建的,如同拼圖一樣相互拼湊結(jié)合在一起。多邊形網(wǎng)格中的每個(gè)頂點(diǎn)都存儲(chǔ)x,y和z坐標(biāo)信息,同時(shí),多邊形的每個(gè)面也儲(chǔ)存這表面信息,渲染引擎提取這些信息后將其用于計(jì)算閃電和陰影(以及其他信息)。由于多邊形網(wǎng)格的建模自由度大,因此,幾乎所有對(duì)象的模型都可使用多邊形網(wǎng)格構(gòu)建,多邊形網(wǎng)格進(jìn)行建模的基本構(gòu)想是運(yùn)用線和多邊形等簡(jiǎn)易平面對(duì)復(fù)雜物體的3D表面進(jìn)行近似構(gòu)建,從而做到還原物體原本外表。但多邊形網(wǎng)格因其使用方法也有其局限性,例如用曲面難以用直線做到極其相似,有些有機(jī)形狀需要大量的頂點(diǎn)和線段構(gòu)建而變得復(fù)雜,諸如頭發(fā)和液體之類的能復(fù)雜形變的物體也很難通過多邊形網(wǎng)絡(luò)建模。
點(diǎn)云(Point Cloud)是某個(gè)坐標(biāo)系下的點(diǎn)的數(shù)據(jù)集。點(diǎn)可以存儲(chǔ)豐富的信息,例如點(diǎn)的三維坐標(biāo)、點(diǎn)的顏色、點(diǎn)的分類值、強(qiáng)度值、甚至?xí)r間等等。點(diǎn)云可以通過其豐富的內(nèi)容和自由的形式現(xiàn)實(shí)原子化,也就是通過高精度的點(diǎn)云數(shù)據(jù)將現(xiàn)實(shí)世界進(jìn)行還原構(gòu)建。點(diǎn)云分為稀疏點(diǎn)云和密集點(diǎn)云,使用三維坐標(biāo)測(cè)量機(jī)所得到的點(diǎn)因?yàn)槠鋽?shù)量少,點(diǎn)間距較大的特點(diǎn),被稱為稀疏點(diǎn)云;而使用三維激光掃描儀或照相式掃描儀得到的點(diǎn)云,點(diǎn)數(shù)量較大并且較密集,所以稱之為密集點(diǎn)云。
點(diǎn)云相較于多邊形網(wǎng)格和體素網(wǎng)格具有精度上的優(yōu)越性,所以在實(shí)際項(xiàng)目中,我們采用三維激光掃描與基于深度學(xué)習(xí)的二維影像三維重建方法獲取精度較高的三維模型點(diǎn)云數(shù)據(jù),再將其處理為多邊形網(wǎng)格模式以降低資源消耗。
三維激光掃描的原理是,通過數(shù)道激光照射到物體表面,之后物體所反射回來的激光則會(huì)攜帶位置、距離等可以用于構(gòu)建模型的信息。若將激光束按照特定軌跡進(jìn)行掃描,則能夠做到同時(shí)進(jìn)行掃描和記錄激光所返回的信息,在極為精細(xì)的掃描后,即可得到大量的激光點(diǎn),從而形成激光點(diǎn)云。采集后的三維激光點(diǎn)云的原始數(shù)據(jù),可以利用專業(yè)軟件對(duì)其分析整理。例如采用Trimble Real-Works三維點(diǎn)云數(shù)據(jù)進(jìn)行自動(dòng)化處理,主體流程包括各測(cè)站點(diǎn)云數(shù)據(jù)拼接配準(zhǔn),數(shù)據(jù)去噪,坐標(biāo)轉(zhuǎn)換等一系列操作。數(shù)據(jù)拼接通常有多種方法,無目標(biāo)拼接,有目標(biāo)拼接以及采集過程實(shí)時(shí)自動(dòng)處理拼接。使用RECAP軟件將去噪后的E57點(diǎn)云格式轉(zhuǎn)換為CAD可讀取的RCS/RCP格式。在CAD讀取之后,設(shè)定坐標(biāo)軸向,以滿足繪制需求。
此方法使用的前提是,使用點(diǎn)云緊實(shí)的表達(dá)和傳統(tǒng)的2D卷積,學(xué)習(xí)先驗(yàn)的形狀信息,此方法主要分為3個(gè)模塊。
1.3.1 3D結(jié)構(gòu)生成器
如圖1所示,該模塊根據(jù)2D的RGB圖和物體對(duì)應(yīng)的二元掩模(binary mask)預(yù)測(cè)像素點(diǎn)的三維坐標(biāo)(x,y,z)。
圖1 通過2D圖片預(yù)測(cè)三維點(diǎn)坐標(biāo)
該步驟的輸入輸出為:
輸入:Single RGB image
輸出:2D projections at predetermined viewpoints
其中:2D projection==3D coordinates(x,y,z)+binary mask(m)
1.3.2 點(diǎn)云融合
融合點(diǎn)云成3D模型,如圖2所示,這是可行的(因?yàn)槊糠鶊D像對(duì)應(yīng)的3D外形都是固定的且之前已經(jīng)知道的)。
圖2 點(diǎn)云融合為3D模型
其輸入輸出如下:
輸入:2D projections at predetermined viewpoints
輸出:Point cloud
1.3.3 根據(jù)3D模型生成新的2D投影,與Ground Truth比對(duì)計(jì)算代價(jià)函數(shù)(loss)
其輸入輸出如下:
輸入:Point cloud
輸出:Depth images at novel viewpoints
如圖3所示,如果生成的3D模型是接近真實(shí)數(shù)據(jù)的,那么新視角的投影應(yīng)該也是接近真實(shí)的Ground Truth,然后根據(jù)代價(jià)函數(shù)重復(fù)上述步驟修正數(shù)據(jù)直到其不再收斂,此時(shí)我們就得到了幾乎與實(shí)物完全相同的三維模型。
圖3 計(jì)算代價(jià)函數(shù)
用戶輪廓(User Profile)主要是用戶(注冊(cè))信息,以及通過對(duì)用戶的各種反饋信息處理整合。更好地描述并完善用戶特征,是后續(xù)推薦和排序的基石。一般情況下會(huì)包含以下具體內(nèi)容。
(1)用戶興趣數(shù)據(jù)。
(2)用戶的基礎(chǔ)注冊(cè)信息、背景信息:例如用戶出生地、年齡、性別、興趣和職業(yè)等。這些信息一般從用戶注冊(cè)信息中提取,例如各種APP的注冊(cè)用戶,網(wǎng)站的注冊(cè)用戶等。
(3)用戶行為反饋:包括顯示(explicit)的反饋和隱藏(implicit)的反饋。顯示的反饋包括用戶的評(píng)價(jià),態(tài)度等,例如微博上針對(duì)內(nèi)容的點(diǎn)贊行為(正向顯示反饋)和屏蔽,拉黑行為(負(fù)向顯示反饋),淘寶上的評(píng)分;隱式反饋包括用戶的瀏覽行為,例如在百度搜索搜過哪些詞,淘寶上點(diǎn)擊了那些商品頁面,在微博上參與了哪些話題的討論等。
(4)用戶交互偏好:例如用戶喜歡使用哪些快捷功能,常用哪些功能,以及從這些操作中分析出來的偏好,比如在淘寶上搜索那些商品反饋出用戶的商品喜好從而精準(zhǔn)推送。
(5)用戶上下文信息:通過用戶的各種數(shù)據(jù)綜合分析,做到更好的為用戶畫像,例如通過GPS和行程信息判斷其職業(yè),通過支付寶等交易信息判斷其收入水平。
在本系統(tǒng)中,根據(jù)商品模式和調(diào)研分析主要采取以下標(biāo)簽劃分。
年齡段:主要分為兒童、青少年、中年、老年。研究顯示,不同年齡段對(duì)家居風(fēng)格的偏好以及消費(fèi)水平差異較大。
其中兒童偏好色彩豐富,造型風(fēng)格特別,且有交互功能的物件。但面向兒童的商品的安全性是最需謹(jǐn)慎的,必須考慮到材料的安全性,例如堅(jiān)固性,形狀是否有尖銳部分,是否含有對(duì)身體有害的物質(zhì)、氣味等。同時(shí)兒童的消費(fèi)水平相對(duì)較高,對(duì)質(zhì)量更加注重。
青少年偏好流行文化的物件,例如科技、體育、影視、明星、動(dòng)漫等。注重物件的交互性,可玩性,但并不注重實(shí)用性,他們更愿意為華而不實(shí)的東西消費(fèi)。對(duì)質(zhì)量,安全性的需求較差,但青少年大多自費(fèi),消費(fèi)水平極其有限。
中年人更偏重于品質(zhì)與奢侈性,選擇風(fēng)格多為古典、奢華、現(xiàn)代等。他們會(huì)嚴(yán)謹(jǐn)?shù)貐⒖加昧鲜欠窀呒?jí),做工是否精致,品牌是否高端,以及實(shí)用性。中年人的消費(fèi)水平最高,需要最細(xì)致的分類。
老年人偏好色彩單調(diào),造型風(fēng)格傳統(tǒng)的家居風(fēng)格。他們更加注重實(shí)用性、安全性,但不愿在此做過多的消費(fèi)。老年人具備最高的消費(fèi)水平,他們?cè)敢庠谂c養(yǎng)生保健有關(guān)的物品上消費(fèi),可以考慮更多地推薦安眠枕、養(yǎng)生床及人體工學(xué)椅等物件。
性別:根據(jù)調(diào)查報(bào)告顯示,性別也是用戶挑選家具用品的重要參考因素。男性較女性更不在意品牌而是實(shí)用性,消費(fèi)水平較女性更低,男性更偏好電子科技類產(chǎn)品,而女性購買無實(shí)用性裝飾品較多。
除此之外,用戶的瀏覽歷史、職業(yè)、地區(qū)等也是比較有意義的因素,需要根據(jù)具體情況進(jìn)行更細(xì)的劃分與聯(lián)合。
推薦對(duì)象建模模塊是根據(jù)對(duì)象與用戶的交互數(shù)據(jù)與對(duì)象的屬性數(shù)據(jù)建立的物品特征,即商品的特征。一般可以對(duì)其進(jìn)行以下的分類。
類型:指家居商品的一般類型、桌子、椅子、柜子等。
價(jià)格:根據(jù)商品類型的均價(jià)將其劃分為低廉、平均、奢侈類商品。
風(fēng)格:根據(jù)商品的顏色、外形等,將其以藝術(shù)風(fēng)格劃分,例如古典、科幻、童話等。
除此之外,商品的材質(zhì)、品牌、實(shí)用性等也是有參考意義的因素,需要根據(jù)具體情況進(jìn)行更細(xì)的劃分與聯(lián)合。
在獲取用戶輪廓(模型)與商品模型之后,我們需要在二者的屬性之間建立映射關(guān)系,即某種用戶模型對(duì)應(yīng)哪些商品以及某種商品對(duì)應(yīng)哪些用戶模型。
協(xié)同過濾(Collaborative Filtering)作為推薦算法中最經(jīng)典的類型,將是本系統(tǒng)中主要采用的過濾方式,包括在線的協(xié)同和離線的過濾兩部分。通過在線過濾將用戶的喜好內(nèi)容快速精準(zhǔn)推送給用戶,通過離線過濾,將不值得推薦內(nèi)容濾掉,大幅提升效率,比如推薦后卻評(píng)分低的數(shù)據(jù),或者雖然推薦值高但是用戶因各種原因不再需要的數(shù)據(jù)。我們?cè)讷@取的用戶模型與商品模型以及它們的映射關(guān)系的基礎(chǔ)上,采用基于模型(model based)的協(xié)同過濾,也是目前最主流的協(xié)同過濾類型。
協(xié)同過濾有很多種方式,用神經(jīng)網(wǎng)絡(luò)乃至深度學(xué)習(xí)做協(xié)同過濾將是一個(gè)大趨勢(shì)。目前比較主流的是限制玻爾茲曼機(jī)(RBM)其用兩層神經(jīng)網(wǎng)絡(luò)來做推薦算法。在目前的Netflix算法比賽中,RBM算法有著很不錯(cuò)的表現(xiàn)。用深層的神經(jīng)網(wǎng)絡(luò)來做協(xié)同過濾會(huì)更好,即目前火爆的基于卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)的方法。
卷積神經(jīng)網(wǎng)絡(luò)的前部分就是由若干個(gè)卷積運(yùn)算和采樣操作組合而成,最后一層的尾部則是全連接的分類器,從圖4中可以看出,可以采取邏輯回歸、softmax回歸或者是支持向量機(jī),可以是包含隱含層的多層感知器也可以是簡(jiǎn)單的單層感知器,本文中采用的是單層感知器。在初始化尾部的單層感知機(jī)的時(shí)候,我們?cè)谶@里將它看做是一種分類,每一類歸結(jié)為一個(gè)商品屬性,這里采用的都是同一種策略。從圖4中可以看出,對(duì)于每一個(gè)輸出節(jié)點(diǎn),如果商品具有該屬性,那么該節(jié)點(diǎn)的值便為1,否則為0。
圖4 全連接層
前向傳播訓(xùn)練過程如圖5所示。
圖5 前向訓(xùn)練流程
卷積層:使用權(quán)重矩陣W并做加權(quán)求和,此處的權(quán)重二維矩陣就是卷積核,卷積操作后再加上偏置并輸入到激活函數(shù)sigmoid中。
池化層:本文所采用的是平均池化的計(jì)算方法,因此此處的池化可以看做是一種特殊的卷積操作,池化操作不需要偏置,經(jīng)過池化后得到了下一層的輸入特征。
尾部感知機(jī):最后一層將一個(gè)訓(xùn)練塊中的某個(gè)訓(xùn)練樣本的所有輸出連接起來,得到的輸出向量乘上單層感知機(jī)的權(quán)重矩陣,并加上尾部感知機(jī)的偏置后做卷積操作,得到最終的輸出結(jié)果。
先進(jìn)行前向訓(xùn)練,再反向傳播調(diào)整誤差,如圖6所示??梢詫?duì)用戶進(jìn)行聚類,相似用戶在訓(xùn)練和推薦階段使用同一組訓(xùn)練模型參數(shù)。
圖6 訓(xùn)練并調(diào)整誤差圖
其中用戶信息和商品信息都可以提前獲取后數(shù)字化。在離線訓(xùn)練模型階段,可以利用數(shù)字化后的用戶信息、商品信息和行為信息,對(duì)事先判定為同種的用戶使用同一種模型對(duì)其進(jìn)行訓(xùn)練,并保持對(duì)模型參數(shù)的定期更新;在實(shí)時(shí)推薦階段,只需要將之前的數(shù)據(jù)與新采集到的行為數(shù)據(jù)進(jìn)行融合,輸入到模型之中,就可以實(shí)現(xiàn)實(shí)時(shí)推薦,算法的離線訓(xùn)練流程如圖7所示。
圖7 離線訓(xùn)練流程
根據(jù)系統(tǒng)需求,劃分的系統(tǒng)結(jié)構(gòu)主要包括點(diǎn)云獲取模塊,推薦系統(tǒng)模塊,用戶交互模塊。
(1)點(diǎn)云獲取模塊是指通過實(shí)物與互聯(lián)網(wǎng)上的物品預(yù)覽圖大數(shù)據(jù)獲取用以構(gòu)建三維模型點(diǎn)云數(shù)據(jù)的模塊,其下包含3個(gè)子模塊:一是實(shí)物掃描模塊,主要用于難以通過CNN二維轉(zhuǎn)三維方式構(gòu)建的實(shí)物商品的數(shù)據(jù)錄入;二是卷積繪制模塊,將互聯(lián)網(wǎng)上大量的電商產(chǎn)品的預(yù)覽圖通過帶入2D卷積生成點(diǎn)云數(shù)據(jù),通過先決經(jīng)驗(yàn)的方式以合理的尺寸形狀重構(gòu)成三維模型;三是點(diǎn)云數(shù)據(jù)處理模塊,點(diǎn)云相較于多邊形網(wǎng)格和體素網(wǎng)格具有精度上的優(yōu)越性,但在實(shí)際項(xiàng)目中,我們使用實(shí)物掃描模塊與卷積繪制模塊獲取精度較高的三維模型點(diǎn)云數(shù)據(jù)消耗資源較大,而直接推薦給用戶的也應(yīng)該是資源更小的形式,所以需要再將其處理為多邊形網(wǎng)格模式以降低資源消耗。
(2)推薦系統(tǒng)模塊是指將用戶與商品按一定標(biāo)準(zhǔn)劃分,建立映射關(guān)系,產(chǎn)生推薦方案的模塊。其包括兩個(gè)子模塊:一是用戶與商品建模模塊,主要是根據(jù)用戶與商品的交互信息以及用戶和商品的屬性生成的用戶模型與商品模型,用以進(jìn)行基于模型的協(xié)同過濾;二是推薦方案產(chǎn)生模塊,此模塊下建立用戶模型特征與商品模型特征的映射關(guān)系,并根據(jù)此映射關(guān)系,采用基于模型的協(xié)同過濾算法產(chǎn)生推薦方案,將推薦法案發(fā)送至用戶交互模塊。
(3)用戶交互模塊是用戶使用的應(yīng)用程序,應(yīng)用程序采用3D引擎模擬仿真第一與第三人稱室內(nèi)環(huán)境,允許用戶在虛擬空間中自定義家居用品與布局。在PC端可采用鼠標(biāo)控制視角,鍵盤控制位置的方式,在移動(dòng)端可采用虛擬搖桿的方式。交互界面如圖8所示。
圖8 交互界面示例
面前的房間就是用戶進(jìn)行自定義布局的3D虛擬空間,右側(cè)UI上層是商品的類別,點(diǎn)擊它們會(huì)進(jìn)入到各自類別的更細(xì)致的分類。上一頁與下一頁按鈕即實(shí)現(xiàn)在商品類別與具體商品翻頁的功能。隱藏/顯示按鈕是隱藏或顯示UI的按鈕,用于預(yù)覽整體布局效果,這個(gè)按鈕不會(huì)被隱藏。左側(cè)UI最上層是一個(gè)文字列表,這里會(huì)顯示當(dāng)前布局中用戶所有選中使用的商品。鎖定/接觸按鈕,當(dāng)用戶通過點(diǎn)擊選中一個(gè)物品,點(diǎn)擊此按鈕會(huì)將該物品鎖定或解鎖,鎖定狀態(tài)下此物品不參與到射線碰撞檢驗(yàn)中,該物品無法再被移動(dòng)或刪除。當(dāng)用戶提交方案時(shí),會(huì)將左側(cè)列表中顯示的所有布局中采用的物件提交至推薦系統(tǒng),由推薦系統(tǒng)返回推薦方案。
整個(gè)系統(tǒng)由點(diǎn)云獲取模塊、推薦系統(tǒng)模塊、用戶交互模塊3大模塊與數(shù)據(jù)庫組成。
在系統(tǒng)運(yùn)作時(shí),點(diǎn)云獲取模塊最先運(yùn)作,它搜集大量商品的點(diǎn)云數(shù)據(jù),并將數(shù)據(jù)傳入推薦系統(tǒng)模塊。
推薦系統(tǒng)模塊會(huì)將由點(diǎn)云獲取模塊傳入的數(shù)據(jù)建立為商品模型,并將模型數(shù)據(jù)傳入至數(shù)據(jù)庫。
用戶交互模塊首先獲取用戶的信息,將信息傳入至推薦系統(tǒng)。
推薦系統(tǒng)將由用戶交互模塊傳入的用戶信息建立為用戶模型,將模型數(shù)據(jù)傳入至數(shù)據(jù)庫,并根據(jù)已獲得的用戶模型和商品模型建立映射關(guān)系。
用戶交互模塊獲取用戶的家居購置方案,將方案提交至推薦系統(tǒng)模塊。
推薦系統(tǒng)將由用戶交互模塊獲取的購置方案與映射關(guān)系綜合,形成推薦方案,將數(shù)據(jù)庫中符合推薦方案的商品返回給用戶。
至此系統(tǒng)運(yùn)行完畢。