1 TensorFlow Lite 是 TensorFlow 移动和嵌入式设备轻量级解决方案。它使设备机器学习具有低延迟和更小的二进制体积。TensorFlow Lite 同时支持 Android 神经网络 API 的硬件加速。

TensorFlow Lite 使用多项技术降低延迟,例如移动 app 内核优化、pre-fused 激活、允许更快更小(定点)模型的量化内核。

2 现在选择 tflite 作为我们的人工智能框架。输入以下命令:

cd examples/tflite

迅为RK3588开发板使用 tflite 框架_卷积

3 MobileNet 是基于深度级可分离卷积构建的网络,其实这种结构最早是出现在 GoogleNet v3的 inception 中,它是将标准卷积拆分为了两个操作:深度卷积(depthwise convolution) 和逐点卷积(pointwise convolution),Depthwise convolution 和标准卷积不同,对于标准卷积其卷积核是用在所有的输入通道上(input channels),而 depthwise convolution 针对每个输入通道采用不同的卷积核,就是说一个卷积核对应一个输入通道,所以说 depthwise convolution 是 depth级别的操作。我们选择 mobilenet_v1 做进一步的测试,输入以下命令:

cd mobilenet_v1

迅为RK3588开发板使用 tflite 框架_卷积核_02

4 打开 test.py,确认使用板载 npu 推理识别图片

vi test.py

迅为RK3588开发板使用 tflite 框架_卷积_03

修改 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 进入到 examples/tflite/mobilenet_v1 文件夹,输入以下命令,执行模型转换和推理模型的test.py 脚本。

python3 test.py

迅为RK3588开发板使用 tflite 框架_解决方案_04

6 运行结果如下图所示。TOP5 记录了推理结果,其中概率最高也就是 0.935,对应第 156 个标签的物体

迅为RK3588开发板使用 tflite 框架_卷积核_05

更多文档可以查看

B站搜索-北京迅为RK3588开发板,

公众Hao关注:北京迅为,