1 TensorFlow Lite 是 TensorFlow 移动和嵌入式设备轻量级解决方案。它使设备机器学习具有低延迟和更小的二进制体积。TensorFlow Lite 同时支持 Android 神经网络 API 的硬件加速。
TensorFlow Lite 使用多项技术降低延迟,例如移动 app 内核优化、pre-fused 激活、允许更快更小(定点)模型的量化内核。
2 现在选择 tflite 作为我们的人工智能框架。输入以下命令:
cd examples/tflite
3 MobileNet 是基于深度级可分离卷积构建的网络,其实这种结构最早是出现在 GoogleNet v3的 inception 中,它是将标准卷积拆分为了两个操作:深度卷积(depthwise convolution) 和逐点
卷积(pointwise convolution),Depthwise convolution 和标准卷积不同,对于标准卷积其卷积核是用在所有的输入通道上(input channels),而 depthwise convolution 针对每个输入通道采用不同的卷积核,就是说一个卷积核对应一个输入通道,所以说 depthwise convolution 是 depth级别的操作。我们选择 mobilenet_v1 做进一步的测试,输入以下命令:
cd mobilenet_v1
4 打开 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 进入到 examples/tflite/mobilenet_v1 文件夹,输入以下命令,执行模型转换和推理模型的test.py 脚本。
python3 test.py
6 运行结果如下图所示。TOP5 记录了推理结果,其中概率最高也就是 0.935,对应第 156 个标签的物体
更多文档可以查看
B站搜索-北京迅为RK3568开发板,
公众Hao关注:北京迅为,