朱曦霖
联系Available for work
← 全部作品

本科毕业论文 · 广州大学

基于手势识别的智能移动机器人控制系统

本科毕业论文《基于手势识别算法的智能小车控制系统设计》

2022.09 — 2023.04

改进 YOLOv5s 与 C3D 分别识别静态、动态手势(mAP 81.3%、最高准确率 83.3%),并用静态手势经 WiFi 实时控制树莓派小车完成 10 种运动指令。

静态手势检测 mAP@0.5:0.95(CBAM-YOLOv5s)
81.3%
动态手势识别最高准确率(BN-C3D)
83.3%
自建静态手势数据集(张)
4488
手势控制指令
10

概览

  • 时间与性质:2022.09 – 2023.04,广州大学机器人工程专业本科毕业设计,独立完成
  • 要解决的问题:用普通单目摄像头识别手势,把手势翻译成移动小车的运动指令,同时提高识别精度和「识别—控制」的协同效果
  • 结果:静态手势检测 mAP 81.3%;动态手势识别最高准确率 83.3%;用静态手势实时控制小车完成 10 种运动

我做了什么

  • 自建静态手势数据集:用笔记本单目摄像头采集中国数字手势 0–5,5 名测试者,共 4488 张(训练 3740 / 验证 748);专门加入人脸与手势同框、旋转 45° 和镜像样本,贴近真实使用场景
  • 改进 YOLOv5s 做静态手势检测:分别引入 CA、CBAM 注意力机制和 CoordConv 坐标卷积做对照实验,选定 CBAM-YOLOv5s——mAP@0.5:0.95 从 80.2% 提升到 81.3%,计算量反而从 16.0 降到 15.8 GFLOPs,并缓解了基线把背景误检为数字 4、5 的问题
  • 改进 C3D 做动态手势识别:原始 C3D 在 DSL-46 数据集的 5 类手势上准确率只有 19.2%,损失为 NaN。把视频转成二值视频、将数据扩充到 1260 段,在卷积层后加入 BN 层,学习率从 0.001 降到 0.0001,最高准确率提升到 83.3%,高于同条件下的 R3D(55%)和 R(2+1)D(54%)
  • 搭建手势控制小车:树莓派 4B 小车,TB6612FNG 双 H 桥驱动,GPIO 输出 PWM 调速;上位机识别手势后经 WiFi 用 TCP/IP 下发指令,实现停止、前进、后退、左右自旋、加速,以及双手组合的左右转弯和左右后倒车,共 10 种运动

技术细节

静态手势:三种改进的对照

同一数据集、同一训练设置(100 轮,batch 8):

模型 改动位置 mAP@0.5:0.95 计算量(GFLOPs)
YOLOv5s(基线) 80.2% 16.0
CA-YOLOv5s 骨干第 2、3、4 个 C3 模块后加入 Coordinate Attention 80.6% 16.0
CBAM-YOLOv5s(选用) 骨干 C3 模块中加入 CBAM(通道注意力 + 空间注意力) 81.3% 15.8
CoordConv-YOLOv5s Head 中用坐标卷积替换 1×1 卷积,并加在检测头前 80.8% 21.7

同一数据集上还对照了更新的 YOLOv7(79.7%)和 YOLOv8s(82.3%)。在 YOLOv5 的三种改进里,CBAM 版本精度最高、计算量也最低。

动态手势:从 19.2% 到 83.3%

  • 数据:从公开数据集 DSL-46 中选 5 类常用手势(come、don’t want、fine、go、hello),每类 120 段视频,先拆帧再训练
  • 基线:原始 C3D(8 个 3×3×3 卷积层、3 个全连接层)训练 20 轮,损失不下降
  • 改动:数据侧加入二值视频,扩充到 1260 段(训练 804 / 验证 204 / 测试 252);模型侧在卷积层后加入 BN(动量 0.9),学习率降到 0.0001,训练 100 轮
网络 最高准确率
BN-C3D 83.3%
R3D 55%
R(2+1)D 54%

从识别结果到小车运动

  • 链路:上位机摄像头 → CBAM-YOLOv5s 实时检测 → 手势映射为指令 → WiFi(TCP/IP)→ 树莓派 4B → TB6612FNG → 直流电机
  • 硬件:铝合金车架、差速轮、金属齿轮直流电机,两块 7.4 V 锂电池供电;上位机为 i7-12650H + RTX 4060 Laptop
  • 软件:Python 3.8、PyTorch 1.13、OpenCV 4.7;通过 VNC 远程登录树莓派部署运动程序
  • 指令:单手 0 停止 · 1 前进 · 2 后退 · 3 左自旋 · 4 右自旋 · 5 加速前进;双手组合 1+3 左转弯 · 1+4 右转弯 · 2+3 左后倒车 · 2+4 右后倒车

局限与复盘

  • 动态手势没有接进控制:BN-C3D 在验证集上波动大,对自己拍的视频识别很差,实时动态识别达不到控制要求,所以小车只用静态手势控制。原因一是每类只有 120 段视频,二是普通单目摄像头没有深度信息
  • 提升幅度有限:手势检测比通用目标检测简单,基线已经有 80.2%,改进只多出约 1 个百分点;YOLOv8s 在同一数据集上达到 82.3%(损失函数不同,不能直接横比)
  • 后来的延续:到了 KIT 的 KAL 项目,远处的锥桶同样是小目标问题,我再次用上了注意力机制(Coordinate Attention),并加上了深度相机