深度学习之图像识别 核心技术与案例实战
深度学习之图像识别
核心技术与案例实战
言有三 著
前言
机器学习、深度学习、人工智能,这些关键词在最近几年“声名鹊起”。以深度学习为代表的无监督机器学习技术在图像处理、语音识别和自然语言处理等领域里频频取得新的突破。但深度学习其实并不是一门全新的学科,其历史可以追溯到20世纪40年代。
深度学习背后的核心技术包括神经网络的结构设计和最优化方法等,其理论体系虽然有一定进展但是尚不完备。可以说,当前的主流深度学习技术是一门应用性极强的工程技术,这种尚不完备的理论加上具有较高门槛的应用工程特点,对于初学者来说具有一定的困难。如何系统性地了解理论知识,又能够紧随理论进行全面的实践,成为一名合格的图像处理领域的深度学习算法工程师,这是本书所要解决的问题。
笔者有超过6年的图像行业背景,最近几年也多以深度学习技术为基础进行相关项目的开发,在多年的知识积累和项目实践中,总结出了大量的经验,浓缩成了这本书。本书从深度学习的背景和基础理论开始讲起,然后介绍了深度学习中的数据及图像处理中的几大重要方向,并介绍了神经网络的可视化、优化目标、模型的优化和模型的线上部署。
本书内容由浅入深,讲解图文并茂,紧随工业界和学术界的最新发展,理论和实践紧密结合,给出了大量的图表与案例分析。本书抛开了过多的数学理论,完整地剖析了深度学习在图像处理领域中各个维度的重要技术,而不是只停留于理论的阐述和简单的结果展示,更是从夯实理论到完成实战一气呵成。相信读者跟随着本书进行学习,将会对深度学习领域的图像处理技术和其在实际开发中的应用有更深的理解。
本书特色
1.内容全面,紧跟最新技术发展
本书内容涵盖了深度学习的理论知识、数据获取与增强,以及深度学习在图像分类、分割和检测这三大基础研究领域中的发展、数据与模型的可视化、优化目标、模型压缩与部署等相关知识,基本上囊括了深度学习在图像开发中所必须要掌握的大部分基础知识。
2.深度与广度兼具
本书在讲解每个知识点时力求详尽,而且紧密结合了学术界与工业界相关技术的最新发展。这样的安排既注重知识的广度,也兼具知识的深度,可以为图像处理领域中的从业者提供系统性的学习指导。
3.理论与实践案例紧密结合
本书不仅对理论知识进行了阐述,而且还给出了大量的实践内容,以帮助读者提高实际的动手能力。除了第1、2章主要介绍了深度学习的基础理论外,后续章节则大多采用了先系统介绍该章涉及知识的发展现状,然后有针对性地设计了一到两个实践案例带领读者学习,有较好的学习效果。
4.参考了不同层次学习者的意见
本书若干内容的简化版本已在笔者运营的公众号平台上接受了不同层次读者的反馈,力求知识的完备性和准确性;另外,本书有多位编写者参与,他们或理论见长,或善于动手,让本书从不同层面得到了广泛的意见,可以满足不同人群的学习需求。
本书内容
第1章神经网络基础,首先介绍了神经网络的生物基础与数学模型,然后介绍了卷积神经网络的基础知识,这也是当前深度学习模型的基础。
第2章深度学习优化基础,首先介绍了深度学习主流开源框架,如Caffe、TensorFlow、Pytorch和Theano等,并对其特点与性能做了对比;然后介绍了网络优化参数,包括激活函数、正则化方法和归一化方法等。本章旨在让大家对深度卷积神经网络有一个较为全面的认识,给后续章节的学习打好基础。
第3章深度学习中的数据,首先介绍了深度学习发展过程中的几个数据集,给读者展示了数据集对深度学习的重要性;然后介绍了几大重要发展方向中的数据集;接着讲述了数据增强的方法;最后讲述了数据的收集、整理及标注等相关问题。
第4章图像分类,首先介绍了图像分类的基础、基于深度学习的图像分类研究方法及发展现状,以及图像分类任务中的挑战;然后以一个移动端的基准模型为例,展示了图像分类任务的实践流程;最后介绍了一个细粒度级别的图像分类任务,以一个较高的基准模型,展示了较难的图像分类任务训练参数的调试技巧。
第5章图像分割,首先介绍了从阈值法到活动轮廓模型的传统图像分割方法;然后介绍了基于深度学习的图像分割方法的基本原理与核心技术;接着讲述了一个移动端的实时图像分割任务,该任务以MobileNet为基准模型,展示了图像硬分割任务实践的完整流程;最后介绍了一个更加复杂的肖像换背景的任务,展示了图像软分割任务的基本流程和应用场景。
第6章目标检测,首先介绍了目标检测的基础和基本流程,并讲述了一个经典的V-J目标检测框架;然后介绍了基于深度学习的目标检测任务的研究方法与发展现状,并分析了目标检测中的核心技术;最后给出了一个目标检测任务实例,通过分析faster rcnn的源代码,使用该框架自带的VGG CNN 1024网络完成训练和测试,并总结目标检测中的难点。
第7章数据与模型可视化,首先对包括低维与高维数据的可视化做了简单介绍;然后对深度学习中的模型可视化做了详细介绍,包括模型的结构和权重可视化;最后介绍了一个基于Tensorflow和Tensorboard的完整案例。
第8章模型压缩,首先详细介绍了模型压缩的方法,然后以一个典型的模型压缩实战案例来阐述项目中的模型压缩上线。
第9章损失函数,首先介绍了分类任务的损失函数;然后介绍了回归任务的损失函数;最后介绍了这些损失函数在几大经典图像任务中的使用。
第10章模型部署与上线,依托微信小程序平台从3个方面介绍了模型部署的问题。首先介绍了微信小程序的前端开发,然后介绍了微信小程序的服务端开发,最后介绍了Caffe的环境配置。
本书配套资源获取方式
本书涉及的源代码文件及其他资料需要读者自行下载。请登录华章公司网站www.hzbook.com,在该网站上搜索到本书,然后单击“资料下载”按钮即可在页面上找到“配书资源”下载链接。
本书读者对象
* 图像处理技术人员;
* 深度学习技术人员;
* 深度学习技术爱好者;
* 深度学习技术研究人员;
* 相关院校的学生和老师;
* 相关培训机构的学生和老师。
本书作者
本书作者龙鹏,笔名言有三,运营微信公众号《有三AI》。本书的第1章和第2章的深度学习理论知识,由华中科技大学的在读博士生徐冰瑢主笔,展示出了作者扎实的深度学习理论知识功底和细致的写作水平;鲍琦琦、陶玉龙及杨皓博参与了第3、6、10章部分内容的写作与校对工作;另外,在本书成书前,从中国科学技术大学毕业3年的硕士研究生胡郡郡参与了全书的阅读和反馈。再次对他们表示感谢!
由于作者水平所限,加之写作时间较为仓促,书中可能还存在一些疏漏和不足之处,敬请各位读者批评指正。联系我们请发电子邮件到hzbook2017@163.com。
目录
前言
第1章 神经网络基础 1
1.1 神经网络的生物基础与数学模型 1
1.1.1 神经元 1
1.1.2 感知机 2
1.1.3 BP算法 6
1.2 卷积神经网络基础 10
1.2.1 卷积神经网络的基本结构 11
1.2.2 卷积与权值共享 13
1.2.3 感受野与池化 14
第2章 深度学习优化基础 17
2.1 深度学习主流开源框架 17
2.1.1 Caffe简介 18
2.1.2 TensorFlow简介 18
2.1.3 PyTorch简介 19
2.1.4 Theano简介 20
2.1.5 Keras简介 20
2.1.6 MXNet简介 21
2.1.7 Chainer简介 21
2.2 网络优化参数 22
2.2.1 常用激活函数 22
2.2.2 参数初始化方法 26
2.2.3 最优化方法 27
2.2.4 归一化方法 31
2.2.5 正则化方法 33
第3章 深度学习中的数据 36
3.1 深度学习通用数据集的发展 36
3.1.1 MNIST数据集 36
3.1.2 CIFAR10和CIFAR100数据集 37
3.1.3 PASCAL数据集 38
3.1.4 ImageNet数据集 38
3.1.5 Microsoft COCO数据集 39
3.2 常见的计算机视觉任务数据集 40
3.2.1 人脸数据集 40
3.2.2 自动驾驶数据集 52
3.2.3 医学数据集 55
3.3 数据增强 59
3.3.1 有监督数据增强 60
3.3.2 无监督数据增强 63
3.4 数据的收集与标注 65
3.4.1 数据收集 65
3.4.2 数据标注 67
3.4.3 数据清洗与整理 68
第4章 图像分类 70
4.1 图像分类基础 70
4.1.1 图像分类问题 70
4.1.2 深度学习图像分类发展简史 72
4.1.3 评测指标与优化目标 75
4.1.4 图像分类的挑战 76
4.2 移动端实时表情分类实战 77
4.2.1 项目背景 78
4.2.2 数据预处理 80
4.2.3 项目方案 82
4.2.4 模型训练与测试 84
4.2.5 项目总结 88
4.3 细粒度图像分类实战 89
4.3.1 项目背景 89
4.3.2 项目方案 90
4.3.3 模型训练与测试 92
4.3.4 参数调试 97
4.3.5 项目总结 102
第5章 图像分割 103
5.1 传统图像分割方法 103
5.1.1 阈值法 103
5.1.2 区域生长法与超像素 105
5.1.3 图切割 105
5.1.4 活动轮廓模型 106
5.2 深度学习图像分割 109
5.2.1 基本流程 110
5.2.2 反卷积 110
5.2.3 多尺度与感受野 112
5.2.4 CRF方法 113
5.2.5 Image Matting与图像融合 114
5.3 移动端实时图像分割项目 115
5.3.1 项目背景 115
5.3.2 项目方案 116
5.3.3 模型训练与总结 126
5.4 一个实时肖像换背景项目 127
5.4.1 项目背景 127
5.4.2 项目方案 128
5.4.3 模型训练与测试 134
5.4.4 项目总结 138
第6章 目标检测 139
6.1 目标检测基础 139
6.1.1 检测窗口选择 140
6.1.2 特征提取 141
6.1.3 分类器 142
6.1.4 V-J人脸检测算法 143
6.2 深度学习目标检测方法 145
6.2.1 Selective search与R-CNN 146
6.2.2 RoI Pooling与SPPNet 147
6.2.3 Fast R-CNN与Faster R-CNN 149
6.2.4 YOLO方法 152
6.2.5 SSD方法 154
6.2.6 目标检测中的关键技术 155
6.3 实战Faster-R-CNN目标检测 157
6.3.1 项目背景 157
6.3.2 py-faster-rcnn框架解读 157
6.3.3 模型定义与分析 170
6.3.4 模型训练与测试 180
6.3.5 项目总结 183
第7章 数据与模型可视化 185
7.1 数据可视化 185
7.1.1 低维数据可视化 185
7.1.2 高维数据可视化 187
7.2 模型可视化 190
7.2.1 模型结构可视化 190
7.2.2 模型权重可视化 198
7.2.3 特征图可视化 201
7.3 可视化案例 202
7.3.1 项目背景 202
7.3.2 数据接口定义 204
7.3.3 网络结构定义 205
7.3.4 可视化代码添加 207
7.3.5 可视化训练指标 207
第8章 模型压缩 209
8.1 模型压缩方法 209
8.1.1 模型设计压缩 210
8.1.2 网络剪枝与量化 213
8.1.3 张量分解 216
8.1.4 模型蒸馏与迁移学习 216
8.2 模型压缩实战 218
8.2.1 网络分析 220
8.2.2 输入尺度和第一层卷积设计 224
8.2.3 网络宽度与深度压缩 226
8.2.4 弥补通道损失 228
8.2.5 总结 230
第9章 损失函数 231
9.1 分类任务损失 231
9.1.1 什么是0-1 loss 231
9.1.2 熵与交叉熵loss 231
9.1.3 softmax loss及其变种 232
9.1.4 KL散度 237
9.1.5 Hinge loss简介 237
9.1.6 Exponential loss与Logistic loss 237
9.1.7 多标签分类任务loss 238
9.2 回归任务损失 238
9.2.1 L1 loss与L2 loss 238
9.2.2 L1 loss与L2 loss的改进 239
9.3 常见图像任务与loss使用 240
9.3.1 图像基础任务 240
9.3.2 风格化与图像复原,超分辨重建 240
9.3.3 生成对抗网络 241
9.3.4 总结 245
第10章 模型部署与上线 246
10.1 微信小程序前端开发 246
10.1.1 小程序的技术特点与定位 246
10.1.2 Web前端基础 248
10.1.3 小程序开发工具 251
10.1.4 小程序前端目录 252
10.1.5 小程序前端开发 254
10.2 微信小程序服务端开发 260
10.2.1 域名注册与管理 260
10.2.2 服务端框架简介 261
10.2.3 算法搭建与实现 262
10.3 Caffe环境配置 264
10.3.1 依赖库安装 264
10.3.2 Caffe编译安装 266
- 点赞
- 收藏
- 关注作者
评论(0)