“你就是控制器。”(You are the controller.)如果你有在注目Kinect,相信差不多聽過這句給力的廣告詞了。從《Kinect Adventures!》中手腳并用堵漏水窟窿,到Zune播放界面中揮手換歌,Kinect開創(chuàng)了一種更加自然的娛樂交互方法。在這文章中,將揭秘這款體感系統(tǒng)背后的秘密以及它如何讓開發(fā)者創(chuàng)造Kinect體驗(yàn)。而Kinect團(tuán)隊(duì)的項(xiàng)目經(jīng)理Arjun Dayal則將展示如何實(shí)現(xiàn)通過基于手勢的方法來控制Xbox Dashboard和Kinect Hub。第一,讓我們從指導(dǎo)Kinect研發(fā)的概念原理結(jié)束。
我們在線生活在一個(gè)模擬的世界
傳統(tǒng)編程基于一系列的規(guī)則:原因和結(jié)果,非黑即白,非真即假。在爲(wèi)輸入輸出數(shù)目有限的簡單系統(tǒng)建模時(shí),這種方法工作得挺好。拿遊戲《Halo》來說吧:按A鍵是讓士官長跳,前撥左搖桿讓他向前走,前撥右搖桿讓他向上看。不是A,就是B。可惜的是,我們在線生活的真實(shí)世界並不是如此數(shù)字化,而是模擬的。
在模擬世界中,並不是只有簡單的“是”和“否”,還有“也許是/否”;不僅有“對(duì)”和“錯(cuò)”,還有“對(duì)/錯(cuò)的也許性”。讓我們在線想象一下?lián)]手這一簡單動(dòng)作的所有也許性:身體運(yùn)動(dòng)的幅度,環(huán)境差異,衣服質(zhì)地的不同,文化差異造成的動(dòng)作差異等等。你也許需要研究10的23次方這麼多的也許性,顯然用傳統(tǒng)編程方法來解決這類問題是不現(xiàn)實(shí)的。
我們在線從一開始就知道必須采用一種全新的,靠近于人腦工作的方法來解決這一問題。當(dāng)你碰到一個(gè)人的時(shí)候,你的大腦馬上將注重力集中在他身上,並根據(jù)經(jīng)驗(yàn)辨識(shí)出他的身份。這一過程並不是通過數(shù)百層的決策樹來實(shí)現(xiàn),人腦就是知道。嬰兒很難區(qū)分出兩個(gè)人的不同,但我們在線通過多年的學(xué)習(xí)和訓(xùn)練可以在幾分之一秒內(nèi)做到。事實(shí)上,你也許還能蠻準(zhǔn)確地估摸出他們的年齡、性別、心情甚至個(gè)性。這也是讓我們在線成就爲(wèi)人類的原因之一。
Kinect以類似的方法被創(chuàng)造出來。它觀察身邊的世界,它注重觀察你的動(dòng)作。即使Kinect從來沒見過你揮過手,也能很快地從它學(xué)習(xí)過的TB級(jí)數(shù)據(jù)中猜測出你所做動(dòng)作的含義。
Kinect傳感器
Kinect骨架追蹤處置流程的核心是一個(gè)無論周圍環(huán)境的光照條件如何,都可以讓Kinect感知世界的CMOS紅外傳感器。該傳感器通過黑白光譜的方法來感知環(huán)境:純黑代表無窮遠(yuǎn),純白代表無窮近。黑白間的灰色地帶對(duì)應(yīng)物體到傳感器的物理距離。它收集視野范圍內(nèi)的每一點(diǎn),并形成一幅代表周圍環(huán)境的景深圖像。傳感器以每秒30幀的速度生成景深圖像流,實(shí)時(shí)3D地再現(xiàn)周圍環(huán)境。如果你玩過pin point impression 3D針模玩具也許更容易明白這一技術(shù)——將你的手(或者臉,如果你愿意的話)按壓在這種玩具上,就可以產(chǎn)生你軀體某一部位的簡單3D模型。
Kinect
尋找移動(dòng)部位
Kinect需要做的下一件事是尋找圖像中較也許是人體的移動(dòng)物體,就像人眼下意識(shí)地聚焦在移動(dòng)物體上那樣。接下來,Kinect會(huì)對(duì)景深圖像進(jìn)行像素級(jí)評(píng)估,來辨別人體的不同部位。同時(shí),這一過程必須以優(yōu)化的預(yù)處理來縮短響應(yīng)時(shí)間。
Kinect采用分割策略來將人體從背景環(huán)境中區(qū)分出來,即從噪音中提取出有用信號(hào)。Kinect可以主動(dòng)追蹤最多兩個(gè)玩家的全身骨架,或者被動(dòng)追蹤最多四名玩家的形體和位置。在這一階段,我們在線爲(wèi)每個(gè)被追蹤的玩家在景深圖像中創(chuàng)建了所謂的分割遮罩,這是一種將背景物體(譬如椅子和寵物等)剔除後的景深圖像。在後面的處理流程中僅僅傳送分割遮罩的部分,以減輕體感計(jì)算量。
Kinect
Kinect的大腦
真正的魔術(shù)在這裏發(fā)生。分割化玩家圖像的每一個(gè)像素都被傳送進(jìn)一個(gè)辨別人體部位的機(jī)器學(xué)習(xí)系統(tǒng)中。隨後該系統(tǒng)將給出了某個(gè)特定像素屬于哪個(gè)身體部位的也許性。譬如,一個(gè)像素有80%的幾率屬于腳,60%的幾率屬于腿,40%的幾率屬于胸部?雌饋磉@時(shí)候我們在線就可以把幾率最大的也許性當(dāng)作結(jié)果,但這麼做未免太過武斷了。我們在線的做法是將所有的這些也許性輸入到接下來的處理流程中並且比及最後階段再做判斷。
看了上面的介紹,你也許要問我們在線如何教會(huì)Kinect辨識(shí)人體部位。開發(fā)這一人工智能(被稱爲(wèi)Exemplar(模型)系統(tǒng))可不是一件輕松的情況:數(shù)以TB計(jì)的數(shù)據(jù)被輸入到集群系統(tǒng)中來教會(huì)Kinect以像素級(jí)技術(shù)來辨認(rèn)手、腳以及它看到的其他身體部位。下圖就是我們在線用來訓(xùn)練和測試Exemplar的數(shù)據(jù)之一。
Kinect
模型匹配:生成骨架系統(tǒng)
處理流程的最後一步是使用之前階段輸出的結(jié)果,根據(jù)追蹤到的20個(gè)關(guān)節(jié)點(diǎn)來生成一幅骨架系統(tǒng)。Kinect會(huì)評(píng)估Exemplar輸出的每一個(gè)也許的像素來確定關(guān)節(jié)點(diǎn)。通過這種方法Kinect能夠基于充分的信息最準(zhǔn)確地評(píng)估人體實(shí)際所處位置。另外我們在線在模型匹配階段還做了一些附加輸出濾鏡來平滑輸出以及處理閉塞關(guān)節(jié)等特殊事件。
骨架追蹤系統(tǒng)的目標(biāo)之一是為處置流程的各種輸出提供一種菜單式的選擇界面。游戲開發(fā)者可以選擇任意的系統(tǒng)部件組合來開發(fā)各種游戲體驗(yàn)。譬如,你可以偏偏使用隔河相望映射來制造一些驚人的華麗結(jié)果(《Your Shape: Fitness Evolved》是一個(gè)好例子)。
講到這個(gè)地方,我們差不多描繪出一個(gè)可用于控制游戲或娛樂的完全實(shí)時(shí)的體感系統(tǒng)。接下來,Arjun將介紹改進(jìn)的Xbox Dashboard和Kinect Hub。他將向你展示這兩個(gè)用戶界面如何使用景深圖像流和20關(guān)節(jié)骨架系統(tǒng)來創(chuàng)造一種基于自然手勢的,訪問游戲、電影、音樂和其他娛樂活動(dòng)的全新方法。
Kinect
Kinect:技術(shù)如何最終明白你!
現(xiàn)在,技術(shù)在我們在線的日常生活中飾演著重要角色,但直到現(xiàn)在,技術(shù)國產(chǎn)產(chǎn)品在真正明白人類意圖以及適應(yīng)個(gè)體風(fēng)格差異方面做得仍然不行。Kinect的問世讓這一切有所改變。站在Kinect前,它就能知道你是誰。不僅如此,還能將你和你的愛人區(qū)別開來。當(dāng)你移動(dòng)時(shí),傳感器能在瞬間追蹤到你。想要互動(dòng)?用聲音和肢體移動(dòng)就可以播放電影、玩遊戲、和朋儕談話等等。不需要學(xué)習(xí)任何新的控制方法,多麼神奇!
前面Kinect團(tuán)隊(duì)項(xiàng)目經(jīng)理Ron差不多描述了Kinect傳感器讓Xbox實(shí)時(shí)追蹤玩家動(dòng)作背后的高深技術(shù),但我們?nèi)绾巫罴训剡\(yùn)用?我們的目標(biāo)是讓玩家盡也許自如地控制Xbox,同時(shí)讓所有用戶可以容易地學(xué)習(xí)并明白各種控制手勢。接下來我們會(huì)更加深入地揭秘這一體感技術(shù),同時(shí)談?wù)勗贙inect Hub和Dashboard中的Kinect體驗(yàn)。
手勢:從何說起?
聽到我們在線要設(shè)計(jì)一種手勢來上下左右移動(dòng)物體的時(shí)候,你也許會(huì)想:“沒難度啊,把你的手移到物體上,選中然後向你想要的方向移動(dòng),搞定!”
等下,別那麼自信。問問你的朋儕他們是怎麼想的,你也許會(huì)驚訝地發(fā)現(xiàn)他們的回復(fù)和你是如此的不同。是你的方法更好嗎?不比定,只是對(duì)你來說更有邏輯性。人類的獨(dú)特之處在于能通過多種方法來完成某一特定任務(wù)。讓我們在線拿駕駛來做例子。如果你讓100個(gè)人來模仿如何開車,你也許會(huì)獲得許多答案。有點(diǎn)人會(huì)將兩手分別握住面前的10點(diǎn)鍾和2點(diǎn)鍾位置,有點(diǎn)人也許會(huì)只用一手握住12點(diǎn)鍾位置,有點(diǎn)人也許會(huì)背靠椅子坐著;同樣地,模仿腳踩油門、剎車和離合器的方法也會(huì)五花八門。所有這些方法都能讓我們在線駕駛,而技術(shù)的工作就是要能識(shí)別所有這些方法——讓技術(shù)明白你!
那麼,識(shí)別一個(gè)看似簡單動(dòng)作有多複雜呢,拿伸手做例子。當(dāng)你想伸手去拿什麼東西的時(shí)候,你會(huì)認(rèn)爲(wèi)伸手的方向應(yīng)該完全鉛直于身體平面。但實(shí)際上由于肩膀和手臂關(guān)節(jié)的結(jié)合方法,你不也許以直線方法伸手。因此,每個(gè)人都會(huì)以略爲(wèi)不同的方法做出一個(gè)伸手動(dòng)作,但每個(gè)人都覺得這是一個(gè)同樣的伸手動(dòng)作。成功的手勢識(shí)別就是要明白人類動(dòng)作的微妙之處,並且讓技術(shù)了解這些不同。
研發(fā)Kinect這款革命性國產(chǎn)產(chǎn)品的過程中,我們在線既要戰(zhàn)勝上述挑戰(zhàn)還要讓國產(chǎn)產(chǎn)品易于使用。我們在線所做的每個(gè)決建基本上人機(jī)互動(dòng)領(lǐng)域史無前例的,我們在線的工作有也許將重新定義互動(dòng)娛樂技術(shù)的未來。
手勢原型:去粕取精
我們在線在爲(wèi)屏幕導(dǎo)航創(chuàng)造控制手勢時(shí),采用了很常見的方法:記錄下了所有能想到的天馬行空的點(diǎn)子,譬如用腳來選擇菜單神馬的。當(dāng)我們在線意識(shí)到這樣的點(diǎn)子實(shí)在太多了的時(shí)候,我們在線知道需要一種更靠譜的選擇方法。
我們在線收集並記錄下所有創(chuàng)意,並且一一制作出原型以檢驗(yàn)?zāi)且环N更適合一般用戶。和一般用戶進(jìn)行原型測試非常重要,我們在線因此學(xué)到了許多關(guān)于人體運(yùn)動(dòng)的信息,並用于重新調(diào)整每次新測試。人機(jī)互動(dòng)的現(xiàn)有規(guī)則並不總是適用于在客廳進(jìn)行的10英寸距離上的體感交互。通過測試我們在線更好地明白用戶行爲(wèi),譬如長時(shí)間做手勢時(shí)怎樣才舒服,以及我們在線創(chuàng)造的控制手勢集和人類自然手勢是否沖突。
在測試過程中,我們在線的理念是“不斷失敗,去粕取精”,我們在線不斷拋棄不符適的方案,保留有效方案。工程、用戶研究和設(shè)計(jì)團(tuán)隊(duì)都充分參與得益勢集的原型制作過程中,並和一般用戶一起進(jìn)行測試,根據(jù)所有獲取到的數(shù)據(jù)來決定最佳手勢。
在數(shù)月的測試、觀察和研究後,我們在線獲得了一種簡單且容易明白的控制方法——懸停選擇和翻頁控制。懸停選擇是一種容易學(xué)習(xí)、高度可靠並且可預(yù)測的機(jī)制,而翻頁控制提供了一種更有觸感的方法來控制屏幕內(nèi)容。
讓我們通過Xbox Dashboard和Kinect Hub的實(shí)現(xiàn)方法來更加深入地談?wù)撨@種控制模型的細(xì)節(jié)。
Kinect Hub: Kinect體驗(yàn)大本營!
Kinect
Kinect
Kinect
Kinect Hub是Xbox Dashboard中的Kinect體驗(yàn)中心,在這個(gè)地方你可以用手勢來訪問Kinect內(nèi)容。Hub的設(shè)計(jì)簡單且容易明白,你可以注重到我們采用了巨大的顏色鮮明的項(xiàng)目方塊,讓用戶輕松地找到并選擇他們所想做的事。