本书是一本讲述深度学习在计算机视觉领域的书籍,为机器学习和深度学习相关领域中需要学习图像识别和处理技术的读者量身定做。本书非常详尽地讲述了深度学习的各个知识点,包括深度学习卷积神经网络的理论知识、深度学习中的数据,以及图像分类、图像分割和目标检测等三大图像基础应用;另外还介绍了深度学习的数据可视化和模型可视化、深度学习中的常用损失函数、模型压缩以及深度学习模型部署的前后端基础知识。
本书从第4章开始,每章都配置有一到两个难易程度不同的案例,让读者在实践中更好地掌握相关领域的技术细节。读者在读完每章的理论知识后,就可以紧接着进行实践,并在已有代码的基础上进行修改和改进,从而理论与实践结合进行系统性的学习。
前言
第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-CNN146
6.2.2 RoI Pooling与SPPNet147
6.2.3 Fast R-CNN与Faster R-CNN149
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 loss231
9.1.2 熵与交叉熵loss231
9.1.3 softmax loss及其变种232
9.1.4 KL散度237
9.1.5 Hinge loss简介237
9.1.6 Exponential loss与Logistic loss237
9.1.7 多标签分类任务loss238
9.2 回归任务损失238
9.2.1 L1 loss与L2 loss238
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