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

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

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

Shadow Art: 頌揚(yáng)中國皮影戲藝術(shù)的 AI 實驗

Tensorflowers ? 來源:楊湘祁 ? 作者:電子發(fā)燒友 ? 2019-03-15 16:21 ? 次閱讀

我們曾在之前的博文中介紹過Shadow Art。這是一項 AI 實驗,旨在頌揚(yáng)中國古老的皮影戲藝術(shù)。實驗利用TensorFlow.js,在互動游戲中將用戶的手影轉(zhuǎn)換成數(shù)字動物。

在本文中,我們將探討我們?nèi)绾卫?TensorFlow.js 構(gòu)建 Shadow Art。實驗使用的所有代碼皆為開放源代碼,且可在 Github 上獲得(https://github.com/thebitstudio/shadowart_ai_experiment)。

ShadowArt 簡介

在 Shadow Art 中,您可通過在筆記本電腦手機(jī)攝像頭前擺弄手(字面意思),形成十二生肖動物的手影。如果手影正確匹配,系統(tǒng)便會將手影轉(zhuǎn)換成相應(yīng)動物的動畫影象。

去年 9 月,我們曾構(gòu)建一款互動式現(xiàn)實世界裝置。該裝置利用 TensorFlow 幫助人們探索皮影戲藝術(shù)。在中國農(nóng)歷新年,我們決定在線提供這項產(chǎn)品,以供所有人體驗。為實現(xiàn)該目標(biāo),我們轉(zhuǎn)而采用 TensorFlow.js。

借助 TensorFlow.js 在線推出 Shadow Art

要在網(wǎng)絡(luò)上推出這項產(chǎn)品就需要改變原始的離線 Shadow Art。

首先,在離線版本中,我們需要捕捉用戶的手部數(shù)據(jù)并在服務(wù)器上加以處理,發(fā)送要處理的圖像并將其存儲在服務(wù)器端。但是在網(wǎng)絡(luò)版本中,我們可通過使用 TensorFlow.js,將所有內(nèi)容一次性加載到瀏覽器,并在瀏覽器中完成整個 Shadow Art 流程:捕捉手部數(shù)據(jù)、處理數(shù)據(jù)、執(zhí)行推理、顯示結(jié)果,更不用說應(yīng)用所需的其他依賴項。最困難的部分是用于執(zhí)行手部數(shù)據(jù)分類的機(jī)器學(xué)習(xí);畢竟這是核心的一環(huán),而借助 TensorFlow.js,我們可以完成這項任務(wù)。

模型

模型將輸入圖像(用戶的手部圖像)與給定的一組類模板進(jìn)行對比,以此判斷最相似的圖像。借助此方法,我們可以自由地為每個類添加或移除圖像模板,甚至可以在不重新訓(xùn)練模型的情況下引入新的類。

機(jī)器學(xué)習(xí)模型能夠有效學(xué)習(xí)如何使用殘差網(wǎng)絡(luò)高效對比兩張圖像,從而將固定長度的輪廓轉(zhuǎn)換為固定維度的特征向量。

特征抽取網(wǎng)絡(luò)

我們使用以下指標(biāo)將從用戶手部圖像中抽取的特征與示例類中的特征進(jìn)行對比:損失 = -exp(-(x-y)*(x-y)),其中 x 和 y 是從網(wǎng)絡(luò)中獲取的特征向量。為此,我們在訓(xùn)練期間抽取圖像數(shù)據(jù)中的陰影輪廓、執(zhí)行歸一化,并隨機(jī)旋轉(zhuǎn)每個輪廓,然后再將輪廓送入訓(xùn)練管道。

在對比指標(biāo)方面,我們采用負(fù)高斯,因為負(fù)高斯具有有界邊緣,可防止出現(xiàn)梯度爆炸。對比其實就是計算距離。我們首先想到的是采用平方差之和。該函數(shù)沒有極限值,有可能會導(dǎo)致梯度爆炸,不過其指數(shù)具有極限值。因此,我們采用平方差之和的負(fù)指數(shù),并乘以另一個負(fù)數(shù),以構(gòu)成一個最小化問題。

與類模板的特征對比

數(shù)據(jù)集

初始數(shù)據(jù)集中包含很多從我們的團(tuán)隊成員處收集的二進(jìn)制陰影投射圖像,整個過程非常有趣。我們將這些圖像用作訓(xùn)練數(shù)據(jù),以供機(jī)器學(xué)習(xí)模型學(xué)習(xí)如何比較圖像。此外,我們還將這些圖像用作匹配模板。

捕捉的用戶手部輪廓

數(shù)據(jù)集中包含的圖像的分辨率各不相同。由于這些圖像的性質(zhì),我們需要使用 RNN 或數(shù)據(jù)預(yù)處理等動態(tài)模型,將圖像轉(zhuǎn)換為固定維度的特征向量,以便進(jìn)行直接對比。不過,像 RNN 這類高方差模型需要更多的數(shù)據(jù),否則可能會出現(xiàn)過度擬合的情況。

對我們而言,數(shù)據(jù)預(yù)處理就是輪廓抽取,用于將圖像轉(zhuǎn)化為固定維度的特征向量,換句話說,就是準(zhǔn)備數(shù)據(jù)并將數(shù)據(jù)送入殘差網(wǎng)絡(luò)。

執(zhí)行

Shadow Art 在線體驗

我們使用支持 TPU 的 TensorFlow 訓(xùn)練模型,然后進(jìn)行轉(zhuǎn)換,從而借助 TensorFlow.js 在網(wǎng)絡(luò)上使用模型。

最初,我們的應(yīng)用是在服務(wù)器端執(zhí)行分類,而且用戶量很大,因此我們預(yù)期會出現(xiàn)繁重的服務(wù)器負(fù)載。我們開展多個實驗,以期克服該問題:

我們借助 TensorFlow.js,使用客戶端 JavaScript 部署模型,以將機(jī)器學(xué)習(xí)處理任務(wù)移至客戶端

該模型可供直接使用,且無需進(jìn)行修改

移植的模型大小為 10.7MB,可以接受

每當(dāng)我們檢測到用戶的手靜止不動時,便會執(zhí)行分類,整個過程大約用時一秒,而且分類時間幾乎無法察覺

為了對用戶的手部數(shù)據(jù)進(jìn)行分類,我們采用修改版殘差網(wǎng)絡(luò)執(zhí)行一次分類(每個類只使用少量示例)。該網(wǎng)絡(luò)會獲取固定長度的手部輪廓,并從中推斷出動物類。

雖然可以使用 TensorFlow.js 在瀏覽器上訓(xùn)練模型,但我們使用 TPU 上的專用后端訓(xùn)練模型。然后使用 TensorFlow.js 將預(yù)訓(xùn)練的模型部署到瀏覽器,并在網(wǎng)絡(luò)應(yīng)用加載訓(xùn)練后存儲權(quán)重。無需再在瀏覽器中進(jìn)行訓(xùn)練。默認(rèn)情況下,TensorFlow.js 采用動態(tài)編程范式。如此一來,即可在瀏覽器上輕松執(zhí)行和測試想法。

為實現(xiàn)最大程度的控制,我們一次性自定義自己的權(quán)重轉(zhuǎn)移協(xié)議(包括如何編碼和壓縮權(quán)重及模板以學(xué)習(xí)執(zhí)行對比操作),以及用于網(wǎng)絡(luò)應(yīng)用的額外數(shù)據(jù)。

這樣做的好處是我們可以在任何現(xiàn)有的張量庫(而非只限于 TensorFlow)上構(gòu)建訓(xùn)練管道。只要我們能夠以相同的格式保存權(quán)重,并將其下載到我們的網(wǎng)頁應(yīng)用(借助 Tensorflow.js)即可。

TensorFlow.js 對比服務(wù)器端方法的優(yōu)勢

響應(yīng)能力:在客戶端分類陰影,并為用戶提供即時反饋。若使用基于服務(wù)器的方法,則需要將圖像發(fā)送到云,如此一來,分類結(jié)果就會出現(xiàn)延遲

減少帶寬使用量及依賴項:不將用戶的手部圖像發(fā)送到服務(wù)器可顯著減少用戶的帶寬使用量。此外,當(dāng)頁面加載完畢后,應(yīng)用即可獨立于互聯(lián)網(wǎng)帶寬順暢地運(yùn)行

減少服務(wù)器負(fù)載:迅速執(zhí)行手影分類,并為用戶提供即時反饋,告知其手影與陰影模板的匹配度。將此任務(wù)移至用戶端可大幅減少服務(wù)器負(fù)載

網(wǎng)絡(luò)托管要求更簡單:無需設(shè)置基于 GPU 的云服務(wù)以提供模型,只需簡單的網(wǎng)絡(luò)托管服務(wù)即可

擴(kuò)展更為容易:網(wǎng)絡(luò)托管服務(wù)除了簡單以外,還更容易設(shè)置和擴(kuò)展,而且困難的部分也已進(jìn)行處理

瀏覽器上的數(shù)據(jù)處理

為了在瀏覽器上獲取手部輪廓,我們使用 OpenCV.js 通過網(wǎng)絡(luò)攝像頭從 HTML5

執(zhí)行減除操作后,我們會處理手部圖像以清除噪音(包括輪廓歸一化和重新采樣),然后再將圖像作為陰影重新繪制到應(yīng)用中。

捕捉并處理手部圖像以實時創(chuàng)建陰影效果

根據(jù)初步試驗,在 Android 手機(jī)上完成整個推理管道(包括預(yù)處理及分類)所用的時間不到一秒??紤]到所用的資源有限,這個時間相當(dāng)驚人。

將結(jié)果集成到 AI 實驗

鑒于分類結(jié)果,我們利用從模型返回的置信度值的閾值來判斷手勢是否與動物陰影匹配。與直接挑選置信度值最高的手勢相比,這樣做的結(jié)果更為直觀。您可以這樣想:人類判斷手影是否像兔子的方式是測量手影有多像兔子,而不是比較手影看起來是否更像兔子而非其他動物。如此一來,我們即可輕松微調(diào)應(yīng)用的難度,使其成為最適合全球用戶的應(yīng)用。

知道每位用戶預(yù)期的動物之后,接下來就是將用戶輸入的手影與結(jié)果關(guān)聯(lián),并將手影轉(zhuǎn)換為動物形象,然后再播放預(yù)先錄制的陰影轉(zhuǎn)化為活體動物的動畫,如此即完成一次試驗。

用戶的手影(左)。變形后的動物陰影(右)

從用戶的手影變形為目標(biāo)動物是 AI 實驗中精彩的一環(huán)。為確保捕捉的形狀順利變形為動物,我們從以下兩種陰影中抽取輪廓:輸入的手影和目標(biāo)動物陰影。

陰影輪廓(為簡化起見,限定為 100 點)。首先索引的地方以紅色繪制

然后我們進(jìn)行優(yōu)化,以在手影輪廓(源輪廓)和動物陰影輪廓(目標(biāo)輪廓)中找到正確匹配的每個點,接著執(zhí)行步插值,以將源輪廓轉(zhuǎn)換為目標(biāo)輪廓。

我們執(zhí)行動態(tài)時間彎曲,以便匹配不同的特征,如耳朵及更小的特征。

針對網(wǎng)站進(jìn)行優(yōu)化

精細(xì)控制動畫

在網(wǎng)站上播放的視頻通常為 .mp4 格式。但是,在網(wǎng)頁上播放 .mp4 文件不允許我們對動畫進(jìn)行精細(xì)控制,而我們需要在陰影變形后使用這項功能來播放動畫,從而獲得順暢的體驗。

我們將動畫轉(zhuǎn)化成 PNG 序列。我們選擇每一幀中特定的部分,并將其繪制在畫布上。將這種方法與手影變形相結(jié)合,我們可以精確地知道何時繪制綜合變形及預(yù)創(chuàng)建的視頻:用戶將看到手影變形為動物陰影,接著轉(zhuǎn)換為彩色的動物形象。

預(yù)加載數(shù)據(jù)

預(yù)加載所有動畫可以減少下載數(shù)據(jù)時的卡頓現(xiàn)象,從而提升用戶體驗。

下載大小

下載大小是確保我們網(wǎng)頁應(yīng)用更便于訪問的重要方面之一。初始版本的應(yīng)用需要用戶下載大約 200MB 的數(shù)據(jù)。因此,我們不得不執(zhí)行各種優(yōu)化措施,以縮減下載大小。

PNG 大小優(yōu)化我們首先查找應(yīng)用中最消耗帶寬的部分,結(jié)果發(fā)現(xiàn) PNG 序列組合之后的大小超過 180MB。將 RGB PNG 轉(zhuǎn)換為基于調(diào)色板的 PNG(僅允許從定義的集合中采樣圖像顏色),可將文件大小減少 70% 以上

模型模板優(yōu)化我們的算法要求每個動物的手影模板與用戶的手影匹配。在特征抽取過程中,每個手影將轉(zhuǎn)換為輪廓,然后再被抽取到向量中。因此,我們并未存儲手部模板作為圖像,而是針對每個模板直接存儲抽取的特征向量。這樣做還可節(jié)省大量空間

結(jié)語與致謝

雖然當(dāng)前模型僅限用于輪廓等對象分類,但其應(yīng)用范圍遠(yuǎn)不止如此。學(xué)習(xí)對比的核心概念是能夠在不重新訓(xùn)練模型的情況下改變分類目標(biāo)。

現(xiàn)在通過使用 Tensorflow.js,熱表格人都能制作實現(xiàn)這種可移植性的網(wǎng)頁應(yīng)用,使監(jiān)督式學(xué)習(xí)變得更加個性化。我們只需提供幾個示例類,所有人便可使用或教授這種現(xiàn)成的對象分類工具,這令人很興奮。所有人都可以輕松自定義該工具,以解決任何給定的特定任務(wù)。

非常感謝 Kiattiyot Panichprecha、Isarun Chamveha、Phatchara Pongsakorntorn、Chatavut Viriyasuthee 和 Pittayathorn Nomrak 在構(gòu)建此實驗時提供的所有幫助,而且我們期待更多使用模型和 Tensorflow.js 的有用、創(chuàng)新及有趣用例!

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

    關(guān)注

    87

    文章

    29806

    瀏覽量

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

    關(guān)注

    4

    文章

    1200

    瀏覽量

    24619

原文標(biāo)題:Shadow Art: 頌揚(yáng)中國皮影戲藝術(shù)的 AI 實驗

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    模擬版圖的藝術(shù)《the Art of Analog Layout》教程

    模擬版圖的藝術(shù)《the Art of Analog Layout》高度清晰版,可用詞霸取詞!模擬版圖的藝術(shù)《the Art of Analog Layout》共四個壓縮包The
    發(fā)表于 12-12 17:49

    透鏡成像講義

    透鏡成像講義 光線:光以直線前進(jìn)。 影子:光線被不透明物           體擋住而形成。  例如:皮影戲、日晷、
    發(fā)表于 11-18 11:36 ?0次下載

    風(fēng)頭正勁的人工智能,會重蹈去年VR的覆轍嗎?

    人工智能概念誕生伊始,就承載了人類對未來世界的無限遐想,這個以智慧和思維為模型的類人智能體從淺層次講是人類的影子,就像皮影戲中的傀儡,動靜皆由人類掌控。
    發(fā)表于 02-14 08:39 ?499次閱讀
    風(fēng)頭正勁的人工智能,會重蹈去年VR的覆轍嗎?

    從古代皮影戲到現(xiàn)在的各種投影機(jī)

    相傳2000年前的西漢,我國陜西出現(xiàn)了一種名為羊皮戲,又稱人頭戲、影子戲,驢皮影藝術(shù)形式,也就是我們現(xiàn)在耳熟能詳?shù)?b class='flag-5'>皮影戲。 后來,幻燈機(jī)出現(xiàn)了;再后來,投影機(jī)面世了。說來說去,如果充分發(fā)揮
    發(fā)表于 06-13 07:32 ?2796次閱讀

    谷歌涂鴉引入人工智能試驗教用戶玩皮影戲

    北京時間2月4日早間消息,據(jù)美國科技媒體9to5 Google報道,為了慶祝2019農(nóng)歷新年,谷歌涂鴉(Google Doodle)本周二引入一項人工智能試驗,以創(chuàng)新的方式利用手機(jī)前置攝像頭,來教用戶玩皮影戲
    的頭像 發(fā)表于 02-13 15:34 ?3027次閱讀

    AI的發(fā)展會終結(jié)藝術(shù)

    當(dāng)AI進(jìn)入藝術(shù)界的時候,可能在以后會出現(xiàn)新的藝術(shù)思潮,藝術(shù)流派,藝術(shù)批評等。
    發(fā)表于 06-18 16:37 ?1299次閱讀

    Shadow靈巧手是英國Shadow Robot公司推出的先進(jìn)仿人機(jī)器手

    Shadow公司一直與世界上先進(jìn)的AI、機(jī)器人公司保持項目合作,在最近與openAI的合作中(這是一次非常有趣的合作,我們會在后續(xù)的文章中詳細(xì)介紹),Shadow將原有的機(jī)械手進(jìn)行了升級更新,并命名為
    發(fā)表于 05-14 14:56 ?2830次閱讀

    2019人工智能·藝術(shù)與科技展暨數(shù)字媒體藝術(shù)教育論壇”在滬舉行

    對于藝術(shù)Art)與人工智能(AI)的結(jié)合,上海美術(shù)家協(xié)會副主席李磊認(rèn)為,上海一直有創(chuàng)新的傳統(tǒng),在藝術(shù)領(lǐng)域,人工智能、新科技與藝術(shù)的結(jié)合對于
    的頭像 發(fā)表于 12-14 09:23 ?3983次閱讀

    ART-Pi上完成帶有人像識別功能的趣味AI相機(jī)實驗

    本次實驗將由兩位社區(qū)開發(fā)者鄧可笈、劉恒言指導(dǎo)小伙伴們在ART-Pi上完成帶有人像識別功能的趣味AI相機(jī)實驗,只需使用RT-Thread新推出的RTAK工具完成對
    的頭像 發(fā)表于 01-13 16:55 ?3295次閱讀

    半導(dǎo)體的旋律怎么定,連接器就怎么唱

    連接器的產(chǎn)業(yè)跟芯片與電子產(chǎn)業(yè)的發(fā)展緊密相關(guān)。如果將連接器看成是芯片與電子行業(yè)伸展出來的長腳,那么一點不令人驚訝的是:連接器產(chǎn)業(yè)的歷史就是半導(dǎo)體產(chǎn)業(yè)投射出來的皮影戲。半導(dǎo)體的旋律怎么定,連接器就怎么唱。
    發(fā)表于 11-30 11:29 ?1784次閱讀

    一“映”俱全,室內(nèi)大屏顯示之視覺跳動智能激光屏

    因太陽光線照射而顯出物體的形象,是“映”字的本來涵義,民間傳統(tǒng)藝術(shù)皮影戲就是應(yīng)用“映”這個最簡單的自然現(xiàn)象發(fā)展出來的一項在封建社會具有廣泛受眾的古老娛樂活動,皮影戲的原理是,在“映”的自然現(xiàn)象基礎(chǔ)上
    的頭像 發(fā)表于 12-14 15:51 ?668次閱讀

    智能投影儀竟然是由皮影戲發(fā)展而來?一文帶你了解投影儀的前世今生!

    講講投影儀的發(fā)展史,看看投影儀的前世今生和未來發(fā)展趨勢。 ? 1.皮影戲 皮影戲又名“燈影”,最早出現(xiàn)在西漢時期,并于元代時傳播到國外,據(jù)《漢書·外戚傳上·孝武李夫人》記載,漢武帝十分寵愛其妃子李夫人。李夫人去世后,漢武帝悲痛欲絕
    的頭像 發(fā)表于 12-22 16:37 ?3343次閱讀
    智能投影儀竟然是由<b class='flag-5'>皮影戲</b>發(fā)展而來?一文帶你了解投影儀的前世今生!

    生成藝術(shù)AI藝術(shù)的突破

    Anadol 是數(shù)字媒體的先行者。在工作中,他始終著迷于藝術(shù)AI 的交匯。Anadol 第一次接觸作為藝術(shù)工具的 AI 是在谷歌,在那里他使用深度學(xué)習(xí)以及 NVIDIA GPU 創(chuàng)
    的頭像 發(fā)表于 02-10 15:29 ?1696次閱讀

    一“映”俱全,視覺跳動室內(nèi)大屏顯示

    皮影戲是我國民間傳統(tǒng)藝術(shù),又稱“驢皮影”“影子戲”和“燈影戲”,是一種用蠟燭或燃燒的酒精等光源照射獸皮或紙板做成的人物剪影以表演故事的民間戲劇。表演時,藝人們在白色幕布后面,一邊操縱戲
    的頭像 發(fā)表于 05-24 14:53 ?413次閱讀
    一“映”俱全,視覺跳動室內(nèi)大屏顯示

    一“映”俱全,室內(nèi)大屏顯示之HISAN智能激光屏

    因太陽光線照射而顯出物體的形象,是“映”字的本來涵義,民間傳統(tǒng)藝術(shù)皮影戲就是應(yīng)用“映”這個最簡單的自然現(xiàn)象發(fā)展出來的一項在封建社會具有廣泛受眾的古老娛樂活動,皮影戲的原理是,在“映”的自然現(xiàn)象基礎(chǔ)上
    的頭像 發(fā)表于 11-05 17:11 ?608次閱讀
    一“映”俱全,室內(nèi)大屏顯示之HISAN智能激光屏