TensorFlow.js人臉識別—玩轉吃豆豆小遊戲
谷歌TenosrFlow開發者峰會2018上,發布了面向JavaScript開發者的全新機器學習框架 TensorFlow.js。這裡介紹一個TensorFlow.js的Demo,只需要一個網路攝像頭和瀏覽器,即可以訓練MobileNet網路,實現利用人臉識別玩轉吃豆豆小遊戲。
操作極其簡單粗暴,詳情請戳下述視頻,查看操作教程
PS:建議以1080p觀看視頻,本人頭像沒有打碼,還請見諒
undefined_騰訊視頻
文字教程
1 進入TensorFlow.js官網
TensorFlow.js鏈接:
TensorFlow.js

2 點擊吃豆豆Demo(WEBCAM CONTROLLER)
向下瀏覽TensorFlow.JS網頁,找到WEBCAM CONTROLLER[2],點擊GO TO DEMO!,進入吃豆豆小遊戲

3 吃豆豆Demo功能區介紹
功能區0:當前網路攝像機實時捕捉畫面
功能區1:訓練集採集區
- 1.1:向上移動
- 1.2:向下移動
- 1.3:向左移動
- 1.4:向右移動
註:因為吃豆豆的對象只有四種移動方式(上下左右),在深度學習中,這是一個多分類的問題,即訓練集中需要包括這四種類別的圖像。
功能區2:超參數設置
功能區3:訓練模型按鈕
功能區4:測試/開始遊戲按鈕
功能區5:遊戲主界面

4 製作訓練集
由上述分析可知,這是一個四分類問題。我們通過對功能區0和功能區1操作來製作訓練集。
首先,我們定義「人臉向上」為向上移動吃豆豆對象的指令。同理,「人臉向下」、「人臉向左」和「人臉向右」分別是向下、向左和向右移動吃豆豆對象的指令。
接下來,就開始製作「人臉向上」的數據集。此時,人臉稍微仰視,保持姿態點擊下面紅色方塊,即可完成畫面拍攝。連續點擊方框,直到有100個examples。

同理,製作「人臉向左」的數據集

同理,製作「人臉向右」的數據集

同理,製作「人臉向下」的數據集

哈哈,大功告成

5 訓練模型
訓練集製作完成後,想要訓練模型,此時還需要一個網路。這裡默認使用MobileNet網路[3]。想要了解該網路的童鞋,可以自行查看該論文和TensorFlow上的代碼。
訓練集和網路都有了,可以直接訓練了嗎?或者此時還要做些什麼嗎?!
答:可做可不做。因為超參數默認已經設定好了,你可以直接使用默認值,也可以調節超參數。
此時,可以直接點擊TRAIN MODEL,開始訓練模型

耐心等待不到1分鐘,當看到LOSS值已經不再變化時,標誌當前模型已經訓練完成。結果如下所示:
6 開始遊戲
點擊PLAY,開始吃豆豆小遊戲,此時可以看到畫面中出現「READY」,即表示遊戲開始。你可以通過向上/向下/向左/向右偏移人臉來控制吃豆豆對象的移動方式。

通過若干次移動後,我終於吃到了豆豆

關於TensorFlow.js的吃豆豆小遊戲就介紹到這裡,雖然示例很簡單,但意義很深遠。可見深度學習的應用會更加廣泛,更加實用,更加貼近大眾的生活。
參考
[1]TensorFlow.JS:https://js.tensorflow.org/
[2]TensorFlow.JS WEBCAM CONTROLLER:https://storage.googleapis.com/tfjs-examples/webcam-transfer-learning/dist/index.html
[3]MobileNet:https://arxiv.org/abs/1704.04861
-------我是可愛的分割線-------
若喜歡Amusi推送的文章,請掃描下方二維碼關注CVer公眾號!
http://weixin.qq.com/r/NioZAUbEpRvarQJi938k (二維碼自動識別)
-------我還是可愛的分割線-------
喜歡Amusi寫的文章,一定動動手點贊哦!
推薦閱讀:
※FaceRank-人臉打分基於 TensorFlow 的 CNN 模型,這個妹子顏值幾分? FaceRank 告訴你!
※TensorFlow初步(4)
※手把手教你用TensorFlow實現看圖說話|教程+代碼
※Geoffrey Hinton的CapsNet(《Dynamic Routing Between Capsules》)中的tf.stop_gradient()
※學習筆記TF039:TensorBoard
TAG:深度學習DeepLearning | 計算機視覺 | TensorFlow |

