Caffe平台移动机器人目标跟踪系统的实现

机器人技术涉及众多领域的研究,目标跟踪不仅是机器人技术研究领域热点之一,也是实现移动机器人智能化的基础。视觉目标跟踪是一个非常有挑战性的任务,因为处理好实际中各种复杂多变的场景是很困难的,特征选择是影响目标跟踪精度的重要因素。卷积神经网络通过对输入数据进行多层神经网络的映射,从而得到有效的分层特征抽象表达,解决传统目标跟踪方法人工设计特征的难题,增强机器人对环境的理解和建模,实现移动机器人在各种场景中对目标的实时检测与跟踪。

本文主要研究内容为设计一款基于 Caffe 深度学习框架的移动机器人目标跟踪系统,使其可对特定类型进行具有鲁棒性的识别与跟踪并通过实验进行功能验证。使用对于目标形变、视角、轻微遮挡及光照变化具有鲁棒性的 GOTURN 目标跟踪算法,并以CvBridge 库为桥梁使在Caffe 深度学习框架上离线训练出的目标跟踪模型可实时应用于TurtleBot 移动机器人上。

1章 绪  ............................................................................................................... 1

1.1 课题研究背景与意义.................................................................................................. 1

1.2 国内外移动机器人及目标跟踪技术的研究现状............................................... 1

1.2.1 移动机器人研究现状.............................................................................................. 1

1.2.2 目标跟踪研究现状.................................................................................................. 2

1.3 本文研究内容................................................................................................................ 2

2章 移动机器人及其控制系统.................................................................... 4

2.1 ROS机器人操作系统.................................................................................................. 4

2.2 TurtleBot移动机器人................................................................................................... 5

2.2.1 TurtleBot移动机器人............................................................................................... 5

2.2.2 Kinect视觉深度传感器........................................................................................... 6

2.2.3 TurtleBot控制设计及实现....................................................................................... 6

3章 深度学习框架的搭建及原理............................................................... 8

3.1 卷积神经网络................................................................................................................ 8

3.2.1卷积层....................................................................................................................... 9

3.1.2降采样层................................................................................................................... 9

3.1.3激活函数................................................................................................................. 10

3.1.4损失函数................................................................................................................. 10

3.2 Caffe深度学习框架.................................................................................................... 12

3.2.1 Caffe深度学习框架结构....................................................................................... 13

3.2.2 Caffe深度学习框架搭建及测试........................................................................... 13

4章 基于卷积神经网络的目标跟踪算法实现.................................. 16

4.1 GOTURN目标跟踪算法........................................................................................... 16

4.1.1 GOTURN网络结构设计....................................................................................... 17

4.1.2 GOTURN网络输入输出格式............................................................................... 19

4.2 GOTURN网络离线训练实现................................................................................. 20

4.2.1 实验数据准备........................................................................................................ 20

4.2.2 训练样本扩充........................................................................................................ 20

4.2.3 离线训练实现........................................................................................................ 22

4.2.4 实验数据准备........................................................................................................ 23

4.3 GOTURN跟踪结果及分析...................................................................................... 25

5章 移动机器人目标跟踪系统实现....................................................... 28

5.1 目标跟踪程序实现................................................................................ 28

5.2 基于GOTURN算法的移动机器人跟踪目标........................................ 31

6章 结 ............................................................................................................... 33

机器人技术涉及众多领域的研究,包括计算机视觉、自动控制、人工智能和计算机并行处理等多学科理论与技术。目标跟踪不仅是机器人技术研究领域热点之一,也是实现移动机器人智能化的基础。移动机器人的目标跟踪首先是利用传感器观察目标在环境中的位置,然后提取被检测目标在被观测场景中的实时运动,最后实时跟踪目标。因为检测过程中目标常常发生外观形态上的变化,且跟踪目标的背景环境时常复杂,研究一种通用性强、精确度高、复杂度低的目标跟踪算法成为目标跟踪领域的发展方向。

深度学习是近年发展起来,并在计算机视觉领域广泛应用并已取得丰硕成果的高效识别方法,其通过对输入数据进行多层神经网络的映射,从而得到有效的分层特征抽象表达。因而利用深度学习技术训练出的模型对于不同的目标跟踪任务有很强的适应性,与手工设计的特征提取方法相比,深度模型获得的数据特征更能代表大数据丰富的内部信息,使得移动机器人目标跟踪技术取得很大进步。

本文利用深度学习框架,训练对目标视角、形变及光照等变化具有鲁棒性的跟踪模型,并根据实际应用要求进行调整,使其对特定类型的目标跟踪更加准确,实现移动机器人在各种场景下有效地检测并跟踪目标,在军事和民用领域都具备十分宽泛的应用价值。

Kinect 是微软公司发布的主要应用于 XBOX 360 游戏平台的体感外部设备,但一经推出即引起了机器人研究领域的广泛关注。Kinect可以同时捕捉彩色图像和深度图像,为了方便研究人员对它进行深入开发,微软公司开放其SDK,并发布可在个人计算机中使用的Kinect版本。

Kinect的结构如图所示。它由一个RGB相机、一个红外(IR)投影仪、一个单色CMOS红外相机和四个麦克风阵列组成。RGB相机负责采集RGB彩色图像,由红外CMOS照相头和红外投影仪组成的三维结构光深度传感器负责采集深度数据。

12.jpg

ROS中发送消息的方式是主题和服务。主题是用于节点之间数据传输的总线。它将消息发布到一个节点的主题,这样其他节点就可以通过订阅主题的方式来获取信息,而不需要节点之间的点到点连接。若是要节点之间直接通信并获得响应,则使用服务方法。本文选择主题传递的消息的方式,因为移动机器人目标跟踪中的各种消息具有多样用途。

13.jpg

14.jpg

卷积神经网络是一种前馈神经网络结构,其主体通常是由卷积层和池化层组成的模块级联构成,然后通过全连接层或者分类器,对提取到的特征向量进行分类,输出分类结果。其采用局部感知和参数共享的技术手段,降低卷积神经网络中参数的规模,从而获得针对不同检测任务有更强鲁棒性的网络模型。

27.png

伴随着近年深度学习技术的快速发展,许多大学和科研机构都推出了深度学习开发框架,推动了深度学习工程化应用的进程,极大地增强深度学习工作的可复用性及实际从事深度学习的研究人员在开发中部署的效率。以下是几种主流深度学习框架的研究现状以及选择Caffe作为研究对象的原因:

Torch7Theano Pylearn2 框架相比, Caffe具有以下独特的优势:

(1)    Caffe内置PythonMatlab两种外部接口,方便对实验数据的后续分析。

(2)    Caffe有多个基本数据集的培训配置文档,包括快速培训模型和完整培训模型。

(3)    Caffe采用GPU并行技术,增强代码的执行效率,大大地缩短模型的训练时间。

(4)    Caffe基于尽可能多的模块化原则, 这使得扩展新的数据格式、网络层和丢失功能变得很容易。

Caffe有十分清晰的框架结构,主要由五种模块组成,分别是:BlobLayerNetSolverProto

1BlobCaffe中构造的用于储存数据和交换数据的4维数组。BlobCaffe中作为数据封装包处理和传递需要学习的参数和layer所传递的数据,包括存储输入输出数据、参数权值、权值更新值等。同时,Blob提供了统一的存储器接口。Blob可在CPUGPU中同步处理数据,其4维分别代表NumbersChannelsHeightWidth。以图像作为输入数据时,Numbers代表图像帧数,Channels表示图像颜色通道,HeightWidth表示图像的高和宽。

2Layer:是神经网络中具体的各层结构,LayerModel的基础,也是计算的基本单元,具体包括Data_LayerNeuron_LayerLoss_LayerCommon_LayerVision_Layer五类。Data_Layer是最底层的网络结构,主要用于数据处相关的操作,并且对多种数据格式兼容。Neuron_Layer包含了一些常用的激活函数,如Sigmoid激活函数等。Vision_Layer主要用于特征提取的相关操作,包括卷积计算、池化和局部响应正则化等。Layer通过Blob实现数据的输入输出操作,部分Layer带有权值(Weight)和偏置项(Bias)。Caffe通过Layer实现了许多常用的卷积神经网络结构,包括卷积层、池化层、全连接层等,通过前向传播和反向传播实现在Layer中的数据传递和参数权值更新。

3NetNet在卷积神经网络中代表一个完整的CNN模型,包含若干Layer例,其本质是各类Layers的集合。Net中既包含Layer对象,又包含Blob对象。其中Blob对象用于存放每个Layer输入输出的中间结果,Layer则根据Net的表述对指定的输入Blob进行某些计算处理(卷积、池化、全连接等)。Net通过组合众多Layer结构来描述深度学习网络的拓扑结构,其作用还包括初始化网络结构中实现的Layer,并在训练过程中通过BlobLayer包含的网络参数进行更新。


Caffe框架的搭建步骤如下:

(1)    CUDA 7.5安装

卸载nouveau显卡驱动

      卸载系统的nvidia驱动

      进入CUDA所在文件夹,执行sudo sh cuda_7.5.28_linux.run 进行安装

      /etc/profile中添加环境变量,在文件最后添加:PATH=/usr/local/cuda-7.0/bin:$PATH

安装依赖项,执行sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libglu1-mesa-dev libgl1-mesa-glx libglu1-mesa

CUDA进行编译

编译后执行sudo ./device Query,若能显示显卡信息,说明CUDA7.5安装成功

(2)    CuDNN安装

NVIDIA官网下载cudnn-7.5-linux-x64-x50-ga.tgz,解压缩后安装

更新cuDNN库文件的软连接

(3)    Intel MKL安装

解压压缩包,安装MKL,出现图形安装界面,按照提示进行安装

安装完成后添加Library路径 sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

(4)    Open CV安装

安装依赖项,执行sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev

打开下载好的Open CV脚本,执行Install-Open CV-master进行安装

5 Anaconda安装

打开下载好的Anaconda安装包,执行 bash Anaconda-2.3.0-Linux-x86_64.sh,它会自动添加Caffe所需的Python环境变量

6 Caffe安装

访问并打开CaffeGithub网站,下载Caffe源码包

切换到Caffe根目录下,执行cp Makefile.config.example Makefile.config

执行make allmake testmake runtest进行编译安装

7)编译Python wrapper

执行make pycaffe,编译通过则Caffe框架安装基本完成,Caffe深度学习框架的测试如图所示:

28.png

29.png

卷积神经网络在计算机视觉领域中的应用已经取得丰硕的成果,其能够学习到原始输入图像的不同层次的特征抽象,对各种机器视觉任务具有优良的学习能力和泛化能力。正是鉴于卷积神经网络在捕捉视觉特征和泛化能力上的各种优势,本文采用一个多层卷积神经网络来对各式各样不同的跟踪目标进行建模。

15.jpg

目标跟踪的关键点包括候选目标区域的选择、特征提取和跟踪器模型的建立。目标跟踪算法对实时性和精度要求很高。因此,结合上述目标跟踪的关键点,本章将阐述和分析基于孪生卷积神经网络的GOTURN算法,并在Caffe 深度学习框架上进行离线训练。该算法对于目标形变、视角、轻微遮挡及光照变化具有鲁棒性,在当前目标跟踪领域具有较高的精度和较强的性能。

GOTURN网络整个框架可以分为两个部分:1.卷积层,用于提取目标区域和搜索区域的特征 2.全连接层,被当成一个回归算法,用于比较目标和搜索区域的特征并输出新的目标位置。

具体来说,GOTURN网路的卷积层是由Caffe Net的前五层卷积层及池化层依次排列组成,其输出被连接成完整的向量输入到三个有4096个节点并完全连接的全连接层中,最后连接到拥有四个节点的输出层输出矩形返回目标的运动位置,表示目标左上角和右下角的坐标

16.jpg

 GOTURN算法使用的数据集是一个分类数据集,其离线训练的跟踪模型更适合数据集中存在的类别的目标,因此可以利用离线海量数据集,根据某一场景,训练专门跟踪某一类别的跟踪器,以充分利用GOTURN算法的优势。GOTURN目标跟踪算法离线训练和单次回归目标位置的方式使基于深度学习的目标跟踪应用在移动机器人上成为可能,并满足移动机器人目标跟踪的实时性及鲁棒性,从而使其能高效协助其他相关机器人、自动化设备及人员等完成对应复杂场景下的任务,在军事和民用领域都具备十分宽泛的应用价值。



  • 微信
  • 赶快加我聊天吧
  • 开发交流群
  • 海纳百川,大家来水
  • weinxin
微义工作室

发表评论 取消回复