《深度学习与图像识别:原理与实践》

举报
华章计算机 发表于 2019/07/24 18:47:29 2019/07/24
【摘要】 本节书摘来自华章计算机《深度学习与图像识别:原理与实践》一作者是魏溪含 涂铭 张修鹏。

智能系统与技术丛书

深度学习与图像识别:

原理与实践

 深度学习与图像识别 立.jpg

魏溪含 涂铭 张修鹏 著

 

 

 


 

 

 

 

Preface

前  言

为什么要写这本书

随着深度学习技术的发展、计算能力的提升和视觉数据的增长,视觉智能计算技术在许多应用领域如拍照搜索、智能相册、人脸闸机、城市智能交通管理、智慧医疗等都取得了令人瞩目的成绩。因此越来越多的人开始对机器视觉感兴趣,并开始从事这个行业。就图像识别领域来说,运行一个开源的代码并不是什么难事,但搞懂其中的原理确实会稍有些难度。因此本书在每章中都会用相对通俗的语言来介绍算法的背景和原理,并会在读者“似懂非懂”时给出实战案例。实战案例的代码已全部在线下运行通过,代码并不复杂,可以很好地帮助读者理解其中的细节,希望读者在学习理论之后可以亲自动手实践。图像识别的理论和实践是相辅相成的,希望本书可以带领读者走进图像识别的世界。

本书从章节规划到具体的讲述方式,具有以下两个特点:

第一个特点是本书的主要目标读者定位为高校相关专业的本科生(统计学、计算机技术)、图像识别爱好者,以及不具备专业数学知识的人群。图像识别是一系列学科的集合体,它以机器学习、模式识别等知识为基础,因此依赖很多数学知识。本书尽量绕开复杂的数学证明和推导,从问题的前因后果、创造者思考的过程和简单的数学计算的角度来做模型的分析和讲解,目的是以更通俗易懂的方式带领读者入门。另外,在第8~12章的后面都附有参考文献,想要深入了解的读者可以继续阅读。

第二个特点是本书在每章后面都附有实战案例,读者可以结合案例学习,通过实践验证自己想法的价值。在本书的内容编排上,遵循知识点背景介绍—原理剖析—实战案例的介绍方式,同时所有的代码会在书中详细列出或者上传到GitHub,以方便读者下载与调试,帮助读者快速掌握知识点,快速上手,而且这些代码也可以应用到后续实际的开发项目中。在实际项目章节中,选取目前在图像识别领域中比较热门的项目,对之前的知识点进行汇总,帮助读者巩固与提升。

读者对象

  • 统计学或相关IT专业学生

本书的初衷是面向相关专业的学生—拥有大量基于理论知识的认知却缺乏实战经验的人员,让其在理论的基础上深入了解。通过本书,学生可以跟随本书的教程一起操作学习,达到对自己使用的人工智能工具、算法和技术知其然亦知其所以然的目的。

  • 信息科学和计算机科学爱好者

本书是一本近现代科技的历史书,也是一本科普书,还是一本人工智能思想和技术的教科书。通过本书可以了解人工智能领域的前辈们在探索的道路上做出的努力和思考,理解他们不同的观点和思路,有助于开拓自己的思维和视野。

  • 人工智能相关专业的研究人员

本书详细介绍了图像识别的相关知识。通过本书可以了解其理论知识,了解哪些才是项目所需的内容以及如何在项目中实现,能够快速上手。

如何阅读本书

本书从以下几个方面阐述图像识别:

第1章介绍图像识别的一些应用场景,让读者对图像识别有个初步的认识。

第2章主要对图像识别的工程背景做简单介绍,同时介绍了本书后续章节实战案例中会用到的环境,因此该章是实战的基础。

第3~6章是图像识别的技术基础,包括机器学习、神经网络等。该部分的代码主要使用Python实现。没有机器学习基础的同学需要理解这几章之后再往下看,有机器学习基础的同学可以有选择地学习。

第7章是一个过渡章节,虽然第6章中手动用Python实现了神经网络,但由于本书后面的图像识别部分主要使用PyTorch实现,因此使用该章作为过渡,介绍如何使用PyTorch来搭建神经网络。

第8~12章为图像识别的核心。第8章首先介绍了图像中的卷积神经网络与普通神经网络的异同,并给出了常见的卷积神经网络结构。接下来的第9~12章分别介绍了图像识别中的检测、分割、产生式模型以及可视化的问题,并在每章后面给出相应的实战案例。

第13章简单介绍了图像识别的工业部署模式,以帮助读者构建一个更完整的知识体系。

第8~12章包含参考文献,主要是本书中介绍的一些方法,或者本书中提到但是没有深入说明的方法,感兴趣的读者可以自行查询学习。

关于附件的使用方法:除了第1章外,本书的每一章都有对应的源数据和完整代码,这些内容可在本书中直接找到,有些代码需要从GitHub中下载,地址为https://github.com/image_recognition/learning-recognition。需要注意的是,为了让读者更好地了解每行代码的含义,在注释信息中使用了中文标注,每个程序文件的编码格式都是UTF-8。

勘误和支持

由于本书的作者水平及撰稿时间有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可通过发送电子邮件到weixihan1@163.com和kenny_tm@hotmail.com联系并反馈建议或意见。

致谢

首先非常感谢我的家人,由于业余时间常常被工作挤占,本书的撰写又用了所剩不多的业余时间,因此少了很多陪伴家人的时间,感谢他们的理解、支持和鼓励。

撰写一本书,将自己的知识重新梳理后分享给读者,在技术发展的道路上帮助到其他人,这件事情是非常有价值的,因此也非常感谢两位合著者涂铭、张修鹏。

感谢机械工业出版社华章公司的杨福川老师,以及全程参与审核、校验等工作的张锡鹏、孙海亮老师等出版工作者,是他们的辛勤付出才能保证本书顺利面世。

感谢我身边的朋友、同事、同学,感谢一路走来你们的支持、鼓励和帮助。

谨以此书献给热爱算法并为之奋斗的朋友们,愿大家身体健康、生活美满、事业有成!

 

魏溪含

 

书籍初成,感慨良多。

在接受邀请撰写该书时,从未想到过程如此艰辛与波折。这里需要感谢一路陪我走来的所有人。

感谢我的家人的理解和支持,陪伴我度过写作本书的漫长岁月。

感谢我的合写者—魏溪含和张修鹏,与他们合作轻松愉快,他们给予我很多的理解和包容。

感谢参与审阅、校验等工作的杨福川老师以及其他老师,是他们在幕后的辛勤付出保证了本书的成功出版。

另外在本书的写作期间,有很多专业领域的内容都得到了各个领域专家的指导甚至亲笔编著。这里需要特别感谢阿里云计算公司产品方面的专家李骏,编写了第13章全部内容,感谢他在产品和技术上利用其丰富的行业经验为本书留下的宝贵财富。

再次感谢大家!

 

涂 铭




首先要感谢我的妻子金晖,我能在工作繁忙的情况下参与此书的编写,离不开她的付出和支持,感谢我的宝贝张正延,给了我无穷的动力,感谢我的父亲、母亲,永远深爱你们。

感谢魏溪含和涂铭!魏溪含在书中贡献了她图像识别领域多年的经验,涂铭为此书的出版付出了最多的心血。

这本书是友谊和工作成果的结晶,本书作为我们并肩奋斗的见证,希望能将我们实践经验沉淀成的知识,帮助到更多希望了解和学习深度学习与图像识别的读者。

感谢杨福川等机械工业出版社的老师们,他们在幕后的付出和支持,是本书得以出版的保障。

最后感谢这些年一路走来帮助过我的亲人、老师、朋友、同事、同学,始终满怀感恩!

 

张修鹏

 

 

 

 

CONTENTS

目  录

前言

第1章 机器视觉在行业中的应用1

1.1 机器视觉的发展背景1

1.1.1 人工智能1

1.1.2 机器视觉2

1.2 机器视觉的主要应用场景3

1.2.1 人脸识别3

1.2.2 视频监控分析4

1.2.3 工业瑕疵检测5

1.2.4 图片识别分析6

1.2.5 自动驾驶/驾驶辅助7

1.2.6 三维图像视觉8

1.2.7 医疗影像诊断8

1.2.8 文字识别9

1.2.9 图像/视频的生成及设计9

1.3 本章小结10

第2章 图像识别前置技术11

2.1 深度学习框架11

2.1.1 Theano11

2.1.2 Tensorflow12

2.1.3 MXNet13

2.1.4 Keras13

2.1.5 PyTorch14

2.1.6 Caffe14

2.2 搭建图像识别开发环境15

2.2.1 Anaconda15

2.2.2 conda18

2.2.3 Pytorch的下载与安装19

2.3 Numpy使用详解20

2.3.1 创建数组20

2.3.2 创建Numpy数组22

2.3.3 获取Numpy属性24

2.3.4 Numpy数组索引25

2.3.5 切片25

2.3.6 Numpy中的矩阵运算26

2.3.7 数据类型转换27

2.3.8 Numpy的统计计算方法28

2.3.9 Numpy中的arg运算29

2.3.10 FancyIndexing29

2.3.11 Numpy数组比较30

2.4 本章小结31

第3章 图像分类之KNN算法32

3.1 KNN的理论基础与实现32

3.1.1 理论知识32

3.1.2 KNN的算法实现33

3.2 图像分类识别预备知识35

3.2.1 图像分类35

3.2.2 图像预处理36

3.3 KNN实战36

3.3.1 KNN实现MNIST数据分类36

3.3.2 KNN实现Cifar10数据分类41

3.4 模型参数调优44

3.5 本章小结48

第4章 机器学习基础49

4.1 线性回归模型49

4.1.1 一元线性回归50

4.1.2 多元线性回归56

4.2 逻辑回归模型57

4.2.1 Sigmoid函数58

4.2.2 梯度下降法59

4.2.3 学习率的分析61

4.2.4 逻辑回归的损失函数63

4.2.5 Python实现逻辑回归66

4.3 本章小结68

第5章 神经网络基础69

5.1 神经网络69

5.1.1 神经元70

5.1.2 激活函数72

5.1.3 前向传播76

5.2 输出层80

5.2.1 Softmax80

5.2.2 one-hotencoding82

5.2.3 输出层的神经元个数83

5.2.4 MNIST数据集的前向传播83

5.3 批处理85

5.4 广播原则87

5.5 损失函数88

5.5.1 均方误差88

5.5.2 交叉熵误差89

5.5.3 Mini-batch90

5.6 最优化91

5.6.1 随机初始化91

5.6.2 跟随梯度(数值微分)92

5.7 基于数值微分的反向传播98

5.8 基于测试集的评价101

5.9 本章小结104

第6章 误差反向传播105

6.1 激活函数层的实现105

6.1.1 ReLU反向传播实现106

6.1.2 Sigmoid反向传播实现106

6.2 Affine层的实现107

6.3 Softmaxwithloss层的实现108

6.4 基于数值微分和误差反向传播的比较109

6.5 通过反向传播实现MNIST识别111

6.6 正则化惩罚114

6.7 本章小结115

第7章 PyTorch实现神经网络图像分类116

7.1 PyTorch的使用116

7.1.1 Tensor116

7.1.2 Variable117

7.1.3 激活函数118

7.1.4 损失函数120

7.2 PyTorch实战122

7.2.1 PyTorch实战之MNIST分类122

7.2.2 PyTorch实战之Cifar10分类125

7.3 本章小结128

第8章 卷积神经网络129

8.1 卷积神经网络基础129

8.1.1 全连接层129

8.1.2 卷积层130

8.1.3 池化层134

8.1.4 批规范化层135

8.2 常见卷积神经网络结构135

8.2.1 AlexNet136

8.2.2 VGGNet138

8.2.3 GoogLeNet140

8.2.4 ResNet142

8.2.5 其他网络结构144

8.3 VGG16实现Cifar10分类145

8.3.1 训练146

8.3.2 预测及评估149

8.4 本章小结152

8.5 参考文献152

第9章 目标检测153

9.1 定位+分类153

9.2 目标检测155

9.2.1 R-CNN156

9.2.2 Fast R-CNN160

9.2.3 Faster R-CNN162

9.2.4 YOLO165

9.2.5 SSD166

9.3 SSD实现VOC目标检测167

9.3.1 PASCAL VOC数据集167

9.3.2 数据准备170

9.3.3 构建模型175

9.3.4 定义Loss178

9.3.5 SSD训练细节181

9.3.6 训练186

9.3.7 测试189

9.4 本章小结190

9.5 参考文献191

第10章 分割192

10.1 语义分割193

10.1.1 FCN193

10.1.2 UNet实现裂纹分割196

10.1.3 SegNet209

10.1.4 PSPNet210

10.2 实例分割211

10.2.1 层叠式212

10.2.2 扁平式212

10.3 本章小结213

10.4 参考文献214

第11章 产生式模型215

11.1 自编码器215

11.2 对抗生成网络215

11.3 DCGAN及实战217

11.3.1 数据集218

11.3.2 网络设置220

11.3.3 构建产生网络221

11.3.4 构建判别网络223

11.3.5 定义损失函数224

11.3.6 训练过程224

11.3.7 测试227

11.4 其他GAN230

11.5 本章小结235

11.6 参考文献235

第12章 神经网络可视化236

12.1 卷积核236

12.2 特征层237

12.2.1 直接观测237

12.2.2 通过重构观测239

12.2.3 末端特征激活情况243

12.2.4 特征层的作用244

12.3 图片风格化245

12.3.1 理论介绍245

12.3.2 代码实现247

12.4 本章小结255

12.5 参考文献255

第13章 图像识别算法的部署模式257

13.1 图像算法部署模式介绍257

13.2 实际应用场景和部署模式的匹配262

13.3 案例介绍264

13.4 本章小结265


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200