0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Move Mirror使用攝像頭捕捉你的動(dòng)作,實(shí)時(shí)匹配和你動(dòng)作相近的圖像

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-22 10:21 ? 次閱讀

Google剛剛發(fā)布了一個(gè)有趣的AI應(yīng)用,Move Mirror。Move Mirror使用攝像頭捕捉你的動(dòng)作,并實(shí)時(shí)地在8萬(wàn)張圖像中匹配和你的動(dòng)作相近的圖像。

在發(fā)布Move Mirror的同時(shí),Google Creative Lab的Jane Friedhoff和Irene Alvarado發(fā)表長(zhǎng)文,分享了打造Move Mirror的經(jīng)驗(yàn)。

PoseNet

幾個(gè)月前,Google Creative Lab有了制作Move Mirror的想法。顯然,這個(gè)應(yīng)用的核心是位姿估計(jì)(pose estimation)模型。

Google自家就在CVPR 2017上提交了PoseNet的論文。PoseNet可以檢測(cè)多人的2D位姿,并在COCO數(shù)據(jù)集的關(guān)鍵任務(wù)上達(dá)到了當(dāng)前最優(yōu)表現(xiàn)。

表現(xiàn)出色,又是自家出品,所以Move Mirror團(tuán)隊(duì)順理成章地選擇了PoseNet作為應(yīng)用背后的模型。在原型開(kāi)發(fā)階段,團(tuán)隊(duì)通過(guò)簡(jiǎn)單的web API訪問(wèn)PoseNet模型,這極大地簡(jiǎn)化了原型開(kāi)發(fā)流程。只需向內(nèi)部的PoseNet API接口發(fā)送一個(gè)HTTP POST請(qǐng)求,提交base64編碼的圖像,API就會(huì)傳回位姿數(shù)據(jù)(基本無(wú)延遲)。若干行JavaScript代碼,一份API密鑰,搞定!

不過(guò),考慮到不是所有人樂(lè)意把自己的圖像發(fā)送到一個(gè)中央服務(wù)器,順便也為了減少對(duì)后端服務(wù)器的依賴,團(tuán)隊(duì)決定把PoseNet移植到TensorFlow.js上。TensorFlow.js讓用戶可以在他們自己的瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)模型——無(wú)需服務(wù)器。

在Google Brain的TensorFlow.js團(tuán)隊(duì)成員Nikhil Thorat、Daniel Smilkov,以及Google研究員George Papandreou、Tyler Zhu、Dan Oved(Papandreou和Zhu是PoseNet的作者)的幫助下,移植工作順利完成了。

PoseNet單人位姿檢測(cè)過(guò)程

我們將根據(jù)上面的示意圖簡(jiǎn)單介紹PoseNet的位姿檢測(cè)算法。我們看到,圖中標(biāo)明了網(wǎng)絡(luò)架構(gòu)是MobileNet。實(shí)際上,在PoseNet的論文中,研究人員同時(shí)訓(xùn)練了ResNet和MobileNet網(wǎng)絡(luò)。盡管基于ResNet的模型精確度更高,但對(duì)實(shí)時(shí)應(yīng)用來(lái)說(shuō),較大的尺寸和較多的網(wǎng)絡(luò)層會(huì)是頁(yè)面加載時(shí)間和推理時(shí)間不夠理想。因此,TensorFlow.js上的PoseNet使用了MobileNet模型。

網(wǎng)絡(luò)輸出關(guān)鍵點(diǎn)熱圖和偏移向量。關(guān)鍵點(diǎn)熱圖用于估計(jì)關(guān)鍵點(diǎn)的位置,而偏移向量則用來(lái)在熱圖的基礎(chǔ)上進(jìn)一步預(yù)測(cè)關(guān)鍵點(diǎn)的精確位置。

限于篇幅,我們這里不介紹多人位姿估計(jì)算法的細(xì)節(jié)。和單人位姿估計(jì)算法相比,多人位姿估計(jì)算法的主要差別在于使用了貪婪方法分組關(guān)鍵點(diǎn),具體而言,使用了Google在2018年發(fā)表的PersonLab論文中的高速貪婪解碼算法。

構(gòu)建數(shù)據(jù)集

巧婦難為無(wú)米之炊。雖然PoseNet已經(jīng)解決了位姿估計(jì)問(wèn)題,但為了根據(jù)用戶的位姿查找匹配的圖像,首先要有圖像。圖像要符合以下兩個(gè)要求:

多樣性為了更好地匹配用戶做出的各種各樣的動(dòng)作,圖像的位姿需要盡可能多樣化。

全身像從用戶體驗(yàn)的一致性出發(fā),決定只使用全身像。

最終,團(tuán)隊(duì)選擇了包含多種動(dòng)作,不同體型、膚色、文化的一組視頻,將其切分為8萬(wàn)張靜止圖像。使用PoseNet處理這些圖像,并儲(chǔ)存相應(yīng)的位姿數(shù)據(jù)。

你可能注意到,不是所有的圖像都能正確解析位姿,所以丟棄了一些圖像

位姿匹配

PoseNet的位姿數(shù)據(jù)包括17個(gè)關(guān)鍵點(diǎn)的坐標(biāo),以及相應(yīng)的置信度。

為了匹配關(guān)鍵點(diǎn)的相似度,很自然的一個(gè)想法是將17個(gè)關(guān)鍵點(diǎn)轉(zhuǎn)換為向量,那么位姿匹配問(wèn)題就轉(zhuǎn)換為了高維空間中的向量相似性問(wèn)題。這一問(wèn)題有現(xiàn)成的余弦距離方案可用。

將JSON格式的關(guān)鍵點(diǎn)數(shù)據(jù)轉(zhuǎn)換為向量

余弦相似度

如果你不熟悉余弦相似度,這里我們簡(jiǎn)單溫習(xí)下這一概念。余弦相似度測(cè)量?jī)蓚€(gè)向量的相似程度:基本上,它測(cè)量?jī)蓚€(gè)向量之間的夾角,如果兩個(gè)向量方向正好相反,則返回-1,如果兩個(gè)向量方向一致,則返回1。重要的是,它只測(cè)量向量的方向,而不考慮長(zhǎng)度。

圖片來(lái)源:Christian Perone

盡管我們談?wù)摰氖窍蛄亢徒嵌龋嘞蚁嗨贫炔⒉幌抻谥本€和圖。例如,余弦相似度可以得到兩個(gè)字符串的相似度數(shù)值。(如果你曾經(jīng)使用過(guò)Word2Vec,你可能已經(jīng)間接地使用過(guò)余弦相似度。)事實(shí)上,余弦相似度是一個(gè)極其有效的將高維向量的關(guān)系約減至單個(gè)數(shù)字的方法。

溫習(xí)了余弦相似度的概念之后,讓我們回到之前的話題。理論上,直接將關(guān)鍵點(diǎn)數(shù)據(jù)轉(zhuǎn)為向量后,就可以比較其余弦相似度了。實(shí)際上,還需要處理一些細(xì)節(jié),這是因?yàn)閿?shù)據(jù)集中的圖像尺寸大小不同,不同的人也可能出現(xiàn)在圖像的不同局部。

具體而言,進(jìn)行了如下兩項(xiàng)額外處理,以便保持比較的一致性:

縮放根據(jù)每個(gè)人的包圍盒裁剪圖片,然后縮放至固定大小。

標(biāo)準(zhǔn)化L2正則化向量(使分量的平方和等于1)。

L2正則化向量

可視化以上兩個(gè)處理步驟:

最終,根據(jù)下式計(jì)算向量間的距離:

加權(quán)匹配

上面的匹配算法好像缺了點(diǎn)什么?還記得我們之前提到的嗎?

PoseNet的位姿數(shù)據(jù)包括17個(gè)關(guān)鍵點(diǎn)的坐標(biāo),以及相應(yīng)的置信度。

左肘在畫面中清晰可見(jiàn),置信度較高;右肩在畫面中不可見(jiàn),置信度較低

上面的匹配算法根本沒(méi)有考慮置信度呀。顯然,置信度是很重要的信息。為了得到更準(zhǔn)確的結(jié)果,我們應(yīng)該給置信度高的關(guān)鍵點(diǎn)較高的權(quán)重,給置信度低的關(guān)鍵點(diǎn)較低的權(quán)重。換句話說(shuō),增強(qiáng)置信度高的關(guān)鍵點(diǎn)對(duì)相似度的影響,削弱置信度低的關(guān)鍵點(diǎn)對(duì)相似度的影響。

Google研究員George Papandreou和Tyler Zhu給出了將置信度納入考量后的距離公式:

上式中,Ck為第k個(gè)關(guān)鍵點(diǎn)的置信度,xyk為第k個(gè)關(guān)鍵點(diǎn)的x、y坐標(biāo)(經(jīng)過(guò)縮放、標(biāo)準(zhǔn)化等處理)。

加權(quán)匹配提供更精確的結(jié)果。即使身體的部分被遮擋或位于畫面之外,仍然能夠匹配。

優(yōu)化匹配速度

還記得嗎?總共有8萬(wàn)張圖像!如果采用暴力搜索法,每次匹配需要計(jì)算8萬(wàn)次距離。這對(duì)于實(shí)時(shí)應(yīng)用來(lái)說(shuō)不可接受。

為了優(yōu)化匹配速度,需要將8萬(wàn)個(gè)位姿數(shù)據(jù)以某種有序的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),這樣,匹配的時(shí)候就可以跳過(guò)那些明顯距離很遠(yuǎn)的位姿數(shù)據(jù),從而大大加速匹配進(jìn)程。

Move Mirror選用的數(shù)據(jù)結(jié)構(gòu)是制高點(diǎn)樹(shù)(vantage-point tree,簡(jiǎn)稱VP樹(shù))。

制高點(diǎn)樹(shù)

簡(jiǎn)單溫習(xí)下制高點(diǎn)樹(shù)這一數(shù)據(jù)結(jié)構(gòu)。

圖片來(lái)源:Data Structures for Spatial Data Mining

我們?cè)跀?shù)據(jù)點(diǎn)中選取一點(diǎn)(可以隨機(jī)選?。┳鳛楦?jié)點(diǎn)(上圖中為5)。我們繞著5畫一個(gè)圈,將空間分割成圈內(nèi)和圈外兩部分。接著我們?cè)谌?nèi)、圈外各選一點(diǎn)作為制高點(diǎn)(上圖中為7和1)。接著,繞著每個(gè)制高點(diǎn)各畫一個(gè)圈,同樣在圈內(nèi)、圈外各選一點(diǎn)……以此類推。這里的關(guān)鍵在于,如果我們從點(diǎn)5開(kāi)始,然后發(fā)現(xiàn)7比1更接近目標(biāo),那么我們就可以跳過(guò)1的所有子節(jié)點(diǎn)。

關(guān)于制高點(diǎn)樹(shù)的更多細(xì)節(jié),可以參閱fribbels.github.io/vptree/writeup 使用了制高點(diǎn)樹(shù)(javascript庫(kù)vptree.js)之后,匹配得以在大約15ms內(nèi)完成,對(duì)實(shí)時(shí)應(yīng)用而言,這一數(shù)字很理想。

Move Mirror僅僅返回最匹配用戶位姿的圖像。不過(guò),通過(guò)遍歷制高點(diǎn)樹(shù),不難返回更多結(jié)果,比如最接近的10張或20張圖像。這可以用來(lái)制作調(diào)試工具,發(fā)現(xiàn)數(shù)據(jù)集的問(wèn)題。

Move Mirror調(diào)試工具

結(jié)語(yǔ)

Move Mirror團(tuán)隊(duì)期待能看到更多類似的有趣應(yīng)用,比如匹配舞蹈動(dòng)作,匹配經(jīng)典電影片段?;蛘叻聪虿僮?,基于位姿估計(jì)幫助人們?cè)诩抑芯毩?xí)瑜伽或者進(jìn)行理療。

如果你想親自嘗試Move Mirror效果:g.co/movemirror

如果你也想基于TensorFlow.js上的PoseNet制作應(yīng)用:tensorflow/tfjs-models/posenet

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Google
    +關(guān)注

    關(guān)注

    5

    文章

    1748

    瀏覽量

    57187
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131842
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24538

原文標(biāo)題:魔鏡煉成記:Google位姿估計(jì)應(yīng)用Move Mirror架構(gòu)與實(shí)現(xiàn)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    網(wǎng)絡(luò)攝像頭監(jiān)控的系統(tǒng)優(yōu)勢(shì)

    現(xiàn)有的網(wǎng)絡(luò)就可以使用,這都是網(wǎng)絡(luò)攝像頭的優(yōu)勢(shì)之處?! ∠到y(tǒng)優(yōu)勢(shì)  基于網(wǎng)絡(luò)攝像頭的系統(tǒng)具有如下優(yōu)點(diǎn):  先進(jìn)性:利用現(xiàn)有的綜合布線網(wǎng)絡(luò)傳輸圖像,進(jìn)行實(shí)時(shí)監(jiān)控系統(tǒng)所需的前端設(shè)備少,連線簡(jiǎn)
    發(fā)表于 03-25 15:26

    STM32和ARM誰(shuí)用來(lái)開(kāi)發(fā)攝像頭圖像的遠(yuǎn)程傳輸?shù)男Ч命c(diǎn)?

    STM32和ARM誰(shuí)用來(lái)開(kāi)發(fā)攝像頭圖像的遠(yuǎn)程傳輸?shù)男Ч命c(diǎn)?為什么呢?我想實(shí)現(xiàn)攝像頭的拍攝圖像通過(guò)wifi遠(yuǎn)程傳輸給電腦的labview的界面上,實(shí)現(xiàn)
    發(fā)表于 08-04 22:03

    【轉(zhuǎn)載分享】USB攝像頭采集圖像

    `如果有USB攝像頭,就是隨便的那種。平時(shí)QQ視頻的就可以了(筆記本上自帶的攝像頭,也可以),那你就可以用LabVIEW進(jìn)行圖像采集了。注意:由于LabVIEW8.6是個(gè)神奇的版本,
    發(fā)表于 03-02 11:36

    求matlab攝像頭實(shí)時(shí)跟蹤的源程序

    最近在學(xué)習(xí)用matlab攝像頭進(jìn)行運(yùn)動(dòng)物體的實(shí)時(shí)跟蹤,但是有很多問(wèn)題,希望得到幫助。今天剛好在優(yōu)酷里面看見(jiàn)了一個(gè)叫matlab攝像頭視頻實(shí)時(shí)處理示例的視頻,里面直接可以用matlab
    發(fā)表于 07-21 09:47

    USB攝像頭怎么調(diào)圖像效果?

    有沒(méi)有做USB攝像頭的,會(huì)調(diào)圖像效果的?
    發(fā)表于 11-14 16:38

    如何從攝像頭中獲取圖像并保存和實(shí)時(shí)顯示

    for a pressed keycv2.waitKey(0)同樣只比前面獲取USB攝像頭圖像數(shù)據(jù)多了一點(diǎn)點(diǎn)代碼,非常神奇吧,這樣如果在開(kāi)發(fā)過(guò)程中需要用攝像頭來(lái)獲取相關(guān)的
    發(fā)表于 09-25 15:15

    labview控制攝像頭實(shí)時(shí)采集圖像的程序怎么改成通過(guò)單片機(jī)控制攝像頭在labview上顯示?

    這只是一個(gè)labview控制攝像頭實(shí)時(shí)采集圖像的程序,我想把它改成通過(guò)單片機(jī)控制攝像頭在labview上顯示該怎么改?
    發(fā)表于 10-18 10:16

    【FPGA DEMO】Lab 4:攝像頭HDMI顯示(高速--HDMI&攝像頭)

    `項(xiàng)目名稱:攝像頭HDMI顯示。具體要求:攝像頭采集的視頻圖像數(shù)據(jù)通過(guò)HDMI實(shí)時(shí)顯示。 系統(tǒng)設(shè)計(jì):Perf-V開(kāi)發(fā)板可以連接高速口——HDMI&
    發(fā)表于 07-30 15:21

    如何讀取攝像頭圖像的數(shù)據(jù)?

    如何讀取攝像頭圖像的數(shù)據(jù)?
    發(fā)表于 11-08 07:49

    如何用VideoCapture進(jìn)行USB攝像頭的視頻捕捉

    為什么用VideoCapture進(jìn)行USB攝像頭的視頻捕捉會(huì)失敗呢?如何用VideoCapture進(jìn)行USB攝像頭的視頻捕捉呢?
    發(fā)表于 02-14 07:25

    基于慣性傳感器系統(tǒng)的動(dòng)作捕捉技術(shù)

    慣性式動(dòng)作捕捉系統(tǒng)采集到的信號(hào)量少,便于實(shí)時(shí)完成姿態(tài)跟蹤任務(wù),解算得到的姿態(tài)信息范圍大、靈敏度高、動(dòng)態(tài)性能好;對(duì)捕捉環(huán)境適應(yīng)性高,不受光照、背景等外界環(huán)境干擾,并且克服了光學(xué)動(dòng)捕系統(tǒng)
    的頭像 發(fā)表于 05-25 17:40 ?1.8w次閱讀

    FSK總線攝像頭解決方案支持31路攝像頭視頻實(shí)時(shí)顯示

    近日,迪文針對(duì)FSK總線攝像頭解決方案完成了重大升級(jí)。方案包含總線智能屏、總線攝像頭兩部分,攝像頭內(nèi)置T5L芯片,通過(guò)FSK總線與智能屏通信。總線智能屏上支持最多31個(gè)攝像頭同步
    發(fā)表于 06-07 11:09 ?1747次閱讀

    GM系列動(dòng)作捕捉相機(jī)闡述

    的灰度圖像數(shù)據(jù)。通過(guò)軟件插件輸出的三維數(shù)據(jù)則可以無(wú)縫對(duì)接Unreal Engine, Unity, Motion Builder、Maya、3Dmax等主流三維制作軟件,讓里面的三維模型角色隨動(dòng)起來(lái)。 動(dòng)作捕捉相機(jī)內(nèi)置姿態(tài)傳感器
    發(fā)表于 09-05 16:58 ?969次閱讀

    樹(shù)莓派攝像頭模塊靜態(tài)圖像捕捉模式和設(shè)置

    作者:David Plowman ? ? 2023年6月26日 本次#MagPiMonday,我們?yōu)槟鷰?lái)樹(shù)莓派攝像頭模塊靜態(tài)圖像捕捉模式和設(shè)置的深入指南。 ? 高品質(zhì)攝像頭模塊采用手
    的頭像 發(fā)表于 07-03 14:39 ?1380次閱讀

    Jacinto 7攝像頭捕捉和成像子系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《Jacinto 7攝像頭捕捉和成像子系統(tǒng).pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:48 ?0次下載
    Jacinto 7<b class='flag-5'>攝像頭</b><b class='flag-5'>捕捉</b>和成像子系統(tǒng)