在计算机视觉领域,手势识别是一项重要的人机交互技术。Google 的 MediaPipe 提供了完整的 Gesture Recognizer pipeline,通过手部检测、关键点定位、嵌入向量和手势分类四个阶段,实现端到端的实时手势识别。然而,MediaPipe 官方主要针对 PC CPU / NVIDIA GPU / Android GPU 做了优化,而在嵌入式 Rockchip RK3566/RK3588 这类 SoC 上,直接运行会非常低效。
Rockchip 提供了 RKNN Toolkit2,能够将主流深度学习框架(TFLite、ONNX、Caffe 等)的模型转换为 .rknn 格式,并在 NPU 上加速运行。这样一来,我们就能把 MediaPipe 的手势识别模型迁移到 RK3566 板子上,实现低功耗、高性能的边缘 AI 推理。
🔹 MediaPipe Gesture Recognizer 的模型组成
MediaPipe 的 gesture_recognizer.task 并不是单一模型,而是一个 Task Bundle,里面打包了多个 .tflite 模型和任务配置文件。解压后,你会发现:
- hand_landmarker.task
- hand_detector.tflite:手部检测(Palm Detection)
- hand_landmarks_detector.tflite:手部关键点(21个点)
- hand_gesture_recognizer.task
- gesture_embedder.tflite:将关键点向量化为 embedding
- canned_gesture_classifier.tflite:手势分类器(输出具体手势类别)
这四个模型构成了完整的 pipeline:
手部检测 → 关键点定位 → 特征嵌入 → 手势分类
为什么要逐个转换为 RKNN?
RKNN Toolkit2 不支持直接解析 .task 文件,因此我们必须将里面的四个 .tflite 模型分别转换为 .rknn。在推理过程中,也需要按照 MediaPipe 的顺序逐步调用这四个模型,才能还原完整的手势识别功能。
总结来说,迁移流程分为三步:
- 解包 .task → 获取 .tflite 模型
- 逐个转换 .tflite → .rknn
- 构建 pipeline → 在 RK3566 上运行完整手势识别
🔹 模型转换步骤
步骤架构流程图

Step 1. 安装 RKNN Toolkit2
在 Windows/Linux x86_64 环境下(Mac 需虚拟机/容器),安装:
pip install rknn-toolkit2
推荐 Python 3.6–3.10。RKNN Toolkit2 v2.3.2 是常见版本。
Step 2. 准备四个 TFLite 模型
从 gesture_recognizer.task 解包得到的四个模型分别是:
- hand_detector.tflite
- hand_landmarks_detector.tflite
- gesture_embedder.tflite
- canned_gesture_classifier.tflite
Step 3. 编写转换脚本
关键点:在新版 Toolkit2 中必须先调用 rknn.config(),再调用 load_tflite()。
下面是通用转换模板:
from rknn.api import RKNN
def convert_model(tflite_file, rknn_file, is_image_model=True):
rknn = RKNN()
# 1. 配置参数
if is_image_model:
rknn.config(
mean_values=[[0, 0, 0]],
std_values=[[255, 255, 255]],
target_platform='rk3566',
quantized_dtype='w8a8'
)
else:
rknn.config(
target_platfor


4690

被折叠的 条评论
为什么被折叠?



