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