0%

RKYOLO诞生记 (七):小结与展望——折腾不止,快乐不息

好了好了,到了给这个系列收尾的时候了。回头看看,这个叫 rkyolo 的小东西,从一个念头开始,居然真的被我一点点攒成了一个能跑、能看、还能给自己打分的 Rust 推理框架,想想也是挺神奇的。

在这最后一篇,咱不吹牛,就唠点实在的。说说我都捣鼓了啥,还有哪些地方让我挠头,以及以后还能怎么接着玩。

技术的积累与兑现

这个项目的推进,很大程度上得益于之前在一些技术领域的持续投入和实践。

  • Rust 的持续学习和使用,让我能相对顺利地处理 FFI 和安全问题;
  • YOLO 模型原理的理解,帮助我在遇到“指鹿为马”或结构崩溃时,能较快地定位到本质;
  • 之前和 Linux、交叉编译打交道的经验,也为整个项目铺平了道路。

回头看看,技术成长确实离不开积累,很多之前的摸索都在这个项目里用上了。

哪哪都是可以接着折腾的地方

写代码最怕的就是觉得自己搞出来的东西完美无缺。我心里门儿清,rkyolo 也就是个“能用”的水平,离“好用”还差得远呢:

  1. 一根筋的流程:现在处理视频是一帧一帧来的,等上一帧全忙活完了才下一帧。要是想同时处理好多路视频,这肯定得卡成 PPT。以后得用上 tokio 这类异步运行时,让它们同时干活,效率才能上去。

  2. CPU 老黄牛:缩放图片、填白边这些杂活全是 CPU 在干。但其实 RK3588 板子上有个叫 RGA 的硬件小弟(专门处理 2D 图形),活好还不占 CPU 资源。下次得想办法让它来扛活。

  3. 还不够灵活:现在的后处理虽然能自适应不同输出,但基本还是围着 YOLO 转。万一以后想跑个结构完全不一样的模型(比如基于 Transformer 的),可能就歇菜了。我看 Rockchip 的 SDK 里提到了自定义算子的功能,说不定以后可以搞个插件系统,让用户自己写处理逻辑,那可就太酷了。

画个未来的大饼

rkyolo 解决了模型在板子上跑起来和评估的问题,但在这之前,还得先把模型转成 RKNN 格式。我之前用 Docker 封装了一个转换工具,一行命令就能转模型:

1
pt2rknn --pt_model ... --output ... --platform rk3588 --quant_mode i8 --data_yaml ...

我下一个想折腾的,是把这个转换过程做成个网页服务。想象一下,以后用户只需要在网页上传个模型文件,点几下按钮,就能下载转换好的模型,是不是方便多了?最后再把模型转换和 rkyolo 部署连起来,搞个一条龙服务,从训练到部署都不叫事儿。

最后唠点心里话

捣鼓 rkyolo 的整个过程,让我着迷的其实不光是目标检测本身。

不管是琢磨怎么让 NPU 多核并行干活,还是死磕怎么把数据直接塞进硬件省掉拷贝,甚至是做个工具来自动找出模型在哪儿犯了蠢……我发现我真正乐在其中的,是把一个个复杂的系统理顺、调通、然后让它跑得更快更好的这个过程

rkyolo 就是我这个想法的一次实践,算是个开始。以后的路还长着呢,肯定还有更多好玩又烧脑的东西在等着。

我已经等不及想看看下一站又能折腾点啥出来了!