3. 视觉感知基础

视觉感知是端到端自动驾驶系统的“眼睛”,而卷积神经网络(CNN)则是这双眼睛得以理解世界的关键计算引擎。与传统的几何视觉方法不同,CNN 能够直接从原始像素中学习到从低级边缘到高级语义的层次化特征表示,从而在复杂多变的道路场景中实现稳健的环境理解。本章将深入剖析 CNN 的核心原理,厘清图像特征提取的层级机制,并重点讲解目标检测与语义分割这两大核心视觉任务在自动驾驶中的具体落地形态与工程约束。理解本章内容,是后续掌握行为克隆(Behavior Cloning)中“状态表征”如何构建的前提——因为端到端模型需要从视觉输入中提取出足以支撑驾驶决策的稠密或稀疏特征。

CNN 视觉感知在自动驾驶中的核心链路 原始图像 (1280x720x3) CNN 特征提取器 Conv+BN+ReLU+Pooling (ResNet / VGG / MobileNet) 输出: 特征图 (H/8, W/8, C) 目标检测分支 YOLO / CenterNet / DETR 输出: 2D框 + 类别 + 朝向 用于: 障碍物感知、轨迹预测 语义分割分支 FCN / DeepLab / SegNet 输出: 像素级类别标签 用于: 可行驶区域、车道线 端到端驾驶决策 行为克隆 (BC) 强化学习 (RL) 直接输出: 转向/油门/刹车 注: 在端到端模型中,特征提取器通常被共享,检测/分割头可作为辅助监督信号 或直接作为中间表征输入到策略网络。 输入 特征提取 检测 分割 决策

3.1 卷积神经网络核心原理:从全连接到局部感受野

3.1.1 核心原理:为什么不用全连接网络处理图像?

在自动驾驶场景中,输入图像通常为 1280×720 分辨率的三通道彩色图。若采用全连接网络(Fully Connected Network),第一层隐藏层即使只有 1024 个神经元,其权重数量也将达到 1280×720×3×1024 ≈ 28 亿个参数。这不仅导致计算量爆炸,更严重的问题是:全连接网络不具备空间平移不变性——同一个物体在图像中移动几个像素,网络就需要重新学习。CNN 通过三个关键机制解决这一问题:局部感受野(Local Receptive Field)、权值共享(Weight Sharing)和空间下采样(Spatial Subsampling)。卷积核(Kernel)在输入特征图上滑动,每个位置的输出仅与局部区域相关,且同一卷积核在所有位置共享参数。这使得 CNN 参数量大幅下降,同时天然具备对平移、缩放、光照变化的鲁棒性。

核心公式:卷积操作可表示为 y[i,j] = Σ_m Σ_n x[i+m, j+n] · w[m,n] + b,其中 w 为卷积核权重,b 为偏置。在自动驾驶中,常用的卷积核尺寸为 3×3 或 5×5,步长(Stride)通常为 1 或 2,填充(Padding)用于保持特征图尺寸。

3.1.2 判断方法:如何选择卷积核与网络深度?

在工程实践中,选择网络结构需考虑以下约束:

  • 算力平台:车载嵌入式平台(如 NVIDIA Orin、地平线征程 5)的 INT8 算力通常在 100-250 TOPS 之间,需选择推理延迟低于 30ms 的骨干网络。
  • 感受野需求:高速场景下需要检测 100m 外的障碍物,对应输入图像上约 200 像素的尺度,因此网络需具备足够的感受野。通常通过堆叠卷积层或使用空洞卷积(Dilated Convolution)来扩大感受野。
  • 下采样倍数:特征图下采样倍数(Stride)决定了输出分辨率。对于语义分割任务,通常需要 8 倍或 4 倍下采样,而目标检测可采用 16 倍或 32 倍下采样。

3.1.3 案例拆解:ResNet-50 在自动驾驶中的适配

以 ResNet-50 为例,其包含 49 个卷积层和 1 个全连接层,总参数量约 25.6M。在自动驾驶场景中,我们通常移除最后的全连接层,保留从 Conv1 到 Conv5_x 的特征提取部分。输入图像经过 5 个阶段的卷积和池化后,输出特征图尺寸为输入的 1/32。例如,输入 512×256 的图像,输出特征图为 16×8×2048。该特征图既可用于目标检测(如 CenterNet 的 Center 点预测),也可通过上采样用于语义分割。实际部署时,可采用 TensorRT 进行 INT8 量化,将推理延迟从 15ms 降低至 5ms 左右,满足 30FPS 的实时性要求。

网络阶段输出尺寸通道数感受野主要作用
Conv1256×128647×7提取低级边缘、颜色特征
Conv2_x128×6425635×35提取纹理、局部形状
Conv3_x64×3251291×91提取部件级特征(车轮、车窗)
Conv4_x32×161024203×203提取物体级特征(车辆、行人)
Conv5_x16×82048427×427提取场景级语义(道路结构)

3.1.4 常见误区与总结复盘

误区一:认为网络越深越好。在自动驾驶中,过深的网络(如 ResNet-152)在嵌入式平台上推理延迟过高,且容易过拟合小规模驾驶数据集。建议优先采用 ResNet-34 或 MobileNetV3 作为骨干。

误区二:忽略 Batch Normalization 的作用。BN 层能加速收敛并提升泛化能力,但在推理阶段需将 BN 参数融合进卷积层,否则会引入额外延迟。

复盘要点:CNN 的核心优势在于通过局部连接和权值共享实现了参数高效的特征提取。在自动驾驶中,骨干网络的选择需在精度、延迟和功耗之间取得平衡。建议采用神经架构搜索(NAS)或轻量化设计(如 MobileNet、EfficientNet)来适配车载平台。

3.2 图像特征提取:从边缘到语义的层级化表征

3.2.1 核心原理:特征金字塔与多尺度融合

自动驾驶场景中,物体尺度差异巨大:近处行人可能占据 200×400 像素,而远处车辆仅 20×30 像素。单一尺度的特征图无法同时满足大物体和小物体的检测需求。特征金字塔网络(Feature Pyramid Network, FPN)通过自顶向下的路径和横向连接,将高层语义信息与低层空间细节融合,生成多尺度特征表示。具体而言,FPN 对骨干网络输出的 C2-C5 特征图进行 1×1 卷积降维,然后通过上采样和逐元素相加实现特征融合,最终输出 P2-P5 四个尺度的特征图,分别对应原图的 1/4、1/8、1/16、1/32 分辨率。

3.2.2 操作流程:特征提取的工程实现步骤

  1. 输入预处理:将图像 resize 到网络输入尺寸(如 512×256),并归一化到 [0,1] 区间。同时可进行数据增强(随机裁剪、颜色抖动、仿射变换)以提升泛化能力。
  2. 前向传播:将预处理后的图像输入骨干网络,逐层计算卷积、BN、ReLU 和池化操作,得到不同层级的特征图。
  3. 特征融合:采用 FPN 或 PANet 结构,将高层语义特征与低层空间特征融合,生成多尺度特征金字塔。
  4. 特征输出:根据下游任务需求,选择特定层级的特征图。例如,目标检测头通常使用 P3-P5 特征图,而语义分割头使用 P2 特征图。

3.2.3 案例拆解:车道线检测中的特征提取

以车道线检测为例,传统方法依赖 Canny 边缘检测和 Hough 变换,但在强光照、阴影、磨损车道线等场景下鲁棒性差。基于 CNN 的方法(如 LaneNet)首先利用骨干网络提取特征,然后通过 embedding 分支将每个像素映射到嵌入空间,使得同一车道线的像素距离近、不同车道线的像素距离远。具体实现中,输入 512×256 图像,经过 ENet 骨干网络提取特征后,得到 128×64×128 的特征图。该特征图同时输入分割分支(预测车道线/背景)和 embedding 分支(生成像素嵌入向量)。最终通过聚类算法(如 DBSCAN)将像素分组为不同车道线实例。该方案在 TuSimple 数据集上准确率可达 96% 以上,且推理延迟低于 20ms。

经验提示:在特征提取阶段,建议使用空洞卷积(Dilated Convolution)替代部分池化层,以在保持分辨率的同时扩大感受野。例如,将 ResNet 的 Conv5_x 阶段的 stride 从 2 改为 1,并采用 rate=2 的空洞卷积,可将特征图分辨率提升 2 倍,对检测小物体有明显帮助。

3.2.4 常见误区与总结复盘

误区:认为特征图分辨率越高越好。高分辨率特征图虽然保留了更多空间细节,但计算量呈平方级增长。在嵌入式平台上,需权衡分辨率与延迟。建议采用可变形卷积(Deformable Conv)来动态调整采样位置,以在不增加分辨率的情况下提升特征表达能力。

总结:图像特征提取是连接原始像素与高级语义的桥梁。在自动驾驶中,多尺度特征融合是应对尺度变化的关键手段。工程上需注意特征图的通道数、分辨率和计算量三者之间的平衡,并通过 TensorRT、ONNX Runtime 等推理引擎进行优化。

3.3 目标检测:从两阶段到单阶段的演进

3.3.1 核心原理:Anchor-based 与 Anchor-free 方法对比

目标检测的任务是定位图像中所有感兴趣物体的位置(2D 框)并分类。主流方法分为两阶段(Two-stage)和单阶段(One-stage)。两阶段方法(如 Faster R-CNN)首先生成候选区域(Region Proposal),然后对每个候选区域进行分类和回归,精度高但速度慢。单阶段方法(如 YOLO、SSD)直接在特征图上预测边界框和类别,速度快但精度略低。近年来,Anchor-free 方法(如 CenterNet、FCOS)摒弃了预定义的 Anchor 框,直接预测物体的中心点和尺寸,简化了训练流程并提升了泛化能力。

方法类型代表算法精度 (mAP@0.5)速度 (FPS)适用场景
两阶段Faster R-CNN78.515离线高精度感知
单阶段 Anchor-basedYOLOv572.365实时感知
单阶段 Anchor-freeCenterNet74.155实时感知+关键点
Transformer-basedDETR76.228端到端检测

3.3.2 判断方法:如何选择检测头?

在自动驾驶中,目标检测不仅需要输出 2D 框,还需要输出物体的朝向角(Yaw Angle)和速度,以支持后续的轨迹预测和决策规划。因此,检测头的设计需考虑以下因素:

  • 关键点预测:CenterNet 通过预测物体的中心点热力图(Heatmap)和中心点偏移(Offset)来定位物体,同时可额外预测 3D 框参数(如深度、尺寸、朝向)。
  • 多任务学习:在检测头中同时预测物体类别、2D 框、朝向角和速度,可共享特征提取器,减少计算开销。
  • 后处理复杂度:NMS(非极大值抑制)在密集场景下计算量较大,Anchor-free 方法可通过中心点距离判断去除冗余框,简化后处理。

3.3.3 案例拆解:基于 CenterNet 的 3D 目标检测

在自动驾驶中,3D 目标检测是核心技术之一。以 CenterNet 为基础,输入 512×256 的 RGB 图像,经过 DLA-34 骨干网络提取特征后,检测头输出三个分支:中心点热力图(类别数为 3:车辆、行人、骑行者)、中心点偏移(2 通道)、3D 属性(深度、尺寸、朝向角)。具体实现中,深度预测采用直接回归方式,输出为 1 通道的深度值;尺寸预测输出 3 通道(长、宽、高);朝向角预测采用 bin-based 方式,将 360° 划分为 6 个 bin,每个 bin 预测一个角度残差。在 nuScenes 数据集上,该方法的 mAP 可达 42.3%,推理延迟为 28ms(NVIDIA Orin 平台)。

关键参数:在训练时,中心点热力图采用高斯核生成,半径根据物体尺寸自适应调整。损失函数为 L = L_heat + λ1·L_offset + λ2·L_size + λ3·L_angle,其中 λ1=1, λ2=0.1, λ3=0.1。使用 Adam 优化器,初始学习率 1e-3,batch size 为 32。

3.3.4 常见误区与总结复盘

误区一:忽略小物体检测。在自动驾驶中,远处的小物体(如 50m 外的行人)往往只占 20×40 像素。建议在 FPN 的 P2 层(1/4 分辨率)上增加检测头,或使用高分辨率输入(如 1024×512)。

误区二:NMS 阈值设置不当。阈值过高会导致误检,过低会导致漏检。建议采用 Soft-NMS 或 IoU-aware NMS,并根据验证集进行调优。

总结:目标检测在自动驾驶中承担着障碍物感知的核心任务。Anchor-free 方法因其简洁性和灵活性正逐渐成为主流。工程上需注意多任务头的平衡、小物体检测的优化以及后处理的效率。

3.4 语义分割:像素级场景理解

3.4.1 核心原理:编码器-解码器架构与注意力机制

语义分割的目标是为图像中的每个像素分配一个语义类别标签,如道路、车道线、车辆、行人、建筑物等。在自动驾驶中,语义分割为可行驶区域检测、自由空间估计和车道线感知提供像素级依据。主流架构采用编码器-解码器(Encoder-Decoder)结构:编码器通过卷积和池化逐步降低分辨率并提取语义特征,解码器通过上采样和跳跃连接恢复空间分辨率。近年来,注意力机制(如 Self-Attention、Squeeze-and-Excitation)被引入以增强特征表达,例如 DANet 通过位置注意力和通道注意力捕捉全局上下文信息。

3.4.2 操作流程:语义分割模型的训练与部署

  1. 数据准备:使用标注工具(如 LabelMe、CVAT)对图像进行像素级标注,生成类别掩码(Mask)。自动驾驶数据集通常包含 20-30 个类别,需注意类别不平衡问题(如道路像素占比远大于行人)。
  2. 模型选择:根据精度和速度要求选择模型。轻量级模型(如 BiSeNetV2)在 512×256 输入下可达 60 FPS,而高精度模型(如 DeepLabV3+)可达 25 FPS。
  3. 损失函数:常用交叉熵损失,但需结合 Dice Loss 或 Focal Loss 处理类别不平衡。例如,L = 0.5·CE + 0.5·Dice。
  4. 推理优化:使用 TensorRT 进行 INT8 量化,可将推理延迟降低 40% 以上。同时可采用半精度(FP16)推理。

3.4.3 案例拆解:可行驶区域分割在泊车场景中的应用

在自动泊车场景中,车辆需要精确识别可行驶区域(Free Space)以避免碰撞。以 BiSeNetV2 为例,输入 512×256 的鱼眼图像,通过双分支结构(细节分支和语义分支)提取特征,最终输出 512×256×3 的分割结果(可行驶/障碍物/未知)。在训练阶段,使用 5000 张标注图像,采用 AdamW 优化器,初始学习率 5e-4,cosine 学习率衰减,训练 100 个 epoch。在验证集上,mIoU 达到 87.3%,推理延迟为 12ms(Jetson AGX Xavier)。部署时,将分割结果转换为二值可行驶区域图,并生成栅格地图供路径规划使用。

经验提示:在语义分割中,类别不平衡是常见问题。建议使用加权交叉熵损失,权重与类别频率成反比。同时,采用在线难例挖掘(OHEM)策略,聚焦于难以分类的像素(如车道线边缘、遮挡区域)。

3.4.4 常见误区与总结复盘

误区一:忽视边界精度。语义分割的边界往往模糊,导致可行驶区域边缘抖动。建议使用边界损失(Boundary Loss)或 CRF 后处理来细化边界。

误区二:在嵌入式平台上直接部署高分辨率模型。建议将输入分辨率控制在 512×256 以内,并采用模型剪枝和知识蒸馏技术压缩模型。

总结:语义分割为自动驾驶提供了稠密的像素级场景理解,是端到端模型中重要的中间表征。工程上需在精度、速度和内存占用之间取得平衡,并针对嵌入式平台进行专项优化。

3.5 目标检测与语义分割在端到端自动驾驶中的融合应用

3.5.1 核心原理:多任务学习与特征共享

在端到端自动驾驶中,目标检测和语义分割并非孤立任务,而是可以共享特征提取器,通过多任务学习(Multi-Task Learning)同时优化。这种设计不仅节省计算资源,还能通过任务间的相互约束提升泛化能力。例如,在行为克隆模型中,输入图像经过共享的 CNN 骨干网络提取特征后,分别送入检测头(输出障碍物框)和分割头(输出可行驶区域),然后将两者的输出拼接为中间表征,输入到策略网络(Policy Network)中,最终输出转向、油门和刹车控制信号。

3.5.2 判断方法:如何设计多任务损失函数?

多任务学习的核心是损失函数的设计。常见策略包括:

  • 加权求和:L_total = λ1·L_det + λ2·L_seg + λ3·L_ctrl,其中 λ 为各任务的权重。权重可通过网格搜索或不确定性加权(Uncertainty Weighting)自动学习。
  • 梯度归一化:当各任务梯度量级差异较大时,可采用 GradNorm 方法动态调整权重,避免某一任务主导训练。
  • 任务排序:在训练初期,先优化检测和分割任务,待特征提取器收敛后再优化控制任务,可提升稳定性。

3.5.3 案例拆解:基于多任务学习的端到端驾驶模型

以 NVIDIA 的 PilotNet 为基线,我们设计了一个多任务端到端模型。输入 512×256 图像,经过 ResNet-34 骨干网络提取特征后,分为三个分支:检测分支(预测车辆和行人的 2D 框)、分割分支(预测可行驶区域和车道线)、控制分支(预测转向角)。在训练阶段,使用 10 万帧标注数据,损失函数为 L = 0.3·L_det + 0.3·L_seg + 0.4·L_ctrl。在仿真环境 CARLA 中测试,该模型的驾驶成功率(不碰撞、不偏离车道)达到 92%,相比仅使用控制分支的模型提升了 7 个百分点。在实车测试中,该模型在园区道路上的平均接管间隔为 15 分钟,而基线模型仅为 8 分钟。

模型配置检测 mAP分割 mIoU驾驶成功率推理延迟
仅控制分支--85%18ms
检测+控制68.2-89%22ms
分割+控制-82.590%21ms
检测+分割+控制71.485.392%25ms

3.5.4 常见误区与总结复盘

误区一:认为多任务学习一定会提升性能。如果任务间存在冲突(如检测关注局部物体,分割关注全局区域),可能导致负迁移。建议通过任务相关性分析(如余弦相似度)评估任务间的关系。

误区二:忽略推理延迟的累积。多任务模型虽然共享骨干网络,但多个任务头仍会增加计算量。建议使用 TensorRT 的层融合技术,将多个任务头合并为单个引擎。

总结:目标检测与语义分割在端到端自动驾驶中扮演着互补的角色:检测提供稀疏的物体级信息,分割提供稠密的场景级信息。通过多任务学习,可以构建更鲁棒的视觉表征,从而提升驾驶决策的准确性和安全性。

本章核心要点回顾:

  • CNN 通过局部感受野、权值共享和空间下采样实现高效特征提取,是视觉感知的基石。
  • 特征金字塔(FPN)是多尺度目标检测的关键,需在分辨率与计算量之间权衡。
  • 目标检测从 Anchor-based 向 Anchor-free 演进,CenterNet 等算法在自动驾驶中应用广泛。
  • 语义分割提供像素级场景理解,编码器-解码器架构与注意力机制是主流方案。
  • 多任务学习通过共享特征提取器,将检测、分割与控制任务联合优化,是端到端自动驾驶的重要范式。