1.7 本书的内容结构和案例数据
卷积神经网络是目前应用最广的深度学习模型。本书旨在介绍其中比较重要的模型,并通过演示案例说明有关模型的应用价值。下面简述本书的内容结构及案例数据。
1.7.1 内容结构
本书共分为12章,有关应用案例的章节、框架和平台汇总在表1.1中。
表1.1 应用案例的章节、框架和平台
各章的内容结构描述如下:
第1章为概述,介绍深度学习的起源和发展,说明卷积神经网络的形成和演变,分析卷积神经网络的应用和影响,讨论卷积神经网络的缺陷和视图,总结卷积神经网络的平台和工具。
第2章为预备知识,主要介绍卷积神经网络模型有关的数学基础。
第3章为卷积神经网络的现代雏形LeNet。首先介绍LeNet的原始模型,然后描述LeNet的标准模型,接着给出LeNet的学习算法,说明LeNet的Caffe代码,并分析LeNet的手写数字识别案例、交通标志识别案例和交通路网提取案例。
第4章为卷积神经网络的突破模型AlexNet。首先介绍AlexNet的模型结构,然后依次说明AlexNet的Caffe和TensorFlow代码,并分析AlexNet的大规模图像分类案例,最后简介其改进模型ZFNet。
第5章为卷积神经网络的应变模型。主要介绍SPPNet的模型结构,说明SPPNet的Caffe代码,并分析SPPNet的大规模图像分类案例。
第6章为卷积神经网络的加深模型。主要介绍VGGNet和GoogLeNet的模型结构,说明它们的TensorFlow代码,并分析VGGNet的物体图像分类案例和GoogLeNet的鲜花图像分类案例。
第7章为卷积神经网络的跨连模型。主要介绍快道网络、残差网络、密连网络和拼接网络。对于快道网络,只描述了模型结构。对于其余3个网络,还说明了核心模块的Caffe代码实现。此外,还分析了残差网络的大规模图像分类案例、密连网络的物体图像分类案例,以及拼接网络的人脸图像性别分类案例。
第8章为卷积神经网络的区域模型。主要介绍区域卷积神经网络、快速区域卷积网络、更快速区域卷积网络、你只看一次网络和单次检测器。对于前两个网络,只描述了模型结构。对于另外3个网络,还说明了它们的TensorFlow代码,并分析了它们在VOC 2007数据集上的图像目标检测案例。
第9章为卷积神经网络的分割模型。主要介绍全卷积网络、金字塔场景分析网络和掩膜区域卷积网络的模型结构,说明它们的Caffe或TensorFlow代码,并分析它们的图像语义分割、图像几何分割或图像实例分割等应用案例。
第10章为卷积神经网络的特殊模型。主要介绍4种模型,包括孪生网络、挤压网络、生成对抗网络和网中网。不仅给出了它们的模型结构,说明了它们的Caffe或TensorFlow代码,也分析了它们的手写数字验证、大规模图像分类或人脸图像生成等应用案例。
第11章为卷积神经网络的强化模型。主要介绍深层强化学习的标准模型、学习算法和变种模型,并分析一个笨笨鸟Flappy Bird智能体的游戏应用案例。
第12章为卷积神经网络的顶尖成就AlphaGo。主要介绍AlphaGo的设计原理和AlphaGo Zero的新思想,并分析一个仿效围棋程序MuGo的游戏应用案例。
1.7.2 案例数据
各章在介绍卷积神经网络的变种模型时,一般还给出了有关的应用案例。这些案例可能重复用到13个不同的数据集(大小信息和下载网址详见表1.2),分别是:MNIST(Mixed National Institute of Standard and Technology)、GTSRB(German Traff ic Sign Recognition Benchmark)、RRSI(Road Remote Sensing Image)、ImageNet 2012、CIFAR-10、Oxford-17、AR、VOC 2007、SIFT Flow、ADE20K、COCO(Common Objects in Context)2014、CelebA和Gamerecords。
表1.2 案例数据的信息描述和下载网址
下面依次对每个数据集进行详细介绍。
1)MNIST是一个著名的手写数字数据集(如图1.9所示),包括60000个训练样本,10000个测试样本。其中,每个样本图像的大小为28×28像素,仅包含一个单一的手写数字字符。像素的取值范围是[0, 255],其中0表示黑,255表示白,中间值表示灰度级。本书在第3章和第10章使用了MNIST数据集。
图1.9 MNIST的手写数字图像举例
2)GTSRB是一个德国交通标志数据集(如图1.10所示)。其中有两套训练集和测试集,都包含43类交通标志。一套有39209个训练样本和12630个测试样本,另一套有26640个训练样本和12569个测试样本。本书在第3章的交通标志识别案例中选用了前一套训练集和测试集,但从中去掉了少量样本,只用了39200个训练样本和12600个测试样本。GTSRB的图片格式是.ppm类型,大小在15×15到250×250之间不等,每个样本的长宽、兴趣区和标签等注释信息存放在相应的.csv文件中。为了便于处理,需要把它们的格式先转换成.jpg图像类型,并归一化为32×32像素大小。
图1.10 GTSRB的交通标志图像举例
3)RRSI是一个交通路网遥感图像的数据集(如图1.11所示)。交通路网是指公路、城市道路和单位管辖范围允许社会机动车通行的地方,包括广场、公共停车场等用于公众通行的场所。RRSI实际上共有30幅大小不等的图像和2种标注。本书在第3章选用了11幅来训练,5幅来测试,进行路网自动提取。
图1.11 RRSI的交通路网遥感图像举例
4)ImageNet是一个拥有超过1500万幅图像、约22000个类别的数据集(如图1.12所示),可用于大规模图像识别、定位和检测的研究。本书在第4章、第5章、第7章和第10章使用了2012年大规模图像视觉识别比赛(Large Scale Visual Recognition Competition, ILSVRC)的数据集ImageNet(即ImageNet 2012)设计图像分类案例。ImageNet 2012包含1281 167幅训练图像和50000幅测试图像,共有1000个类别。训练集中各类图像的数目可能不同,最少为732幅,最多为1300幅。而测试集中各类图像的数目都是50幅。
图1.12 ImageNet 2012的物体图像举例
5)CIFAR-10是一个常见物体图像数据集(如图1.13所示),分为10个类别,包含60000幅32×32的彩色图像,50000幅用于训练,10000幅用于测试。注意:根据表1.2中的网址下载的CIFAR-10是经过封装的,有3个版本:Python、Matlab和Binary。本书在第6章和第7章选用了Binary版本。
图1.13 CIFAR-10的物体图像举例
6)Oxford-17是一个鲜花图像数据集(如图1.14所示),其中包含1360幅图像,分为17类,每类80幅图像,大小不尽相同。本书在第6章随机选了1088幅图像作为训练集,其余272幅图像作为测试集,设计了GoogLeNet的鲜花图像分类案例。
图1.14 Oxford-17的鲜花图像举例
7)AR是一个人脸图像数据集(如图1.15所示),包含126个人在不同表情、光照和妆容条件下的4000多幅人脸图像,但只能下载100个人的2600幅。本书在第7章的CatNet性别分类案例中从中选择了40名男性和40名女性的2080幅图像作为训练集,其余的520幅图像作为测试集。
图1.15 AR的人脸图像举例
8)VOC 2007(即Pascal Voc 2007)是一个关于物体和场景的图像数据集(如图1.16所示),可以用于目标检测和语义分割任务。Pascal VOC的全名是“Pattern Analysis, Statistical Modelling and Computational Learning Visual Object Classes”,指的是模式分析、统计建模、计算学习视觉物体分类。该数据集包含训练验证集文件夹trainval和测试集文件夹test,分别包含5011幅和4952幅大小不同的图像。而且,这两个文件夹各自又都包含5个子文件夹:JPEGImages、Annotations、ImageSets、SegmentationClass和SegmentationObject。其中,JPEGImages存放的是所有图像,包含20个类别。Annotations存放的是xml格式的标签文件,每一个xml文件都对应于JPEGImages下的一幅图像。ImageSets存放的是具体的图像信息,下设3个子文件夹Layout、Main和Segmentation,分别存放人体部位数据(比如head、hand、feet等)、20类图像物体识别数据,以及可用于分割的数据。SegmentationClass和SegmentationObject用来存放分割后的图像,前者标注每个像素的类别,后者标注每个像素属于哪一个物体对象。本书在第8章的Faster R-CNN、YOLO和SSD的目标检测案例中使用了VOC 2007。
图1.16 VOC 2007的图像举例
9)SIFT Flow是一个关于不同场景的图像数据集(如图1.17所示),包含2688幅图像,其中2488幅训练图像、200幅测试图像。这些图像的像素共有33个语义类别标记(桥、山、太阳等)和3个几何类别标记(水平、竖直和天空)。本书在第9章的FCN图像分割案例中使用了SIFT Flow。
图1.17 SIFT Flow的图像举例
10)ADE20K是一个关于不同场景的图像数据集(如图1.18所示),包含20210幅训练图像和2000幅测试图像。这些图像的像素被标记为3148个不同的语义类别。本书在第9章的PSPNet图像分割案例中使用了ADE20K。
图1.18 ADE20K的场景图像举例
11)COCO 2014是微软团队制作的一个图像数据集(如图1.19所示),可以用于物体识别、目标检测、语义分割和语义描述。其中,训练集有82783幅图像,验证集和测试集分别有40504幅图像。由于官方没有给出测试集的真实标签,所以本书在第9章的Mask R-CNN图像分割案例中使用训练集来学习,使用验证集来测试。
图1.19 COCO 2014的物体图像举例
12)CelebA是一个名人人脸图像数据集(如图1.20所示),共包含10177位名人的202599幅人脸图像,其中训练集有162770幅图像,验证集有19867幅图像,测试集有18962幅图像。每幅人脸图像有40个不同的二值属性标注,比如是否微笑、是否戴眼镜、是否戴帽子等。本书在第10章的DCGAN人脸生成案例中使用了CelebA。
图1.20 CelebA的人脸图像举例
13)Gamerecords是一个围棋棋局文件数据集(如图1.21所示),包含从2001年开始一直到2017年最新更新的棋局文件。本书在第12章AlphaGo的仿效围棋程序MuGo案例中,使用了2017年4月及之前发布的部分棋局文件,约22959个。每个棋局文件大概包含200个着子位置,总共约有4591 800个着子位置,其中4491 800个着子位置被用来训练,其余的100000个着子位置用来测试。
图1.21 Gamerecords的棋局举例