欢迎光临散文网 会员登陆 & 注册

如何驯化机器狗读懂人类手势,手把手教你!

2023-06-26 14:02 作者:飞桨PaddlePaddle  | 我要投稿

作为全国普通高校大学生竞赛榜单内竞赛,“中国软件杯”大学生软件设计大赛-智能四足机器狗电力巡检系统开发赛项,目前已吸引了全国2041支队伍参加。经过激烈的目标检测与分割算法打榜赛,最终,有153支团队成功晋级区域赛。在即将于7月中旬开展的区域赛中,晋级选手须基于搭载飞桨框架的国产四足机器狗宇树 Go1 机器狗,在规定的地图上进行自动巡检、避障越障和完成指定任务,根据各任务的完成质量和完成速度获得分数。

比赛模拟地图


开发者介绍

安泓郡

大连海事大学智能科学与技术专业大三在读,研究方向为机器视觉、智能自主机器人。RoboCup 机器人世界杯中国赛水下作业组全国总冠军;全国大学生 RoboCom 机器人开发者大赛物资运送赛道全国总冠军;中国大学生计算机设计大赛飞桨赛道全国总冠军;全国大学生嵌入式芯片与系统设计竞赛海思赛道全国总冠军。保送至西北工业大学光电与智能研究院攻读博士研究生。

莫善彬

大连海事大学电子信息科学与技术专业,主攻机器视觉以及硬件机器控制方向。广泛涉猎各类大赛,2022届 ROBCOM 物资运送冠军队伍选手,熟悉四足机器狗的控制逻辑及其底层运动控制,有一定的开发经验;在全国大学生电子设计大赛,蓝桥杯等嵌入式硬件开发大赛中屡获佳绩。


预期目标:先看效果


监测到点赞手势时,进行运动跟随
监测到666手势时,小狗跳舞
检测到 STOP 手势时,原地静止跟随


驯化之路一:感知部分实现

感知部分工作目标:使用 mini-HaGRID 数据集,借助 PaddleDetection 工具训练一个可以识别 like、call、stop 三种手势的目标检测模型。

· 服务器端模型训练

本次使用 HaGRID 手势检测数据集的精简版:mini-HaGRID 作为训练数据。当然也可以使用 Labelme 标注工具自行制作数据集,或寻找网络公开数据集。使用 Labelme 标注数据集可以参考教程:

https://gitee.com/paddlepaddle/PaddleDetection/blob/release/2.6/docs/tutorials/data/DetAnnoTools.md

在 AI Studio上,基于数据训练深度学习视觉模型。

1.1 数据准备

1.2 下载并安装 PaddleDetection v2.4

1.3 新建数据集配置文件

进入 PaddleDetection/configs/datasets 目录,新建文件 voc_hand.yml以同目录下 voc.yml 为模板,修改数据集根目录,数据集类别数及数据列表文件。可直接复制如下内容:

1.4 新建训练配置文件

进入PaddleDetection/configs/picodet目录,新建配置文件picodet_xs_320_voc_hand.yml以同目录下 picodet_xs_320_coco_lcnet.yml 为模板,修改数据集配置。可直接复制如下内容:

1.5 训练模型


 · 模型导出

使用 PaddleDetection 训练完模型后,需要将模型导出。

2.1 导出为 PaddleInference 格式

2.2 服务器端安装 PaddleLite

打开 PaddleLite 官方 github 仓库:

https://github.com/PaddlePaddle/Paddle-Lite

打开 Release 页面,下载v2.12版本的 opt_linux 至 PaddleDetection 根目录。

可以直接执行如下命令:

2.3 将模型导出为 PaddleLite 格式

其中,opt_linux 工具更加相信的使用说明可以参考https://www.paddlepaddle.org.cn/lite/v2.12/user_guides/opt/opt_bin.html

运行完成后,可以在 inference_model_opt 文件夹下看到一个文件 “voc_hand.nb”,这就是转换好的 PaddleLite 模型文件。  

· 可视化模型

3.1 下载模型文件

训练完成后,将 inference_model_opt 文件夹下看到一个文件“voc_hand.nb” 下载下来。打开模型可视化网站:https://netron.app/将 voc_hand.nb 模型上传。

3.2 记录输入输出名称

模型可视化如图所示:

点击输入节点“0”,弹出侧边栏:

可以看到,模型格式为 PaddleLite,模型有两个输入节点和两个输出节点。


每个节点的含义可以参考:https://gitee.com/paddlepaddle/PaddleDetection/blob/release/2.6/deploy/EXPORT_MODEL.md

  • scale_factor:缩放系数

  • image:输入图像

  • multiclass_nms3_0.tmp_0:经NMS后的候选结果

  • multiclass_nms3_0.tmp_2:候选结果的个数

这四个节点的名称要记住,部署的时候需要用。


驯化之路二:硬件部分实现

下面,我们就要讲授如何将训练的 voc_hand 模型部署到宇树 Go1 四足机器人,并用手势控制机器狗完成响应动作。

宇树 Go1 机器狗内置有3块 Nano 和1块树莓派


  • 克隆本项目至机器狗 Nano1 和树莓派 home 目录。


 · Nano1 部署

进入 nano1-workspace 目录

杀进程

修改系统时间 

将时间修改为你当前的时间。时间不对可能会影响CMake程序编译。

编译程序

运行 nano1 节点

树莓派部署

进入 pi-workspace 目录

修改系统时间

将时间修改为你当前的时间。时间不对可能会影响 CMake 程序编译。

编译程序

运行pi节点

· 代码解释

Nano1 节点代码解释

https://gitee.com/an_hongjun/2023_paddle_dog_demo/blob/master/nano1-workspace/README.md

Pi 节点代码解释

https://gitee.com/an_hongjun/2023_paddle_dog_demo/blob/master/pi-workspace/README.md


结语:开发者有话说

作为作者,我必须承认:本项目提出的方案并不一定是最佳的。比如:

  • 模型的选型,还有很大的空间;

  • 模型在导出时,模型的压缩也可以做很多文章(或许 PaddleSlim 是个不错的参考);

  • 模型在部署时,代码还有很大的优化空间,以及结合 TensorRT 或许可以进行更加快速的推理。

本项目的目的主要是帮助大家入门。或许它不是最好的,但是个很好的开始。预祝大家比赛顺利! 


如何驯化机器狗读懂人类手势,手把手教你!的评论 (共 条)

分享到微博请遵守国家法律