浏览器中的机器学习:使用预训练模型
在上一篇文章《瀏覽器中的手寫數字識別》中,講到在瀏覽器中訓練出一個卷積神經網絡模型,用來識別手寫數字。值得注意的是,這個訓練過程是在瀏覽器中完成的,使用的是客戶端的資源。
雖然TensorFlow.js的愿景是機器學習無處不在,即使是在手機、嵌入式設備上,只要運行有瀏覽器,都可以訓練人工智能模型,但是考慮到手機、嵌入式設備有限的計算能力(雖然手機性能不斷飛躍),復雜的人工智能模型還是交給更為強大的服務器來訓練比較合適。況且目前主流的機器學習采用的是python語言,要讓廣大機器學習工程師從python轉向js,估計大家也不會答應。
如果是這樣的話,那TensorFlow.js推出還有何意義呢?
這個問題其實和TensorFlow Lite類似,我們可以在服務器端訓練,在手機上使用訓練出的模型進行推導,通常推導并不需要那么強大的計算能力。
在本文,我們將探索如何在TensorFlow.js中加載預訓練的機器學習模型,完成圖片分類任務。
在TensorFlow官網,訪問 www.tensorflow.org/js/models/ 這個網址,可以看到里面有實時姿態預測模型、目標檢測模型、語音識別模型、分類模型等等:
這里我們選擇MobileNets模型。MobileNets是一種小型、低延遲、低耗能模型,滿足各種資源受限的使用場景,可用于分類、檢測、嵌入和分割,功能上類似于其他流行的大型模型(如Inception)。 MobileNets在延遲、大小和準確性之間取得了平衡。
有兩種使用MobileNets模型的方案:
直接調用MobileNets模型的JS封裝庫
JS封裝庫直接將MobileNets模型封裝為JS對象,我們就像調用普通的JS對象那樣,調用對象方法,完成模型加載、推斷。
比如訪問 github.com/tensorflow/… ,我們可以看到該mobilenet對象提供兩個主要的API:
mobilenet.load(version?: 1,alpha?: 0.25 | .50 | .75 | 1.0 ) 復制代碼參數:
- 版本:MobileNet版本號。1表示MobileNet V1,2表示使用MobileNet V2。默認值為1。
- alpha:較小的alpha會降低精度,但會提高性能。默認值為1.0。
參數:
- img:進行分類的Tensor或image元素。
- topk:要返回多少個Top概率。默認值為3。
借助于封裝的JS庫,在瀏覽器中使用MobileNets就相當簡單了:
<html><head><script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.1"> </script><script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@1.0.0"> </script></head><body><img id="img" src="cat.jpg"></img><script>const img = document.getElementById('img');// Load the model.mobilenet.load().then(model => {// Classify the image.model.classify(img).then(predictions => {console.log('Predictions: ');console.log(predictions);});});</script></body> </html> 復制代碼注意: 這里的js代碼會去google storage 加載MobileNets的JSON格式模型,而由于一些不能說的原因,國內無法訪問到,請自行翻墻。
這個示例寫的比較簡單,從瀏覽器控制臺輸出log,顯示結果,在chrome瀏覽器中可以打開開發者工具查看:
加載json格式的MobileNets模型
使用封裝好的JS對象確實方便,但使用自己訓練的模型時,并沒有人為我們提供封裝對象。這個時候我們就要考慮自行加載模型,并進行推斷。在JS世界,JSON是使用得非常普遍的數據交換格式。TensorFlow.js也采用JSON作為模型格式,也提供了工具進行轉換。
本來這里想詳細寫一下如何加載json格式的MobileNets模型,但由于MobileNets的JS模型托管在Google服務器上,國內無法訪問,所以這里先跳過這一步。在下一篇文章中我將說明如何從現有的TensorFlow模型轉換為TensorFlow.js模型,并加載之,敬請關注!
以上示例有完整的代碼,點擊閱讀原文,跳轉到我在github上建的示例代碼。 另外,你也可以在瀏覽器中直接訪問:ilego.club/ai/index.ht… ,直接體驗瀏覽器中的機器學習。
參考文獻:
你還可以讀
轉載于:https://juejin.im/post/5cc19cace51d456e8833398b
總結
以上是生活随笔為你收集整理的浏览器中的机器学习:使用预训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宝可梦剑盾神兽在哪
- 下一篇: 4G路由器好用么-4g路由器好用吗