本书的内容
本书共分为22章,所有代码均采用Python语言编写,这也是TensorFlow框架推荐使用语言。
第1章介绍深度学习的基本内容,初步介绍深度学习应用于计算机视觉和发展方向,介绍使用深度学习解决计算机视觉问题的应用前景,旨在说明使用深度学习和人工智能实现计算机视觉是未来的发展方向,也是必然趋势。
第2章介绍Python的安装和最常用的类库。Python语言是易用性非常强的语言,可以很方便地将公式和愿景以代码的形式表达出来,而无须学习过多的编程知识。Python专用类库threading并不常见,只是要为后文的数据读取和TensorFlow专用格式的生成打下基础。
第3章全面介绍机器学习的基本分类、算法和理论基础,这里介绍了不同的算法,例如回归算法和决策树算法的具体实现和应用。这些是深度学习的基础理论部分,通过这些向读者透彻而准确地展示深度学习的结构与应用,为更进一步掌握深度学习在计算机视觉中的应用打下扎实的基础。
第4章主要介绍Python语言的使用。通过介绍和实现不同的Python类库,帮助读者强化Python的编程能力、学习相应类库。这些都是在后文中反复使用的内容。同时借用掌握的知识学习数据的可视化展示技能。这项技能在数据分析中虽是基本技能,但具有非常重要的作用。
第5~6章是对OpenCV类库使用方法的介绍。本书以图像处理为重点,对图像数据的读取、编辑以及加工是本书的重中之重。OpenCV是Python中专门用以对图像处理的类库,通过基础讲解和进阶介绍使读者掌握这个重要类库的使用。学会对图像的裁剪、变换和平移的代码编写。第5章以例子的形式对卷积核的基础内容做了一个介绍,并用Python语言实现了卷积核的功能。卷积核是本书中非常重要的基础部分,也是图像处理中非常重要的组成部分,通过编写相应的程序去实现卷积核对图像的处理、掌握和理解卷积神经网络有很大帮助。
第7~8章是TensorFlow的入门基础,通过一个娱乐性质的网站向读者展示TensorFlow的基本应用,用图形图像的方式演示神经网络进行类别分类的拟合过程,在娱乐的同时了解其背后的内容。
第9章是本书的一个重点,也是神经网络的基础内容。本章的反馈算法是解决神经网络计算量过大的里程碑算法。笔者通过详细认真的讲解,使用通俗易懂的语言对这个算法进行介绍,并通过独立编写代码的形式为读者实现这个神经网络中最重要的算法内容。本章的内容看起来不多,但是非常重要。
第10章对TensorFlow的数据输入输出做了详细的介绍。从读取CSV文件开始,到教会读者制作专用的TensorFlow数据格式TFRecord,这在目前市面上的书籍中鲜有涉及。使用TensorFlow框架进行程序编写、数据的准备和规范化是重中之重,因此本章也是较为重要的一个章节。
第11~12章是应用卷积神经网络在TensorFlow框架上进行学习的一个基础教程,经过前面章节的准备和介绍,采用基本理论——卷积神经网络进行手写体的辨识是深度学习最基本的技能,也是非常重要的一个学习基础。并且在程序编写的过程中,作者向读者展示了参数调整对模型测试结果的重要作用。这是目前市面上相关书籍没有涉及到的内容,非常重要。
第13~14章是卷积神经网络算法的介绍和应用。在这两章内容中,笔者详细介绍卷积神经网络的应用,特别是在图像识别中的应用,由单纯的手写体数值的识别发展到对显示物体的识别。借助于图像识别比赛的数据集,使用在比赛中得奖的卷积神经网络模型,使读者掌握卷积神经网络的变种。卷积神经网络的理论基础就是卷积的正向和反向过程,一般正向过程较好理解和学习,但是对于反向运算,基本上没有涉及,有的话也仅仅是对公式的复制和摘抄。本书在14章中详细地介绍卷积神经网络反向过程的运算和计算方法,通过大量例子的表述,第一次非常详细地描述了卷积神经网络的反向运算。这是相关书籍中欠缺的内容。
第15章通过一个完整的例子演示使用卷积神经网络进行图像识别的流程。例子来自于ImageNet图像识别竞赛,所采用的模型也是比赛中获得准确率最高的模型。通过对项目每一步的详细分析,手把手地教会读者如何使用卷积神经网络进行图像识别。
第16章介绍VGGNet的组成结构,着重介绍VGGNet的网络调参以及在其后执行Finetuning的能力。本章将第15章的例子复用VGG16实现,给读者提供一个以不同的视角和不同的模型方法解决问题的思路。
第17章针对目前深度学习就业者给出的一些面试题的答案,这些问题可以帮助招聘者分析谁是高水平的面试者,也能帮助就业者完善自己的技术概念和知识,找准自己的定位,为将来升职加薪铺平道路。
第18章介绍深度学习网络ResNet模型,它是在网络中使用大量残差模块作为网络的基本组成部分,主要作用是使得网络随着深度的变化增加,而不会产生权重衰减和梯度衰减或者消失等这些问题。除了ResNet模型,本章还介绍了新兴的卷积神经模型,包括SqueezeNet和Xception。
第19~20章开始进入TensorFlow学习的高级阶段,重点介绍的是一个API——Slim,它是一个用于定义、训练和评估较为复杂模型的轻量级开发类库。这两章不光介绍了它的使用方法,还通过它制作了一个多层感知机MLP、一个卷积神经网络CNN,最后还使用Slim预训练模型进行Finetuning。
第21章介绍全卷积神经网络图像分割,先讲解分割的理论基础和实现方法,然后给出了全卷积神经网络进行图像分割的分步流程与编程基础,最后给出了使用VGG16全卷积网络进行图像分割的实战。
第22章讲解的是GAN——对抗生成网络,本章理论虽然看似枯燥,但笔者用一个“生成器”和一个“辨别器”共同在一个网络中不停地进行“对抗”来比喻,降低了阅读的难度。最终还通过使用GAN生成手写体数字的案例让读者真正学会GAN的应用。
除此之外,全书对于目前图像识别最流行和取得最好成绩的深度学习模型做了介绍,这些都是目前的深度学习的热点和研究重点。