本书是一本系统讲解自动驾驶感知技术的图书,同时带有具体的自动驾驶实践案例,以及自动驾驶感知技术的落地部署方案供读者学习。本书主要涉及的内容包括神经网络的基础理论知识、经典卷积神经网络、轻量化卷积神经网络、Vision Transformer、2D目标检测算法(YOLOv5、YOLOX、YOLOv5 Lite、NanoDet等算法)、3D激光点云目标检测算法、BEVFormer纯视觉的3D目标检测算法、语义分割、车道线检测、ReID相关技术、多目标跟踪及部署落地的相关技术(如CUDA、OpenCV、NCNN、TensorRT等)。为了让读者全面、深入、透彻地理解所讲解的算法,书中还给出了具体的实践案例,并提供了相应的数据集供读者实践,同时通过对代码的讲解使读者获得实战能力。
龚心满,硕士,新能源汽车感知融合资深工程师。毕业于中国计量大学控制理论与控制工程专业。曾就职于华人运通自动驾驶科技有限公司,担任深度学习高级工程师职位,负责ADAS感知项目的研发,现任职于吉咖智能机器人有限公司感知中心,负责高阶自动驾驶的落地。同时还参与多本人工智能书籍的撰写,也是多个技术专栏的签约作者。在安防和自动驾驶领域都有丰富的经验。江涛,北京航空航天大学学士,香港中文大学硕士。先后在明星初创公司、研究院、互联网大厂、实验室任职,专注于深度学习与计算机视觉领域的前沿研究、落地部署、AI产品化,是多个国际知名开源项目的活跃贡献者和维护者,也是多个技术专栏的签约作者。梁功臣,硕士,新能源汽车软件研发高级工程师。毕业于东北大学控制理论与控制工程专业。曾作为项目核心成员于中国科学院沈阳自动化研究所参与相关国家863项目(仿生医疗假肢)的研发科研工作,现任职于蔚来汽车科技有限公司数字架构定义与集成部门。胡佳慧,硕士,毕业于中国计量大学控制工程专业。现就职于远景科技集团,负责新能源行业智能化项目的研发,同时也是多个知名开源项目的负责人。在人工智能研发与落地方面有着丰富的经验。
第1章  计算机视觉与神经网络	1
1.1  人工神经网络	1
1.1.1  感知机	2
1.1.2  神经网络	2
1.2  卷积神经网络	4
1.2.1  卷积	4
1.2.2  激活函数	5
1.2.3  池化层	6
1.2.4  全连接层	6
1.3  经典卷积神经网络	7
1.3.1  AlexNet	7
1.3.2  VGG	8
1.3.3  GoogLeNet	9
1.3.4  ResNet	11
1.3.5  DarkNet	14
1.3.6  CSPDarkNet	16
1.4  轻量化卷积神经网络	18
1.4.1  MobileNet	18
1.4.2  ShuffleNet	22
1.4.3  GhostNet	25
1.5  Vision Transformer在计算机视觉中的应用	27
1.5.1  ViT	27
1.5.2  Swin Transformer	30
1.5.3  MobileViT	34
1.5.4  TRT-ViT	36
1.5.5  基于ResNet/MobileViT的交通标识牌识别项目实践	38
1.6  本章小结	55
第2章  目标检测在自动驾驶中的应用	56
2.1  目标检测简介	56
2.1.1  相关工作简介	56
2.1.2  两阶段目标检测算法简介	57
2.1.3  单阶段目标检测算法简介	62
2.2  自动驾驶中的车辆检测	66
2.2.1  BDD100K数据集简介	66
2.2.2  YOLOv5算法的原理	67
2.2.3  基于YOLOv5的车辆检测项目实践	74
2.3  自动驾驶中的行人检测	81
2.3.1  YOLOX算法的原理	81
2.3.2  基于YOLOX的行人检测项目实践	90
2.4  自动驾驶中的交通标识牌检测	104
2.4.1  NanoDet算法的原理	104
2.4.2  基于NanoDet的交通标识牌检测项目实践	110
2.5  自动驾驶中的交通信号灯的检测与识别	125
2.5.1  YOLOv5 Lite算法的原理	125
2.5.2  基于YOLOv5 Lite的交通信号灯检测项目实践	128
2.6  3D目标检测	131
2.6.1  PointPillars	132
2.6.2  BEVFormer	136
2.6.3  基于OpenPCDet的3D目标检测项目实践	139
2.7  本章小结	153?
第3章  语义分割在自动驾驶中的应用	154
3.1  STDC算法的原理	155
3.1.1  STDC模块	155
3.1.2  STDC语义分割网络	157
3.2  TopFormer算法的原理	160
3.2.1  Token Pyramid Module	161
3.2.2  Scale-Aware Semantics Extractor	162
3.2.3  Semantics Injection Module	162
3.2.4  Segmentation Head	163
3.3  基于TopFormer的可行驶区域分割项目实践	163
3.3.1  Cityscapes数据集简介	163
3.3.2  TopFormer模型实现	164
3.4  本章小结	172
第4章  车道线检测与分割	173
4.1  UNet算法的原理	174
4.2  LaneATT算法的原理	176
4.2.1  Lane的Anchor表征	177
4.2.2  基于Anchor的特征图池化	177
4.2.3  局部注意力机制	178
4.2.4  Proposal预测	179
4.2.5  后处理	179
4.3  基于LaneATT的车道线检测实践	180
4.3.1  CULane数据集介绍	180
4.3.2  LaneATT实践	180
4.4  本章小结	186
第5章  多目标跟踪在自动驾驶中的应用	187
5.1  多目标跟踪算法SORT的原理	187
5.2  多目标跟踪算法DeepSORT的原理	192
5.2.1  级联匹配	192
5.2.2  ReID特征提取	193
5.3  多目标跟踪算法ByteTrack的原理	194
5.4  基于ByteTrack的多目标跟踪项目实践	196
5.4.1  MOT16数据集	196
5.4.2  Byte匹配	197
5.5  本章小结	202
第6章  深度学习模型的落地和部署	203
6.1  常见模型部署框架介绍	203
6.1.1  TensorRT	204
6.1.2  NCNN	206
6.1.3  ONNX	206
6.2  OpenCV图像处理操作	207
6.2.1  OpenCV基本操作	207
6.2.2  使用OpenCV 进行图像预处理	212
6.3  GPU编程工具之CUDA	216
6.3.1  CUDA 编程模型	217
6.3.2  CUDA 线程组织	223
6.3.3  CUDA 内存组织	239
6.3.4  GPU 硬件组织结构	242
6.3.5  CUDA流	245
6.4  模型部署框架之TensorRT	249
6.4.1  使用TensorRT API搭建网络结构	250
6.4.2  从ONNX文件中导入网络结构定义	253
6.4.3  TensorRT推理引擎的序列化与反序列化	254
6.4.4  TensorRT的推理	257
6.4.5  INT8量化	259
6.4.6  TensorRT的插件开发	261
6.5  TensorRT 模型部署实例	263
6.5.1  使用 OpenCV 进行前处理	264
6.5.2  使用CUDA加速前处理	265
6.5.3  执行推理操作	268
6.5.4  后处理	270
6.6  NCNN模型部署	273
6.6.1  NCNN部署流程	273
6.6.2  使用NCNN部署NanoDet	276
6.7  本章小结	284
参考文献	285