写在前面
因整理简历需要,将项目放在博客简单介绍一下。
项目描述
应需在国产无人机上执行匹配定位任务,将当前主流的 SuperGlue 和 LoFTR 两种特征匹配方法 pytorch模型转换为 rknn 模型并部署在 npu 中。
RKNN模型的整体开发
整体开发流程主要包括模型转换、模型评估和板端部署。
为使用RKNPU,需要在PC上运行rknn-toolkit2工具,将训练好的模型转换为RKNN格式模型,之后使用RKNN C API或Python API在开发板上进行部署。
模型压缩和优化
模型算子适配问题
官方文档查询不支持ReduceLogSumExp,但是因为在superglue当中的sinkhorn算法会有这个算子进行计算,因此需要自定义这个算子,根据查询文档,在rknn-toolkit2转换模型过程中先对这个算子进行注册即可。
并在onnx模型中将所有node的type是ReduceLogSumExp都替换为cstReduceLogSumExp,在C API同样编写自定义算子并加载注册加执行。
因为转换过程中部分算子损失精度严重,加