RKYOLO诞生记 (六):构建完整评估工具链——rkyolo-eval的实践与洞察
在完成了rKYOLO核心推理引擎和多种 IO 功能后,项目已经具备了完整的应用能力。然而,我深知在机器学习项目中,可靠的评估体系与高效的推理能力同等重要。为此,我构建了rkyolo-eval工具链,为项目增添了专业的模型评估能力。
在完成了rKYOLO核心推理引擎和多种 IO 功能后,项目已经具备了完整的应用能力。然而,我深知在机器学习项目中,可靠的评估体系与高效的推理能力同等重要。为此,我构建了rkyolo-eval工具链,为项目增添了专业的模型评估能力。
在前几轮的扎实工作后,RKYOLO 的核心推理引擎已经变得相当可靠:安全、自适应且性能良好。但它当时更像一个“库”,离一个开箱即用的“工具”还有一步之遥。我的下一个目标,就是为这个强大的引擎,打造一个完整的外壳,让它能灵活地处理现实世界中的各种视觉输入。
前面的文章里,我们给 RKYOLO 搭好了结实的地基——安全的 FFI 层和聪明的后处理。项目是能跑了,但作为一个爱折腾的人,我总觉得还能再抠点性能出来。
当我琢磨怎么用它来处理实时视频流时,我意识到真正的挑战来了。目标不再是“能跑”,而是得“跑得飞起”。为此,我决定去碰一碰性能优化里最硬的那块骨头——零拷贝(Zero-Copy)。
上一篇文章里,我们好不容易打赢了“数值之战”,让模型终于能看清楚东西了。我美滋滋地想,导师给的玉米穗模型部署任务,这下总该顺利了吧?
于是,我满心期待地把模型从 COCO 的yolo11n.rknn换成了自己的MTDC-UAV.rknn。结果……程序又扑街了。
大家好,我是个大三的学生。最近因为导师的一个课题,需要把一个我自己训练的、用于识别玉米穗的 YOLO11n 模型,部署到一块 Rockchip RK3588 开发板上。
这其实还有个“前传”:为了让板子支持最新的模型,我已经折腾了好一阵子,把整个 Linux 内核连带 RKNPU 驱动都给交叉编译升级了一遍。所以,当底层环境就绪,模型也转换成.rknn格式后,我当时觉得,接下来应该就是顺理成章的“应用开发”了。
很自然地,我找到了野火社区的“鲁班猫”AI 教程,他们提供了一个yolo11的 C++示例。我寻思着,既然有现成的,改改用就行了呗?
事实证明,我还是太年轻了。
开始的地方:数据集和准备工作
最开始,我选择了 MTDC-UAV 数据集,这个数据集包含了许多图像和标注,适合做目标检测和回归任务。我编写了一个脚本,把 800 张有标注的图像按照 7:2:1 的比例随机分配成 Train、Valid、Test 集。重要的是,确保每个集合里的图片都是随机选取的,三个集合之间没有重复,并且每张图像都能找到对应的标注文件。