成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Move Mirror:使用 TensorFlow.js 在瀏覽器中預(yù)測(cè)姿勢(shì)之 AI 實(shí)驗(yàn)

MiracleWong / 1472人閱讀

摘要:文和,創(chuàng)意實(shí)驗(yàn)室創(chuàng)意技術(shù)專家在機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺領(lǐng)域,姿勢(shì)預(yù)測(cè)或根據(jù)圖像數(shù)據(jù)探測(cè)人體及其姿勢(shì)的能力,堪稱最令人興奮而又最棘手的一個(gè)話題。使用,用戶可以直接在瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)模型,無需服務(wù)器。

文 / ?Jane Friedhoff 和 Irene Alvarado,Google 創(chuàng)意實(shí)驗(yàn)室創(chuàng)意技術(shù)專家

在機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺領(lǐng)域,姿勢(shì)預(yù)測(cè)或根據(jù)圖像數(shù)據(jù)探測(cè)人體及其姿勢(shì)的能力,堪稱最令人興奮而又最棘手的一個(gè)話題。近期,Google 公布了 PoseNet,這是一個(gè)先進(jìn)的姿勢(shì)預(yù)測(cè)模型,可從圖像數(shù)據(jù)中提取非常精準(zhǔn)的姿勢(shì)數(shù)據(jù)(即便在圖像模糊不清、分辨率低或僅為黑白色的情況下仍能做到)。本文將詳細(xì)介紹這項(xiàng)實(shí)驗(yàn),正是在該實(shí)驗(yàn)的推動(dòng)下,我們率先創(chuàng)建了這一適用于網(wǎng)頁的姿勢(shì)預(yù)測(cè)內(nèi)容庫。

幾個(gè)月前,我們開展了一項(xiàng)名為 Move Mirror 的趣味原型實(shí)驗(yàn):您只需四下走動(dòng),即可在瀏覽器中檢索相應(yīng)圖像。該實(shí)驗(yàn)創(chuàng)造了一種動(dòng)畫般的獨(dú)有體驗(yàn),它會(huì)追蹤您的動(dòng)作并據(jù)此呈現(xiàn)各種人體動(dòng)作圖像,其中包括體育運(yùn)動(dòng)、舞蹈、武術(shù)以及表演等多種動(dòng)作。我們希望在網(wǎng)頁上推出這項(xiàng)體驗(yàn),讓其他人也有機(jī)會(huì)親身感受,了解機(jī)器學(xué)習(xí)相關(guān)知識(shí),然后與好友分享。但遺憾的是,我們面臨著一個(gè)問題:眼下沒有可公開獲取的網(wǎng)頁專用姿勢(shì)預(yù)測(cè)模型。

一般而言,用戶在處理姿勢(shì)數(shù)據(jù)時(shí)需要訪問特殊硬件或需要具備 C++/Python 計(jì)算機(jī)視覺庫的相關(guān)使用經(jīng)驗(yàn)。由此,我們發(fā)現(xiàn)了一個(gè)有助推動(dòng)姿勢(shì)預(yù)測(cè)更加大眾化的難得機(jī)會(huì),具體方法是將內(nèi)部模型移植到 TensorFlow.js 中,這是一個(gè) Javascript 庫,支持用戶在瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)項(xiàng)目。我們組建了一支團(tuán)隊(duì),耗費(fèi)數(shù)月來開發(fā)這一內(nèi)容庫,并最終推出了 PoseNet 這一開放源代碼工具,該工具允許任何網(wǎng)頁開發(fā)者完全在瀏覽器內(nèi)輕松處理人體互動(dòng),且無需配備專門的攝像頭或具備 C++/Python 技能。

隨著 PoseNet 的問世,我們最終得以發(fā)布 Move Mirror? 項(xiàng)目,該項(xiàng)目可謂實(shí)驗(yàn)和趣味游戲提升工程設(shè)計(jì)工作價(jià)值的明證。正是由于研究團(tuán)隊(duì)、產(chǎn)品團(tuán)隊(duì) 和 創(chuàng)意團(tuán)隊(duì)的真誠合作,我們才得以成功構(gòu)建 PoseNet 和 Move Mirror。

Move Mirror 是一項(xiàng) AI 實(shí)驗(yàn),能夠檢測(cè)您的姿勢(shì),并將檢測(cè)到的動(dòng)作與全球成千上萬張圖像進(jìn)行匹配

繼續(xù)閱讀,以深入了解我們的實(shí)驗(yàn)思路、我們?cè)跒g覽器中預(yù)測(cè)姿勢(shì)時(shí)經(jīng)歷的興奮點(diǎn),以及令我們甚為激動(dòng)的后續(xù)創(chuàng)意。

什么是姿勢(shì)預(yù)測(cè)?什么是 PoseNet?

您或許已猜到,姿勢(shì)預(yù)測(cè)是一個(gè)極為復(fù)雜的問題:人的體型大小各異;需追蹤的關(guān)節(jié)數(shù)量眾多(這些關(guān)節(jié)在空間中的連接方式多種多樣);周圍通常還會(huì)有其他人及/或物體遮擋視線。有些人使用輪椅或拐杖等輔助裝置,這可能會(huì)阻擋攝像頭對(duì)人體的取像;有些人或許肢體不全,還有些人的身體比例可能與常人迥然不同。我們希望,我們的機(jī)器學(xué)習(xí)模型能夠理解并推理各類不同體型的數(shù)據(jù)。

此圖顯示 PoseNet 針對(duì)不同輔助裝置(如手杖、輪椅和假肢)的使用者給出的關(guān)節(jié)檢測(cè)結(jié)果

過去,在解決姿勢(shì)預(yù)測(cè)問題時(shí),技術(shù)專家曾使用專門的攝像頭和傳感器(如 3D 眼鏡、動(dòng)作捕捉套裝和紅外攝像頭),以及可從 2D 圖像中提取預(yù)測(cè)姿勢(shì)的計(jì)算機(jī)視覺技術(shù)(如 OpenPose)。這些解決方案盡管有效,但往往需要采用昂貴而又遠(yuǎn)未普及的技術(shù),并且/或者要熟知計(jì)算機(jī)視覺庫以及 C++ 或 Python。這加大了普通開發(fā)者迅速開展趣味姿勢(shì)實(shí)驗(yàn)的難度。

首次使用 PoseNet 時(shí),發(fā)現(xiàn)它可通過簡(jiǎn)單的 web API 獲取,這讓我們無比激動(dòng)。突然間,我們就可以在 Javascript 中輕松迅速地開展姿勢(shì)預(yù)測(cè)原型實(shí)驗(yàn)了。我們只需向內(nèi)部終端地址發(fā)送 HTTP POST 請(qǐng)求以及圖像的 base64 數(shù)據(jù),API 終端地址便會(huì)為我們返回姿勢(shì)數(shù)據(jù),而且?guī)缀鯖]有任何延遲時(shí)間。這大大降低了開展小型探索性姿勢(shì)實(shí)驗(yàn)的準(zhǔn)入門檻:只需寥寥幾行 JavaScript 代碼和一個(gè) API 密鑰,即可大功告成!當(dāng)然,并非人人都能夠在后端運(yùn)行自己的 PoseNet,而且(按常理)并非人人都愿意將自己的照片發(fā)送到中央服務(wù)器。我們?nèi)绾尾拍茏屓藗冇锌赡苓\(yùn)行自己的姿勢(shì)實(shí)驗(yàn),而不必依賴自己或他人的服務(wù)器呢?

我們意識(shí)到,這是將 TensorFlow.js 與 PoseNet 相連接的絕佳機(jī)會(huì)。使用 TensorFlow.js,用戶可以直接在瀏覽器中運(yùn)行機(jī)器學(xué)習(xí)模型,無需服務(wù)器。將 PoseNet 移植到 TensorFlow.js 后,只要用戶擁有一部質(zhì)量尚可且配備網(wǎng)絡(luò)攝像頭的桌面設(shè)備或電話,便可直接在網(wǎng)絡(luò)瀏覽器內(nèi)親身體驗(yàn)并嘗試使用這項(xiàng)技術(shù),而無需擔(dān)心低級(jí)計(jì)算機(jī)視覺庫, 亦 無需設(shè)置復(fù)雜的后端和 API。通過與 TensorFlow.js 團(tuán)隊(duì)的 Nikhil Thorat 和 Daniel Smilkov、Google 研究員 George Papandreou 和 Tyler Zhu,以及 Dan Oved 展開密切協(xié)作,我們已能將某個(gè) PoseNet 模型版本移植到 TensorFlow.js 中。(您可以在此處了解該流程的詳細(xì)信息。)

關(guān)于在 TensorFlow.js 中使用 PoseNet,還有一些方面也讓我們感到非常興奮:

無處不在/隨地獲?。捍蠖鄶?shù)開發(fā)者均能訪問文本編輯器和網(wǎng)絡(luò)瀏覽器,而且 PoseNet 使用起來非常簡(jiǎn)便,只需在您的 HTML 文件中添加兩個(gè)腳本標(biāo)記即可,無需進(jìn)行復(fù)雜的服務(wù)器設(shè)置。此外,您無需配備專門的高分辨率攝像頭、紅外攝像頭或傳感器來獲取數(shù)據(jù)。我們發(fā)現(xiàn),其實(shí) PoseNet 在處理低分辨率、黑白以及老舊照片時(shí)依然表現(xiàn)良好。

可供分享:TensorFlow.js PoseNet 實(shí)驗(yàn)可全部在瀏覽器中運(yùn)行,因此您不費(fèi)吹灰之力,即可在瀏覽器中分享該實(shí)驗(yàn)。無需構(gòu)建特定的操作系統(tǒng)版本,只需上傳網(wǎng)頁即可。

隱私性:由于姿勢(shì)預(yù)測(cè)的全部工作均可在瀏覽器中完成,因此您的所有圖像數(shù)據(jù)均會(huì)留存在本地計(jì)算機(jī)中。您無需將照片發(fā)送至某個(gè)云端服務(wù)器以利用集中式服務(wù)開展姿勢(shì)分析(例如,當(dāng)您使用自己無法控制的視覺 API 時(shí),或此 API 可能發(fā)生故障,或存在任何不可控因素時(shí)),只需使用自身設(shè)備即可完成所有的姿勢(shì)預(yù)測(cè)工作,并能較精確控制圖像的移動(dòng)位置。借助 Move Mirror,我們可以將 PoseNet 輸出的 (x,y) 關(guān)節(jié)數(shù)據(jù)與后端的姿勢(shì)圖庫進(jìn)行匹配,但您的圖像仍會(huì)完全留存在您自己的計(jì)算機(jī)中。

技術(shù)討論到此結(jié)束:下面我們來談?wù)勗O(shè)計(jì)!

設(shè)計(jì)與靈感

我們?cè)馁M(fèi)數(shù)周時(shí)間,四處摸索不同的姿勢(shì)預(yù)測(cè)原型。對(duì)于我們當(dāng)中有過 C++ 或 Kinect 黑客行為的人來說,僅僅是使用網(wǎng)絡(luò)攝像頭在瀏覽器中看到我們的骨骼 反射回自身,就足以稱得上是令人驚嘆的演示。我們?cè)趯?duì)移動(dòng)軌跡、木偶以及其他各類易于操控的物件進(jìn)行過試驗(yàn)之后,才開始真正著眼于后來的 Move Mirror 概念。

若聽到 Google 創(chuàng)意實(shí)驗(yàn)室的許多研究員都有意進(jìn)行搜索和探究,這也許不足為奇。在談及姿勢(shì)預(yù)測(cè)的用途時(shí),我們都覺得通過姿勢(shì)搜索歸檔數(shù)據(jù)的想法十分有趣。如果您在擺出姿勢(shì)后,得到一個(gè)您在做舞蹈動(dòng)作的結(jié)果,會(huì)怎么樣?或者更有趣的是,您在擺出姿勢(shì)后得到一個(gè)相同的動(dòng)作結(jié)果,但該結(jié)果卻與您所處情境完全不同,又會(huì)怎么樣?從武術(shù)、烹飪、滑雪到嬰兒的第一次學(xué)步,我們?nèi)绾螐募姺倍鄻拥娜梭w活動(dòng)中找到這種古怪、偶然的聯(lián)系呢?這會(huì)如何讓我們大吃一驚、愉悅享受,并開懷大笑呢?

出自 Awwwards 的 Land Lines Gif;出自 Cooper Hewitt 的 Gesture Match 圖像

我們的靈感源自于 Land Lines(該實(shí)驗(yàn)會(huì)使用手勢(shì)數(shù)據(jù)探索 Google 地球中的相似線條)和 Cooper Hewitt 的 Gesture Match(這是一個(gè)現(xiàn)場(chǎng)安置項(xiàng)目,可通過姿勢(shì)匹配從歸檔數(shù)據(jù)中查找相應(yīng)條目)等項(xiàng)目。不過,從美學(xué)上來看,我們傾向于采用更迅速且更實(shí)時(shí)的方式。我們熱衷這一想法,即調(diào)用連續(xù)不斷的圖像來響應(yīng)您的動(dòng)作,并通過您的動(dòng)作將各行各業(yè)的人們聯(lián)系在一起。從 The Johnny Cash 項(xiàng)目中所用的轉(zhuǎn)描和縮時(shí)攝影技術(shù)得到啟發(fā),再加上 YouTube 上自拍縮時(shí)攝影趨勢(shì)的推動(dòng),我們決定鉚足干勁,著力在瀏覽器中實(shí)現(xiàn)實(shí)時(shí)響應(yīng)式姿勢(shì)匹配(盡管這本身就是一個(gè)十分復(fù)雜的問題)。

The Johnny Cash 項(xiàng)目生成的 Gif,在此項(xiàng)目中已有超過 250000 人為 “Ain’t No Grave” 這首歌描畫框架,制作眾包的音樂視頻

構(gòu)建 Move Mirror

盡管 PoseNet 會(huì)為我們作出姿勢(shì)預(yù)測(cè),但我們?nèi)杂性S多任務(wù)要完成。這項(xiàng)實(shí)驗(yàn)的核心體驗(yàn)全部在于尋找與用戶姿勢(shì)相匹配的圖像,如此,當(dāng)您直立且右臂上揚(yáng)時(shí),Move Mirror 便能找到某人站立且抬起右臂的圖像。為此,我們需要做好三項(xiàng)準(zhǔn)備:圖像數(shù)據(jù)集、搜索該數(shù)據(jù)集的技術(shù)和姿勢(shì)匹配算法。下面我們來逐一細(xì)談。

構(gòu)建數(shù)據(jù)集:搜索多樣圖片

要?jiǎng)?chuàng)建有用的數(shù)據(jù)集,我們必須搜索共同涵蓋海量人體動(dòng)作的圖像。如果數(shù)據(jù)集中未包含其他姿勢(shì),而只有 400 張舉起右臂直立的人體圖像,這將毫無意義。為確保提供始終如一的體驗(yàn),我們還決定只尋找全身圖像。最終,我們出品了系列視頻,在我們看來,這些視頻不僅代表著各類動(dòng)作,而且還涵蓋各種體型、膚色、文化特質(zhì)和身體能力。我們將這些視頻分為大約 80000 個(gè)靜止幀,然后使用 PoseNet 處理了每張圖像,并存儲(chǔ)了相關(guān)的姿勢(shì)數(shù)據(jù)。接下來,我們來探討最棘手的部分:姿勢(shì)匹配與搜索。

我們通過 PoseNet 解析了數(shù)千張圖像。您會(huì)發(fā)現(xiàn),并非所有圖像都解析正確,因此我們舍棄了一些,最終得到的數(shù)據(jù)集約包含 80000 張圖像

姿勢(shì)匹配:定義相似性時(shí)遇到的挑戰(zhàn)

要讓 Move Mirror 正常運(yùn)作,我們首先要明確該如何定義“匹配”?!捌ヅ洹敝傅氖钱?dāng)用戶擺出一個(gè)姿勢(shì)時(shí),我們根據(jù)接收到的姿勢(shì)數(shù)據(jù)返回的圖像。在談及由 PoseNet 生成的“姿勢(shì)數(shù)據(jù)”時(shí),我們指的是一組包含 17 個(gè)身體或面部部位的數(shù)據(jù),例如我們稱為“關(guān)鍵點(diǎn)”的肘部或左眼部位。PoseNet 會(huì)返回輸入圖像中每個(gè)關(guān)鍵點(diǎn)的 x 和 y 坐標(biāo),以及相應(yīng)的置信度得分(稍后會(huì)詳細(xì)介紹)。

PoseNet 會(huì)檢測(cè)面部和身體的 17 個(gè)姿勢(shì)關(guān)鍵點(diǎn)。每個(gè)關(guān)鍵點(diǎn)均包括三個(gè)重要的數(shù)據(jù)塊:(x,y) 坐標(biāo)(代表輸入圖像中 PoseNet 找到該關(guān)鍵點(diǎn)的像素位置)和置信度得分(PoseNet 認(rèn)為其猜測(cè)正確的信心度)

定義 “相似度” 是我們遇到的第一個(gè)難題。對(duì)于用戶的 17 個(gè)關(guān)鍵點(diǎn)數(shù)據(jù)組與數(shù)據(jù)集中圖像的 17 個(gè)關(guān)鍵點(diǎn)數(shù)據(jù)組,我們應(yīng)如何確定二者之間的相似度?我們嘗試了幾種不同方法來確定相似度,最終敲定了兩種有效方式:余弦相似度和結(jié)合關(guān)鍵點(diǎn)置信度得分得出的加權(quán)匹配。

匹配策略 #1:余弦距離

如果我們將每組的 17 個(gè)關(guān)鍵點(diǎn)數(shù)據(jù)轉(zhuǎn)換為一個(gè)向量,并將其標(biāo)繪在高維空間中,那么尋找兩個(gè)最相似姿勢(shì)的任務(wù)便會(huì)轉(zhuǎn)化為在此高維度空間中尋找兩個(gè)最接近的向量。這就是余弦距離的用途所在。

余弦相似度是一種測(cè)量?jī)蓚€(gè)向量之間相似度的方法:主要測(cè)量?jī)蓚€(gè)向量的夾角,在向量指向完全相反時(shí)返回 -1,而在指向幾乎完全相同時(shí)則返回 1。重要的是,這種方法測(cè)量的是方向而非數(shù)值。

余弦相似度的直觀描述,出自 Christian Perone

雖然我們現(xiàn)在談?wù)摰氖窍蛄亢徒嵌龋@并不限于圖表上的線條。例如,您可以使用余弦相似度來獲得兩個(gè)等長(zhǎng)字符串之間的數(shù)值相似度。(如果您以前使用過 Word2Vec,可能已間接用到余弦相似度。)這一方法的確非常實(shí)用,能夠?qū)蓚€(gè)高維向量(兩個(gè)長(zhǎng)句或兩個(gè)長(zhǎng)數(shù)組)之間的關(guān)系最終簡(jiǎn)化為一個(gè)單一數(shù)值。

Nish Tahir 典型示例 簡(jiǎn)化版。 不懂向量數(shù)學(xué)也無妨,重點(diǎn)在于我們能夠?qū)蓚€(gè)抽象的高維數(shù)據(jù)塊(5 個(gè)字詞為 5 維)轉(zhuǎn)化為一個(gè)表示二者相似度的歸一化數(shù)值。這里,您也可以嘗試使用 自己的語句

我們輸入的數(shù)據(jù)是 JSON,但我們可以將這些值輕松壓縮為一維數(shù)組,其中每個(gè)條目均象征著某一個(gè)關(guān)鍵點(diǎn)的 X 或 Y 坐標(biāo)。只要我們的結(jié)構(gòu)保持統(tǒng)一并且可預(yù)測(cè),便能以相同的方式對(duì)生成的數(shù)組展開比較。這就是我們的第一步:將物體數(shù)據(jù)變?yōu)閿?shù)組。

源自 PoseNet 的 JSON 數(shù)據(jù)片段,以及包含 X 和 Y 坐標(biāo)的扁平化數(shù)組的數(shù)據(jù)片段。(您會(huì)發(fā)現(xiàn)該數(shù)組并未考慮到置信度,我們稍后會(huì)回到這個(gè)話題?。?/p>

這樣,我們就可以使用余弦相似度來求得所輸入的 34 位浮點(diǎn)數(shù)組與數(shù)據(jù)庫中任何給定的 34 位浮點(diǎn)數(shù)組之間的相似度測(cè)量值。我們偶爾也可輸入兩個(gè)長(zhǎng)數(shù)組,然后獲得更易解析的相似度得分(介于 -1 與 1 之間)。

由于數(shù)據(jù)集中所有圖像的寬度/高度各不相同,且每個(gè)人還會(huì)出現(xiàn)在不同的圖像子集(左上、右下或中央子集等)中,因此我們額外執(zhí)行了兩個(gè)步驟,以便能對(duì)數(shù)據(jù)作出一致比較:

調(diào)整尺寸與縮放:我們根據(jù)每個(gè)人的邊界框坐標(biāo)來將每張圖像(以及相應(yīng)的關(guān)鍵點(diǎn)坐標(biāo))裁剪并縮放至同等尺寸。

歸一化:我們將得到的關(guān)鍵點(diǎn)坐標(biāo)視為 L2 歸一化向量數(shù)組,將其進(jìn)一步歸一化。

具體而言,我們使用 L2 歸一化來進(jìn)行第二步,這表示我們要將向量縮放為單位范數(shù)(如果將 L2 歸一化向量中的每個(gè)元素進(jìn)行一致化處理并對(duì)其求和,所得結(jié)果將為 1)。比較這些圖表,即可了解歸一化對(duì)向量的轉(zhuǎn)換方式:

利用 L2 歸一化縮放的向量

對(duì)上述兩個(gè)步驟可作如下直觀考慮:

Move Mirror 數(shù)據(jù)歸一化步驟

使用歸一化處理后的關(guān)鍵點(diǎn)坐標(biāo)(以向量數(shù)組形式存儲(chǔ)),我們最終可計(jì)算出余弦相似度并執(zhí)行若干計(jì)算(下文將詳細(xì)介紹),從而得出一個(gè)可解釋為余弦距離的歐幾里得距離。計(jì)算公式如下所示:

在以上公式中,F(xiàn)xy 與 Gxy 表示經(jīng) L2 歸一化處理后可供比較的兩個(gè)姿勢(shì)向量。此外,F(xiàn)xy 和 Gxy 僅包含 17 個(gè)關(guān)鍵點(diǎn)的 X 和 Y 坐標(biāo),并不包含每個(gè)關(guān)鍵點(diǎn)的置信度得分。

JavaScript 要點(diǎn)如下所示:

一目了然,對(duì)吧?開始匹配吧!

匹配策略 #2:加權(quán)匹配

好吧,其實(shí)這種方法仍存在很大缺陷。上例中,我們?cè)谟?jì)算余弦相似度時(shí)使用了兩個(gè)句子:“Jane likes to code” 和 “Irene likes to code”,這兩句話是靜態(tài)的:我們已就二者表示的含義得出了 100% 的置信度。但姿勢(shì)預(yù)測(cè)并非如此索然無味。事實(shí)上,我們?cè)谂ν茢嚓P(guān)節(jié)位置時(shí),幾乎從未得出 100% 的置信度。我們也能做到十分接近,但除非變成 X 光機(jī),否則我們很難較精確達(dá)到 100% 的置信度。有時(shí),我們也會(huì)完全看不到關(guān)節(jié),只能根據(jù)獲知的其他人體信息作出較佳猜測(cè)。

Posenet 會(huì)返回每個(gè)關(guān)鍵點(diǎn)的置信度得分。該模型預(yù)測(cè)關(guān)鍵點(diǎn)的置信度得分越高,結(jié)果就會(huì)越準(zhǔn)確

由此,每個(gè)返回的關(guān)節(jié)數(shù)據(jù)塊也會(huì)有置信度得分。有時(shí),我們非常自信能夠確定關(guān)節(jié)的位置(例如當(dāng)我們可以清楚看到關(guān)節(jié)時(shí));但有些時(shí)候,我們的置信度會(huì)很低(例如當(dāng)關(guān)節(jié)被攔斷或出現(xiàn)遮擋時(shí)),以至必須為數(shù)值附帶一個(gè)大大的聳肩表情符號(hào)來當(dāng)做擋箭牌。如果忽視這些置信度得分,我們便會(huì)喪失與自身數(shù)據(jù)相關(guān)的重要數(shù)據(jù),并可能對(duì)實(shí)際置信度較低的數(shù)據(jù)賦予過多權(quán)重和重要性。這會(huì)產(chǎn)生干擾,最終導(dǎo)致匹配結(jié)果十分怪異,看似雜亂無章。

因此,倘若余弦距離法較為實(shí)用且能產(chǎn)生良好結(jié)果,我們覺得納入對(duì)置信度得分(PoseNet 正確預(yù)計(jì)關(guān)節(jié)所在位置的概率)的考量將能進(jìn)一步提升結(jié)果的準(zhǔn)確度。具體而言,我們希望能對(duì)關(guān)節(jié)數(shù)據(jù)進(jìn)行加權(quán),以確保低置信度關(guān)節(jié)對(duì)距離指標(biāo)的影響低于高置信度關(guān)節(jié)。Google 研究員 George Papandreou 和 Tyler Zhu 合力研究出了一個(gè)能夠準(zhǔn)確進(jìn)行此類加權(quán)計(jì)算的公式:

在以上公式中,F(xiàn) 和 G 表示經(jīng) L2 歸一化處理后可供比較的兩個(gè)姿勢(shì)向量(已在前文中有過說明)。Fck 表示 F 的 kth 關(guān)鍵點(diǎn)的置信度得分。Fxy 和 Gxy 表示每個(gè)向量的 kth 關(guān)鍵點(diǎn)的 x 和 y 坐標(biāo)。不理解整個(gè)公式也無妨,重點(diǎn)在于您要理解我們需使用關(guān)鍵點(diǎn)置信度得分來改善匹配結(jié)果。以下 Javascript 要點(diǎn)可能會(huì)更清晰地說明這一點(diǎn):

這一策略可為我們提供更準(zhǔn)確的結(jié)果。即使人體被遮擋或位于框架之外,我們也能借助該策略更準(zhǔn)確地找到與用戶所做動(dòng)作相似的姿勢(shì)圖像。

Move Mirror 嘗試根據(jù) PoseNet 預(yù)測(cè)的姿勢(shì)來尋找匹配圖像。匹配準(zhǔn)確度取決于 PoseNet 的準(zhǔn)確度和數(shù)據(jù)集的多樣性。

大規(guī)模搜索姿勢(shì)數(shù)據(jù):約在 15 毫秒內(nèi)搜索 80000 張圖像

最后,我們必須設(shè)法弄清如何進(jìn)行大規(guī)模搜索和匹配。首先,我們可以輕松進(jìn)行暴力匹配:在對(duì)輸入姿勢(shì)與包含 10 種姿勢(shì)的數(shù)據(jù)庫中的每個(gè)條目進(jìn)行比較時(shí),毫不費(fèi)力。但顯而易見,10 張圖像遠(yuǎn)遠(yuǎn)不夠:為涵蓋各類人體動(dòng)作,我們至少需要數(shù)萬張圖像。您也許已經(jīng)預(yù)料到,對(duì)包含 80000 張圖像的數(shù)據(jù)庫中的每個(gè)條目運(yùn)行距離函數(shù),將無法生成實(shí)時(shí)結(jié)果!因此,我們的下一個(gè)難題就是設(shè)法弄清如何快速推導(dǎo)可以跳過的條目以及真正相關(guān)的條目。我們能夠確信跳過的條目越多,返回匹配結(jié)果的速度就會(huì)越快。

我們從 Zach Lieberman 和 Land Lines 實(shí)驗(yàn)中得到啟發(fā),并采用了一種名為 “制高點(diǎn)樹” 的數(shù)據(jù)結(jié)構(gòu)(前往此處查看 Javascript 庫)來遍歷姿勢(shì)數(shù)據(jù)。制高點(diǎn)樹以遞歸方式將數(shù)據(jù)劃分為兩類:一類為比閾值更臨近某個(gè)制高點(diǎn)的數(shù)據(jù),另一類為比閾值相距更遠(yuǎn)的數(shù)據(jù)。這一遞歸分類創(chuàng)造了一個(gè)可供遍歷的樹形數(shù)據(jù)結(jié)構(gòu)。(如果您熟知制高點(diǎn)樹,便會(huì)發(fā)現(xiàn)它與 K-D 樹有些類似。您可以在此處了解制高點(diǎn)樹的更多相關(guān)信息。)

下面我們來深入探討一下 vp 樹。不能完全理解下文描述也無妨,重點(diǎn)是要理解大致原理。我們的數(shù)據(jù)空間中包含一組數(shù)據(jù)點(diǎn),從中選擇一個(gè)數(shù)據(jù)點(diǎn)(可隨機(jī)選擇?。┳鳛槲覀兊闹聘唿c(diǎn)(上圖中選擇的是數(shù)據(jù)點(diǎn) 5)。以該數(shù)據(jù)點(diǎn)為圓心畫一個(gè)圓,這樣便可看到部分?jǐn)?shù)據(jù)位于圓內(nèi),部分位于圓外。然后,我們?cè)龠x擇兩個(gè)新的制高點(diǎn):一個(gè)位于圓內(nèi),另一個(gè)位于圓外(此處分別選擇了數(shù)據(jù)點(diǎn) 1 和 7)。我們將這兩個(gè)數(shù)據(jù)點(diǎn)作為子數(shù)據(jù)點(diǎn)添加到第一個(gè)制高點(diǎn)中。之后,我們對(duì)這兩個(gè)數(shù)據(jù)點(diǎn)執(zhí)行如下相同操作:分別以兩個(gè)數(shù)據(jù)點(diǎn)為圓心畫圓,在兩圓內(nèi)外各選一個(gè)數(shù)據(jù)點(diǎn),然后將這些制高點(diǎn)用作它們的子數(shù)據(jù)點(diǎn),以此類推。關(guān)鍵在于,如果您起初選擇數(shù)據(jù)點(diǎn) 5,之后發(fā)現(xiàn)數(shù)據(jù)點(diǎn) 7 要比 1 更接近您想要的位置,此時(shí)不僅可以舍棄數(shù)據(jù)點(diǎn) 1,還能舍棄其子數(shù)據(jù)點(diǎn)。

使用此樹形結(jié)構(gòu),我們就不必再去逐一比較每個(gè)條目:如果輸入的姿勢(shì)與制高點(diǎn)樹中某個(gè)節(jié)點(diǎn)的相似度不夠,我們便可設(shè)想該節(jié)點(diǎn)的所有子節(jié)點(diǎn)均不會(huì)達(dá)到足夠的相似度。如此,我們便無需暴力搜索數(shù)據(jù)庫中的所有條目,而只需通過遍歷制高點(diǎn)樹來進(jìn)行搜索,這樣我們就能夠安全、安心地舍棄數(shù)據(jù)庫中不相關(guān)的巨大數(shù)據(jù)列。

制高點(diǎn)樹有助我們大幅提升搜索結(jié)果的速度,同時(shí)還可打造我們向往的實(shí)時(shí)體驗(yàn)。盡管制高點(diǎn)樹應(yīng)用起來困難重重,但其使用體驗(yàn)之奇妙一如我們所望。

如果您想親自嘗試這些方法,可參考我們?cè)谑褂?Javascript 庫 vptree.js 構(gòu)建 vp 樹時(shí)所用的 Javascript 代碼要點(diǎn)。在本例中,我們使用了自有的距離匹配函數(shù),不過,我們也建議您去探索并嘗試其他可能的方法,只需在構(gòu)建時(shí)替換傳輸?shù)?vp 樹的距離函數(shù)即可。

在 Move Mirror中,我們最終只使用了最鄰近的圖像來匹配用戶姿勢(shì)。但如果是調(diào)試,我們實(shí)際可以遍歷制高點(diǎn)樹,并找到最鄰近的 10 張或 20 張圖像。事實(shí)上,我們構(gòu)建了一個(gè)調(diào)試工具來以這種方式探索數(shù)據(jù),而且該工具還能協(xié)助我們十分高效地探索數(shù)據(jù)集的漏洞。

使用我們的調(diào)試工具后,生成的圖像會(huì)按照相似度由高至低的順序進(jìn)行分類(依上述算法確定)

開發(fā)環(huán)境搭建

當(dāng)看到自己的動(dòng)作在游泳者、廚師、舞者和嬰兒身上再現(xiàn)時(shí),我們會(huì)覺得樂趣十足。此外,這項(xiàng)技術(shù)還能為我們帶來更多其他樂趣。想像一下,無論是搜索各類舞蹈動(dòng)作、經(jīng)典電影片段還是音樂短片,一切都可在您的私人客廳(甚至是您的私人瀏覽器)中完成。換個(gè)角度考慮,您還可利用姿勢(shì)預(yù)測(cè)協(xié)助指導(dǎo)居家瑜伽鍛煉或物理治療。Move Mirror 只是一項(xiàng)小小實(shí)驗(yàn),我們希望它能引領(lǐng)瀏覽器內(nèi)的姿勢(shì)預(yù)測(cè)實(shí)驗(yàn)遍地開花,讓大眾暢享無窮樂趣。

聲明:文章收集于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系小編及時(shí)處理,謝謝!

歡迎加入本站公開興趣群

商業(yè)智能與數(shù)據(jù)分析群

興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價(jià)值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報(bào)表系統(tǒng)等全方位知識(shí)

QQ群:81035754

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/4802.html

相關(guān)文章

  • 有了 TensorFlow.js,覽器就能進(jìn)行實(shí)時(shí)人體姿勢(shì)判斷

    摘要:反饋檢測(cè)到的每個(gè)人的置信度值以及檢測(cè)到的每個(gè)姿勢(shì)關(guān)鍵點(diǎn)。姿勢(shì)置信度這決定了姿勢(shì)判斷的整體置信度。在較高級(jí)別,這將控制回饋的姿勢(shì)較低置信度分?jǐn)?shù)。只有在調(diào)整姿勢(shì)置信度得分不夠好的情況下,為了過濾掉不太準(zhǔn)確的姿勢(shì),該數(shù)值應(yīng)該增加或減少。 文 / Dan Oved,Google Creative Lab 的自由創(chuàng)意技術(shù)專家,紐約大學(xué) ITP 的研究生。編輯和插圖 / 創(chuàng)意技術(shù)專家 Irene Alv...

    KaltZK 評(píng)論0 收藏0
  • CVPR 2018:用GAN預(yù)測(cè)20年后你長(zhǎng)什么樣

    摘要:年后的你長(zhǎng)什么樣北京航空航天大學(xué)和密歇根州立大學(xué)的研究人員設(shè)計(jì)了一個(gè)系統(tǒng),采用生成對(duì)抗網(wǎng)絡(luò),可以根據(jù)原始照片生成一個(gè)人年齡增長(zhǎng)后的樣子,甚至連發(fā)際線逐漸后移也能逼真地模擬。 20年后的你長(zhǎng)什么樣?北京航空航天大學(xué)和密歇根州立大學(xué)的研究人員設(shè)計(jì)了一個(gè)AI系統(tǒng),采用生成對(duì)抗網(wǎng)絡(luò)(GAN),可以根據(jù)原始照片生成一個(gè)人年齡增長(zhǎng)后的樣子,甚至連發(fā)際線逐漸后移也能逼真地模擬。論文發(fā)表在CVPR 2018...

    notebin 評(píng)論0 收藏0
  • 吃了這些數(shù)據(jù)集和模型,跟 AI 學(xué)跳舞,做 TensorFlowBoys

    摘要:最近,這就是街舞第二季開播,又一次燃起了全民熱舞的風(fēng)潮。然而,真要自己跳起來,實(shí)際與想象之間,估計(jì)差了若干個(gè)羅志祥。系統(tǒng)映射結(jié)果展示對(duì)于系統(tǒng)的結(jié)果,研究人員表示還不完美。谷歌在和跳舞的結(jié)合上也花了心思。好了,先不說了,我要去跟學(xué)跳舞了。 最近,《這!就是街舞》第二季開播,又一次燃起了全民熱舞的風(fēng)潮。 剛開播沒多久,這個(gè)全程高能的節(jié)目,就在豆瓣上就得到了 9.6 的高分。舞者們?cè)诒荣愔芯?..

    dkzwm 評(píng)論0 收藏0
  • 好球還是壞球(棒球術(shù)語),用tensorflow.js預(yù)測(cè)一下?

    摘要:感謝像這樣的框架,使得這些數(shù)據(jù)集可以應(yīng)用于機(jī)器學(xué)習(xí)領(lǐng)域。藍(lán)點(diǎn)被標(biāo)記為壞球,橙點(diǎn)被標(biāo)記為好球標(biāo)注來自大聯(lián)盟裁判員使用構(gòu)建模型將機(jī)器學(xué)習(xí)帶入和領(lǐng)域。使用庫將預(yù)測(cè)結(jié)果呈現(xiàn)為熱圖。好球區(qū)域位于本壘板上方至英尺之間。 在這篇文章中,我們將使用TensorFlow.js,D3.js和網(wǎng)絡(luò)的力量來可視化訓(xùn)練模型的過程,以預(yù)測(cè)棒球數(shù)據(jù)中的壞球(藍(lán)色區(qū)域)和好球(橙色區(qū)域)。在整個(gè)訓(xùn)練過程中,我們將一步...

    chinafgj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<