揭秘Kinect工作原理 微軟官方

2021-05-27 20:09:34 字數 3818 閱讀 4013

我們生活在乙個模擬的世界

傳統程式設計基於一系列的規則:原因和結果,非黑即白,非真即假。在為輸入輸出數目有限的簡單系統建模時,這種方式工作得挺好。拿遊戲《halo》來說 吧:按a鍵是讓士官長跳,前撥左搖桿讓他向前走,前撥右搖桿讓他向上看。不是a,就是b。可惜的是,我們生活的真實世界並不是如此數位化,而是模擬的。

在模擬世界中,並不是只有簡單的「是」和「否」,還有「也許是/否」;不僅有「對」和「錯」,還有「對/錯的可能性」。讓我們想象一下揮手這一簡單 動作的所有可能性:身體運動的幅度,環境差異,衣服質地的不同,文化差異造成的動作差異等等。你可能需要研究10的23次方這麼多的可能性,顯然用傳統編 程方式來解決這類問題是不現實的。

我們從一開始就知道必須採用一種全新的,接近於人腦工作的方式來解決這一問題。當你遇到乙個人的時候,你的大腦立即將注意力集中在他身上,並根據經 驗辨識出他的身份。這一過程並不是通過數百層的決策樹來實現,人腦就是知道。嬰兒很難區分出兩個人的不同,但我們通過多年的學習和訓練可以在幾分之一秒內 做到。事實上,你也許還能蠻準確地估摸出他們的年齡、性別、心情甚至個性。這也是讓我們成就為人類的原因之一。

kinect以類似的方法被創造出來。它觀察身邊的世界,它注意觀察你的動作。即使kinect從來沒見過你揮過手,也能很快地從它學習過的tb級資料中猜測出你所做動作的含義。

kinect感測器

kinect骨架追蹤處理流程的核心是乙個無論周圍環境的光照條件如何,都可以讓kinect感知世界的cmos紅外感測器。該感測器通過黑白光譜 的方式來感知環境:純黑代表無窮遠,純白代表無窮近。黑白間的灰色地帶對應物體到感測器的物理距離。它收集視野範圍內的每一點,並形成一幅代表周圍環境的 景深影象。感測器以每秒30幀的速度生成景深影象流,實時3d地再現周圍環境。如果你玩過pin point impression 3d針模玩具可能更容易理解這一技術——將你的手(或者臉,如果你願意的話)按壓在這種玩具上,就可以產生你身體某一部位的簡單3d模型。

尋找移動部位

kinect需要做的下一件事是尋找影象中較可能是人體的移動物體,就像人眼下意識地聚焦在移動物體上那樣。接下來,kinect會對景深影象進行畫素級評估,來辨別人體的不同部位。同時,這一過程必須以優化的預處理來縮短響應時間。

kinect採用分割策略來將人體從背景環境中區分出來,即從噪音中提取出有用訊號。 kinect可以主動追蹤最多兩個玩家的全身骨架,或者被動追蹤最多四名玩家的形體和位置。在這一階段,我們為每個被追蹤的玩家在景深影象中建立了所謂的 分割遮罩,這是一種將背景物體(比如椅子和寵物等)剔除後的景深影象。在後面的處理流程中僅僅傳送分割遮罩的部分,以減輕體感計算量。

kinect的大腦

真正的魔術在這裡發生。分割化玩家影象的每乙個畫素都被傳送進乙個辨別人體部位的機器學習系 統中。隨後該系統將給出了某個特定畫素屬於哪個身體部位的可能性。比如,乙個畫素有80%的機率屬於腳,60%的機率屬於腿,40%的機率屬於胸部。看起 來這時候我們就可以把機率最大的可能性當作結果,但這麼做未免太過武斷了。我們的做法是將所有的這些可能性輸入到接下來的處理流程中並且等到最後階段再做 判斷。

看了上面的介紹,你也許要問我們如何教會kinect辨識人體部位。開發這一人工智慧(被稱 為exemplar(模型)系統)可不是一件輕鬆的事情:數以tb計的資料被輸入到集群系統中來教會kinect以畫素級技術來辨認手、腳以及它看到的其 他身體部位。下圖就是我們用來訓練和測試exemplar的資料之一。

模型匹配:生成骨架系統

處理流程的最後一步是使用之前階段輸出的結果,根據追蹤到的20個關節點來生成一幅骨架系 統。kinect會評估exemplar輸出的每乙個可能的畫素來確定關節點。通過這種方式kinect能夠基於充分的資訊最準確地評估人體實際所處位 置。另外我們在模型匹配階段還做了一些附加輸出濾鏡來平滑輸出以及處理閉塞關節等特殊事件。

骨架追蹤系統的目標之一是為處理流程的各種輸出提供一種選單式的選擇介面。遊戲開發者可以選擇任意的系統部件組合來開發各種遊戲體驗。比如,你可以僅僅使用分隔對映來製造一些驚人的華麗效果(《your shape: fitness evolved》是乙個好例子)。

講到這裡,我們已經描繪出乙個可用於控制遊戲或娛樂的完全實時的體感系統。接下 來,arjun將介紹改進的xbox dashboard和kinect hub。他將向你展示這兩個使用者介面如何利用景深影象流和20關節骨架系統來創造一種基於自然手勢的,訪問遊戲、電影、**和其他娛樂活動的全新方式。

kinect:技術如何最終理解你!

前面kinect團隊專案經理ron已經描述了kinect感測器讓xbox實時追蹤玩家動 作背後的高深技術,但我們如何最佳地運用?我們的目標是讓玩家盡可能自如地控制xbox,同時讓所有使用者可以容易地學習並理解各種控制手勢。接下來我們會 更加深入地揭秘這一體感技術,並且談談在kinect hub和dashboard中的kinect體驗。

手勢:從何說起?

聽到我們要設計一種手勢來上下左右移動物體的時候,你也許會想:「沒難度啊,把你的手移到物體上,選中然後向你想要的方向移動,搞定!」

等下,別那麼自信。問問你的朋友他們是怎麼想的,你可能會驚訝地發現他們的回答和你是如此的 不同。是你的方式更好嗎?不一定,只是對你來說更有邏輯性。人類的獨特之處在於能通過多種方法來完成某一特定任務。讓我們拿駕駛來做例子。如果你讓100 個人來模仿如何開車,你可能會得到許多答案。有些人會將兩手分別握住面前的10點鐘和2點鐘位置,有些人可能會只用一手握住12點鐘位置,有些人可能會背 靠椅子坐著;同樣地,模仿腳踩油門、剎車和離合器的方式也會五花八門。所有這些方式都能讓我們駕駛,而技術的工作就是要能識別所有這些方式——讓技術理解 你!

那麼,識別乙個看似簡單動作有多複雜呢,拿伸手做例子。當你想伸手去拿什麼東西的時候,你會 認為伸手的方向應該完全垂直於身體平面。但實際上由於肩膀和手臂關節的結合方式,你不可能以直線方式伸手。因此,每個人都會以略為不同的方式做出乙個伸手 動作,但每個人都覺得這是乙個同樣的伸手動作。成功的手勢識別就是要理解人類動作的微妙之處,並且讓技術了解這些不同。

研發kinect這款革命性產品的過程中,我們既要戰勝上述挑戰還要讓產品易於使用。我們所做的每個決定都是人機互動領域史無前例的,我們的工作有可能將重新定義互動娛樂技術的未來。

手勢原型: 去粕取精

我們在為螢幕導航創造控制手勢時,採用了很常見的方法:記錄下了所有能想到的天馬行空的點子,比如用腳來選擇選單神馬的。當我們意識到這樣的點子實在太多了的時候,我們知道需要一種更靠譜的選擇方式。

我們收集並記錄下所有創意,並且一一製作出原型以檢驗那一種更適合普通使用者。和普通使用者進行 原型測試非常重要,我們因此學到了許多關於人體運動的資訊,並用於重新調整每次新測試。人機互動的現有規則並不總是適用於在客廳進行的10英吋距離上的體 感互動。通過測試我們更好地理解使用者行為,比如長時間做手勢時怎樣才舒服,以及我們創造的控制手勢集和人類自然手勢是否衝突。

在測試過程中,我們的理念是「不斷失敗,去粕取精」,我們不斷拋棄不合適的方案,保留有效方案。工程、使用者研究和設計團隊都充分參與到手勢集的原型製作過程中,並和普通使用者一起進行測試,根據所有獲取到的資料來決定最佳手勢。

在數月的測試、觀察和研究後,我們得到了一種簡單且容易理解的控制方式——懸停選擇和翻頁控制。懸停選擇是一種容易學習、高度可靠並且可**的機制,而翻頁控制提供了一種更有觸感的方式來控制螢幕內容。

讓我們通過xbox dashboard和kinect hub的實現方式來更加深入地談論這種控制模型的細節。

kinect hub: kinect體驗大本營!

kinect hub是xbox dashboard中的kinect體驗中心,在這裡你可以用手勢來訪問kinect內容。hub的設計簡單且容易理解,你可以注意到我們採用了巨大的顏色分明的專案方塊,讓使用者輕鬆地找到並選擇他們所想做的事。

新手必看,爬蟲工作原理大揭秘

大資料時代下,資料採集推動著資料分析,資料分析推動發展。但是在這個過程中會出現很多問題。拿最簡單最基礎的爬蟲採集資料為例,過程中就會面臨,ip被封,爬取受限 違法操作等多種問題,所以在爬去資料之前,一定要了解好預爬 是否涉及違法操作,找到合適的 ip訪問 等一系列問題。當然在真正去運用之前,我們應該...

儲存知識課堂(一) 磁碟工作原理揭秘

大多數永久性或半永久性電腦資料都是將磁碟上的一小片金屬物質磁化來實現。然後再將這些磁性圖可被轉換成原始資料。這便是磁儲存的原理也是這篇文章的主要內容。磁儲存的歷史 在磁儲存出現以前,初級電腦儲存介質是1890年herman hollerith發明的穿孔卡片。磁儲存的歷史可以回溯到1949年6月,一群...

搜尋引擎爬蟲工作原理 大揭秘

網路爬蟲即起此作用,它是搜尋引擎系統中很關鍵也根基礎的構件。這裡主要介紹與網路爬蟲相關的技術,儘管爬蟲技術經過幾十年的發展,從整體框架上已相對成熟,但隨著聯網的不斷發展,也面臨著一些有挑戰性的新問題。下圖所示是乙個通用的爬蟲框架流程。首先從網際網路頁面中精心選擇一部分網頁,以這些網頁的鏈結位址作為種...