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 类损失,平滑项约束相邻帧预测一致性。权重 λ 需要根据任务优先级调节,否则网络会偏向容易收敛的分支。
三、优化器:从 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%。
把上述链路落到工程上,建议按以下顺序排查:先确认损失函数与任务匹配,再检查优化器学习率和权重衰减,然后看数据增强是否覆盖真实场景,最后用验证集和实飞日志共同判断是否过拟合。只有这五个部件协同工作,无人机视觉避障网络才能在复杂环境中稳定输出可靠决策。