正版保障 假一赔十 可开发票
¥ 64.49 5.4折 ¥ 119 全新
库存7件
作者刘斯坦
出版社机械工业出版社
ISBN9787111740278
出版时间2024-01
装帧平装
开本16开
定价119元
货号29676974
上书时间2024-10-21
2012年,多伦多大学Geoffrey Hinton教授指导的学生Alex Krizhevsky发表了AlexNet深度卷积神经网络模型,在ImageNet图像识别任务上大幅超越第二名,开启了深度学习的新纪元。同年,笔者于慕尼黑工业大学毕业,彼时,笔者选修了Daniel Cremers教授开设的多门课程,醉心于学习凸优化、微分几何等经典计算机视觉的理论知识,对卷积神经网络一无所知,丝毫感觉不到一个人工智能的伟大时代就此揭开帷幕。25年前,也是在慕尼黑工业大学计算机系,Jürgen Schmidhuber教授指导的学生Sepp Hochreiter发表了论文LSTM(Long Short-Term Memory),他们也决然无法预料,被SVM等机器学习方法打败的仿生人工智能,居然会在几十年后忽然起死回生,迎来爆发式发展。
从2012年AlexNet的发表到今天,不过10年有余,卷积神经网络和相关硬件的发展可谓一日千里。笔者在自动驾驶视觉感知领域从业五年,深感这个领域教育资源的发展远远跟不上学术界和工业界的发展。该领域涉及的知识庞杂,既广又深:知识广度方面,从最优化理论,常用模型的特点,到使用C 编写高性能、高可靠性的程序和对各种神经网络加速芯片的了解,都属于自动驾驶感知算法工程师技术栈的覆盖范围;知识深度方面,工程师要对卷积神经网络的数学理论有足够深入的理解,而不应止步于调参的范围。
也就是说,一个自动驾驶算法工程师,不但要有深厚的数学基础,掌握凸优化和统计学,还要熟悉高性能嵌入式软件的编写,这是一个横跨学术界和工业界的多面手职业。尤其是自动驾驶行业一日千里,很多工程师只能在工作中边干边学,一路走来可谓磕磕绊绊,如果能有一本书全面覆盖自动驾驶感知算法工程师的能力圈,那职业之路走起来就会顺畅很多。笔者就是出于这个目的,根据自己的职业经验和理论知识,编写了本书。
本书特点
考虑到上文提及的自动驾驶感知算法工程师的种种职业特点,本书的内容将会兼顾计算机视觉学术界的最新研究成果和自动驾驶的工程实践。
兼顾细节与理论
深度学习的很多算法用公式或语言来描述会困难重重,用示意图来表现则是一目了然。对算法和模型的细节,笔者绘制了大量的三维示意图进行讲解,争取让读者一看就懂。
但光有细节是不够的,深度学习算法工程师常被取笑为“调参侠”“炼丹师”。这是因为卷积神经网络被认为是一个巨大的黑盒(Black Box),其运作规律难以为人类所理解。诚然,深度学习的理论仍在构建之中,尚不完善,但学术界从未停止过对深度学习的理解。已经有大量学术成果能加深人们对卷积神经网络各种现象的理解,本书将吸收这些成果对神经网络的运作进行解释。例如,ResNet的有效性,除了原论文中的解释,还有其他学者也对其进行了研究,产生了新的理解,这些研究也被纳入到本书中来。
总之,笔者争取让读者知其然,也知其所以然,超越“调参侠”的职业定位。
注重动手实践
本书除了对理论进行深入浅出的讲解,也注重将理论落到实处。深度学习一个很大的特点是“一看就懂,一做就懵”。理论很熟悉了,但实际操作起来会遇到各种各样的小问题。这是因为算法工程师应能将数学符号和代码中的数据结构连接起来,这是这个职业所需要的独特能力。本书对重要的模型细节都展示了代码示例,对代码中各个张量的维度,各维度的含义都有详细的注释和讲解。对于复杂的模型,笔者直接在公式下方展示代码,尽量做到让读者从公式中的符号轻松地落实到代码中的变量中。
提供迷你数据集
自动驾驶视觉感知任务的另一个特点是任务多而杂,每个任务往往都有一些通用的数据集。例如,深度估计有KITTI数据集,语义分割有Cityscape,目标检测有nuScenes等。学习的时候往往会遇到的一个问题是每一个任务都要下载一个巨大无比的数据集,并专门写接口。如果要进行多任务训练,往往需要nuScenes等巨型数据集,而且标注还不全面。如果只用于学习的目的,杂乱而庞大的数据集无疑大大增加了学习的时间和经济成本。
为此笔者特意自制了一个方便学习的迷你数据集。数据集采集于德国慕尼黑一片安静的城区,场景类似于KITTI,仅包含7000多帧图像。笔者使用当时精度最高的目标检测和语义分割网络对这个迷你数据集进行标注,并逐帧对标注的伪真值进行后期处理,尽量获得高质量的标注数据。数据集是一个连续的视频,笔者还对相机进行了标定,故可以用于无监督深度估计任务。
强调模型部署落地
正如上文所说,要成为一个优秀的算法工程师,其工作内容不仅是调参那么简单,另一块重要的工作内容就是将模型部署到生产环境。对于互联网行业的算法工程师来说,模型部署可能相对简单,有成熟的工具链支持,但自动驾驶的模型部署就复杂得多了。首先自动驾驶系统运行的硬件平台往往不是常见的x86平台,自动驾驶系统的模型部署,其实已经属于嵌入式软件开发了。其次,自动驾驶系统实时性高,吞吐率需要达到10FPS(Frame-Per-Second)或更高,同时需要运行的神经网络模型很多,而硬件平台上的神经网络加速器往往算力有限。因此,为了将神经网络模型部署到算力有限的硬件平台,并达到实时性要求,需要结合硬件的特点对模型进行设计和压缩。
模型的部署涉及模型压缩、模型导出、Nvidia芯片的模型量化和模型推理、C 的开发等知识,都是深度学习课堂上不会涉及的工程实践内容。这些工程实践知识是非常重要的,但超出了很多长期在Ubuntu和Python开发环境下的读者的“舒适区”。本书将全面覆盖相关知识,帮助读者更轻松地扩大自己的“舒适区”,为将来的工作做好准备。
本书内容
第1章讲解卷积神经网络的理论基础,用简洁的篇幅介绍了神经网络和卷积神经网络的基础知识。包括反向传播的推导、神经网络的各种网络层、常用的损失函数、正则化、优化器和学习率调整方法等。
第2章介绍深度学习开发的常用工具,从显卡和操作系统的概念,到Python开发中用到的常用工具。例如,pip包管理器、Anaconda虚拟环境以及NumPy和OpenCV 两个常用的库。最后配合示例代码着重讲解PyTorch的使用,示例代码将实现一个简单的卷积神经网络并进行训练。
第3章讲解卷积神经网络中主干网络的概念。本章首先介绍主干网络在卷积神经网络中的位置和作用,以及对比学习等主干网络预训练技术。之后会对最常用的几种主干网络的特点和使用场景进行讲解。最后通过示例代码展示如何加载TorchVision中的主干网络模型。
第4章介绍自动驾驶系统中最经典的一个任务——目标检测。本章首先讲解目标检测算法中的几个基本概念,如锚框、极大值抑制、一阶段和两阶段算法等。随后以FasterRCNN为例介绍两阶段网络,以Yolo为例讲解一阶段网络,以CenterNet为例讲解无锚框网络。最后讲解Yolo的PyTorch示例代码。
第5章聚焦于自动驾驶系统中和图像分割有关的两个任务:语义分割和实例分割。本章讲解语义分割的网络结构、损失函数、常用精度指标等基础知识。也会涉及实际工作中需要解决的问题,尤其会介绍语义分割模型的几种信息融合方法和设计思路。本章5.3节介绍三个实例分割算法,特别是会介绍一种半监督的实例分割算法。最后介绍计算机视觉领域最常用的框架OpenMMLab的系统结构和使用方法。
第6章的内容是近几年来新出现的自动驾驶感知任务——单目深度估计。本章首先介绍多视图三维几何理论,然后讲解单目深度估计的无监督训练方法,最后结合实际工作中会遇到的若干难点提出一些解决方案。
第7章分为两部分,第一部分介绍多任务网络的结构和设计思路,着重介绍多任务网络训练时的损失平衡问题及其基于不确定度的损失平衡方案;第二部分介绍神经网络的压缩,以通道剪枝为例介绍L1正则化增加网络稀疏度和可微通道剪枝的网络压缩方法。最后通过示例代码讲解如何用PyTorch实现网络压缩。
第8章讲解神经网络模型的部署,包括C 开发环境的搭建,LibTorch和TensorRT这两个神经网络推理库。最后介绍模型量化的相关理论知识和工程实践,并对FP32精度模型和INT8精度模型进行精度与推理速度对比。
本书代码资源
本书强调动手实践,笔者为本书的出版制作了一个迷你数据集,并为大部分内容编写了代码。代码均以MIT许可证开源,既可用于学习,也可直接应用于日常工作中。开源代码托管于代码库https://github.com/vision-adas/code。
开源代码的具体内容详见代码库的README页面,迷你数据集的下载链接也公布于此。代码库中代码包括:
1)目标检测和语义分割多任务网络模型的全套训练代码。
2)无监督单目深度估计的全套训练代码。
3)多任务模型的网络压缩代码。
4)将模型导出为onnx、pt和TensorRT格式的模型导出代码。
5)在目标硬件上使用LibTorch和TensorRT部署模型的C 示例代码。
6)配置代码环境所需的Dockerfile。
致谢
笔者长年在知乎论坛的深度学习社区参与讨论,很多对深度学习的理解都来自于社区讨论。网友的批评指正和提问都是对笔者的鞭策,而关注者的认可也在激励笔者不断进步,特此对网友们表示感谢。本书成书于疫情期间,父母对笔者长年不回国探亲报以极大的宽容和理解,长时间的专注让本书得以完成。笔者的小伙伴杨丹青对本书的第1章进行了审阅,对行文提出了很多有价值的建议,更要感谢她对笔者疏于陪伴的谅解。
《PyTorch自动驾驶视觉感知算法实战》全面介绍了自动驾驶系统中深度学习视觉感知的相关知识,包括深度神经网络和深度卷积神经网络的基本理论,深入讲解了自动驾驶中常用的目标检测、语义、实例分割和单目深度估计四种视觉感知任务。
《PyTorch自动驾驶视觉感知算法实战》对自动驾驶工程实践中很重要但经常被忽略的知识进行了全面总结,包括多任务模型的损失平衡、Ubuntu操作系统、Anaconda和Docker等环境配置工具、C 开发环境搭建、神经网络压缩、模型导出和量化、TensorRT推理引擎等和部署相关的技术。
《PyTorch自动驾驶视觉感知算法实战》各个任务都由PyTorch实现,模型部署的代码则提供C 实现,并附带一个中等规模的自动驾驶数据集用于示例。所有代码都公开在Github公开源码仓库上,很多代码可以直接用于生产环境,且提供了商业友好的代码许可证。
《PyTorch自动驾驶视觉感知算法实战》适用于具备基本机器学习知识,有志于从事自动驾驶算法工作的学生,也适用于刚迈入职场,面对各种陌生技术无所适从的初级工程师。同时,本书也可供中高级算法工程师作为案头常备书籍,以便查阅。
刘斯坦,本科毕业于上海交通大学,硕士毕业于德国慕尼黑工业大学。深度学习资深工程师,从事无人驾驶智能感知系统的研发工作。在德国相关领域从业超过十年,负责无人驾驶系统中多个神经网络模型在量产车的落地以及中国地区的本地化。刘斯坦对深度学习的各个领域不但有着全景式的理解,还具备从数学理论到部署产品线的知识纵深。这种即广又深全面覆盖的知识面,相信能为读者带来更开阔的视野。
前言
第1章 卷积神经网络的理论基础
1.1神经网络回顾
1.1.1神经网络模型
1.1.2神经网络的训练——反向传播算法
1.1.3神经网络的拟合能力和泛化能力
1.2什么是卷积神经网络
1.2.1什么是卷积运算
1.2.2通道(Channel)和三维卷积
1.2.3为什么需要深度网络
1.2.4什么是批次(Batch)
1.3卷积神经网络的组成细节
1.3.1卷积神经网络的输入层
1.3.2神经网络的输出层
1.3.3卷积层和转置卷积层
1.3.4激活层
1.3.5归一化层
1.3.6上采样层和下采样层
1.3.7池化层
1.3.8跳跃、空间注意力等特殊的连接方式
1.3.9构建一个复杂的卷积神经网络
1.4卷积神经网络的训练
1.4.1常用损失函数
1.4.2常用的正则化方法
1.4.3常用的优化器
1.4.4常用的训练学习率调整方法
第2章 深度学习开发环境及常用工具库
2.1硬件和操作系统
2.1.1显卡
2.1.2操作系统
2.2Python开发环境管理
2.2.1Anaconda虚拟环境的管理
2.2.2Python的包管理器pip
2.3常用的Python包
2.3.1NumPy——Python科学计算库
2.3.2OpenCV——Python图像处理库
2.4GPU加速的深度学习和科学计算库PyTorch
2.4.1GPU加速的科学计算功能
2.4.2PyTorch的自动求导功能
2.4.3PyTorch的优化器
2.4.4PyTorch的数据加载
2.4.5用PyTorch搭建神经网络
2.4.6常用的辅助工具
2.4.7搭建一个神经网络并进行训练
第3章 神经网络的特征编码器——主干网络
3.1什么是神经网络的主干网络
3.1.1神经网络的元结构
3.1.2神经网络的主干网络及有监督预训练
3.1.3主干网络的自监督预训练
3.2流行的主干网络
3.2.1简单直白的主干网络——类VGG网络
3.2.2最流行的主干网络——ResNet系列网络
3.2.3速度更快的轻量级主干网络——MobileNet系列
3.2.4自由缩放的主干网络——RegNet系列
3.3使用TorchVision模型库提供的主干网络
3.3.1构建和加载模型
3.3.2修改主干网络获取多尺度特征图
3.3.3不同主干网络和预训练模型的训练对比
第4章 目标检测网络——识别车辆
4.1目标检测基本概念
4.1.1Anchor
4.1.2NMS
4.1.3目标检测网络的类别
4.2以Faster RCNN为代表的两阶段检测方法
4.2.1RPN网络
4.2.2ROI网络
4.2.3使用TorchVision模型库中的Faster RCNN
4.3以Yolo为代表的一阶段检测方法
4.3.1YoloV3的整体结构
4.3.2Yolo的训练
4.3.3类Yolo的一阶段检测网络
4.4以CenterNet为代表的Anchor-Free方法
4.4.1CenterNet的整体结构
4.4.2用高斯模糊和Focal Loss训练CenterNet
4.4.3YoloX网络
4.5Yolo的PyTorch实现
4.5.1样本选择算法的实现
4.5.2Yolo层的实现
4.5.3构造损失函数
4.5.4NMS的实现
第5章 语义分割与实例分割——逐像素分类
5.1语义分割
5.1.1语义分割的网络构架和损失函数
5.1.2评价语义分割质量的指标
5.1.3使用OHEM和类别权重解决样本不均衡问题
5.1.4语义分割的关键——信息融合
5.2使用PyTorch训练一个语义分割模型
5.2.1语义分割的数据加载
5.2.2加载Lite R-ASPP语义分割模型进行训练
5.2.3计算混淆矩阵
5.2.4计算mIoU
5.3实例分割——分辨行人和车辆
5.3.1以Mask-RCNN为代表的两阶段实例分割方法
5.3.2以SOLO为代表的单阶段实例分割方法
5.3.3基于CondInst的半监督实例分割方法BoxInst
5.4安装及使用OpenMMLab——以MMDetection为例
5.4.1安装和配置MMDetection
5.4.2MMDetection介绍
5.4.3SOLO代码解析
第6章 单目深度估计——重建三维世界
6.1计算机三维视觉基础知识
6.1.1相机模型
6.1.2什么是深度图
6.1.3相机运动模型
6.2单目深度估计的网络构架
6.2.1深度图预测网络
6.2.2基于相对视差的深度图输出编码
6.2.3基于有序回归的深度图输出编码
6.2.4相机运动估计网络
6.3无监督学习的机制
6.3.1无监督学习系统构架
6.3.2将深度图反投影为点云的PyTorch实现
6.3.3从相邻帧采集RGB值并重投影的PyTorch实现
6.3.4无监督单目深度推断的损失函数
6.4可能存在的问题及解决方案
6.4.1用图像梯度图解决边缘模糊问题
6.4.2用图像一致性掩膜解决移动物体问题
6.4.3用速度损失解决尺度问题
第7章 通过控制网络结构提高速度和精度
7.1使用多任务网络构架提高速度和精度
7.1.1多任务网络的设计
7.1.2多任务网络的任务平衡问题
7.2用PyTorch搭建一个语义分割和目标检测双任务网络
7.2.1多任务数据加载
7.2.2多任务网络的搭建
7.2.3多任务损失的平衡
7.3压缩神经网络提高推理速度
7.3.1什么是神经网络压缩
7.3.2几种常见的通道剪枝方法
7.3.3在训练中使用L1正则化压缩权重
7.3.4使用可微通道加权进行通道剪枝
7.3.5网络压缩的流程
7.4用PyTorch实现可微网络压缩
7.4.1用PyTorch构造可微通道选择层
7.4.2利用通道选择层确定压缩方案
7.4.3对PyTorch模型进行压缩并对比运行速度
第8章 导出和部署神经网络模型
8.1配置开发环境
8.1.1Docker的使用
8.1.2配置C 开发环境
8.2使用LibTorch部署PyTorch模型
8.2.1导出TorchScript模型
8.2.2将LibTorch加入CMake项目
8.2.3将输入图像转换为Tensor
8.2.4加载TorchScript模型并进行推理
8.3用TensorRT部署模型
《PyTorch自动驾驶视觉感知算法实战》全面介绍了自动驾驶系统中深度学习视觉感知的相关知识,包括深度神经网络和深度卷积神经网络的基本理论,深入讲解了自动驾驶中常用的目标检测、语义、实例分割和单目深度估计四种视觉感知任务。
《PyTorch自动驾驶视觉感知算法实战》对自动驾驶工程实践中很重要但经常被忽略的知识进行了全面总结,包括多任务模型的损失平衡、Ubuntu操作系统、Anaconda和Docker等环境配置工具、C 开发环境搭建、神经网络压缩、模型导出和量化、TensorRT推理引擎等和部署相关的技术。
《PyTorch自动驾驶视觉感知算法实战》各个任务都由PyTorch实现,模型部署的代码则提供C 实现,并附带一个中等规模的自动驾驶数据集用于示例。所有代码都公开在Github公开源码仓库上,很多代码可以直接用于生产环境,且提供了商业友好的代码许可证。
《PyTorch自动驾驶视觉感知算法实战》适用于具备基本机器学习知识,有志于从事自动驾驶算法工作的学生,也适用于刚迈入职场,面对各种陌生技术无所适从的初级工程师。同时,本书也可供中高级算法工程师作为案头常备书籍,以便查阅。
刘斯坦,本科毕业于上海交通大学,硕士毕业于德国慕尼黑工业大学。深度学习资深工程师,从事无人驾驶智能感知系统的研发工作。在德国相关领域从业超过十年,负责无人驾驶系统中多个神经网络模型在量产车的落地以及中国地区的本地化。刘斯坦对深度学习的各个领域不但有着全景式的理解,还具备从数学理论到部署产品线的知识纵深。这种即广又深全面覆盖的知识面,相信能为读者带来更开阔的视野。
PyTorch自动驾驶视觉感知算法实战
全新武汉
¥ 74.73
PyTorch自动驾驶视觉感知算法实战
全新广州
¥ 71.39
PyTorch自动驾驶视觉感知算法实战
全新广州
¥ 75.93
PyTorch自动驾驶视觉感知算法实战!
全新北京
¥ 71.65
PyTorch自动驾驶视觉感知算法实战
全新广州
¥ 69.39
PyTorch自动驾驶视觉感知算法实战!
全新北京
¥ 71.65
PyTorch自动驾驶视觉感知算法实战
全新广州
¥ 69.39
PyTorch自动驾驶视觉感知算法实战
全新广州
¥ 71.39
PyTorch自动驾驶视觉感知算法实战
全新保定
¥ 74.50
PyTorch自动驾驶视觉感知算法实战
全新保定
¥ 74.50
— 没有更多了 —
以下为对购买帮助不大的评价