女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用TensorFlow.js構建這一系統

DPVg_AI_era ? 來源:未知 ? 作者:李倩 ? 2018-08-19 08:55 ? 次閱讀

如果聲音才是計算交互的未來,那么那些聾啞人怎么辦?帶著這個問題,本文作者構建了一套系統,讓亞馬遜的Alexa智能小助手學會了識別手語。本文介紹了如何使用TensorFlow.js來構建這一系統,全部代碼和演示已上傳至Github。

幾個月前,有一天晚上我躺在床上,一個念頭閃過我的腦海:“如果聲音才是計算交互的未來,那么那些聾啞人怎么辦?”我不知道究竟為何會產生這個想法,我自己可以正常說話、聽覺也正常,我周圍認識的人也沒有聾啞人,我也不使用語音助手。這個問題總是縈繞在我的腦子里,于是我知道自己需要好好研究一下了。

最終結果就是現在這個項目的誕生,我讓一臺Amazon Echo智能揚聲器對手語做出了響應。確切的說是對美國手語(ASL)做出了響應,因為手語種類有很多。

本文將介紹如何使用TensorFlow.js構建這一系統。讀者可以用自己的單詞和手語/手勢組合來對模型進行訓練。此外,我希望這種方法有助于讓人們將焦點從項目的技術元素上轉移出來,而更多關注人文元素。這個項目更多的不是關于底層技術的討論,而是該技術能為人類提供的能力。

前期研究與系統需求

構建系統需要:

用于解釋符號的神經網絡(將視頻轉換為文本)。

一個文本到語音的轉換系統,向Alexa說出需要解釋的手勢。

語音到文本的轉換系統,用于轉錄Alexa對用戶的響應。

運行此系統的設備(筆記本電腦/平板電腦)和與之交互的Echo智能揚聲器。

將上述部分聯系在一起的交互界面。

我可能花了很多時間來確定采用哪種類型的神經網絡架構。為此我提出了幾個選項:

1.由于符號有視覺和時間兩個方面的屬性,我一開始想選擇CNN與RNN的組合,其中將最后一個卷積層的輸出(在分類之前)作為序列輸入RNN。我后來發現這種網絡學名叫長期循環卷積網絡(LRCN)。

2.使用3D卷積網絡,其中卷積將以三維方式應用,前兩個維度是圖像,第三維度是時間。然而,這些網絡需要大量的內存,我的macbook pro吃不消。

3.不再對視頻流中的各幀都進行CNN訓練,而是僅在光流表示上進行訓練,該光流表示將表示兩個連續幀之間的視在運動的模式。也就是說,它會對動作進行編碼,這將產生更為通用化的手語模型。

4.使用雙流CNN,其中空間流將是單幀(RGB)的,時間流將使用光流表示。

我通過閱讀論文發現,這些論文至少使用了上述一些視頻活動識別方法。然而,我很快就意識到,由于我的計算力有限,而且我需要從頭開始研究和實施這些論文中的方法,時間和硬件條件都不夠。我最終確定的方法與上面完全不同。

為什么選擇TensorFlow.js

TensorFlow.js團隊一直在進行有趣的基于瀏覽器的實驗,以使人們熟悉機器學習的概念,并鼓勵他們將其用作您自己項目的構建塊。對于那些不熟悉的人來說,TensorFlow.js是一個開源庫,允許用戶使用Javascript直接在瀏覽器中定義、訓練和運行機器學習模型。特別是兩個演示似乎是有趣的起點 - Pacman網絡攝像頭控制器和可教學機器(Teachable Machine)。

雖然它們都從網絡攝像頭獲取輸入圖像并根據訓練數據輸出預測結果,但其內部每個操作都不同:

1)“吃豆人”(Pacman)網絡攝像頭。它使用卷積神經網絡(CNN),采用來自網絡攝像頭的輸入圖像,通過一系列卷積和最大池化層進行傳遞。它可以提取圖像的主要特征,并根據已經訓練過的例子預測其標簽。由于訓練是一個代價昂貴的過程,使用名為MobileNet的預訓練模型進行遷移學習。該模型在1000個ImageNet類上進行了訓練,但經過優化,可以在瀏覽器和移動應用程序中運行。

2)可教學的機器。使用kNN(k-Nearest-Neighbors)模型,它非常簡單,從技術上講,它根本不執行任何“學習”。它采用輸入圖像(來自網絡攝像頭)并通過使用相似度函數或距離度量找到最接近該輸入圖像的訓練樣本的標簽來對其進行分類。

不過,在圖像輸入kNN之前,首先要通過名為SqueezeNet的小型神經網絡,然后將該網絡倒數第二層的輸出作為輸入進入kNN,這樣讀者就可以訓練自己的模型。這樣做的好處是,我們可以使用SqueezeNet已經學過的高級抽象內容,而不是直接從網絡攝像頭向kNN提供原始像素信息,從而訓練表現更好的分類器。

選擇使用TensorFlow.js也有其他原因:

1.進行原型設計時,無需編寫任何代碼。一開始通過簡單地在瀏覽器中運行原始示例,進行早期原型設計,對我打算使用的手勢進行訓練,并查看系統如何執行。即使輸出意味著pac-man在屏幕上移動。

2.可以使用TensorFlow.js直接在瀏覽器中運行模型。從可移植性,開發速度和Web界面交互的能力的角度來看,這都是巨大的優勢。此外,模型可以完全在瀏覽器中運行,無需將數據發送到服務器。

3.由于可以在瀏覽器中運行,因此可以很好地與現代瀏覽器支持的語音到文本和文本到語音API進行交互。

4.測試、訓練和調整速度更快,而這在機器學習任務中通常是一個挑戰。

5.由于我沒有手語數據集,并且訓練示例基本上是我反復執行手勢,因此使用網絡攝像頭來收集訓練數據非常方便。

在徹底測試了這兩種方法,并發現兩個系統在測試中表現相當之后,我決定使用后者作為我的系統的基礎,因為:

在較小的數據集上,kNN實際上可以比CNN更快/更好地執行。 當使用越來越多的示例進行訓練時,這種模型會變得很吃內存,造成性能下降。但是因為我使用的數據集很小,所以這不是問題。

由于kNN并未真正從示例中學習,因此在泛化方面表現很差。 因此,完全由一個人進行的實例訓練的模型的預測,在另一個人身上的適用度不高。不過,這對我來說仍然不是問題,因為訓練和測試模型的只有我一個人。

工作原理

1.在瀏覽器中啟動站點時,第一步是提供訓練示例。使用網絡攝像頭反復捕捉自己的手勢。這是個相對較快的過程,因為按住特定的捕獲按鈕會連續捕獲幀數,直到釋放按鈕,使用適當的手勢標記捕獲的圖像。我訓練的系統包含14個單詞,這些單詞在各種組合中允許我對Alexa發出各種請求。

2.訓練完成后,進入預測模式。使用來自網絡攝像頭的輸入圖像并通過分類器運行,根據上一步驟中提供的訓練示例和標簽手勢找到其最近的答案。

3.如果結果超過某個預測閾值,就將將手勢顯示到屏幕的左側。

4.接下來,使用Web Speech API進行語音合成,說出檢測到的手勢。

5.如果說出的單詞是Alexa,它會喚醒附近的Echo揚聲器并開始收聽查詢請求。另外值得注意的是,我設定了一個任意手勢(在空中揮右拳)來表示Alexa這個詞,因為美國手語中沒有Alexa這個單詞,反復拼寫A-L-E-X-A會很煩人。

6 一旦整個手勢短語完成后,我再次使用WebSpeech API來轉錄Echo揚聲器的響應,這個揚聲器響應的請求,并不知道該請求來自另一臺機器。轉錄的響應顯示在屏幕的右側,供用戶閱讀。

7 再次做出喚醒手勢,清除屏幕并重新開始重復查詢的過程。

我在Github上傳了所有代碼(https://github.com/shekit/alexa-sign-language-translator)。讀者可以隨意使用和修改。

一些尚待完善之處

雖然系統運行情況相對較好,但確實需要一些粗略的改進,來幫助獲得理想的結果并提高準確性,如:

確保沒有檢測到任何符號,除非出現喚醒詞Alexa。

添加一個包含完整的全部類別的訓練樣例,將其歸類為“其他”用于表示系統空閑狀態(無手勢的空白背景,人手臂自然下垂站立)。這可以防止錯誤地檢測到單詞。

在接受輸出之前設置高閾值,以減少預測錯誤。

降低預測速度??刂泼棵氲念A測量有助于減少錯誤的預測。

確保已在該短語中檢測到的單詞不再被視為新的預測。

另一個挑戰是準確預測用戶何時完成查詢簽名。這對于準確轉錄是必要的。如果轉錄提前觸發(在用戶完成簽名之前觸發),系統就會開始轉錄它自己的語音。否則,如果轉錄較晚觸發??赡軙е孪到y錯過轉錄Alexa的部分回答。為了克服這個問題,我實施了兩種獨立的技術,每種技術都有各自的優缺點:

第一個選項是在添加訓練用的特定單詞時將它們標記為終端單詞(terminal words)。這里所說的terminal words是指用戶只會在短語的末尾簽名的詞。例如,如果查詢是“Alexa,what’sthe weather?”那么,通過將“weather”標記為一個terminal word,當檢測到這個詞時,就可以正確地觸發轉錄。雖然這種方法很有效,但這意味著用戶必須記住在訓練期間將單詞標記為terminal words,并且還要假設這個詞只出現在查詢末尾。這意味著要重新調整你的查詢,如果問“Alexa,what’sthe weatherin New York?”,這種方法就不管用了。我們在視頻演示里使用了這種方法。

第二個選項是讓用戶簽署一個停止詞(stop-word),以便讓系統知道用戶已經完成了查詢。一旦識別出這個停止詞,系統就會觸發轉錄。因此,用戶將簽署Wakeword >Query> Stopword。這種方法存在用戶忘記簽署停止詞的風險,從而導致轉錄根本沒有被觸發。我在一個單獨的github branch中實現了這種方法,你可以在其中使用喚醒詞“Alexa”作為查詢的bookend,比如問“Alexa, what’s the weather in New York(Alexa)?”

當然,如果有一種方法能準確區分來自內部源(筆記本電腦)的語音和來自外部源(附近的Echo)的語音,這整個問題就能解決,但這是另外一個挑戰了。

接下來,我認為還有很多其他的方法能處理這個問題,你可以試著用來創建自己的項目:

Tensorflow.js也發布了PoseNet,使用它可能是一種有趣的方法。從機器的角度來看,跟蹤手腕、肘部和肩膀在視頻幀中的位置應該足以預測大多數單詞。在拼寫時,手指的位置通常最重要。

使用基于CNN的方法可能能夠提高準確性,并使模型更能抵抗平移不變性。CNN還有助于更好地推廣到不同的人,還可以包括保存模型或加載預訓練的Keras模型的能力。這將不再需要每次重啟瀏覽器都對系統進行訓練。

考慮時間特征的一些CNN+RNN或PoseNet+RNN的組合可以提高準確率。

使用tensorflow.js中包含的更新的可重用kNN分類器。

從我第一次發布這個項目以來,就在社交媒體上獲得廣泛分享和報道,甚至Amazon還在Echo Show上為說話障礙的人實現了一個輔助功能(Tap to Alexa)。這實在太酷了。希望在未來, Amazon Show或其他基于攝像頭和屏幕的語音助理都能加入這一功能。對我來說,可能這就是這個原型展示的最終用例了,同時也希望能夠為數百萬新用戶開放這些設備的能力。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4806

    瀏覽量

    102718
  • tensorflow
    +關注

    關注

    13

    文章

    330

    瀏覽量

    61019

原文標題:【GitHub熱門】用TensorFlow.js讓智能音箱“聽懂”手語(代碼開源)

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    TensorFlow XLA加速線性代數編譯器

    依賴項對GPU版本,需要NVIDIA軟件包以支持TensorFlow配置安裝。在這一步中,需要選擇不同的選項,如 XLA、Cuda 支持、Verbs 等:./configure
    發表于 07-28 14:31

    TensorFlow發表推文正式發布TensorFlow v1.9

    是前所未有的。之前人工智能頭條也為大家介紹了個在瀏覽器中通過TensorFlow.js 進行多人人臉識別與特征檢測的項目,也受到大家的廣泛關注。此外 TensorFlow 還給那些想了解、學習相關項目技術的關注者們推出了系列官
    的頭像 發表于 07-16 10:23 ?3311次閱讀

    利用TensorFlow.js,D3.js 和 Web 的力量使訓練模型的過程可視化

    TensorFlow.js 將機器學習引入 JavaScript 和 Web。 我們將利用這個很棒的框架來構建個深度神經網絡模型。這個模型將能夠按大聯盟裁判的精準度來稱呼好球和壞球。
    的頭像 發表于 08-08 14:24 ?7245次閱讀

    基于tensorflow.js設計、訓練面向web的神經網絡模型的經驗

    NVIDIA顯卡。tensorflow.js在底層使用了WebGL加速,所以在瀏覽器中訓練模型的個好處是可以利用AMD顯卡。另外,在瀏覽器中訓練模型,可以更好地保護用戶隱私,更容易讓用戶信任。
    的頭像 發表于 10-18 09:43 ?4342次閱讀

    Shadow Art: 頌揚中國皮影戲藝術的 AI 實驗

    在本文中,我們將探討我們如何利用 TensorFlow.js 構建 Shadow Art。
    的頭像 發表于 03-15 16:21 ?5864次閱讀

    谷歌正式發布了2.0 Alpha版本

    TensorFlow產品生態系統的核心組件,如TensorBoard、TensorFlow Hub、TensorFlow Lite和TensorFl
    的頭像 發表于 06-15 10:30 ?2995次閱讀

    TensorFlow.js制作了個僅用 200 余行代碼的項目

    我們先來看下運行的效果。下圖中,上半部分是原始視頻,下半部分是使用 TensorFlow.js 對人像進行消除后的視頻??梢钥吹?,除了偶爾會在邊緣處留有殘影之外,整體效果還是很不錯的。
    的頭像 發表于 05-11 18:08 ?5752次閱讀

    CNN是什么?美國有線電視新聞網嗎?

    它用TensorFlow.js加載了個10層的預訓練模型,相當于在你的瀏覽器上跑個CNN模型,只需要打開電腦,就能了解CNN究竟是怎么回事。
    的頭像 發表于 09-03 10:58 ?6331次閱讀
    CNN是什么?美國有線電視新聞網嗎?

    Danfo.js提供高性能、直觀易用的數據結構,支持結構化數據的操作和處理

    我們的愿景致,本質上也符合 TensorFlow.js 團隊向 Web 引入 ML 的目標。Numpy 和 Pandas 等開源庫全面革新了 Python 中數據操作的便利性。因此很多工具都圍繞它們構
    的頭像 發表于 09-23 18:21 ?5547次閱讀

    重大性能更新:Wasm 后端將利用 SIMD指令和 XNNPACK多線程

    3 月,我們為 TensorFlow.js 推出了個新的 WebAssembly(Wasm) 加速后端(繼續閱讀以進步了解 Wasm 及其重要性)。今天,我們很高興宣布項重大性能
    的頭像 發表于 09-30 15:15 ?1w次閱讀
    重大性能更新:Wasm 后端將利用 SIMD指令和 XNNPACK多線程

    如何通過開源的 TensorFlow.js BERT 模型來構建應用

    文 / 創意技術專家 Philip Bayer;軟件工程師 Ping Yu 和開發技術推廣工程師 Jason Mayes 在探索 BERT 針對語言的有益用例時,我們發現了許多令人興奮的研究。我們想知道:如果我們可以讓您更方便地在網絡瀏覽器中使用 BERT,將會怎么樣?這將實現哪些可能的有趣用例? 在 Google 中搜索提出類似于自由女神像有多高?的問題,并從網絡中得到答案(305 英尺)很容易。但是,還沒有辦法可以輕松針對具體內容(例如,新聞報道、研究論文或文章)用自然語言提
    的頭像 發表于 10-21 10:59 ?2263次閱讀

    如何基于 ES6 的 JavaScript 進行 TensorFlow.js 的開發

    TensorFlow.jsTensorFlow 的 JavaScript 版本,支持 GPU 硬件加速,可以運行在 Node.js 或瀏覽器環境中。它不但支持完全基于 JavaScript
    的頭像 發表于 10-31 11:16 ?3399次閱讀

    tensorflow構建流程

    本文主要闡述了tensorflow構建流程。
    的頭像 發表于 12-04 15:01 ?2074次閱讀
    <b class='flag-5'>tensorflow</b>的<b class='flag-5'>構建</b>流程

    使用TensorFlow和Artemis構建解決農村面臨的問題設備

    電子發燒友網站提供《使用TensorFlow和Artemis構建解決農村面臨的問題設備.zip》資料免費下載
    發表于 12-01 14:32 ?0次下載
    使用<b class='flag-5'>TensorFlow</b>和Artemis<b class='flag-5'>構建</b>解決農村面臨的問題設備

    CNN到底是怎么回事?

    它用TensorFlow.js加載了個10層的預訓練模型,相當于在你的瀏覽器上跑個CNN模型,只需要打開電腦,就能了解CNN究竟是怎么回事。
    的頭像 發表于 06-28 14:47 ?4399次閱讀
    CNN到底是怎么回事?