4. 深度学习基础回顾

在无人机视觉避障任务中,我们面对的是连续视频流、快速运动目标和复杂光照环境。要让网络从原始像素中学会“哪里有障碍、距离多远、是否需要转向”,必须回到深度学习最核心的五个部件:卷积神经网络负责提取空间特征,反向传播负责把误差传回每一层,损失函数定义“什么是错”,优化器决定“如何改”,正则化则控制“别学过头”。本章把这五者串成一条可落地的工程链路。

一、卷积神经网络:从像素到避障特征

卷积神经网络(CNN)的核心是局部连接、权值共享和空间下采样。对无人机前视相机图像而言,浅层卷积核响应边缘、角点和纹理,中层组合成机翼、电线、树枝等局部结构,深层则形成“可通行区域”“近距障碍”“天空背景”等语义模式。一个典型的避障特征提取块可写成:

输入: 224×224×3 RGB
Conv 3×3, 32, stride=2, BN, ReLU   → 112×112×32
Conv 3×3, 64, stride=2, BN, ReLU   → 56×56×64
Conv 3×3, 128, stride=2, BN, ReLU  → 28×28×128
Conv 3×3, 256, stride=2, BN, ReLU  → 14×14×256
全局平均池化 → 256维特征 → 避障决策头

这里的关键工程参数是感受野与下采样倍率。若下采样过快,小障碍物在特征图上只剩几个像素,容易漏检;若下采样过慢,推理延迟会超过飞控控制周期。实际部署中常采用“浅层高分辨率、深层低分辨率”的金字塔结构,并在跳跃连接中保留细节。

二、反向传播与损失函数:误差如何变成梯度

反向传播本质是链式法则在计算图上的高效实现。前向传播得到预测值,损失函数计算标量误差,反向传播从输出层逐层求偏导,得到每个卷积核权重和偏置的梯度。以均方误差和交叉熵为例:

MSE:  L = (1/N) Σ (y_i - ŷ_i)^2
交叉熵: L = -(1/N) Σ [ y_i log(ŷ_i) + (1-y_i) log(1-ŷ_i) ]

在避障任务中,损失函数往往不是单一形式。若同时预测“障碍概率”和“距离回归”,常用多任务损失:L = λ1·L_cls + λ2·L_dist + λ3·L_smooth。分类分支用交叉熵,距离分支用 Smooth L1 或 IoU 类损失,平滑项约束相邻帧预测一致性。权重 λ 需要根据任务优先级调节,否则网络会偏向容易收敛的分支。

反向传播依赖自动微分框架(PyTorch/TensorFlow)完成。工程上要关注梯度消失与梯度爆炸:前者常见于深层 CNN 和 Sigmoid 激活,后者常由学习率过大或损失未归一化引起。

三、优化器:从 SGD 到 AdamW 的选择

优化器决定参数更新方向与步长。SGD 简单稳定但收敛慢;Momentum 引入历史梯度加速;Adam 自适应学习率,适合稀疏梯度;AdamW 将权重衰减与梯度更新解耦,在视觉任务中泛化更好。下表对比常用优化器在无人机避障训练中的适用场景:

优化器核心机制适用场景注意事项
SGD沿负梯度方向更新小数据集、需要精细调参收敛慢,对学习率敏感
SGD+Momentum累积历史梯度标准 CNN 分类/检测动量 0.9 常用
Adam一阶矩+二阶矩自适应稀疏特征、快速原型可能泛化略差
AdamW解耦权重衰减Transformer/现代 CNN权重衰减 0.01~0.05

典型训练配置如下:

optimizer = AdamW(model.parameters(), lr=1e-4, weight_decay=0.01)
scheduler = CosineAnnealingLR(optimizer, T_max=50, eta_min=1e-6)
for epoch in range(50):
    for images, labels in train_loader:
        pred = model(images)
        loss = criterion(pred, labels)
        optimizer.zero_grad()
        loss.backward()
        torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=5.0)
        optimizer.step()
    scheduler.step()

四、过拟合与正则化:让模型在真实飞行中稳住

无人机避障数据常存在“场景偏差”:训练集多为晴天校园,测试时遇到逆光、雨雾或动态行人,模型容易过拟合到背景纹理而非障碍本质。判断过拟合的典型信号是训练损失持续下降而验证损失回升。常用正则化手段包括:

  • 数据增强:随机裁剪、色彩抖动、运动模糊、模拟雨雾,提升光照与运动鲁棒性。
  • 权重衰减:L2 正则化抑制大权重,AdamW 中解耦实现更稳定。
  • Dropout:在全连接层或注意力层随机置零,防止特征共适应。
  • 早停:验证集损失连续多轮不降则停止,保留最佳权重。
  • BatchNorm:稳定分布,间接起正则作用,但小批量时需谨慎。
不要用测试集调参。避障任务中,验证集应包含与部署环境相近的逆光、低纹理、动态障碍片段,否则离线指标虚高,实飞时会出现“训练很好、飞行撞墙”的典型翻车。

五、案例:一个避障分类网络的训练复盘

某四旋翼项目使用 224×224 前视图像做三分类:左转、直行、右转。初始模型在训练集准确率 99%,验证集仅 78%。复盘发现:训练集背景单一,模型学会了“看天空颜色”而非障碍位置。改进措施包括:加入随机旋转与遮挡增强、将 Dropout 从 0.2 提到 0.5、使用 AdamW 并加入权重衰减、在验证集中加入逆光与树影样本。三轮迭代后验证准确率提升到 91%,实飞避障成功率从 72% 提升到 89%。

无人机视觉避障:CNN 训练与反向传播链路 前视图像 224×224×3 卷积特征提取 Conv+BN+ReLU 避障决策头 左转/直行/右转 损失函数 交叉熵+距离回归 优化器 AdamW 前向传播 反向传播:链式法则逐层求梯度 正则化 Dropout / 权重衰减 数据增强 / 早停 训练监控 训练损失 ↓ 验证损失 ↑ 预警 部署验证 逆光 / 雨雾 / 动态障碍 实飞避障成功率 过拟合 场景偏差 背景纹理依赖 工程闭环:训练 → 验证 → 正则化 → 实飞反馈 → 再训练 核心:CNN 提特征 · 反向传播传误差 · 损失定方向 · 优化器改参数 · 正则化防过拟合

把上述链路落到工程上,建议按以下顺序排查:先确认损失函数与任务匹配,再检查优化器学习率和权重衰减,然后看数据增强是否覆盖真实场景,最后用验证集和实飞日志共同判断是否过拟合。只有这五个部件协同工作,无人机视觉避障网络才能在复杂环境中稳定输出可靠决策。