背景技術:
來自圖像數(shù)據(jù)的實時鉸接式手動跟蹤具有打開新人機交互場景的潛能。然而,人手的靈活性和自由度使得完全地鉸接式手動的視覺跟蹤更具挑戰(zhàn)性。這還適于實時鉸接式身體跟蹤。
在此所描述的實施例不限于解決已知手部/身體姿勢跟蹤器的缺點中的任何或全部的實現(xiàn)。
技術實現(xiàn)要素:
以下呈現(xiàn)本公開的簡化概要以便向讀者提供基本理解。該概要不是本公開的廣泛概述并且不標識關鍵/重要元素或描繪說明書的范圍。其唯一目的是以簡化形式將在此所公開的概念的選擇呈現(xiàn)為稍后呈現(xiàn)的更詳細描述的前序。
描述了跟蹤來自圖像數(shù)據(jù)的手部或身體姿勢,以例如控制游戲系統(tǒng)、自然用戶接口或用于增強現(xiàn)實。在各種示例中,預測引擎取得圖像數(shù)據(jù)的單個幀,并且預測圖像數(shù)據(jù)中所描繪的手部或身體的姿勢上的分布。在示例中,隨機優(yōu)化器具有其迭代地提煉的手部或身體的候選姿勢池,并且來自所預測的分布的樣本用于替換池中的一些候選姿勢。在一些示例中,來自池的最佳候選姿勢被選擇作為當前跟蹤的姿勢并且選擇過程使用手部或身體的3d模型。
通過參考結合附圖考慮的以下詳細描述,由于許多伴隨特征將變得更好理解,因此其將被更容易地理解。
附圖說明
從根據(jù)附圖閱讀的以下詳細描述,將更好地理解本描述。
圖1是使用向前、向上或在用戶的肩膀上的圖像采集設備來跟蹤手部姿勢的示意圖;
圖2是手部/身體跟蹤器的示意圖;
圖3是預測引擎(諸如圖2的預測引擎)的示意圖;
圖4是圖3的預測引擎處的方法的第一部分的流程圖;
圖5是圖4的方法的第二部分的流程圖;
圖6是初始化或者更新候選姿勢池的方法的流程圖;
圖7是評分過程的流程圖;
圖8是隨機優(yōu)化器處的過程的流程圖;
圖9圖示了在其中可以實現(xiàn)手部或身體跟蹤器的實施例的示例性的基于計算的設備。
在附圖中,相同附圖標記被用于指代相同部件。
具體實施方式
以下結合附圖提供的詳細描述旨在作為本示例的描述并且不旨在表示可以構建或利用本示例的僅有形式。該描述闡述示例的功能和步驟的順序,以用于構建和操作示例。然而,可以通過不同的示例完成相同或等效功能和序列。
圖1是使用向前、向上或在用戶100的肩膀上的圖像采集設備102來跟蹤手部姿勢的示意圖。在圖1的頂部中所示的示例中,用戶100坐在桌子處,在顯示屏104的前面做出手部姿勢,在顯示屏104上是圖像采集設備102。在該示例中,根據(jù)3d手模型和用戶的手的跟蹤姿勢,在顯示屏104上繪制手的圖像。然而,這僅是示例并且跟蹤的姿勢可以被用于其他任務,諸如控制圖形用戶接口、增強現(xiàn)實應用、視頻游戲和其他。
在圖1的中部所示的示例中,用戶站立并且在地板上的圖像采集設備102上做出手部姿勢。在圖1的下部中所示的示例中,用戶坐在桌子處,并且圖像采集設備102在用戶100的肩膀上。
用戶的手具有許多自由度,可以進行各種復雜的姿勢,存在遮擋的問題并且具有許多局部形狀相似性。在此所描述的手動跟蹤器的各種示例具有恢復的手動姿勢中的改進的準確度。例如,通過使用其中預測引擎能夠根據(jù)單個幀(如果需要的話)預測手部姿勢上的分布的新處理管線。先前的方法尚未預測手部姿勢上的分布。術語“手部姿勢”在此用于指代手部以及手部的多個連接角的全局位置和全局定向。例如,手部姿勢可以包括10或超過20個自由度,這取決于使用的手模型的細節(jié)和復雜性。通過使得預測引擎能夠在每幀基礎上根據(jù)單個幀操作,與先前的方法相比較,提高了魯棒性。這是因為預測引擎能夠在沒有跟蹤歷史的情況下從單個幀來預測全自由度手部姿勢。術語“魯棒性”在此用于意指根據(jù)出于各種原因發(fā)生的跟蹤故障而恢復得好的能力。例如,突然的手部運動、由其他對象(諸如另一只手、咖啡杯、用戶的頭發(fā)、照明條件的改變和其他)造成的手的遮擋。
根據(jù)單個幀(如果需要的話)預測手部姿勢上的分布不是簡單的。在各種示例中,這通過將預測過程分解為階段或?qū)蛹墝崿F(xiàn)。例如,通過預測第一階段中的全局旋轉倉上的分布,并且然后預測第二階段中的進一步的分布。進一步的分布可以是旋轉的四元數(shù)角表示、平移偏移、以及特定姿勢分類內(nèi)的姿勢上的分布。對于機器學習系統(tǒng)而言,通過使用分層方法管理和降低預測手部姿勢上的分布的存儲器和計算資源的量。這樣,手動跟蹤器對于實際的應用(諸如對于臺式計算機、移動電話、平板計算機和其他操作環(huán)境)是可行的。在一些示例中,還通過在不同的層處使用專用類型的機器學習系統(tǒng)實現(xiàn)效率和存儲器節(jié)省。在一些示例中,特別地有效的方法已經(jīng)被發(fā)現(xiàn)在預測引擎的第一層處使用蕨類(fern)并且在預測引擎的第二層處使用叢林。
在各種示例中,預測引擎與隨機優(yōu)化器組合被用于給出改進的準確度。隨機優(yōu)化器是搜索問題的解的迭代過程,其中迭代過程使用隨機生成的變量。例如,手部的候選姿勢池由隨機優(yōu)化器迭代地被提煉,并且來自所預測的姿勢上的分布的樣本用于替換候選姿勢池中的值。這樣,遍及各種各樣的人類手部姿勢和運動已經(jīng)發(fā)現(xiàn)手部姿勢準確度中的改進。
在一些示例(諸如圖1中所述的那些示例)中,用戶能夠在任意的方向(不僅朝向傳感器)上指手指并且手部姿勢可以仍然被準確地跟蹤。這可以通過將預測引擎配置為預測姿勢上的分布而實現(xiàn),如上文所提到的并且如下面的示例中更詳細地描述的。預測引擎還使得手動跟蹤器能夠針對采集設備102布置(諸如圖1中所圖示的那些或其他)成功地工作。預測引擎還可以使得手動跟蹤器在存在采集設備的運動和/或全身體運動的情況下成功地工作。
在各種示例中,手動跟蹤器是利用來自單個采集設備的數(shù)據(jù)可操作的,其給出成本節(jié)省、空間節(jié)省和使用多個采集設備的先前的系統(tǒng)上的簡單性的益處。在一些示例中(諸如在使用飛行時間深度傳感器的情況下),距在其內(nèi)可以準確地跟蹤手部姿勢的距離的范圍是大約10厘米到數(shù)米,其是比許多先前的方法大得多的范圍。在一些示例中,手動跟蹤器是實時可操作的。
在圖1中所示的示例中,采集設備102通過無線連接或有線連接與手部/身體跟蹤器202通信。在一些示例中,手部/身體跟蹤器202被定位在云中并且作為云服務被提供給本地于用戶100的計算設備,諸如pc、平板計算機、移動電話、游戲系統(tǒng)或其他終端用戶設備。
圖2是計算機實現(xiàn)的手部/身體跟蹤器202的示意圖。手部/身體跟蹤器202將來自至少一個采集設備102的一個或多個圖像流200當作輸入。采集設備102能夠采集一個或多個圖像流。例如,采集設備102包括任何適合的類型(諸如飛行時間、結構化光、立體、散斑去相關)的深度照相機。在一些示例中,補充或者取代深度照相機,采集設備102包括彩色(rgb)視頻照相機。例如,來自彩色視頻照相機的數(shù)據(jù)可以用于計算深度信息。在一些示例(其中采集設備102是飛行時間傳感器)中,在其上使用在此所描述的示例準確地跟蹤手部姿勢的距離的范圍被發(fā)現(xiàn)是特別大的。對手部/身體跟蹤器的圖像流200輸入包括圖像幀數(shù)據(jù),諸如針對彩色幀的紅、綠和藍通道數(shù)據(jù)、來自結構化光傳感器的深度值、針對來自飛行時間傳感器的幀的相位數(shù)據(jù)的三個通道、來自立體照相機的立體圖像對、來自散斑去相關傳感器的散斑圖像。
手部/身體跟蹤器202產(chǎn)生跟蹤的手(或者身體)姿勢值218的流作為輸出。姿勢可以被表達為值的向量(或其他格式),針對姿勢的每個自由度的一個向量被跟蹤。例如,10或更多個或20或更多值。在一個示例中,姿勢向量包括針對全局旋轉分量的3個自由度、針對全局平移分量的3個自由度和針對多個聯(lián)合轉換的每個聯(lián)合轉換的4個自由度??梢栽诳梢曰蚩梢圆辉跇嬙焐嫌行У氖值倪\動模型中指定聯(lián)合轉換。
在一些示例中,手部/身體跟蹤器202將輸出發(fā)送到顯示器104(諸如圖1中所示的顯示器),盡管這不是必要的。輸出可以包括從根據(jù)用戶的手部的當前跟蹤的姿勢的3d手模型被跟蹤、繪制的手部合成圖像。
在一些示例中,手部/身體跟蹤器202將跟蹤的手部姿勢218發(fā)送到下游應用或裝置220,諸如游戲系統(tǒng)222、導航系統(tǒng)224、增強現(xiàn)實系統(tǒng)226、自然用戶接口228。這些僅是示例并且可以使用其他下游應用或者裝置。下游應用或者裝置220能夠使用跟蹤的手部姿勢218以控制和/或更新下游應用或者裝置。
手部/身體跟蹤器202是計算機實現(xiàn)的。在一些示例中,手部/身體跟蹤器的全部或一部分與采集設備102被集成。手部/身體跟蹤器202包括感興趣區(qū)域部件204、預測引擎206、隨機優(yōu)化器208、保持3d模型或者具有對3d模型210的訪問的存儲器、渲染器212、保持候選姿勢214的存儲器和初始化器/更新器部件216。
感興趣區(qū)域部件204處理圖像數(shù)據(jù)以提取描繪用戶的手部或身體的前景區(qū)域。可以使用任何眾所周知的前景提取技術。例如,前景提取技術可以使用由采集設備102采集的彩色圖像中的彩色信息,以檢測和跟蹤描繪用戶的手部的圖像元素。
如上文所提到的,預測引擎206包括可以被布置在分層結構中的機器學習技術。預測引擎206將由感興趣區(qū)域部件204所標識的感興趣區(qū)域圖像元素當作輸入。預測引擎計算手部或身體姿勢上的分布。參考圖3至圖5更詳細地描述了圖像引擎。
隨機優(yōu)化器208可以是粒子群優(yōu)化器、遺傳算法過程、粒子群優(yōu)化器和遺傳算法過程的混合、或者迭代地提煉候選姿勢池214的任何其他隨機優(yōu)化器。粒子群優(yōu)化器是通過迭代地嘗試以考慮其他候選解(群中的粒子)的方式改進候選方案搜索問題的解的方式。候選解(被稱為粒子)的解根據(jù)數(shù)學公式在搜索空間中到處移動。每個粒子的移動由其局部最好已知位置影響,而且被引導朝向搜索空間中的最好已知位置,其根據(jù)更好的位置由其他粒子找到而更新。這被期望朝向最好解移動群。遺傳算法過程是通過使用繼承、拼接和由演變所激發(fā)的其他技術生成候選解搜索問題的解的方式。
下面參考圖8給定可以使用的隨機優(yōu)化器208的示例。然而,可以使用其他隨機優(yōu)化器。
可以使用圖形處理單元或者任何其他適合的技術來實現(xiàn)渲染器212??梢允褂萌魏伪娝苤匿秩酒?,其能夠使用跟蹤的姿勢218根據(jù)3d模型210繪制合成圖像。在一些示例中,盡管可以使用其他類型的3d模型,但是3d模型是基礎姿勢中的手部或身體的三角網(wǎng)格模型。
初始化器/更新器216行動以初始化候選姿勢池214或者更新候選姿勢池214。參考圖6描繪了由該部件所執(zhí)行的示例方法。
備選地或者附加地,可以至少部分通過一個或多個硬件邏輯組件執(zhí)行手部/身體跟蹤器的功能。例如,并且非限制性地,可以使用的說明性類型的硬件邏輯組件包括:現(xiàn)場可編程門陣列(fpga)、專用集成電路(asic)、專用標準產(chǎn)品(assp)、芯片上系統(tǒng)(soc)、復雜可編程邏輯設備(cpld)、圖形處理單元(gpu)。
圖3是預測引擎(諸如圖2的預測引擎)的示意圖。在該示例中,預測引擎206具有分層架構,其包括作為全局旋轉分類器302的第一層和包括經(jīng)訓練的專家的第二層。經(jīng)訓練的專家是在該情況下專用于姿勢的全局旋轉值的子集的經(jīng)訓練的機器學習系統(tǒng)。預測引擎206將感興趣區(qū)域像素300當作輸入并且產(chǎn)生姿勢314上的分布作為輸出。
在示例中,全局旋轉分類器302計算全局旋轉倉上的分布。例如,給定感興趣區(qū)域,其計算指定的多個全局旋轉倉上的分布(諸如直方圖),其中分布表達感興趣區(qū)域中所描繪的手部或身體的姿勢具有落到倉中的全局旋轉的可能性。
可以使用任何適合的數(shù)目的全局旋轉倉。在示例中,通過將全局旋轉統(tǒng)一地量子化為指定數(shù)目的倉(諸如128或者任何其他數(shù)目的倉)來指定倉。
在一些示例中,通過統(tǒng)一地在3d旋轉的空間上采樣并且使用任何眾所周知的聚類方法對樣本進行聚類來計算全局旋轉倉。該方法已經(jīng)被發(fā)現(xiàn)為給出特別好的手動跟蹤結果。
在示例中,使用四元數(shù)來計算3d旋轉的空間上的樣本,其中四元數(shù)旋轉是表示所有可能3d旋轉集的單位長度的4d向量。許多隨機四元數(shù)樣本根據(jù)單位球面被計算并且使用k-means聚類或者另一眾所周知的聚類方法被聚類。
然而,不是必須使用如上文所描述的四元數(shù)。其他方法是可能的,其中通過使用以特定的方式圍繞全局旋轉4d單位球面移動的計算過程來根據(jù)單位球面來計算粗略地統(tǒng)一地間隔的四元數(shù)樣本。在該方法中,不需要計算聚類。
訓練包括圖像的數(shù)據(jù),旋轉倉對用于訓練全局旋轉分類器302??梢允褂萌魏芜m合類型的分類器,諸如隨機森林、決策叢林、有區(qū)別的蕨類集成、神經(jīng)網(wǎng)絡、支持向量機或其他。
各種不同的類型的分類器的經(jīng)驗主義調(diào)查研究已經(jīng)發(fā)現(xiàn)手部姿勢以特別高的速度并且以其中使用有區(qū)別的蕨類集成的高準確度被跟蹤。例如,具有深度13的50個蕨類的區(qū)別的蕨類集成以高速度(6毫秒)提供好的分類準確度。
隨機森林包括多個決策樹,其各自具有根節(jié)點、多個分叉節(jié)點和多個葉節(jié)點。在測試時間處(當先前未看到的示例被應用到已經(jīng)訓練的隨機森林時),可以通過在其中在每個分叉節(jié)點處做出決策的過程中將圖像的圖像元素通過隨機決策森林的樹從根推動到葉節(jié)點。根據(jù)圖像元素的特性和由分叉節(jié)點處的參數(shù)所指定的空間偏移從其位移的測試圖像元素的特性,來做出決策。在分叉節(jié)點處,圖像元素向下轉到下一級樹,根據(jù)決策的結果所選擇分支。隨機決策森林可以使用回歸或分類。在訪問訓練期間,到達來自森林中的每個樹的一個葉節(jié)點并且將數(shù)據(jù)存儲在那些葉節(jié)點處。例如,該數(shù)據(jù)包括以聚集的形式的標記的訓練數(shù)據(jù)。從每個樹找到的葉節(jié)點數(shù)據(jù)可以被聚集以產(chǎn)生最后的結果。
在訓練期間,參數(shù)值(還被稱為特征)被學習用于在分叉節(jié)點處使用并且數(shù)據(jù)被積累在葉節(jié)點處。例如,包括標記的圖像的訓練數(shù)據(jù)通過樹被傳遞,并且根據(jù)分叉節(jié)點測試參數(shù)處理分叉節(jié)點處的訓練數(shù)據(jù)多么好,來在每個分叉節(jié)點處(根據(jù)隨機地生成的可能性)選擇分叉節(jié)點測試參數(shù)。信息增益準則或其他眾所周知的準則可以用于評估分叉節(jié)點測試參數(shù)如何有效地處理分叉節(jié)點處的訓練數(shù)據(jù)。
除了多個分叉節(jié)點被合并在一起之外,決策叢林是被配置用于隨機決策森林的多個有向無環(huán)圖。也就是說,不是如在隨機決策森林中的二叉樹,叢林的個體成員是有向無環(huán)圖。
有區(qū)別的蕨類集成是包含由索引值索引的聚集的訓練數(shù)據(jù)的多個查找表,其中聚集的訓練數(shù)據(jù)(諸如在圖像分類的情況下的圖像標記)和索引值在訓練階段期間被學習。在測試時間處,索引值根據(jù)未看到的示例(諸如圖像或者圖像元素的分片)(在不需要遍歷有向無環(huán)圖或者決策樹的情況下)被計算并且用于從集成中的每個蕨類表查找聚集的訓練數(shù)據(jù)。從每個蕨類表所查找的數(shù)據(jù)被聚集以計算輸出預測,諸如分類標記上的分布(在分類任務的情況下)。有區(qū)別的蕨類集成用于分類或者回歸任務。
專家選擇器304使用全局旋轉分類器302的輸出來從組成預測引擎206的第二階段的大量的經(jīng)訓練的專家306選擇多個經(jīng)訓練的專家。在示例中,選擇三個經(jīng)訓練的專家:旋轉回歸量308、平移回歸量310和姿勢分類器312。例如,存在針對每個全局旋轉倉的三個經(jīng)訓練的專家。在存在128個全局旋轉倉的情況下,這給定128×3=384個經(jīng)訓練的專家。專家選擇器304從全局旋轉分類器獲得全局旋轉倉上的分布并且其使用該信息來選擇一個或多個全局旋轉倉。對于所選擇的每個全局旋轉倉,存在(例如)三個經(jīng)訓練的專家,并且感興趣區(qū)域像素被推送到那些經(jīng)訓練的專家中。在示例中,專家選擇器304從全局旋轉分類器選擇全局旋轉倉上的分布中的前五個排名的全局旋轉倉。
由于因此許多經(jīng)訓練的專家306存在于預測引擎206的第二階段中,因而有限的存儲器和處理資源處于壓力。對機器學習技術的類型的仔細選擇使得大量的經(jīng)訓練的專家306能夠被容納在實際的工作方案中。例如,決策叢林用于實現(xiàn)經(jīng)訓練的專家306。
在示例中,旋轉回歸量308使用對四元數(shù)的高斯熵估計而被訓練,通過選擇最接近姿勢聚類中心的符號來求解四元數(shù)符號。由于姿勢聚類器占據(jù)單位4球面的相對小的區(qū)域,因而高斯模型是合理的適合。
在示例中,平移回歸器310是將高斯熵估計用作分叉準則而訓練的偏移回歸叢林。
在示例中,姿勢分類器312被訓練以將圖像元素分類為多個手部姿勢分類(諸如打開的、平坦的、半開的、閉合的、指向的、捏著的)。實驗工作已經(jīng)發(fā)現(xiàn)這些六個手部姿勢分類給出好的結果;盡管也可以使用其他手部姿勢分類。
在一些示例中,姿勢分類器312由姿勢回歸量替換,其回歸針對手指接合的接合旋轉。在一些示例中,使用姿勢分類器312和姿勢回歸量二者。
圖4是圖3的預測引擎處的方法的第一部分的流程圖。在該示例中,預測引擎的第一階段被使用并且包括已經(jīng)被訓練的有區(qū)別的蕨類集成(也即,圖4的方法是其中先前未由跟蹤器看到的新幀或幀的圖像正被處理的測試時間過程)。感興趣區(qū)域400從感興趣區(qū)域部件被輸入到過程。根據(jù)感興趣區(qū)域像素計算402比特向量。例如,通過針對感興趣區(qū)域的個體像素(例如,感興趣區(qū)域的像素的子集)計算像素周圍的分片中的成對像素比較來計算比特向量。在一些示例中,使用像素對的隨機選擇??梢允褂每捎孟袼貙Φ淖蛹?。每個比較的結果可以被表達為0或者1的單個比特值。例如,比較可以是測試,諸如“是大于像素2處的像素1處的深度值”或者“是大于像素2處的像素1處的紅外強度值”或者“是大于像素2處的像素1處的平均亮度值”。對于每個蕨類和像素而言,存在計算的k個比特并且這些比特可以以k維比特向量中被表示。比特數(shù)k是根據(jù)應用域并且根據(jù)準確度/速度折衷設置而被選擇。閾值化過程或者heaviside函數(shù)可以被應用到比特向量以便移除由于噪聲而導致的小振蕩的影響。這導致許多比特向量。每個蕨類產(chǎn)生針對感興趣區(qū)域的每個像素的一個比特向量。
每個比特向量用于訪問來自蕨類表404的權重并且權重被添加到分類得分。(在訓練階段期間,蕨類表被創(chuàng)建并且利用權重進行填充)。針對來自感興趣區(qū)域的更多圖像元素以及針對集成407中的更多蕨類,重復414步驟400到步驟406的過程。因此,有區(qū)別的蕨類集成輸出全局旋轉聚類408上的分布,其被用于所選擇的專家410。感興趣區(qū)域像素被輸入到所選擇的專家。
在訓練期間,蕨類表被創(chuàng)建并且利用權重進行填充。例如,訪問包括被標記有全局旋轉倉的感興趣區(qū)域的訓練數(shù)據(jù)。根據(jù)標記的感興趣區(qū)域來計算比特向量,如上文所描述的。聚合來自個體蕨類的比特向量。例如,通過采用平均、中值、模式或者以任何其他方式。在一些示例中,以考慮在感興趣區(qū)域中關于彼此的像素的位置的方式來完成聚合。例如,通過將感興趣區(qū)域分為子區(qū)域并且計算子區(qū)域上的比特向量的直方圖。蕨類直方圖的連結被標記有針對分類器(諸如線性分類器)的訓練數(shù)據(jù)。在分類器的訓練期間學習的分類器的權重是被存儲在蕨類表中的權重。可以使用任何眾所周知的分類器,諸如支持向量機。
圖5是預測引擎的第二層處的、圖4的測試時間過程的第二部分的流程圖。來自感興趣區(qū)域的圖像元素被推送通過旋轉回歸量叢林500、偏移平移回歸量叢林508和姿勢分類叢林514。這些過程可以并行或串行操作。
旋轉回歸器叢林計算對姿勢的全局旋轉分量的四元數(shù)角表示上的分布502。偏移平移回歸量叢林計算平移偏移510上的分布(來自由對根連接(例如,腕)的分類器處理的圖像元素的偏移)。姿勢分類器計算姿勢分類516上的分布。
可以根據(jù)由旋轉回歸量叢林和偏移平移回歸量叢林所計算的分布取得樣本504、512。這些樣本用于形成輸出姿勢向量506的一部分。姿勢分類使用姿勢分類上的分布被選擇518并且被用于訪問520針對分類的預指定的姿勢分布。該預指定的分布被采樣522以獲得進入輸出姿勢向量506的值。
預指定的姿勢分布各自是具有對應于姿勢分類名稱(諸如打開的、平坦的、半開的、閉合的、指向的、捏著的)的平均形狀的姿勢空間的子集和定義可以根據(jù)模型繪制的姿勢集的隨機化規(guī)則集的一般性模型。這些是可以使用的姿勢分類的示例。然而,可以使用其他姿勢分類。
圖6是初始化或更新候選姿勢池的方法的流程圖??梢酝ㄟ^初始化器/更新器216執(zhí)行該方法。在其中根據(jù)先前幀可用的姿勢可用的情況中,該姿勢被擾亂600以創(chuàng)建被存儲在候選606池中的候選姿勢值。可以省略步驟600(例如,在來自先前幀的姿勢不可用的情況下)。樣本從由預測引擎所計算的姿勢分布被取得602并且用于初始化候選606池和/或替換池中的不好的評分候選。評分部件被用于計算得分,如下面更詳細地描述的。使用隨機優(yōu)化器來提煉604池中的候選。例如,如參考圖8所解釋的??梢暂敵鲎詈迷u分姿勢608。
圖7是可以通過隨機優(yōu)化器或者人/身體姿勢跟蹤器202的其他部件中的任一個來執(zhí)行的評分過程的流程圖。姿勢和感興趣區(qū)域700被輸入到評分過程。姿勢由渲染器212用于繪制702來自3d模型210的合成深度圖像704。合成深度圖像與感興趣區(qū)域相比較以計算706得分并且輸出708得分。渲染器可以考慮遮擋。
比較過程可以包括計算圖像像素上的、經(jīng)繪制的圖像與所觀察的圖像之間的絕對或者平方差的總和。在一些示例中,該總和使得魯棒的懲罰項(諸如geman-mcclure或者cauchy)應用于幫助降低異常值的影響。還可以使用其他類型的比較過程。
圖8是在隨機優(yōu)化器是粒子群優(yōu)化器和遺傳算法的混合的情況下隨機優(yōu)化器處的示例方法的流程圖。在該示例中,隨機優(yōu)化器使用拼接,其是一種類型的遺傳算法過程。隨機優(yōu)化器還使用池中的候選解來影響池中的其他候選解,其是一種類型的粒子群優(yōu)化過程。然而,這些僅是示例并且遺傳算法和粒子群過程的其他特征可以組合在混合中。
隨機優(yōu)化器維持粒子群體(候選解池各自具有相關聯(lián)的感興趣區(qū)域),并且并行對群體評價上文所描述的評分功能,這產(chǎn)生針對每個候選解的得分。每個這樣的評價包括一代。實驗發(fā)現(xiàn),考慮到當前粒子對過程的性能產(chǎn)生大的影響,如何填充下一代。圖8的特定過程被發(fā)現(xiàn)給出好的結果,雖然也可以使用其他類型的隨機優(yōu)化過程。
當前候選800池用于計算個體粒子802的得分。這導致值的元組,每個元組包括得分、姿勢和感興趣區(qū)域。執(zhí)行每代重新隨機化過程804。這包括調(diào)節(jié)池中的粒子的50%的姿勢。重新隨機化的粒子可以使其年齡設定806到最大年齡值。
針對已經(jīng)到達第三代的任何粒子做出808檢查。尚未到達其第三代的粒子保持在候選池中并且在過程中繼續(xù)。已經(jīng)到達其第三代的粒子進入第二重新隨機化過程810。在第二重新隨機化過程中,由從由預測引擎所計算的姿勢分布所采樣的姿勢來替換粒子的第一部分。粒子的第二部分經(jīng)受局部隨機擾動。粒子的第三部分經(jīng)受拼接操作,其中隨機粒子選自粒子的排名第一的子集并且當前粒子根據(jù)所選擇的粒子來重寫姿勢參數(shù)的子集。重新隨機化的粒子可以使其年齡設定到零。
在其中粒子具有年齡并且年齡被設定為在步驟806和步驟810中上文所描述的情況下,圖8的過程將給定年齡內(nèi)的所有粒子視為獨立群。這將具有不同的年齡的候選姿勢視為在不同的候選姿勢池中。然后,通過降低跨越姿勢參數(shù)(諸如全局旋轉參數(shù))的內(nèi)插改進準確度。然而,考慮粒子年齡不是必要的。
圖9圖示了可以被實現(xiàn)為計算和/或電子設備的任何形式并且在其中可以實現(xiàn)運動手部/身體跟蹤器的實施例的示例性的基于計算的設備904的各種部件。例如,移動電話、平板計算機、膝上型計算機、個人計算機、web服務器、云服務器。
基于計算的設備904包括一個或多個處理器900,其可以是微處理器、控制器、或者用于處理計算機可執(zhí)行指令以控制設備的操作以便實時準確地跟蹤手部或身體的姿勢的任何其他適合的類型的處理器。在一些示例中,例如在使用片上系統(tǒng)架構的情況下,處理器900可以包括以硬件(而不是軟件或固件)實現(xiàn)圖4至圖8中的任一附圖的方法的一部分的一個或多個固定功能塊(還被稱為加速器)。包括操作系統(tǒng)913的平臺軟件或者任何其他適合的平臺軟件可以被提供在基于計算的設備處以使得應用軟件916能夠在設備上被執(zhí)行。數(shù)據(jù)存儲庫920存儲候選姿勢、感興趣區(qū)域、圖像數(shù)據(jù)、跟蹤的姿勢和/或其他數(shù)據(jù)。手部/身體跟蹤器918包括用于執(zhí)行圖4至圖8中的任一附圖的方法的一部分的指令。
可以使用由基于計算的設備904可訪問的任何計算機可讀介質(zhì)來提供計算機可執(zhí)行指令。計算機可讀介質(zhì)可以包括例如計算機存儲介質(zhì)912(諸如存儲器和通信介質(zhì))。計算機存儲介質(zhì)(諸如存儲器912)包括在任何方法或技術中實現(xiàn)的易失性和非易失性、可移除和不可移除介質(zhì),以用于信息(諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊或其他數(shù)據(jù))的存儲。計算機存儲介質(zhì)包括但不限于ram、rom、eprom、eeprom、閃速存儲器或其他存儲器技術、cd-rom、數(shù)字多用光盤(dvd)或其他光學存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其他磁性存儲設備或可以被用于存儲信息以用于由計算設備訪問的任何其他非傳輸介質(zhì)。相反,通信介質(zhì)可以實現(xiàn)計算機可讀指令、數(shù)據(jù)結構、程序模塊、調(diào)制數(shù)據(jù)信號(諸如載波或其他傳輸機制)中的其他數(shù)據(jù)。如在此所定義的,計算機存儲介質(zhì)不包括通信介質(zhì)。因此,計算機存儲介質(zhì)不應當被解釋為是傳播信號自身。傳播信號可以存在于計算機存儲介質(zhì)中,但是傳播信號自身不是計算機存儲介質(zhì)的示例。雖然計算機存儲介質(zhì)(存儲器912)被示出在基于計算的設備904內(nèi),但是將理解到,可以經(jīng)由網(wǎng)絡或其他通信鏈路(例如,使用通信接口913)分布或遠程定位并且訪問存儲裝置。
基于計算的設備904還包括輸出接口910,其被布置為將顯示信息輸出給可以與基于計算的設備904分離或集成到基于計算的設備904的顯示設備104。例如,在平板計算機的情況下,顯示設備104與基于計算的設備集成。顯示信息可以提供圖形用戶接口。輸入接口902還被布置為接收并且處理來自一個或多個設備(諸如用戶輸入設備(例如鼠標907、鍵盤906、游戲控制器905))和來自上文所描述的采集設備102的輸入。在一些示例中,用戶輸入設備可以檢測語音輸入、用戶手勢或其他用戶動作并且可以提供自然用戶接口(nui)。在實施例中,如果其是觸敏顯示設備,則顯示設備104還可以充當用戶輸入設備。輸出接口910還可以將數(shù)據(jù)輸出到了除顯示設備之外的設備(例如,本地連接打印設備)。
輸入接口902、輸出接口910、顯示設備104和用戶輸入設備中的任一個可以包括nui技術,其使得用戶能夠以自然的方式與基于計算的設備相互作用、免于由輸入設備(諸如鼠標、鍵盤、遙控器等)強加的人工約束。可以被提供的nui技術的示例包括但不限于:依賴于語音和/或語言識別、觸摸和/或觸針識別(觸敏顯示器)、屏幕上和屏幕附近二者的手勢識別、空中手勢、頭部和眼部跟蹤、語音和語言、視覺、觸摸、手勢和機器智能的那些nui技術。可以使用的nui技術的其他示例包括:意圖和目標理解系統(tǒng)、使用深度照相機的運動手勢檢測系統(tǒng)(諸如立體照相機系統(tǒng)、紅外照相機系統(tǒng)、rgb照相機系統(tǒng)和這些的組合)、使用加速度計/陀螺儀的運動手勢檢測、面部識別、3d顯示、頭部、眼睛和視線跟蹤、用于使用電場感測電極來感測腦部活動的沉浸式增強現(xiàn)實和虛擬現(xiàn)實系統(tǒng)和技術(eeg和相關方法)。
在示例中,存在一種跟蹤手部或身體的姿勢的方法,包括:
接收描繪手部或身體的圖像的流;
將圖像之一的至少一部分輸入到預測引擎以獲得手部或身體的姿勢上的分布;
訪問手部或身體的候選姿勢池并且使用隨機優(yōu)化器迭代地提煉候選姿勢;以及
利用來自手部或身體的姿勢上的分布的樣本周期性地替換池中的候選姿勢的子集。
在示例中,方法包括利用來自手部或身體的姿勢上的分布的樣本來初始化候選姿勢池。
在示例中,方法包括將圖像之一的至少一部分輸入到預測引擎包括:將圖像之一的所述至少一部分輸入到預測引擎的多個層。
在先前的段落中所描述的實施例還可以組合將圖像之一的至少一部分輸入到預測引擎的、包括分類器的第一層,其被布置為計算姿勢的全局旋轉分類上的分布。
在示例中,將圖像之一的至少一部分輸入到預測引擎包括:將圖像之一的至少一部分輸入到預測引擎的第一層,并且從第一層接收結果,并且將圖像之一的至少一部分輸入到預測引擎的第二層的一部分,并且第二層的所述部分使用結果而被選擇。
上文緊接地段落中的示例可以包括將圖像之一的至少一部分輸入到預測引擎的、包括有區(qū)別的蕨類集成的第一層。
以上示例可以包括將圖像之一的至少一部分輸入到預測引擎包括將圖像之一的至少一部分輸入到預測引擎的、包括分類器的第一層,以及輸入到預測引擎的、包括多個決策叢林的第二層。
在一些示例中,使用隨機優(yōu)化器迭代地提煉候選姿勢包括:通過做出本地隨機擾動/或利用來自另一姿勢候選的參數(shù)替換姿勢候選的參數(shù)的子集來隨機地調(diào)節(jié)候選姿勢的子集的姿勢。
在一些示例中,使用隨機優(yōu)化器包括:向每個候選姿勢分配年齡,如果候選姿勢被隨機地調(diào)節(jié)則遞增年齡,并且將具有不同年齡的候選姿勢視為不同的候選姿勢池中。
在一些示例中,使用隨機優(yōu)化器包括:通過考慮遮擋的方式繪制來自3d手部或身體模型的合成圖像來計算池的候選姿勢的得分。
在示例的一個或多個中,描繪手部或身體的圖像流從移動采集設備被接收。
在示例中,描繪手部或身體的圖像流從定位用戶的肩膀上的采集設備被接收。
在示例中,多個決策叢林包括旋轉回歸量、平移回歸量以及姿勢分類器。
一些示例包括通過使用針對多個姿勢分類的每個姿勢分類的姿勢上的預指定的分布來計算樣本。
在示例中,被存儲在計算機可讀介質(zhì)上的計算機程序執(zhí)行上文所描述的方法中的任一種方法。
在示例中,一種手部或身體姿勢跟蹤器,包括:
輸入接口,其被布置為接收描繪手部或身體的圖像;
處理器,其被布置為將圖像的至少一部分輸入到預測引擎以獲得手部或身體的姿勢上的分布;
隨機優(yōu)化器,其被布置為訪問手部或身體的候選姿勢池并且迭代地提煉候選姿勢;
處理器,其被布置為利用來自手部或身體的姿勢上的分布的樣本來周期性地替換池中的候選姿勢的子集。
在示例中,上文緊接地所描述的手部或身體姿勢跟蹤器包括至少部分在平行處理單元上實現(xiàn)的渲染器,被配置為將渲染器用作評分過程的一部分的隨機優(yōu)化器。
在示例中,手部或身體姿勢跟蹤器包括預測引擎,預測引擎具有分層架構。
在示例中,手部或身體姿勢跟蹤器包括預測引擎,預測引擎具有包括全局旋轉分類器的第一層。
在示例中,手部或身體姿勢跟蹤器包括預測引擎,預測引擎具有作為決策叢林的多個經(jīng)訓練的專家。
在示例中,存在一種計算機可讀介質(zhì),其存儲指令,指令當由計算設備執(zhí)行時控制設備:
接收描繪用戶的手部的圖像的流;
將圖像之一的至少一部分輸入到分層預測引擎以獲得手的姿勢上的分布;
訪問手部或身體的候選姿勢池并且使用隨機優(yōu)化器來迭代地提煉候選姿勢;以及
利用來自手部或身體的姿勢上的分布的樣本來周期性地替換池中的候選姿勢的子集。
術語“計算機”或“基于計算的設備”在此用于指代具有處理能力的任何設備,使得其可以執(zhí)行指令。本領域的技術人員將認識到,這樣的處理能力被并入許多不同的設備中并且因此術語“計算機”和“基于計算的設備”各自包括pc、服務器、移動電話(包括智能電話)、平板計算機、機頂盒、媒體播放器、游戲控制臺、個人數(shù)字助理和許多其他設備。
在此所描述的方法可以由以有形存儲介質(zhì)上的機器可讀形式(例如,以包括適于當程序被運行在計算機上時并且在計算機程序可以被實現(xiàn)在計算機可讀介質(zhì)上的情況下執(zhí)行在此所描述的方法中的任一方法的所有步驟的計算機程序代碼裝置的計算機程序的形式)由軟件實現(xiàn)。有形存儲介質(zhì)的示例包括包含計算機可讀介質(zhì)(諸如磁盤、拇指驅(qū)動器、存儲器等)的計算機存儲設備,并且不包括傳播信號。傳播信號可以存在于有形存儲介質(zhì)中,但是傳播信號自身不是有形存儲介質(zhì)的示例。軟件可以適于在并行處理器或串行處理器上執(zhí)行,使得可以以任何適合的順序或同時地執(zhí)行方法步驟。
這確認軟件可以是有價值的可分離地交易的商品。其旨在涵蓋在“無聲”或標準硬件上運行或控制“無聲”或標準硬件以執(zhí)行期望功能的軟件。其還旨在涵蓋“描述”或定義硬件的配置的軟件(諸如hdl(硬件描述語言)軟件),如被用于設計硅片或用于將通用可編程芯片配置為執(zhí)行期望功能。
本領域的技術人員將認識到,用于存儲程序指令的存儲設備可以跨網(wǎng)絡分布。例如,遠程計算機可以存儲被描述為軟件的過程的示例。局部或終端計算機可以訪問遠程計算機并且下載軟件的一部分或全部來運行程序。備選地,本地計算機可以根據(jù)需要下載軟件,或者在本地終端處執(zhí)行一些軟件指令或在遠程計算機(或計算機網(wǎng)絡)處執(zhí)行一些軟件指令。本領域的技術人員還將認識到,通過利用本領域的技術人員已知的常規(guī)技術,可以通過專用電路(諸如dsp、可編程邏輯陣列等)執(zhí)行軟件指令的全部或一部分。
在不損失所尋求的效果的情況下,可以延伸或更改本文給定的任何范圍或值,如對于技術人員而言將明顯的。
雖然已經(jīng)以特定于結構特征和/或方法動作的語言描述了主題,但是應理解到,所附的權利要求中定義的主題不必限于上文所描述的特定特征或動作。相反,上文所描述的特定特征和動作被公開為實現(xiàn)權利要求的示例形式。
將理解到,上文所描述的益處和優(yōu)點可以涉及一個實施例或可以涉及若干實施例。實施例不限于解決上述問題中的任何或全部的那些實施例或具有上述益處和優(yōu)點中的任何或全部的那些實施例。將進一步理解到,對“一”項的引用指代那些項中的一個或多個。
可以以任何適合的順序或在適當?shù)那闆r下同時地執(zhí)行在此所描述的方法的步驟。此外,在不脫離在此所描述的主題的精神和范圍的情況下,可以從方法中的任一方法刪除個體框。上文所描述的示例中的任一個示例的各方面可以與所描述的其他示例中的任一個的各方面組合,以在不損失所尋求的效果的情況下形成進一步的示例。
術語“包括”在此用于意指包括所標識的方法框或元素,但是這樣的框或元素不包括排他性列表并且方法或放置可以包含附加框或元素。
術語“子集”在此用于指代適當?shù)淖蛹?,使得集合的子集不包括集合的所有元?即,集合的元素中的至少一個元素將從子集丟失)。
將理解到,僅通過示例給出以上描述,并且可以由本領域的技術人員做出各種修改。以上說明書、示例和數(shù)據(jù)提供示例性實施例的結構和使用的完整描述。雖然上文已經(jīng)以一定程度上的特殊性或者參考一個或多個個體實施例描述各種實施例,但是在不脫離本說明書的精神或范圍的情況下,本領域的技術人員可以對所公開的實施例做出許多變型。