在 RKNN2 中将 ViT 的卷积层转换为矩阵乘法
背景
在上一篇 将 ViT 的第一个卷积层转为 MatMul,要求步长和卷积核相等 中,我们介绍了如何将 ViT 的第一层卷积转换为矩阵乘法。在这篇文章中,我们将讨论这种变化在 RKNN2 工具链里带来的性能收益。
测试
| 模型 | 设备 | 输入尺寸 | 平均推理时间 (ms) |
|---|---|---|---|
| 卷积层 | Apple M4-CPU | 1x3x384x384 | 3.32 ± 0.50 |
| Cortex A57-CPU | 1x3x384x384 | TBD | |
| RKNN | 1x3x384x384 | TBD | |
| 将卷积层转为线性层 | Apple M4-CPU | 1x576x768 | 2.82 ± 0.43 |
| Cortex A57-CPU | 1x576x768 | TBD | |
| RKNN | 1x576x768 | TBD |
其他
代码见 GitHub。
在 RKNN2 中将 ViT 的卷积层转换为矩阵乘法
http://hebangwen.github.io/2025/07/03/vit-conv-to-matmul-rknn-part-II/