TFLite在移動端部署的總結,絕對乾貨!

最近在忙語音喚醒的工作,涉及了非常多的深度學習集成到移動端的技術點。

這篇博客主要講的是通過TensorFlow訓練出來的模型如何轉爲可以在移動設備上進行部署的tflite文件。可能有人會說了這個很簡單,通過TensorFlow的相關函數就可以了。。。實際上不是這樣的,這其中還牽扯很多需要注意的地方。主要的一方面是移動端設備對性能要求極高,有內存大小的要求。因此我們需要將模型的大小不斷壓縮達到我們想要的大小。
在參考文獻中的第一篇博客給了我很大的啓發,同時還有在GitHub上開源的谷歌speech command 以及ARM的ARM-software/ML-KWS-for-MCU都極具參考價值。
在第一篇博客中,詳細解釋了壓縮TensorFlow模型,需要做的工作。簡單來說就是分爲兩個階段,訓練之前和訓練之後。

  • 訓練之前: 訓練之前就是構造模型的階段,因爲將模型壓縮本質上來說就兩條路一個是精簡模型結構,第二就是將浮點型數據映射爲整型數據,第二種方法能夠將模型的大小壓縮爲原來的四分之一。因此第二種方法能夠極大壓縮模型的大小。但是這也會帶來一定的問題,因爲將訓練數據從浮點型轉爲整型可能會帶來模型準確率下降的問題。TensorFlow給出的方案是模擬定點化(其中定點化就是指將數據從浮點型壓縮爲整型的操作,或者可以稱之爲量化操作),TensorFlow通過在模型訓練中加入Simulated Quantization的機制,以減少模型量化帶來的精度影響,相關原理的詳細說明在參考文獻4中的論文裏(具體我也沒看)。在實際使用中,Simulated Quantization是在模型訓練的計算圖上增加FakeQuant相關節點,以實現在前向計算(forward)時模擬參數定點化帶來的精度損失。對於fullconnected進行Simulated Quantization的示意圖。(其實這些操作,在ARM給的代碼中已經給出了相關的實例代碼了,這部分代碼需要注意的是在TensorFlow2.0中已經去掉了所有和

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章