歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~html
"猜畫小歌"用到的quickdraw模型本質上是一個分類模型,輸入是筆畫的點的座標信息和每筆起始的標識信息,應用幾個級聯的一維卷積,再使用 BiLSTM 層並對結果進行求和,最後使用Softmax層進行分類。github
整個網絡結構如圖:算法
模型結構數據庫
開源數據和代碼詳見後面參考文檔。整個網絡比較簡單,並且用其默認的參數最終的模型準確率在75%,以下圖,不算是一個要求較高的場景,效果已經足夠好。小程序
這裏分享筆者注意到的有幾個有意思的小細節(高手輕拍)。微信
對於stroke-3(x,y,n),Google默認使用的TFRecord數據對座標作了歸一化與差值處理。網絡
# 1. Size normalization. lower = np.min(np_ink[:, 0:2], axis=0) upper = np.max(np_ink[:, 0:2], axis=0) scale = upper - lower scale[scale == 0] = 1 np_ink[:, 0:2] = (np_ink[:, 0:2] - lower) / scale # 2. Compute deltas. np_ink[1:, 0:2] -= np_ink[0:-1, 0:2] np_ink = np_ink[1:, :]
爲何歸一化?ide
爲何差值處理?函數
使用多個一維卷積(conv1d)級聯,並使用線性激活函數,沒有使用pooling層。
爲何線性激活和去掉pooling層效果提高2-3個點?
pooling層有哪些做用:
筆者(單純的)理解簡筆畫已是人類對於物體的高度抽象了,所以沒有必要在用複雜的CNN網絡去抽象特徵,而且全局的特徵有後面的RNN層獲取。
Google 16年11月就推出了QuickDraw網頁版,最近只是藉助小程序又火了一把,以前已經獲取過大量真實的用戶數據,並用於此次小程序效果的優化。
模型還能用來作啥?
最近看到了一片研究這份簡筆畫數據中不一樣國家的人的繪畫順序與其國家文字的關係的文章,並且時序分類模型在異常分析、手寫體識別、語音識別、文本分類等領域有大量的研究和進展。
畫圓的不一樣
筆者研究生階段曾經研究過電腦使用者的異常分析,根據用戶的鼠標軌跡和鍵盤操做等特徵創建分類模型識別是否是本人在操做。如今想來,直接拿這個模型來跑以前的任務,應該還不錯。
產品層面,咱們還能有些什麼創新?
這些繪畫數據還有什麼能夠挖掘的價值?
繪畫是人在用本身的方式描述本身理解的世界,若是從這些簡單的簡筆畫入手,可以從中學習出人理解物體和世界的方法,簡單來講能夠遷移到目前圖像識別算法的高層抽象階段,提高某些任務的效果;複雜一點甚至能夠用做提高機器的推理能力,學習人類對物體和世界抽象建模的能力(腦洞)。
https://tensorflow.juejin.im/tutorials/recurrent_quickdraw.html
https://github.com/tensorflow/models/blob/master/tutorials/rnn/quickdraw/
https://www.jiqizhixin.com/articles/2017-09-12-5
https://juejin.im/post/5b559b76e51d45616f4596dd
https://zhuanlan.zhihu.com/p/39059583
問答
相關閱讀
此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1171905?fromSource=waitui
歡迎你們前往騰訊雲+社區或關注雲加社區微信公衆號(QcloudCommunity),第一時間獲取更多海量技術實踐乾貨哦~
海量技術實踐經驗,盡在雲加社區!