小優(yōu)智能科技有限公司成立于2015年底,是一家專注于高精度3D機器視覺模組研發(fā)、生產(chǎn)及銷售的高科技企業(yè)。
公司自主研發(fā)的3D機器視覺模組采用激光/DLP白光編碼光柵結(jié)構(gòu)光+雙工業(yè)相機方案,還原物體三維信息,廣泛應(yīng)用于消費電子領(lǐng)域、工業(yè)領(lǐng)域和安防領(lǐng)域,具有精度高、速度快、成本低的優(yōu)勢。
神經(jīng)網(wǎng)絡(luò)算法非傳統(tǒng)終端部署
隨著生產(chǎn)力的發(fā)展和以單片機為代表的微控制器的性能提高,越來越多的神經(jīng)網(wǎng)絡(luò)模型可以部署在原來無法部署的平臺上,用來助力神經(jīng)網(wǎng)絡(luò)算法在工業(yè)生產(chǎn)領(lǐng)域更好的發(fā)揮作用,尤其是在安防識別,故障檢測等領(lǐng)域卷積神經(jīng)網(wǎng)絡(luò)一直都有著非常不錯的表現(xiàn),下面我們就以Tensorflow這一種常見的神經(jīng)網(wǎng)絡(luò)算法庫為例,簡單聊一下神經(jīng)網(wǎng)絡(luò)算法如何部署到以單片機為代表的非傳統(tǒng)終端上。
TensorFlow Lite 簡介
TensorFlow 可提供強大的功能,以便您在任何環(huán)境(包括服務(wù)器、邊緣設(shè)備、瀏覽器、移動設(shè)備、微控制器、CPU、GPU、FPGA)中部署模型。TensorFlow Serving 可以在先進的處理器(包括 Google 的自定義張量處理單元 [TPU])上以生產(chǎn)規(guī)模運行機器學習模型。
如果您需要在靠近數(shù)據(jù)源的位置分析數(shù)據(jù),以縮短延遲時間并更好地保護數(shù)據(jù)隱私,可以借助 TensorFlow Lite 框架在移動設(shè)備、邊緣計算設(shè)備甚至微控制器上運行模型,還可以借助 TensorFlow.js 框架僅使用網(wǎng)絡(luò)瀏覽器就能運行機器學習模型。
TensorFlow Lite是google為深度學習在嵌入式物聯(lián)網(wǎng)應(yīng)用而推出的輕量級框架。它提供了python、java和C++接口,同時可以將浮點運算轉(zhuǎn)換為整數(shù)運算,從而在特定的硬件平臺上加快推理速度。TensorFlow Lite使用的模型不是pb文件,而是更小的基于FlatBuffers的模型文件。
TensorFlow Lite主要有兩個組件:推理組件和模型轉(zhuǎn)換組件。推理組件用于運行模型;模型轉(zhuǎn)換組件用于將需要的模型轉(zhuǎn)換為TensorFlow Lite模型文件。
TensorFlow Lite 部署模型
import tensorflow as tf
img = tf.placeholder(name="img", dtype=tf.float32, shape=(1, 64, 64, 3))
var = tf.get_variable("weights", dtype=tf.float32, shape=(1, 64, 64, 3))
val = img + var
out = tf.identity(val, name="out")
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
converter = tf.lite.TFLiteConverter.from_session(sess, [img], [out])
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
2. 部署模型(加載模型文件)
interpreter = tf.lite.Interpreter(model_path=tflite_file)
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
TensorFlow Lite 實例(水果分類)
部署運行后效果圖:
模型用途:在給定圖像或視頻流的情況下,目標檢測模型可以識別可能存在已知目標集合中的哪些目標,并提供關(guān)于它們在圖像中的位置的信息。
部署步驟:
1. 可以自行訓練模型或者到Tensorflow Lite Model Market中下載已經(jīng)訓練好的模型。
2. 將模型轉(zhuǎn)換成Model.tflite文件。
3. 將文件傳輸?shù)浇K端
4. 加載模型文件Model.tflite 實現(xiàn)識別。
參考文獻:https://tensorflow.google.cn/lite/examples/object_detection/overview?hl=zh-cn