Python计算机视觉和自然语言处理
上QQ阅读APP看书,第一时间看更新

前 言

本书首先介绍机器人背后的理论;然后介绍机器人开发的不同方法,以及计算机视觉的相关算法及其局限性;接下来介绍如何使用自然语言处理命令来控制机器人。本书还会介绍Word2Vec和GloVe这两种词嵌入技术、非数值数据、循环神经网络(RNN),以及基于RNN的先进模型;介绍如何使用Keras创建简单的Word2Vec模型,如何构建卷积神经网络(CNN),以及如何通过数据增强和迁移学习来进行模型优化。本书还会简单介绍机器人操作系统(ROS),带领读者构建用来管理机器人的对话代理,并将其集成在ROS中,实现将图像转换为文本和将文本转换为语音的功能。最后,本书将介绍如何利用一段视频来构建物体识别系统。

阅读完本书之后,读者将拥有足够的技能来构建一个环境信息提取应用,并可以将其集成在ROS中。

学习目标

  • 探索ROS并构建一个基础的机器人系统。
  • 利用自然语言处理(NLP)技术识别对话意图。
  • 学习并使用基于Word2Vec和GloVe的词嵌入。
  • 使用深度学习实现人工智能(AI)和物体识别。
  • 利用CNN开发一个简单的物体识别系统。
  • 通过在ROS中集成AI来赋予机器人识别物体的能力。

目标读者

本书适合想学习如何结合计算机视觉和深度学习技术来创建完整机器人系统的机器人工程师阅读。阅读本书时,如果读者在Python和深度学习方面有一定基础,那么会更利于理解本书中的内容;如果读者拥有构建ROS的经验,则是锦上添花。

本书概述

本书立足实践,帮助读者掌握足够的工具来创建集成计算机视觉和NLP的机器人控制系统。本书分为3个部分:NLP、计算机视觉和机器人学。本书先介绍详细的基础知识,然后再探讨高级问题。本书还涵盖一些实践项目,供读者在对应情境下实践并应用所掌握的新技能。

最低硬件需求

为保证最佳学习体验,本书推荐计算机的硬件配置如下。

  • 处理器:2 GHz双核处理器或性能更好的处理器。
  • 内存:8 GB RAM。
  • 存储空间:5 GB可用的硬盘空间。
  • 良好的网络连接。

本书推荐使用Google Colab训练神经网络模型。如果希望在自己的计算机上进行训练,你将会需要NVIDIA GPU。

软件需求

鉴于与ROS Kinetic兼容的问题,如果你希望使用Ubuntu 18.04,可以使用它支持的ROS版本Melodic。为了完成本书项目中的全部练习,你将需要安装一些库,例如NLTK(版本不高于3.4)、spaCy(版本不高于2.0.18)、gensim(版本不高于3.7.0)、NumPy(版本不高于1.15.4)、sklearn(版本不高于0.20.1)、Matplotlib(版本不高于3.0.2)、OpenCV(版本不高于4.0.0.21)、Keras(版本不高于2.2.4),以及Tensorflow(版本介于1.5到2.0之间)。这些库的安装步骤将会在相应的练习中说明。

如果希望在Ubuntu系统上使用YOLO,你将需要为你的GPU安装NVIDIA驱动程序,并安装NVIDIA的CUDA工具包。

安装和设置

开始阅读本书之前,你需要安装以下这些软件。

安装Git LFS

你需要安装Git LFS(Git Large File Storage,Git大文件存储),以便从本书的GitHub仓库中下载全部资源,并使用其中的图像来训练神经网络模型。Git LFS会将音频、视频、数据集和图像等类型的大文件替换为Git中的文本指针。

如果你还没有复制仓库,请按照如下步骤操作。

1.安装Git LFS。

2.复制Git仓库。

3.在仓库文件夹中执行“gitlfs pull”。

4.完成。

如果你已经复制了仓库,请按照如下步骤操作。

1.安装Git LFS。

2.在仓库文件夹中执行“gitlfs pull”。

3.完成。

Google Colaboratory(推荐)

如果条件允许,本书推荐使用Google Colaboratory。它是一个免费的Jupyter Notebook环境,无须配置,完全运行在云端,而且可以在GPU上运行。

Google Colaboratory的使用步骤如下。

1.将完整的GitHub仓库上传到你的Google Drive账户上,以便使用仓库中的文件。注意,请确保你使用了Git LFS来加载所有文件。

2.移动到你想要新建Google Colab Notebook的文件夹位置,单击New > More > Colaboratory。这样就打开了一个Google Colab Notebook,并保存在相应的文件夹中,然后就可以使用Python、Keras或者其他已安装的库了。

3.如果希望安装某个库,可以使用pip软件包安装工具或者其他的命令行安装工具,但是需要在开头添加“!”。例如,可以执行“!pip install sklearn”来安装scikit-learn。

4.如果希望从你的Google Drive中加载文件,可以在Google Colab的单元格中执行以下两行代码:

from google.colab import drive
drive.mount('drive')

5.打开单元格输出中的链接,使用你创建Google Colab Notebook账户时使用的Google账户登录。

6.可以使用ls命令列举当前文件夹中的文件,如图0.1所示;也可以使用cd命令来移动到文件上传的位置。

7.这样就可以使用Google Colab Notebook加载文件和执行任务了,就像是使用在同一个文件夹下打开的Jupyter Notebook。

图0.1 使用ls命令的结果

安装ROS Kinetic

按照以下步骤,在你的Ubuntu系统上安装相应框架。

1.为在Ubuntu系统上安装ROS软件做准备:

sudo sh -c'echo"deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc)
main" > /etc/apt/sources.list.d/ros-latest.list'

2.配置软件包密钥:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recvkey 421C365BD9FF1F717815A3895523BAEEB01FA116

3.更新系统:

sudo apt-get update

4.安装完整框架,以免遗漏任何功能:

sudo apt-get install ros-kinetic-desktop-full

5.初始化rosdep并进行更新:

sudo rosdep init
rosdep update

6.可以在bashrc文件中添加相应的环境变量,以免在每次使用ROS时声明:

echo"source /opt/ros/kinetic/setup.bash" >> ~/.bashrcsource ~/.bashrc

完成以上各步骤之后,可能需要重启计算机才能使新配置生效。

7.启动框架,检查是否安装正确:

roscore

配置TurtleBot

TurtleBot和你的ROS发行版(本书使用的是Kinetic Kame)之间可能存在兼容问题,但是没关系,Gazebo可以模拟很多种机器人。你可以换成其他机器人,并尝试在你的ROS发行版中使用。

下面是配置TurtleBot的步骤。

1.安装依赖项:

sudo apt-get install ros-kinetic-turtlebotros-kinetic-turtlebot-apps
ros-kinetic-turtlebot-interactions ros-kinetic-turtlebot-simulator
ros-kinetic-kobuki-ftdiros-kinetic-ar-track-alvar-msgs

2.将TurtleBot模拟器软件包下载到你的catkin工作空间中:

cd ~/catkin_ws/src
git clone https://github.com/turtlebot/turtlebot_simulator

3.现在你应该可以在Gazebo中使用TurtleBot了。

如果在Gazebo中试图对TurtleBot进行可视化时遇到了错误,可以从本书的GitHub仓库中下载turtlebot_simulator文件夹并进行替换。

启用ROS服务:

roscore

启动TurtleBot World:

cd ~/catkin_ws
catkin_make
sourcedevel/setup.bash
roslaunchturtlebot_gazeboturtlebot_world.launch

Darknet基础安装

按照下面的步骤安装Darknet。

1.下载框架:

git clone https://github.com/pjreddie/darknet

2.移动至下载下来的文件夹,执行编译命令:

cd darknet
make

如果编译过程顺利完成,你将会看到类似图0.2所示的输出。

图0.2 Darknet编译输出

Darknet高级安装

如果希望实现本书每章的学习目标,你需要完成下面的安装流程,这样就可以使用GPU计算来实时检测并识别物体了。开始之前,你需要在Ubuntu系统中安装好一些依赖项,包括以下几个。

  • NVIDIA驱动程序:可以让系统正确使用你的GPU。你可能已经知道,系统需要使用NVIDIA的GPU。
  • CUDA:一个NVIDIA工具包,为构建需要GPU的应用提供了开发环境。
  • OpenCV:一个自由的人工视觉库,对图像处理的帮助非常大。

请注意,所有这些依赖项都有多个版本,你需要找到与你使用的GPU和系统相兼容的版本。

一旦系统准备好,你就可以开始进行下面的高级安装了。

1.下载框架(如果没有在基础安装中下载的话):

git clone https://github.com/pjreddie/darknet

2.修改Makefile文件的前几行,以启用OpenCV和CUDA。修改之后的文件看起来应该是这样:

GPU=1
CUDNN=0
OPENCV=1
OPENMP=0
DEBUG=0

3.保存对Makefile文件的修改,将其移动至darknet文件夹中并执行编译命令:

cd darknet
make

现在你应该可以看到类似图0.3所示的输出。

图0.3 启用CUDA和OpenCV的Darknet编译输出

安装YOLO

在安装之前,你需要在Ubuntu系统上安装一些依赖项(与在Darknet高级安装部分中提到的相同)。