迅為RK3588開(kāi)發(fā)板使用 tflite 框架
1 TensorFlow Lite 是 TensorFlow 移動(dòng)和嵌入式設備輕量級解決方案。它使設備機器學(xué)習具有低延遲和更小的二進(jìn)制體積。TensorFlow Lite 同時(shí)支持 Android 神經(jīng)網(wǎng)絡(luò ) API 的硬件加速。
TensorFlow Lite 使用多項技術(shù)降低延遲,例如移動(dòng) app 內核優(yōu)化、pre-fused 激活、允許更快更?。ǘc(diǎn))模型的量化內核。
2 現在選擇 tflite 作為我們的人工智能框架。輸入以下命令:
cd examples/tflite
3 MobileNet 是基于深度級可分離卷積構建的網(wǎng)絡(luò ),其實(shí)這種結構最早是出現在 GoogleNet v3的 inception 中,它是將標準卷積拆分為了兩個(gè)操作:深度卷積(depthwise convolution) 和逐點(diǎn)
卷積(pointwise convolution),Depthwise convolution 和標準卷積不同,對于標準卷積其卷積核是用在所有的輸入通道上(input channels),而 depthwise convolution 針對每個(gè)輸入通道采用不同的卷積核,就是說(shuō)一個(gè)卷積核對應一個(gè)輸入通道,所以說(shuō) depthwise convolution 是 depth級別的操作。我們選擇 mobilenet_v1 做進(jìn)一步的測試,輸入以下命令:
cd mobilenet_v1
4 打開(kāi) test.py,確認使用板載 npu 推理識別圖片
vi test.py
修改 test.py 文件,我們修改對應的平臺為 rk3588,修改如下所示,“-”代表需要刪除的內容,“+” 代表需要新增的內容。
if __name__ == '__main__':
# Create RKNN object - rknn = RKNN(verbose=True)
+ rknn = RKNN()
# Pre-process config
print('--> Config model')
- rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128])
+ rknn.config(mean_values=[128, 128, 128], std_values=[128, 128, 128], target_platform='rk3588')
print('done')
# Load model
@@ -62,7 +62,7 @@ if __name__ == '__main__':
# Init runtime environment
print('--> Init runtime environment')
- ret = rknn.init_runtime()
+ ret = rknn.init_runtime(target='rk3588')
if ret != 0:
print('Init runtime environment failed!')
exit(ret)
修改完,保存文件并退出。
5 進(jìn)入到 examples/tflite/mobilenet_v1 文件夾,輸入以下命令,執行模型轉換和推理模型的test.py 腳本。
python3 test.py
6 運行結果如下圖所示。TOP5 記錄了推理結果,其中概率最高也就是 0.935,對應第 156 個(gè)標簽的物體
更多文檔可以查看
B站搜索-北京迅為RK3568開(kāi)發(fā)板,
公眾Hao關(guān)注:北京迅為,
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。