《深度学习之PyTorch物体检测实战》从概念、发展、经典实现方法等几个方面系统地介绍了物体检测的相关知识,重点介绍了Faster RCNN、SDD和YOLO这三个经典的检测器,并利用PyTorch框架从代码角度进行了细致讲解。另外,《深度学习之PyTorch物体检测实战》进一步介绍了物体检测的轻量化网络、细节处理、难点问题及未来的发展趋势,从实战角度给出了多种优秀的解决方法,便于读者更深入地掌握物体检测技术,从而做到在实际项目中灵活应用。
《深度学习之PyTorch物体检测实战》共10章,涵盖的主要内容有物体检测与PyTorch框架基础概念与背景知识;PyTorch基础知识;基础卷积网络Backbone;两阶经典检测器Faster RCNN;单阶多层检测器SSD;单阶经典检测器YOLO;模型加速之轻量化网络;物体检测细节处理;物体检测难点问题;物体检测的未来发展。
《深度学习之PyTorch物体检测实战》内容丰富,讲解通俗易懂,案例典型,实用性强,特别适合PyTorch框架爱好者和物体检测相关从业人员阅读,也适合深度学习和计算机视觉领域的研究人员阅读。另外,《深度学习之PyTorch物体检测实战》还适合作为深度学习培训机构的教材使用。
随着深度学习的飞速发展,计算机视觉技术取得了令人瞩目的成果,尤其是物体检测这一基础又核心的分支,诞生了众多经典算法,在自动驾驶、智能医疗、智能安防及搜索娱乐等多个领域都得到了广泛应用。与此同时,诞生于2017年的PyTorch框架,凭借其简洁优雅、灵活易上手等优点,给开发人员留下了深刻的印象。
目前,国内图书市场上已经出版了几本PyTorch方面的图书,但大多数图书停留在浅层的概念与简单示例的讲解上,缺乏实用性,而且也没有一本系统讲解PyTorch物体检测方面的图书。因此,图书市场上迫切需要一本系统介绍PyTorch物体检测技术的书籍。这便是笔者写作《深度学习之PyTorch物体检测实战》的初衷。
《深度学习之PyTorch物体检测实战》是国内原创图书市场上首部系统介绍物体检测技术的图书。书中利用PyTorch深度学习框架,从代码层面讲解了Faster RCNN、SSD及YOLO这三大经典框架的相关知识,并进一步介绍了物体检测的细节与难点问题,让读者可以全面、深入、透彻地理解物体检测的种种细节,并能真正提升实战能力,从而将这些技术灵活地应用到实际开发中,享受深度学习带来的快乐。
《深度学习之PyTorch物体检测实战》特色
1.系统介绍了PyTorch物体检测技术
《深度学习之PyTorch物体检测实战》深入物体检测这一基础又核心的技术,从其诞生背景、主流算法、难点问题、发展趋势等多个角度详细介绍了物体检测知识,并结合代码给出了多个算法的实现。
- 从代码角度详细介绍了物体检测的三大算法
《深度学习之PyTorch物体检测实战》介绍了Faster RCNN、SSD及YOLO这三个影响深远的检测算法,从代码层面详细介绍了它们所实现的每一个细节与难点,并进行了优缺点分析,而且给出了多种优化算法。
- 涵盖所有主流的物体检测算法
《深度学习之PyTorch物体检测实战》几乎涵盖所有主流的物体检测算法,包括VGGNet、ResNet、FPN、DenseNet和DetNet等卷积基础网络,以及从Faster RCNN、HyperNet、Mask RCNN、SSD、RefineDet、YOLO v1到YOLO v3、RetinaNet、CornerNet和CenterNet等物体检测算法,呈现给读者一个完整的知识体系。
- 给出了多个实际的物体检测实例,有很强的实用性
《深度学习之PyTorch物体检测实战》对PyTorch的知识体系进行了较为精炼的介绍,还结合物体检测算法重点介绍了PyTorch实现的多个物体检测实例。因此《深度学习之PyTorch物体检测实战》不仅是一本很好的PyTorch框架学习书籍,更是一本PyTorch物体检测实战宝典。
- 对物体检测技术常见的细节、难点及发展做了详细分析
《深度学习之PyTorch物体检测实战》不仅对物体检测技术的热门话题做了详细分析,例如非极大值抑制、样本不均衡、模型过拟合、多尺度检测、物体拥挤与遮挡等,而且对各种细节与常见问题做了详细分析,并给出了多种解决方法。
《深度学习之PyTorch物体检测实战》内容
第1篇 物体检测基础知识
本篇涵盖第1~3章,介绍了物体检测技术与PyTorch框架的背景知识与必备的基础知识。主要内容包括物体检测技术的背景与发展;物体检测的多种有效工具;PyTorch背景知识与基础知识;多种基础卷积神经网络的相关知识与具体实现等。掌握本篇内容,可以为读者进一步学习物体检测技术奠定基础。
第2篇 物体检测经典框架
本篇涵盖第4~6章,介绍了Faster RCNN、SSD与YOLO三大经典算法的思想与实现。主要内容包括Faster RCNN两阶算法的思想;锚框Anchor的意义与实现;Faster RCNN的多种改进算法;SSD单阶算法的思想与实现;SSD的数据增强方法及多种改进算法;YOLO单阶算法的三个版本演变过程及具体实现等。掌握本篇内容,可以让读者从代码角度学习物体检测的种种细节。
第3篇 物体检测的难点与发展
本篇涵盖第7~10章,介绍了物体检测技术的细节、难点及未来发展。主要内容包括针对模型加速的多种轻量化网络思想与实现;非极大值抑制;样本不均衡及模型过拟合等物体检测细节问题的背景知识与解决方法;多尺度、拥挤与遮挡等物体检测难点问题的背景知识与解决方法;多种摆脱锚框的检测算法;物体检测的未来发展趋势等。掌握本篇内容,可以让读者更加深入地学习物体检测的相关技术。
《深度学习之PyTorch物体检测实战》读者对象
? 需要全面学习物体检测技术的人员;
? PyTorch框架爱好者和研究者;
? 计算机视觉从业人员与研究者;
? 深度学习从业人员与爱好者;
? 自动驾驶、智能安防等领域的开发人员;
? 人工智能相关产业的从业人员;
? 计算机、机器人等专业的高校学生。
阅读建议
? 没有物体检测与PyTorch基础的读者,建议从第1章顺次阅读并演练每一个实例。
? 有一定PyTorch与物体检测基础的读者,可以根据实际情况有重点地选择阅读各个算法的细节。
? 对于每一个检测算法,建议读者先阅读一下原论文,多思考算法设计的动机与目的,并重点思考如何用代码实现,这会加深读者对检测算法的理解。原论文的下载地址和《深度学习之PyTorch物体检测实战》源代码文件一起提供。
? 多思考各种物体检测算法的优缺点、相互之间的联系与区别,以及可以优化和改进的细节等,形成完整的知识体系树,这样会进一步加深读者对知识的理解。
配书资源获取方式
《深度学习之PyTorch物体检测实战》涉及的全部源代码都放在了GitHub上,需要读者自行下载。下载地址见图书。
有些章节的代码较多,但在书中仅给出了重要的片段代码,完整代码以GitHub上的代码为准。
另外,读者也可以登录华章公司的网站www.hzbook.com,搜索到《深度学习之PyTorch物体检测实战》,然后单击资料下载按钮,即可在本书页面上找到相关的下载链接。
致谢
《深度学习之PyTorch物体检测实战》的编写得到了许多人的帮助。可以说,《深度学习之PyTorch物体检测实战》是多人共同努力的结晶。感谢北京源智天下科技有限公司的王蕾,她在稿件整理方面帮我做了大量的工作!感谢王田苗教授、陶吉博士、夏添博士、侯涛刚博士、严德培、单增光、王策、鄂俊光、李成、丁宁、付航、高鹏、朱本金、彭强、王粟瑶、张腾、王兆玮、黄彬效和拓万琛等人,他们对《深度学习之PyTorch物体检测实战》提出了许多宝贵的意见和建议!感谢我的女朋友及家人,他们一直以来都对我鼓励有加,给我写作《深度学习之PyTorch物体检测实战》以最大的动力!感谢为《深度学习之PyTorch物体检测实战》付出辛勤工作的每一位编辑,他们认真、细致的工作让《深度学习之PyTorch物体检测实战》质量提高不少!
……
第1篇 物体检测基础知识
第1章 浅谈物体检测与PyTorch 2
1.1 深度学习与计算机视觉 2
1.1.1 发展历史 2
1.1.2 计算机视觉 7
1.2 物体检测技术 9
1.2.1 发展历程 10
1.2.2 技术应用领域 11
1.2.3 评价指标 12
1.3 PyTorch简介 17
1.3.1 诞生与特点 17
1.3.2 各大深度学习框架对比 17
1.3.3 为什么选择PyTorch 19
1.3.4 安装方法 20
1.4 基础知识准备 22
1.4.1 Linux基础 22
1.4.2 Python基础 24
1.4.3 高效开发工具 29
1.5 总结 36
第2章 PyTorch基础 37
2.1 基本数据:Tensor 37
2.1.1 Tensor数据类型 37
2.1.2 Tensor的创建与维度查看 39
2.1.3 Tensor的组合与分块 41
2.1.4 Tensor的索引与变形 42
2.1.5 Tensor的排序与取极值 46
2.1.6 Tensor的自动广播机制与向量化 46
2.1.7 Tensor的内存共享 47
2.2 Autograd与计算图 48
2.2.1 Tensor的自动求导:Autograd 49
2.2.2 计算图 50
2.2.3 Autograd注意事项 51
2.3 神经网络工具箱torch.nn 52
2.3.1 nn.Module类 52
2.3.2 损失函数 55
2.3.3 优化器nn.optim 56
2.4 模型处理 59
2.4.1 网络模型库:torchvision.models 59
2.4.2 加载预训练模型 60
2.4.3 模型保存 61
2.5 数据处理 61
2.5.1 主流公开数据集 61
2.5.2 数据加载 63
2.5.3 GPU加速 65
2.5.4 数据可视化 66
2.6 总结 68
第3章 网络骨架:Backbone 69
3.1 神经网络基本组成 69
3.1.1 卷积层 70
3.1.2 激活函数层 72
3.1.3 池化层 75
3.1.4 Dropout层 76
3.1.5 BN层 77
3.1.6 全连接层 79
3.1.7 深入理解感受野 81
3.1.8 详解空洞卷积(Dilated Convolution) 82
3.2 走向深度:VGGNet 83
3.3 纵横交错:Inception 87
3.4 里程碑:ResNet 93
3.5 继往开来:DenseNet 95
3.6 特征金字塔:FPN 99
3.7 为检测而生:DetNet 106
3.8 总结 110
第2篇 物体检测经典框架
第4章 两阶经典检测器:Faster RCNN 112
4.1 RCNN系列发展历程 112
4.1.1 开山之作:RCNN 112
4.1.2 端到端:Fast RCNN 113
4.1.3 走向实时:Faster RCNN 114
4.2 准备工作 114
4.3 Faster RCNN总览 115
4.4 详解RPN 117
4.4.1 理解Anchor 117
4.4.2 RPN的真值与预测量 119
4.4.3 RPN卷积网络 120
4.4.4 RPN真值的求取 122
4.4.5 损失函数设计 124
4.4.6 NMS与生成Proposal 125
4.4.7 筛选Proposal得到RoI 126
4.5 RoI Pooling层 127
4.6 全连接RCNN模块 130
4.6.1 RCNN全连接网络 130
4.6.2 损失函数设计 131
4.7 Faster RCNN的改进算法 131
4.7.1 审视Faster RCNN 132
4.7.2 特征融合:HyperNet 133
4.7.3 实例分割:Mask RCNN 134
4.7.4 全卷积网络:R-FCN 137
4.7.5 级联网络:Cascade RCNN 139
4.8 总结 141
第5章 单阶多层检测器:SSD 142
5.1 SSD总览 142
5.1.1 SSD的算法流程 142
5.1.2 代码准备工作 143
5.2 数据预处理 144
5.2.1 加载PASCAL数据集 144
5.2.2 数据增强 144
5.3 网络架构 148
5.3.1 基础VGG结构 148
5.3.2 深度卷积层 149
5.3.3 PriorBox与边框特征提取网络 150
5.3.4 总体网络计算过程 153
5.4 匹配与损失求解 154
5.4.1 预选框与真实框的匹配 154
5.4.2 定位损失的计算 155
5.4.3 难样本挖掘 156
5.4.4 类别损失计算 156
5.5 SSD的改进算法 157
5.5.1 审视SSD 157
5.5.2 特征融合:DSSD 158
5.5.3 彩虹网络:RSSD 160
5.5.4 基于SSD的两阶:RefineDet 162
5.5.5 多感受野融合:RFBNet 165
5.6 总结 166
第6章 单阶经典检测器:YOLO 167
6.1 无锚框预测:YOLO v1 167
6.1.1 网络结构 167
6.1.2 特征图的意义 168
6.1.3 损失计算 169
6.2 依赖锚框:YOLO v2 171
6.2.1 网络结构的改善 171
6.2.2 先验框的设计 173
6.2.3 正、负样本与损失函数 175
6.2.4 正、负样本选取代码示例 176
6.2.5 工程技巧 179
6.3 多尺度与特征融合:YOLO v3 180
6.3.1 新网络结构DarkNet-53 180
6.3.2 多尺度预测 181
6.3.3 Softmax改为Logistic 182
6.4 总结 183
第3篇 物体检测的难点与发展
第7章 模型加速之轻量化网络 186
7.1 压缩再扩展:SqueezeNet 188
7.1.1 SqueezeNet网络结构 188
7.1.2 SqueezeNet总结 190
7.2 深度可分离:MobileNet 191
7.2.1 标准卷积 191
7.2.2 深度可分离卷积 192
7.2.3 MobileNet v1结构 193
7.2.4 MobileNet v1总结 198
7.2.5 MobileNet v2 198
7.3 通道混洗:ShuffleNet 200
7.3.1 通道混洗 201
7.3.2 网络结构 202
7.3.3 ShuffleNet v2 205
7.4 总结 207
第8章 物体检测细节处理 209
8.1 非极大值抑制:NMS 209
8.1.1 NMS基本过程 210
8.1.2 抑制得分:Soft NMS 212
8.1.3 加权平均:Softer NMS 213
8.1.4 定位置信度:IoU-Net 215
8.2 样本不均衡问题 217
8.2.1 不均衡问题分析 217
8.2.2 在线难样本挖掘:OHEM 219
8.2.3 专注难样本:Focal Loss 221
8.3 模型过拟合 224
8.3.1 数据增强 226
8.3.2 L1与L2正则化 227
8.4 总结 229
第9章 物体检测难点 230
9.1 多尺度检测 230
9.1.1 多尺度问题 230
9.1.2 降低下采样率与空洞卷积 232
9.1.3 Anchor设计 233
9.1.4 多尺度训练 235
9.1.5 特征融合 235
9.1.6 尺度归一化:SNIP 236
9.1.7 三叉戟:TridentNet 238
9.2 拥挤与遮挡 239
9.2.1 遮挡背景 240
9.2.2 排斥损失:Repulsion Loss 242
9.2.3 OR-CNN 244
9.3 总结 247
第10章 物体检测的未来发展 248
10.1 重新思考物体检测 248
10.1.1 精度与速度的权衡 249
10.1.2 卷积网络的可解释性与稳定性 249
10.1.3 训练:微调还是随机初始化 250
10.1.4 考虑物体间关系的检测 251
10.1.5 优化卷积方式 252
10.1.6 神经架构搜索:NAS 253
10.1.7 与产业结合的创新 255
10.2 摆脱锚框:Anchor-Free 257
10.2.1 重新思考Anchor 257
10.2.2 基于角点的检测:CornerNet 258
10.2.3 检测中心点:CenterNet 262
10.2.4 锚框自学习:Guided Anchoring 264
10.3 总结 266