本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別涉及一種圖像中物體姿態(tài)的確定方法、客戶端及服務(wù)器。
背景技術(shù):
隨著計算機(jī)圖形技術(shù)的飛速發(fā)展,增強(qiáng)現(xiàn)實技術(shù)將計算機(jī)產(chǎn)生的圖形、文字等虛擬信息有機(jī)的融合到使用者所看到的真實場景中,對人的視覺系統(tǒng)進(jìn)行景象的增強(qiáng)或擴(kuò)張。實現(xiàn)增強(qiáng)現(xiàn)實技術(shù)的基礎(chǔ)是能夠獲取真實場景的觀測角度。例如,當(dāng)通過攝像機(jī)獲取真實場景的圖像時,需要通過二維觀測圖像估計出三維物體的姿態(tài)。
現(xiàn)有技術(shù)中,常用的方法是對人工設(shè)計的特征進(jìn)行檢測,然后在不同的圖像之間進(jìn)行比較。但是,這類方法需要準(zhǔn)確的尺度選擇、旋轉(zhuǎn)糾正、密度歸一化等附加步驟,計算復(fù)雜度很高,耗時較長。當(dāng)將增強(qiáng)現(xiàn)實技術(shù)應(yīng)用于移動設(shè)備或者可穿戴設(shè)備上時,由于此類設(shè)備資源受限、具備有限的信息輸入和計算能力,上述方法將不再適用。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了一種圖像中物體姿態(tài)的確定方法、客戶端及服務(wù)器,能夠提升圖像處理的時間效率,消耗較少的內(nèi)存資源,提高終端的資源利用率。
具體地,本發(fā)明實施例的技術(shù)方案是這樣實現(xiàn)的:
本發(fā)明提供了一種圖像中物體姿態(tài)的確定方法,包括:
從服務(wù)器獲取針對目標(biāo)物體的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù);
獲取所述目標(biāo)物體的實時圖像,從所述實時圖像中識別出至少一個第一圖像塊;
針對每個第一圖像塊,根據(jù)所述訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,
根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定所述目標(biāo)物體的姿態(tài),根據(jù)所述姿態(tài)在所述實時圖像中增加虛擬內(nèi)容。
本發(fā)明還提供了一種圖像中物體姿態(tài)的確定方法,包括:
獲取針對目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像;
將所述標(biāo)準(zhǔn)圖像和所述多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù);
將所述訓(xùn)練模型參數(shù)發(fā)送給客戶端,以使所述客戶端獲取所述目標(biāo)物體的實時圖像,從所述實時圖像中識別出至少一個第一圖像塊;針對每個第一圖像塊,根據(jù)所述訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定所述目標(biāo)物體的姿態(tài),根據(jù)所述姿態(tài)在所述實時圖像中增加虛擬內(nèi)容。
本發(fā)明又提供了一種客戶端,包括:
離線接收模塊,用于從服務(wù)器獲取針對目標(biāo)物體的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù);
在線接收模塊,用于獲取所述目標(biāo)物體的實時圖像;
識別模塊,用于從所述在線接收模塊接收到的實時圖像中識別出至少一個第一圖像塊;
匹配模塊,用于針對所述識別模塊識別出的每個第一圖像塊,根據(jù)所述離線接收模塊給出的訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;
姿態(tài)確定模塊,用于根據(jù)各個第一圖像塊和所述匹配模塊確定的各自匹配的標(biāo)簽圖像塊,確定所述目標(biāo)物體的姿態(tài);及,
增加模塊,用于根據(jù)所述姿態(tài)確定模塊確定的姿態(tài)在所述實時圖像中增加虛擬內(nèi)容。
本發(fā)明又提供了一種服務(wù)器,其特征在于,包括:
獲取模塊,用于獲取針對目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像;
訓(xùn)練模塊,用于將所述獲取模塊獲取的標(biāo)準(zhǔn)圖像和所述多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù);
發(fā)送模塊,用于將所述訓(xùn)練模塊得到的訓(xùn)練模型參數(shù)發(fā)送給客戶端,以使所述客戶端獲取所述目標(biāo)物體的實時圖像,從所述實時圖像中識別出至少一個第一圖像塊;針對每個第一圖像塊,根據(jù)所述訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定所述目標(biāo)物體的姿態(tài),根據(jù)所述姿態(tài)在所述實時圖像中增加虛擬內(nèi)容。
由上述技術(shù)方案可見,本發(fā)明實施例提供的方法,通過使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行離線訓(xùn)練,然后在線確定物體姿態(tài)時使用訓(xùn)練好的訓(xùn)練模型參數(shù),使得圖像處理的計算復(fù)雜度大大低,時間效率高,占用內(nèi)存資源少,同時還能保證確定方法的準(zhǔn)確率,該方法尤其適用于資源受限設(shè)備上應(yīng)用增強(qiáng)現(xiàn)實服務(wù),提升了終端設(shè)備的資源使用率。
附圖說明
圖1為本發(fā)明一個實施例所涉及的實施環(huán)境示意圖;
圖2為本發(fā)明一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖;
圖3a為本發(fā)明一個實施例中目標(biāo)物體的標(biāo)準(zhǔn)圖像的示意圖;
圖3b為本發(fā)明一個實施例中目標(biāo)物體的畸變圖像的示意圖;
圖4a為本發(fā)明另一個實施例中目標(biāo)物體的標(biāo)準(zhǔn)圖像的示意圖;
圖4b為本發(fā)明另一個實施例中目標(biāo)物體的畸變圖像的示意圖;
圖5為本發(fā)明另一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖;
圖6為本發(fā)明一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖;
圖7為本發(fā)明一個實施例中卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖;
圖8為本發(fā)明一個實施例中客戶端的結(jié)構(gòu)示意圖;
圖9為本發(fā)明另一個實施例中客戶端的結(jié)構(gòu)示意圖;
圖10為本發(fā)明一個實施例中服務(wù)器的結(jié)構(gòu)示意圖;
圖11為本發(fā)明另一個實施例中服務(wù)器的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進(jìn)一步詳細(xì)說明。
圖1為本發(fā)明一個實施例所涉及的增強(qiáng)現(xiàn)實實施環(huán)境示意圖。如圖1所示,在增強(qiáng)現(xiàn)實應(yīng)用系統(tǒng)100中包括目標(biāo)物體101、終端設(shè)備102和服務(wù)器103。其中,終端設(shè)備102中安裝有攝像裝置1021、屏幕1023、本發(fā)明實施例給出的物體姿態(tài)確定客戶端,并且運行有增強(qiáng)現(xiàn)實的應(yīng)用程序。
在具體應(yīng)用時,用戶使用攝像裝置1021實時拍攝到關(guān)于目標(biāo)物體101的圖像1022,顯示在屏幕1023上。根據(jù)本發(fā)明實施例所述的方法,從所拍攝的圖像1022中估計出目標(biāo)物體101的姿態(tài),通過該姿態(tài)能夠確定目標(biāo)物體101在所拍攝圖像1022中的位置,然后根據(jù)該姿態(tài)將虛擬內(nèi)容1024加在同一位置處,從而實現(xiàn)真實世界和虛擬信息疊加在同一個畫面中。
根據(jù)本發(fā)明的實施例,在終端設(shè)備處對實時圖像進(jìn)行在線檢測之前,終端設(shè)備102首先從服務(wù)器103處獲得對目標(biāo)物體101的離線訓(xùn)練結(jié)果。服務(wù)器103中的數(shù)據(jù)庫1031中保存有目標(biāo)物體101的大量圖像樣本,然后離線訓(xùn)練子服務(wù)器1032使用卷積神經(jīng)網(wǎng)絡(luò)對這些圖像樣本進(jìn)行離線訓(xùn)練,訓(xùn)練完成后確定出訓(xùn)練模型參數(shù),然后將其發(fā)送給終端設(shè)備102用于對實時圖像的在線檢測。
這里,上述終端設(shè)備102是指具有圖像拍攝以及處理功能的終端設(shè)備,包括但不限于智能手機(jī)、掌上電腦、平板電腦等。這些終端設(shè)備上都安裝有操作系統(tǒng),包括但不限于:android操作系統(tǒng)、symbian操作系統(tǒng)、windowsmobile操作系統(tǒng)、以及蘋果iphoneos操作系統(tǒng)等等。終端設(shè)備102和服務(wù)器103之間可以通過無線網(wǎng)絡(luò)進(jìn)行通信。
圖2為本發(fā)明一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖。該方法可以應(yīng)用于單獨的客戶端,或者應(yīng)用于具備增強(qiáng)現(xiàn)實功能的客戶端。該方法包括以下步驟。
步驟201,從服務(wù)器獲取針對目標(biāo)物體的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù)。
其中,服務(wù)器獲取一個場景中目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像,將標(biāo)準(zhǔn)圖像和多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù)。然后,服務(wù)器將訓(xùn)練模型參數(shù)發(fā)送給客戶端。
在本發(fā)明的實施例中,訓(xùn)練出來的訓(xùn)練模型參數(shù)與特定的場景相關(guān),針對的是單一目標(biāo)物體。所謂標(biāo)準(zhǔn)圖像是指在一個特定場景中針對一個目標(biāo)物體拍攝得到的清晰圖像,而畸變圖像是在該標(biāo)準(zhǔn)圖像的基礎(chǔ)上引入各種透視失真而得到的。
圖3a給出了一個城市場景中針對一個目標(biāo)物體的標(biāo)準(zhǔn)圖像,圖3b則給出了相應(yīng)的3張畸變圖像。該場景是河邊的城市建筑群,目標(biāo)物體是其中最高的樓,如圖3a中橢圓所示。3張畸變圖像是對圖3a中的標(biāo)準(zhǔn)圖像進(jìn)行旋轉(zhuǎn)、平移得到的,在每張畸變圖像中都可以看到目標(biāo)物體—樓,而在背景部分則填充了一些隨機(jī)數(shù)。
圖4a和圖4b分別給出了另一個場景中針對一個目標(biāo)物體的標(biāo)準(zhǔn)圖像和3張畸變圖像。目標(biāo)物體是河上的橋,如圖4a中方框所示。3張畸變圖像也是對標(biāo)準(zhǔn)圖像進(jìn)行旋轉(zhuǎn)、平移得到的,在每張畸變圖像中都可以看到完整的或者部分的目標(biāo)物體—橋。
此步驟是在用戶使用增強(qiáng)現(xiàn)實服務(wù)之前執(zhí)行,在客戶端中事先存儲獲得的訓(xùn)練模型參數(shù)。在用戶使用增強(qiáng)現(xiàn)實服務(wù)時,則讀取該訓(xùn)練模型參數(shù)用于目標(biāo)物體的姿態(tài)確定。
步驟202,獲取目標(biāo)物體的實時圖像,從實時圖像中識別出至少一個第一圖像塊。
此步驟中,用戶處于上述場景中,希望使用增強(qiáng)現(xiàn)實服務(wù),首先通過客戶端所在終端上的攝像裝置拍攝得到目標(biāo)物體的實時圖像,將實時圖像傳遞給客戶端。然后,客戶端從實時圖像中識別出至少一個第一圖像塊,識別的具體方法包括:
步驟2021,對實時圖像進(jìn)行特征檢測,獲取多個局部特征。
局部特征是指圖像中一些有別于其周圍的地方,描述的是一塊區(qū)域,使其能具有高可區(qū)分度。
步驟2022,針對每個局部特征,若判斷出該局部特征的圖像對比度高于預(yù)設(shè)的對比度閾值并且該局部特征并非圖像的邊緣,則將該局部特征確定為第一圖像塊。
這里,對比度指的是一幅圖像中明暗區(qū)域最亮的白和最暗的黑之間不同亮度層級的測量,即指一幅圖像灰度反差的大小。這樣,識別出的第一圖像塊,能從周圍環(huán)境中凸顯,減少位置上的歧義。例如,實時圖像為一個臉部圖像,第一圖像塊為臉部的鼻尖、眼角等。
在具體應(yīng)用時,可以使用尺度不變特征變換(sift)、加速魯棒特征(surf)識別算法、加速分段測試的特征識別(fast)等方法。這些方法檢測的準(zhǔn)確性和速度各有不同。在實際應(yīng)用時,可以根據(jù)終端設(shè)備的硬件能力在處理復(fù)雜度和時間效率之間進(jìn)行折中選擇。
在其他實施例中,也可以根據(jù)單個判斷結(jié)果確定局部特征。例如,若判斷出該局部特征的圖像對比度高于預(yù)設(shè)的對比度閾值,則將該局部特征確定為第一圖像塊。或者,該局部特征并非圖像的邊緣,則將該局部特征確定為第一圖像塊。這里,局部特征的識別準(zhǔn)確度將會影響后續(xù)的匹配和確定出的姿態(tài)結(jié)果。
步驟203,針對每個第一圖像塊,根據(jù)訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊。
本發(fā)明實施例中,訓(xùn)練模型參數(shù)包括權(quán)值和從標(biāo)準(zhǔn)圖像中識別出來的第二圖像塊。卷積神經(jīng)網(wǎng)絡(luò)包括多個卷積層,權(quán)值是指每個卷積層所使用的卷積矩陣中的各個元素值。
此步驟中,匹配的方法具體包括:
步驟2031,將該第一圖像塊輸入卷積神經(jīng)網(wǎng)絡(luò),基于權(quán)值輸出該第一圖像塊與每個第二圖像塊相匹配的概率。
卷積神經(jīng)網(wǎng)絡(luò)能夠?qū)Φ谝粓D像塊進(jìn)行分類,每個第二圖像塊代表了類別標(biāo)簽,通過權(quán)值對第一圖像塊進(jìn)行處理,輸出的結(jié)果是第一圖像塊與每個第二圖像塊相匹配的概率。這個概率數(shù)值代表了第一圖像塊和第二圖像塊的相似度。
步驟2032,將最大概率值所對應(yīng)的第二圖像塊確定為標(biāo)簽圖像塊。
在具體應(yīng)用時,在客戶端和服務(wù)器側(cè)預(yù)先設(shè)置目標(biāo)物體的標(biāo)識,訓(xùn)練模型參數(shù)中包括該標(biāo)識。那么,當(dāng)客戶端接收到該訓(xùn)練模型參數(shù)后,獲知上述標(biāo)識。在執(zhí)行步驟202時,根據(jù)獲取到的實時圖像或者終端的當(dāng)前定位信息,判斷出該實時圖像對應(yīng)了哪個目標(biāo)物體,那么根據(jù)該目標(biāo)物體的標(biāo)識就能獲知在執(zhí)行步驟203時使用哪個訓(xùn)練模型參數(shù)進(jìn)行匹配。
步驟204,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài),根據(jù)姿態(tài)在實時圖像中增加虛擬內(nèi)容。
本發(fā)明的實施例中,目標(biāo)物體的姿態(tài)由仿射變換來表示,也就是說,每個標(biāo)簽圖像塊經(jīng)由仿射變換與第一圖像塊相匹配。若第一圖像塊為qi,i=1,…,n,n為第一圖像塊的總數(shù),與qi匹配的標(biāo)簽圖像塊為pi,仿射變換由矩陣a來表示,那么有
qi=api(1)
仿射變換能夠體現(xiàn)出目標(biāo)物體相對于攝像鏡頭的平移和旋轉(zhuǎn)量,可以描述3d空間中的目標(biāo)物體到2d平面圖像的成像過程。仿射變換屬于線性變換,即具有將平行線變換成平行線、有限點映射到有限點的一般特性。二維歐氏空間上的仿射變換可以表示為:
其中,(x,y)和(x′,y′)分別是指標(biāo)準(zhǔn)圖像和實時圖像中兩個點(即像素)的坐標(biāo),
可見,仿射變換具有6個自由度,根據(jù)仿射變換估計出的姿態(tài)也常稱為6d姿態(tài)。根據(jù)向量中參數(shù)的具體數(shù)值,平移、旋轉(zhuǎn)、縮放、反射和剪切等都是仿射變換的一種情況。
在確定目標(biāo)物體的姿態(tài)時,根據(jù)最小二乘原則從仿射變換矩陣集合中確定出仿射變換的矩陣估計值。具體地,計算矩陣估計值
其中,||·||表示取模值的平方,g為仿射變換矩陣集合。
確定出由
本實施例中,通過從服務(wù)器接收已訓(xùn)練完的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù),接收用戶拍攝目標(biāo)物體得到的實時圖像,從實時圖像中識別出至少一個第一圖像塊,將圖像塊作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,好處在于相比整幅圖像,這種圖像小塊抗變換能力強(qiáng),尤其是平移變換;并且,不需要做分割或者其它任何預(yù)先的圖像語義解釋。
然后,針對每個第一圖像塊,根據(jù)訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài),根據(jù)姿態(tài)在實時圖像中增加虛擬內(nèi)容。使用卷積神經(jīng)網(wǎng)絡(luò)用于姿態(tài)確定的好處在于,這種網(wǎng)絡(luò)中權(quán)值數(shù)據(jù)在多個連接中可以共享,使得上述方法的計算復(fù)雜度低,時間效率高,占用內(nèi)存資源少,尤其適用于資源受限設(shè)備上應(yīng)用增強(qiáng)現(xiàn)實服務(wù),例如,電池能力受限的移動終端、可穿戴式設(shè)備等。
圖5為本發(fā)明另一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖。如圖5所示,包括如下步驟:
步驟501,從服務(wù)器接收并存儲已訓(xùn)練完的卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練模型參數(shù)。
服務(wù)器針對某個特定場景下的目標(biāo)物體進(jìn)行離線訓(xùn)練,訓(xùn)練完畢后,將訓(xùn)練模型參數(shù)發(fā)送給客戶端進(jìn)行存儲,然后客戶端在實時監(jiān)測時調(diào)用該訓(xùn)練模型參數(shù)。
步驟502,獲取目標(biāo)物體的實時圖像。
在具體應(yīng)用時,實時圖像可以是用戶拍攝的靜態(tài)圖片或者視頻中的一幀圖像。當(dāng)接收到的是視頻流時,每隔固定間隔從視頻流中抽取出一幀圖像作為待處理的實時圖像。例如,視頻流每秒包括24幀圖像,可以每隔一秒從中抽取出一幀圖像。
步驟503,從實時圖像中識別出至少一個第一圖像塊,將每個第一圖像塊輸入卷積神經(jīng)網(wǎng)絡(luò)。
步驟504,對于每個第一圖像塊,基于權(quán)值輸出該第一圖像塊與每個第二圖像塊相匹配的概率,將最大概率值所對應(yīng)的第二圖像塊確定為標(biāo)簽圖像塊。
參見上述步驟202、203中的描述,此處不再贅述。
步驟505,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定出仿射變換的矩陣估計值來表征目標(biāo)物體的幾何姿態(tài)。
本步驟中,第一圖像塊和與其匹配的標(biāo)簽圖像塊組成一個匹配對,即(qi,pi)。在確定姿態(tài)之前,可以進(jìn)一步包括對匹配對的取舍。對于每個第一圖像塊,具體包括如下步驟:
步驟5051,將該第一圖像塊輸入卷積神經(jīng)網(wǎng)絡(luò),基于權(quán)值輸出該第一圖像塊與每個第二圖像塊相匹配的概率。
具體地,若第二圖像塊的總數(shù)為m,卷積神經(jīng)網(wǎng)絡(luò)的輸出層輸出一個1×m維的分類向量,向量中的元素取值為[0,1],代表了上述概率。
步驟5052,若概率大于預(yù)設(shè)概率閾值的第二圖像塊的總數(shù)大于預(yù)設(shè)個數(shù)閾值,則將該第一圖像塊和與其匹配的標(biāo)簽圖像塊用于確定目標(biāo)物體的姿態(tài)。
例如,預(yù)設(shè)概率閾值為0.6,預(yù)設(shè)個數(shù)閾值為200,則若數(shù)值大于0.6的元素個數(shù)大于200個,則保留該匹配對,用于姿態(tài)確定。這樣選擇出來的匹配對能夠服從大多數(shù)的姿態(tài)。
在具體應(yīng)用時,也可以使用隨機(jī)抽樣一致性的策略,來濾除誤匹配對。
步驟506,根據(jù)矩陣估計值將虛擬內(nèi)容添加在實時圖像中。
通過標(biāo)準(zhǔn)圖像確定出仿射變換的矩陣估計值后,可以再執(zhí)行逆過程,將虛擬內(nèi)容通過仿射變換再轉(zhuǎn)換到實時圖像的參照系中,從而可以將二者疊加在一起,實現(xiàn)增強(qiáng)現(xiàn)實的功能。
在上述實施例中,通過對匹配對(第一圖像塊,標(biāo)簽圖像塊)的取舍,由公式(3)可見,n的有效數(shù)值減少,因此,降低了計算的復(fù)雜度,同時還能提高姿態(tài)確定的準(zhǔn)確性。此外,通過仿射變換的矩陣估計值來表征目標(biāo)物體的幾何姿態(tài),處理簡單,易于計算,進(jìn)一步提高了算法的時間效率。
圖6為本發(fā)明一個實施例中圖像中物體姿態(tài)的確定方法的流程示意圖。該方法可以應(yīng)用于服務(wù)器。包括以下步驟。
步驟601,獲取針對目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像。
服務(wù)器側(cè)執(zhí)行離線訓(xùn)練時,首先需要獲取大量的訓(xùn)練樣本。其中,標(biāo)準(zhǔn)圖像是必需的,用于確定分類時使用的多個標(biāo)簽圖像塊。而畸變圖像的獲取方式可以有多種,例如,使用攝像裝置針對同一目標(biāo)物體隨機(jī)拍攝獲得多個畸變圖像,或者,從標(biāo)準(zhǔn)圖像進(jìn)行各類失真處理獲得多個畸變圖像。對于后者,在一實施例中,圖像的失真也通過仿射變換引入。具體包括如下步驟:
步驟6011,隨機(jī)產(chǎn)生多個仿射變換矩陣。
定義矩陣
其中,參數(shù)
步驟6012,針對每個仿射變換矩陣,使用該仿射變換矩陣對標(biāo)準(zhǔn)圖像進(jìn)行仿射變換,得到一張畸變圖像。
執(zhí)行變換的表達(dá)式如下:
i′=a(i)+n(5)
其中,i為輸入的標(biāo)準(zhǔn)圖像,i′為生成的畸變圖像,n為高斯白噪聲,均值為μ,方差為σ,并且滿足如下的關(guān)系:
σ=0.3×(μ2-1)+0.8(7)
步驟602,將標(biāo)準(zhǔn)圖像和多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù)。
步驟603,將訓(xùn)練模型參數(shù)發(fā)送給客戶端。
這樣,客戶端接收用戶拍攝目標(biāo)物體得到的實時圖像,從實時圖像中識別出至少一個第一圖像塊;針對每個第一圖像塊,根據(jù)訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài),根據(jù)姿態(tài)在實時圖像中增加虛擬內(nèi)容。
在上述步驟602中,服務(wù)器構(gòu)建卷積神經(jīng)網(wǎng)絡(luò),然后進(jìn)行訓(xùn)練。卷積神經(jīng)網(wǎng)絡(luò)通過卷積操作進(jìn)行特征提取,然后進(jìn)行特征映射。卷積神經(jīng)網(wǎng)絡(luò)的每個計算層由多個特征映射組成,每個特征映射是一個平面,平面上所有神經(jīng)元的權(quán)值相等,因而可以減少網(wǎng)絡(luò)自由參數(shù)的個數(shù)。
圖7為本發(fā)明一個實施例中卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)示意圖。如圖7所示,卷積神經(jīng)網(wǎng)絡(luò)包括多層處理,分別為:
701卷積層:通過一個卷積矩陣作為過濾器,當(dāng)過濾器卷積輸入的圖像塊700時,把過濾器里面的權(quán)重值和圖像塊里對應(yīng)的像素值相乘,把所有結(jié)果加和,得到一個加和值。然后重復(fù)這個過程,從左到右、從上到下卷積圖像塊的每一個區(qū)域,每一步都可以得到一個值,最后的矩陣為特征圖像。
702池化層:池化層通常用在卷積層之后,其作用就是簡化卷積層里輸出的信息,減少數(shù)據(jù)維度,降低計算開銷,控制過擬合。
具體而言,卷積后的特征圖像具有一種“靜態(tài)性”的屬性,這表明在一個圖像區(qū)域有用的特征極有可能在另一個區(qū)域同樣適用。因此,為了描述一副大的圖像,對不同位置的特征進(jìn)行聚合統(tǒng)計,即池化過程。例如,計算圖像一個區(qū)域上的某個特定特征的平均值或最大值。相比使用所有提取得到的特征,這些統(tǒng)計特征不僅具有低得多的維度,同時還會改善結(jié)果,不容易過擬合。
703全連接層:檢測獲取到的這些特征圖像與哪種類別更相近。這里的類別即由m個第二圖像塊代表的各種可能標(biāo)簽。
704輸出層:輸出為1×m維的分類向量,向量中的元素取值為[0,1],輸出的每一維都是指該圖像塊屬于該類別的概率。
在實際應(yīng)用中,通常使用多層卷積,然后再使用全連接層進(jìn)行訓(xùn)練。即在圖7中,將701卷積層和702池化層作為一個組合,將依次執(zhí)行多個該組合,這種網(wǎng)絡(luò)被稱為深度卷積神經(jīng)網(wǎng)絡(luò)。多層卷積的目的是考慮到一層卷積學(xué)到的特征往往是局部的,層數(shù)越高,學(xué)到的特征就越全局化。
當(dāng)卷積神經(jīng)網(wǎng)絡(luò)包括多個卷積層時,確定卷積層的個數(shù)的方法,具體為:預(yù)設(shè)圖像塊個數(shù)與卷積層個數(shù)的對應(yīng)關(guān)系;從標(biāo)準(zhǔn)圖像中識別出至少一個第二圖像塊;根據(jù)第二圖像塊的個數(shù)和對應(yīng)關(guān)系確定卷積神經(jīng)網(wǎng)絡(luò)中卷積層的個數(shù)。
例如,表1給出的實施例中,第二圖像塊的總數(shù)為400,整個網(wǎng)絡(luò)包括了13層。其中,有4個卷積層,具體為第1、4、7、10層是卷積層,在第1層卷積層之后緊跟著進(jìn)行最大池化層和relu激勵層,在第4層卷積層之后緊跟著進(jìn)行relu激勵層和平均池化層,在第7層卷積層之后緊跟著進(jìn)行relu激勵層和平均池化層,在第10層卷積層之后緊跟著進(jìn)行relu激勵層,最后是全連接層和soft-max輸出層。
表1深度卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
其中,激勵層中將調(diào)用一種激勵函數(shù)來加入非線性因素,以解決線性不可分的問題。如表1所示,選擇的激勵函數(shù)方式叫做relu(rectifiedlinearunits),其表達(dá)式為:
f(x)=max(0,x)(8)
即把小于零的值都?xì)w為0,這樣,卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練的速度會更快,減少梯度消失的問題出現(xiàn)。
此外,卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練的過程中也需要確定輸入樣本和理想的輸出樣本,然后迭代進(jìn)行權(quán)值的調(diào)整。在一實施例中,從標(biāo)準(zhǔn)圖像中識別出至少一個第二圖像塊;分別對每張畸變圖像進(jìn)行識別,得到至少一個第三圖像塊;在卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練時,將第三圖像塊作為輸入樣本,將各個第二圖像塊作為理想的輸出樣本,訓(xùn)練得到權(quán)值。
卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,通過反向傳播算法來調(diào)整權(quán)重值。反向傳播算法可以分成4個不同的部分:向前傳遞,損失函數(shù),反向傳遞,更新權(quán)重。
向前傳播過程中,輸入圖像塊,通過卷積神經(jīng)網(wǎng)絡(luò)傳遞它。起初,所有的權(quán)重值都被隨機(jī)初始化,如隨機(jī)值[0.3,0.1,0.4,0.2,0.3....]。由于卷積神經(jīng)網(wǎng)絡(luò)通過初始化的權(quán)重值無法提取準(zhǔn)確特征圖像,因此無法給出任何合理的結(jié)論,圖片屬于哪種類別。此時,通過反向傳播中的損失函數(shù)來幫助卷積神經(jīng)網(wǎng)絡(luò)更新權(quán)重值找到想要的特征圖像。損失函數(shù)的定義方式有很多種,例如,mse(meansquarederror)均方誤差。在卷積神經(jīng)網(wǎng)絡(luò)剛開始訓(xùn)練的時候,由于權(quán)重值都是隨機(jī)初始化出來的,這個損失值可能會很高。而訓(xùn)練的目的是希望預(yù)測值和真實值一樣。為此,需要盡量減少損失值,損失值越小就說明預(yù)測結(jié)果越接近。在這一個過程中,將不斷的調(diào)整權(quán)重值,來尋找出哪些權(quán)重值能使網(wǎng)絡(luò)的損失減小。例如,采用梯度下降算法。
每次訓(xùn)練,將會完成多次的前向傳遞、損失函數(shù)、反向傳遞和參數(shù)更新的過程。當(dāng)訓(xùn)練結(jié)束后,就得到了訓(xùn)練出來的一些權(quán)重值。
根據(jù)本發(fā)明上述實施例給出的物體姿態(tài)確定方法,和現(xiàn)有技術(shù)中使用隨機(jī)ferns方法確定姿態(tài)相比,表2給出了兩種方法在準(zhǔn)確率和占用內(nèi)存的數(shù)值。
首先,實驗數(shù)據(jù)是這樣設(shè)置的:本發(fā)明實施例給出的方法中,使用表1給出的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),圖像塊的大小為27×27,共有27行27列個像素,對該圖像塊進(jìn)行預(yù)處理,使其均值為0,方差為1。離線訓(xùn)練時根據(jù)公式(4)隨機(jī)產(chǎn)生了2000個仿射變換矩陣,用于生成畸變圖像。第二圖像塊的個數(shù)為400,輸出向量為1×400維的分類向量。ferns方法中fern的個數(shù)為30,每個fern中特征的個數(shù)為12。
如表2所示,對于圖3a、圖3b給出的圖像,本發(fā)明實施例給出的方法的準(zhǔn)確率為86%,而ferns方法的準(zhǔn)確率為88%;對于圖4a、圖4b給出的圖像,本發(fā)明實施例給出的方法的準(zhǔn)確率為87%,而ferns方法的準(zhǔn)確率為88%。可見,本發(fā)明實施例給出的方法與ferns方法的準(zhǔn)確率大致相同。但是就占用內(nèi)存來看,本發(fā)明實施例給出的方法由于使用卷積神經(jīng)網(wǎng)絡(luò),占用內(nèi)存僅為0.5557m,而ferns方法占用內(nèi)存93.75m,可見,本發(fā)明實施例給出的方法具有很低的內(nèi)存資源消耗。
表2實驗數(shù)據(jù)對比
圖8為本發(fā)明一個實施例中客戶端800的結(jié)構(gòu)示意圖。如圖8所示,客戶端800包括:
離線接收模塊810,用于從服務(wù)器獲取針對目標(biāo)物體的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù);
在線接收模塊820,用于獲取目標(biāo)物體的實時圖像;
識別模塊830,用于從在線接收模塊820接收到的實時圖像中識別出至少一個第一圖像塊;
匹配模塊840,用于針對識別模塊830識別出的每個第一圖像塊,根據(jù)離線接收模塊810給出的訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;
姿態(tài)確定模塊850,用于根據(jù)識別模塊830識別出的各個第一圖像塊和匹配模塊840確定的各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài);及,
增加模塊860,用于根據(jù)姿態(tài)確定模塊850確定的姿態(tài)在實時圖像中增加虛擬內(nèi)容。
在一實施例中,識別模塊830包括:
檢測單元831,用于對實時圖像進(jìn)行特征檢測,獲取多個局部特征;
判斷單元832,用于針對每個局部特征,若判斷出該局部特征的圖像對比度高于預(yù)設(shè)的對比度閾值并且該局部特征并非圖像的邊緣,則將該局部特征確定為第一圖像塊。
在一實施例中,訓(xùn)練模型參數(shù)包括權(quán)值和從標(biāo)準(zhǔn)圖像中識別出來的第二圖像塊,匹配模塊840用于,將該第一圖像塊輸入卷積神經(jīng)網(wǎng)絡(luò),基于權(quán)值輸出該第一圖像塊與每個第二圖像塊相匹配的概率;將最大概率值所對應(yīng)的第二圖像塊確定為標(biāo)簽圖像塊。
在一實施例中,姿態(tài)由仿射變換來表示,每個標(biāo)簽圖像塊經(jīng)由仿射變換與第一圖像塊相匹配;
姿態(tài)確定模塊850用于,根據(jù)最小二乘原則從仿射變換矩陣集合中確定出仿射變換的矩陣估計值。
圖9為本發(fā)明另一個實施例中客戶端900的結(jié)構(gòu)示意圖。如圖9所示,服務(wù)器900包括:處理器910、存儲器920、端口930以及總線940。處理器910和存儲器920通過總線940互聯(lián)。處理器910可通過端口930接收和發(fā)送數(shù)據(jù)。其中,
處理器910用于執(zhí)行存儲器920存儲的機(jī)器可讀指令模塊。
存儲器920存儲有處理器910可執(zhí)行的機(jī)器可讀指令模塊。處理器910可執(zhí)行的指令模塊包括:離線接收模塊921、在線接收模塊922、識別模塊923、匹配模塊924、姿態(tài)確定模塊925和增加模塊926。其中,
離線接收模塊921被處理器910執(zhí)行時可以為:從服務(wù)器獲取針對目標(biāo)物體的卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型參數(shù);
在線接收模塊922被處理器910執(zhí)行時可以為:獲取目標(biāo)物體的實時圖像;
識別模塊923被處理器910執(zhí)行時可以為:從在線接收模塊922接收到的實時圖像中識別出至少一個第一圖像塊;
匹配模塊924被處理器910執(zhí)行時可以為:針對識別模塊923識別出的每個第一圖像塊,根據(jù)離線接收模塊921給出的訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;
姿態(tài)確定模塊925被處理器910執(zhí)行時可以為:根據(jù)識別模塊923識別出的各個第一圖像塊和匹配模塊924確定的各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài);
增加模塊926被處理器910執(zhí)行時可以為:根據(jù)姿態(tài)確定模塊925確定的姿態(tài)在實時圖像中增加虛擬內(nèi)容。
由此可以看出,當(dāng)存儲在存儲器920中的指令模塊被處理器910執(zhí)行時,可實現(xiàn)前述各個實施例中離線接收模塊、在線接收模塊、識別模塊、匹配模塊、姿態(tài)確定模塊和增加模塊的各種功能。
圖10為本發(fā)明一個實施例中服務(wù)器1000的結(jié)構(gòu)示意圖。如圖10所示,服務(wù)器1000包括:
獲取模塊1010,用于獲取針對目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像;
訓(xùn)練模塊1020,用于將獲取模塊1010獲取的標(biāo)準(zhǔn)圖像和多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù);
發(fā)送模塊1030,用于將訓(xùn)練模塊1020得到的訓(xùn)練模型參數(shù)發(fā)送給客戶端,以使客戶端獲取目標(biāo)物體的實時圖像,從實時圖像中識別出至少一個第一圖像塊;針對每個第一圖像塊,根據(jù)訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài),根據(jù)姿態(tài)在實時圖像中增加虛擬內(nèi)容。
在一實施例中,獲取模塊1010用于,隨機(jī)產(chǎn)生多個仿射變換矩陣;針對每個仿射變換矩陣,使用該仿射變換矩陣對標(biāo)準(zhǔn)圖像進(jìn)行仿射變換,得到一張畸變圖像。
在一實施例中,卷積神經(jīng)網(wǎng)絡(luò)包括多個卷積層,訓(xùn)練模塊1020用于,預(yù)設(shè)圖像塊個數(shù)與卷積層個數(shù)的對應(yīng)關(guān)系;從標(biāo)準(zhǔn)圖像中識別出至少一個第二圖像塊;根據(jù)第二圖像塊的個數(shù)和對應(yīng)關(guān)系確定卷積神經(jīng)網(wǎng)絡(luò)中卷積層的個數(shù)。
圖11為本發(fā)明另一個實施例中服務(wù)器1100的結(jié)構(gòu)示意圖。如圖11所示,服務(wù)器1100包括:處理器1110、存儲器1120、端口1130以及總線1140。處理器1110和存儲器1120通過總線1140互聯(lián)。處理器1110可通過端口1130接收和發(fā)送數(shù)據(jù)。其中,
處理器1110用于執(zhí)行存儲器1120存儲的機(jī)器可讀指令模塊。
存儲器1120存儲有處理器1110可執(zhí)行的機(jī)器可讀指令模塊。處理器1110可執(zhí)行的指令模塊包括:獲取模塊1121、訓(xùn)練模塊1122和發(fā)送模塊1123。其中,
獲取模塊1121被處理器1110執(zhí)行時可以為:獲取針對目標(biāo)物體的標(biāo)準(zhǔn)圖像以及多張畸變圖像;
訓(xùn)練模塊1122被處理器1110執(zhí)行時可以為:將獲取模塊1121獲取的標(biāo)準(zhǔn)圖像和多張畸變圖像輸入到卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,獲得訓(xùn)練模型參數(shù);
發(fā)送模塊1123被處理器1110執(zhí)行時可以為:將訓(xùn)練模塊1122得到的訓(xùn)練模型參數(shù)發(fā)送給客戶端,以使客戶端獲取目標(biāo)物體的實時圖像,從實時圖像中識別出至少一個第一圖像塊;針對每個第一圖像塊,根據(jù)訓(xùn)練模型參數(shù)確定與該第一圖像塊相匹配的標(biāo)簽圖像塊;及,根據(jù)各個第一圖像塊和各自匹配的標(biāo)簽圖像塊,確定目標(biāo)物體的姿態(tài),根據(jù)姿態(tài)在實時圖像中增加虛擬內(nèi)容。
由此可以看出,當(dāng)存儲在存儲器1120中的指令模塊被處理器1110執(zhí)行時,可實現(xiàn)前述各個實施例中獲取模塊、訓(xùn)練模塊和發(fā)送模塊的各種功能。
上述裝置實施例中,各個模塊及單元實現(xiàn)自身功能的具體方法在方法實施例中均有描述,這里不再贅述。
另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理單元中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
另外,本發(fā)明的每一個實施例可以通過由數(shù)據(jù)處理設(shè)備如計算機(jī)執(zhí)行的數(shù)據(jù)處理程序來實現(xiàn)。顯然,數(shù)據(jù)處理程序構(gòu)成了本發(fā)明。此外,通常存儲在一個存儲介質(zhì)中的數(shù)據(jù)處理程序通過直接將程序讀取出存儲介質(zhì)或者通過將程序安裝或復(fù)制到數(shù)據(jù)處理設(shè)備的存儲設(shè)備(如硬盤和或內(nèi)存)中執(zhí)行。因此,這樣的存儲介質(zhì)也構(gòu)成了本發(fā)明。存儲介質(zhì)可以使用任何類別的記錄方式,例如紙張存儲介質(zhì)(如紙帶等)、磁存儲介質(zhì)(如軟盤、硬盤、閃存等)、光存儲介質(zhì)(如cd-rom等)、磁光存儲介質(zhì)(如mo等)等。
因此,本發(fā)明還公開了一種存儲介質(zhì),其中存儲有數(shù)據(jù)處理程序,該數(shù)據(jù)處理程序用于執(zhí)行本發(fā)明上述方法的任何一種實施例。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。