RKNN_SSD Demo的学习笔记

这篇笔记详细介绍了在RK3399Pro Linux环境下,使用RKNN库实现SSD物体检测的Demo。主要流程包括:加载RKNN模型、初始化、输入设置、推理、输出获取、释放资源。在MainActivity中初始化GLsurfaceView,通过CameraSurfaceRender进行相机启动和跟踪。OnDrawFrame方法处理每一帧数据,进行推理并显示结果。Demo源码可在Toybrick社区找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该demo是在Toybrick社区下载的,开发环境是 RK3399Pro Linux,实现了简单的物体检测!
RKNN API调用流程:
通过该API去调用NPU(神经网络计算单元),在JNI文件里面. input包括相片和一些数据,output则是ssd nms处理的目标.
1.读取rknn模型文件(使用RKNN模型工具生成的.rknn文件,打在res/raw/ssd.rknn)到内存
2.使用rknn_init进行context初始化,加载rknn模型
3.使用rknn_query获取input,output的属性
4.使用rknn_input_set对inputs进行设置
5.使用rknn_run进行单次推理操作
6.使用rknn_outputs_get获取outputs
7.使用rknn_output-release释放已获取的output
8.返回到第4步骤可进行多次推理
9.程序退出则调用rknn_destroy销毁context卸载rknn模型

demo基本流程:
1.在MainActivity中对GLsurfaceView进行初始化,定义渲染器Render(class CameraSurfaceRender),以及开辟线程用于fps的显示(type=0)和绘制显示default box(type=1).

2.在CameraSurfaceRender的onSurfaceCreate方法中进行startCamera()和startTrack()操作;
startCamera是打开摄像头以及配置相机参数;
startTrack()是创建图像缓冲队列(ImageBufferQueue),同时生成纹理(create_direct_texture)并将纹理保存到帧缓冲区中(重写finalize()方法,在垃圾回收器准备释放资源时会先调用finalize,在该方法中进行释放帧缓冲区和删除纹理操作delete_direct_texture),根据纹理id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值