2024年5月29日发(作者:)
计算机系统应用 ISSN 1003-3254, CODEN CSAOBN
Computer Systems & Applications,2020,29(11):227−231 [doi: 10.15888/.007594]
©中国科学院软件研究所版权所有.
E-mail: ************.cn
Tel: +86-10-62661041
基于深度学习的人手视觉追踪机器人
①
林粤伟
1,2
, 牟 森
1
1
2
(青岛科技大学 信息科学技术学院, 青岛 266061)
(海尔集团博士后工作站, 青岛 266000)
通讯作者: 林粤伟, E-mail: ******************.cn
摘 要: 视觉追踪是智能机器人的核心功能之一, 广泛应用于自动驾驶、智慧养老等领域. 以低成本树莓派作为下
位机机器人平台, 通过在上位机运行事先训练好的深度学习SSD模型实现对人手的目标检测与视觉追踪. 基于谷
歌TensorFlow深度学习框架和美国印第安纳大学EgoHands数据集对SSD模型进行训练. 机器人和上位机的软件
使用Python在Linux系统下编程实现, 两者之间通过WiFi进行视频流与追踪控制命令的交互. 实测表明, 所研制
智能机器人的视觉追踪功能具有良好的稳定性和性能.
关键词: 深度学习; SSD模型; 树莓派; 计算机视觉; 机器人
引用格式: 林粤伟,牟森.基于深度学习的人手视觉追踪机器人.计算机系统应用,2020,29(11):227–231. /1003-
3254/
Human Hands Visual Tracking Robot Based on Deep Learning
LIN Yue-Wei
1,2
, MU Sen
1
1
2
(College of Information Science and Technology, Qingdao University of Science and Technology, Qingdao 266061, China)
(Postdoctoral Workstation of Haier Group, Qingdao 266000, China)
Abstract: Vision tracking is one of the core functions of smart robots, and widely used in automatic driving, intelligent
pension and other fields. The low-cost Raspberry Pi is employed as the slave computer robot platform. The object
detection and visual tracking of human hands is implemented through running the pre-trained deep learning SSD model
on host computer. The SSD model is trained based on Google’s TensorFlow deep learning framework and US Indiana
University’s EgoHands dataset. Both of the robot and host computer’s software is written by Python in Linux systems.
Video stream and tracking control commands are exchanged between robot and host via WiFi. The practical tests show
that the vision tracking function of the developed smart robot has good stability and performance.
Key words: deep learning; SSD model; Raspberry Pi; computer vision; robot
智能机器人的开发是科学研究、大学生科技创新
大赛的热点, 基于计算机视觉的目标检测技术在智能
小车、无人机、机械臂等领域得到了广泛应用. 在企
业界, 零度智控公司开发了Dobby (多比)、大疆公司
开发了Mavic等, 研发出了具有视觉人体追踪与拍摄
功能的家用小四轴自拍无人机. 在学术界, 文献[1] 从
检测、 跟踪与识别三方面对基于计算机视觉的手势识
别的发展现状进行了梳理与总结; 文献[2]基于传统的
机器学习方法-半监督学习和路威机器人平台实现了
视觉追踪智能小车; 文献[3]基于微软Kinect平台完
① 基金项目: 青岛科技大学教学改革研究面上项目(2018MS44); 青岛市博士后应用研究项目
Foundation item: General Program of Education Reform of Qingdao University of Science and Technology (2018MS44); Post Doctorial Application Research
of Qingdao City
收稿时间: 2020-01-08; 修改时间: 2020-02-08, 2020-03-17; 采用时间: 2020-03-24; csa在线出版时间: 2020-10-29
Research and Development 研究开发
227
计算机系统应用
2020
年 第
29
卷 第
11
期
成了视觉追踪移动机器人控制系统的设计; 文献[4]对
服务机器人视觉追踪过程中的运动目标检测与跟踪算
法进行研究并在ROS (Robot Operating System, 机器人
操作系统)机器人平台进行实现.
上述视觉追踪功能的实现大多采用传统的目标检
测方法, 基于图像特征和机器学习, 且所采用平台成本
相对较高. 近年随着大数据与人工智能技术的兴起, 利
用深度学习直接将分类标记好的图像数据集输入深
度卷积神经网络大大提升了图像分类、目标检测的
精确度. 国内外基于Faster R-CNN (Faster Region-
Convolutional Neural Network, 更快的区域卷积神经网
络)、YOLO (You Only Look Once, 一种single-stage目
标检测算法)、SSD (Single Shot multibox Detector, 单
步多框检测器)等模型的深度学习算法得到广泛应用,
如文献[5]将改进的深度学习算法应用于中国手语识
别. 本文基于深度学习
[6]
技术, 在低成本树莓派
[7]
平台
上设计实现了视觉追踪智能机器人(小车), 小车能够
通过摄像头识别人手并自动追踪跟随人手. 与现有研
究的主要不同之处在于使用了更为经济的低成本树莓
派作为机器人平台, 并且在目标检测的算法上使用了
基于TensorFlow
[8]
深度学习框架的SSD模型, 而不是
基于传统的图像特征和机器学习算法.
数据采集与传输, 两者之间通过WiFi通信. 其中, 小车
主控板为开源的树莓派3代B开发板, CPU (ARM芯
片)主频1.2 GHz, 运行有树莓派定制的嵌入式Linux
操作系统, 配以板载WiFi模块、CSI接口摄像头、底
盘构成下位机部分. 上位机操作运行事先训练好的
SSD模型
[9]
. 小车摄像头采集图像数据, 将其通过WiFi
传输给上位机, 并作为SSD模型的输入. SSD模型如
果从输入的图像中检测到人手, 会得到人手在图像中
的位置, 据此决定小车的运动方向和距离(需要保持人
手在图像中央), 进而向小车发送控制命令, 指示运动
方向和距离. 小车收到上位机发来的远程控制命令后,
做出前进、转向等跟踪人手的动作. 智能小车和主控
电脑两端皆运行用Python
[10]
编写的脚本程序.
1.2 深度学习SSD模型
SSD模型全名为Single Shot multibox Detector
[9]
,
是一种基于深度学习的one stage (一次)目标检测模
型. SSD模型由一个基础网络(base network)的输出级
后串行连接几种不同的辅助网络构成, 如图2所示. 不
同于之前two stage的Region CNN
[11]
, SSD模型是一
个one stage模型, 即只需在一个网络中即可完成目标
检测, 效率更高.
摄像头发送命令
控制
1 关键技术
1.1 系统架构
如图1, 整个系统分为机器人小车(下位机)和主
控电脑(上位机)两部分. 上位机基于深度学习卷积神
经网络做出预测, 下位机负责机器人的行进以及视频
树莓派图传
传输图像
SSD 模型
图1 智能机器人系统架构
VGG-16
Through Conv5_3 layer
300
S
S
D
38
Conv4_3
19
Conv6
(FC6)
19
19
Conv7
(FC7)
19
19
Conv6_2
19
5
Conv9_2
5
Conv: Conv:3×3×(4×(Classes+4))
N
o
n
-
m
a
x
i
m
u
m
s
u
p
p
r
e
s
s
i
o
n
D
e
t
e
c
t
i
o
n
s
:
8
7
3
2
p
e
r
c
l
a
s
s
Classifier: Conv:3×3×(4×(Classes+4))
Classifier: Conv:3×3×(6×(Classes+4))
Image
300
74.3 mAP
59 FPS
38
3
512
3
Conv10_2
Conv11_2
3
1
25616256
Conv: 3×3×1024Conv: 1×1×1024Conv: 1×1×256
Conv: 1×1×128
Conv: 1×1×128
Conv: 1×1×128
Conv: 3×3×512−s2
Conv: 3×3×256−s2
Conv: 3×3×256−s1
Conv: 3×3×256−s1
图2 SSD模型
SSD模型采用多尺度特征预测的方法得到多个不
同尺寸的特征图. 假设模型检测时采用m 层特征图,
则得到第k个特征图的默认框比例公式如式(1):
228
研究开发 Research and Development
[9]
S
k
=S
min
+
S
max
−S
min
(
k−1),k∈
{
1,2,···,m
}
m−1
(1)
其中, S
k
表示特征图上的默认框大小相对于输入原图
2020
年 第
29
卷 第
11
期
计算机系统应用
的比例(scale). 一般取S
min
=0.2, S
max
=0.9. m为特征图个数.
SSD模型的损失函数定义为位置损失与置信度损
失的加权和
[9]
, 如式(2)所示:
L
(
x,c,l,g
)
=
1
(
L
conf
(
x,c
)
+αL
loc
(
x,l,g
))
N
(2)
于图像分类、机器翻译等领域. TensorFlow有着强大
的Python API函数, 而本文实现的智能小车和主控电
脑端运行的程序皆为Python脚本, 可以方便的调用
Python API函数.
其中, N表示与真实物体框相匹配的默认框数量; c是
预测框的置信度; l为预测框的位置信息; g是真实框
的位置信息; α是一个权重参数, 将它设为1; L
loc
(x,l,g)
位置损失是预测框与真实框的Smooth L1损失函数;
L
conf
(x,c)是置信度损失, 这里采用交叉熵损失函数.
1.3 TensorFlow平台
使用谷歌TensorFlow深度学习框架对SSD模型
进行训练. TensorFlow能够将复杂的数据结构传输至
人工智能神经网络中进行学习和预测, 近年广泛应用
智能机器人/下位机 (服务端)
机器人上电
2 设计与实现
系统主程序软件流程如图3所示. 上位机运行自
行编写的Python脚本作为主程序, 接收下位机发来的
图像, 并将其输入到事先训练好的深度学习SSD模型
中, 以检测人手目标. 若检测到人手, 则产生、发送控
制命令至下位机. 下位机运行两个自行编写的Python
脚本, 其中一个脚本基于开源的mjpg-streamer软件采
集、传输图像至上位机, 另一个接收来自上位机的控
制命令并通过GPIO端口控制车轮运动.
电脑/上位机 (客户端)
连接 WiFi AP
进程启动
Linux 系统启动
连接 WiFi AP
接收图像
启动进程
图传进程
打开摄像头
控制进程
启动 http 服务器
将图像输入
SSD 模型进行识别
是否检测到人手?
采集图像
是否有上位
机控制命令?
Y
控制车轮
http/WiFi 通信
进程退出
N
Y
根据人手在图像中
的位置生成并发送命令
N
把采集到的
图像以流的
方式通过 IP
网络传输到
上位机
机器人掉电
图3 主程序软件流程
2.1 深度学习SSD模型训练
上位机电脑和CPU型号为联想Thinkpad E540酷
睿i5 (第4代), 操作系统为Ubuntu 16.04 LTS 64位,
TensorFlow版本为v1.4.0, 采用TensorFlow Object
Detection API 的SSD MobileNet V1模型. 训练数据直
接使用了美国印第安纳大学计算机视觉实验室公开的
EgoHands数据集, 该数据集是一个向外界开放下载的
1.2 GB的已经标注好的数据集, 用谷歌眼镜采集第
一视角下的人手图像数据, 例如玩牌、下棋等场景下
人手的姿态. 首先对数据集进行数据整理, 将其转换
为TensorFlow专有的TF Record数据集格式文件, 然
后修改TensorFlow目标检测训练配置文件ssd_
Research and Development 研究开发
229
计算机系统应用
2020
年 第
29
卷 第
11
期
mobilenet_v1_. 训练全程在电脑上由通用
CPU运行, 共运行26小时. 结束训练后将protobuf格
式的二进制文件(真正的SSD模型)保存下来以便下
文介绍的上位机Python主程序调用.
2.2 上位机设计
考虑到小车回传视频的帧数比较高, 且深度学习
神经网络的计算也是一件耗时的任务, 在上位机主程
序(Python脚本)中建立了两个队列, 一个输入队列用
来存储下位机传来的原始图像, 一个输出队列用来存
储经神经网络运算处理之后带有标注结果的图像. 上
位机通过开源软件OpenCV的apture类用
文件的方式读取视频信息. 运行SSD目标检测模型进
行人手识别时, 会得到目标的标注矩形框中心, 当中心
落到整幅图像的左侧并超出一定距离时, 产生turnleft
左转指令; 当中心落到整幅图像右侧且超出一定距离
的时, 产生turnright右转指令; 当中心落到图像的上半
部分并超过一定距离时, 产生forward前进指令. 距离
值默认设定为60个像素, 该参数可修改. 预测小车行
进方向功能的伪代码如算法1所示.
算法1. 上位机预测行进方向伪代码
Require: 距离阈值(默认为60像素)
while 全部程序就绪 do
if 没有识别到目标:
Continue;
else if 识别到目标:
if 识别到目标面积过大, 目标离摄像头太近:
Send(“stop”);
else:
if 目标中心 x<640/2–距离阈值:
Send(“turnleft”);
if 目标中心 x>640/2+距离阈值:
Send(“turnright”);
else:
Send(“forward”);
end while
2.3 下位机设计
下位机基于低成本树莓派平台实现, 使用开源软
件Bottle部署了一个多线程的HTTP服务器, 该服务
器接收上位机发出的HTTP POST请求, 提取其中的控
制命令进行运动控制. 使用开源软件mjpg-streamer控
制网络摄像头采集图像, 并将图像数据以视频流的方
式通过IP网络传输到上位机客户端.
230
研究开发 Research and Development
3 测试结果与评估
搭建局域网环境(也支持广域网), 使上位机和下
位机接入同一无线路由器. 当摄像头采集到的画面右
侧出现人手时, 如图4所示的实时图像中, 标注方框标
记出了检测到的人手的位置, 同时控制台输出turnright
(右转)控制命令, 此时小车向右侧做出移动. 当屏幕中
没有人手时, 画面上面没有用彩色画出的区域, 上位机
的终端也不打印输出任何控制命令.
图4 人手目标检测功能测试结果
功能方面, 针对人手在小车视野的不同位置情况
进行所研制小车人手视觉追踪的功能测试. 比如, 当人
手在小车前方且完整出现时, 上位机应发出forward
(前进)命令, 进而小车收到该命令后向前行进. 当小车
视野里没有或只有部分人手时, 应当无命令输出, 小车
原地不动. 功能测试用例如表1所示, 测试结果均为预
期的正常结果. 性能方面, 所采用基于深度学习SSD
模型的人手目标检测算法的准确性与实时性较好, 算
法的mAP (平均精准度) 为74%, 检测速率40 fps左右,
可以较好的满足系统要求.
表1 人手视觉功能测试结果
测试用例输出命令小车动作
手在小车正前方60 cm处
forward
向前行进
手在小车左前方60 cm处
turnleft
向左行进
手在小车右前方60 cm处
turnright
向右行进
手在小车正前方130 cm处
forward
向前行进
手在小车左前方130 cm处
turnleft
向左行进
手在小车右前方130 cm处
turnright
向右行进
视野里只有半只手无输出原地不动
手在小车视野下方无输出原地不动
小车(机器人平台)外观如图5所示. 另外, 由于动
态视频文件无法在论文中展示, 这里展示的是录制好
2020
年 第
29
卷 第
11
期
计算机系统应用
的测试视频中2个帧的截图, 如图6所示, 从小车的位
置变化可以看出其可以追踪人手.
图5 机器人外观
图6 追踪人手
4 结论
本文利用深度学习SSD目标检测模型对目标进
行识别, 将识别的结果用于修正智能小车机器人的行
进路线, 满足了智能机器人的视觉追踪功能需求. 其特
色主要在于采用了低成本树莓派, 以及深度学习而非
传统的神经网络识别算法, 省去了设置特征的步骤. 系
统暂时只能用来识别人手, 小车能够跟随人手移动, 功
能稳定性与性能良好. 若要识别追踪其他物体, 可以使
用其他自己制作或第三方数据集对SSD模型进行训
练, 以把网络的识别对象训练成拟追踪的目标类型. 未
来也可应用5G通信模块, 进行更为稳定低时延的视频
传输与控制.
参考文献
1
Rautaray SS, Agrawal A. Vision based hand gesture
recognition for human computer interaction: A survey.
Artificial Intelligence Review, 2015, 43(1): 1–54. [doi: 10.
1007/s10462-012-9356-9]
2
张子洋, 孙作雷, 曾连荪. 视觉追踪机器人系统构建研究.
电子技术应用, 2016, 42(10): 123–126, 130.
3
王道全. 基于视觉的智能追踪机器人的设计研究[硕士学
位论文]. 青岛: 青岛科技大学, 2016.
4
周燕秋. 服务机器人视觉追踪技术研究[硕士学位论文].
上海: 上海师范大学, 2018.
5
周舟, 韩芳, 王直杰. 改进SSD算法在中国手语识别上的
应用. 计算机工程与应用: 1–7. /kcms/
detail/. [2020-03-19].
6
Goodfellow I, Bengio Y, Courville A. Deep Learning深度学
习. 赵申剑, 黎彧君, 符天凡, 等译. 北京: 人民邮电出版社,
2017.
7
许艳, 孟令军, 王志国. 基于树莓派的元器件检测系统设
计. 电子技术应用, 2019, 45(11): 63–67, 71.
8
郑泽宇, 梁博文, 顾思宇. TensorFlow: 实战Google深度学
习框架. 2版. 北京: 电子工业出版社, 2018.
9
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot
MultiBox detector. Proceedings of the 14th European
Conference on Computer Vision. Amsterdam. 2016. 21–37.
10
Chun W. Python核心编程. 孙波翔, 李斌, 李晗, 译. 3版. 北
京: 人民邮电出版社, 2016.
11
Girshick R, Donahue J, Darrell T, et al. Rich feature
hierarchies for accurate object detection and semantic
segmentation. Proceedings of the 2014 IEEE Conference on
Computer Vision and Pattern Recognition. Columbus, OH,
USA. 2014. 580–587.
Research and Development 研究开发
231


发布评论