2736 字
14 分钟
rm10月工作

RoboMaster自瞄视觉系统#

在RoboMaster竞赛中,自瞄系统的核心技术指标是检测速度与定位精度。许多方案止步于使用现有模型(如YOLO系列)进行训练,但这仅解决了目标“在哪里”的粗略问题。一个竞赛级的自瞄系统,必须是一个从数据处理、模型优化、轻量化部署到后端算法精密融合的完整工程体系。

本文将详细阐述一套自瞄系统的技术实现路径,剖析如何通过一系列环环相扣的优化策略,构建一个在复杂对抗环境中具备高精度和高鲁棒性的视觉解决方案。

第一部分:数据工程——基于主动学习的高效率数据集构建#

目标: 以最少的人工标注成本,构建一个包含高信息量样本(即模型难以正确识别的样本)的数据集。

核心方法:主动学习 (Active Learning)

技术原理: 主动学习的核心思想是,与其被动地、随机地标注海量数据,不如让模型主动识别出它最“不确定”的样本,由人工进行标注后,再将其用于下一轮训练。这种方式能显著提升数据标注的效率和价值。

执行流程:

  1. 初始数据集(Seed Set): 人工标注一个规模较小(例如:500-1000张)的初始数据集。该数据集需包含RoboMaster赛场上的基本元素,如不同光照、不同角度、不同背景下的各种机器人装甲板。标注采用One-Hot编码格式,即每个类别对应一个向量,其中只有正确类别的索引为1,其余为0。

  2. 不确定性采样(Uncertainty Sampling): 使用初始数据集训练一个轻量级的“采样模型”(如YOLOv5n)。然后,将此模型应用于一个庞大的未标注图像池,对每个检测到的目标进行预测。

  3. 不确定性量化——香农熵 (Shannon Entropy): 为了衡量模型对一个预测的“不确定度”,我们采用香non熵进行量化。模型对一个目标的分类输出是一个概率分布向量。

    • 低熵(高确定性): 如果模型非常确定目标是“3号英雄”,其输出概率分布会非常尖锐,例如 [0.01, 0.01, 0.97, ...]. 这样的样本熵值很低,说明模型对此类样本已有充分认识。
    • 高熵(高不确定性): 如果模型无法分辨目标,其输出概率会非常平均,例如 [0.15, 0.12, 0.18, ...]. 这样的样本熵值极高,代表了模型的知识盲区,是最高价值的待标注数据。
  4. 迭代优化循环:

    • 使用采样模型对所有未标注数据进行推理,计算每个预测框的香农熵。
    • 筛选出熵值最高的Top-K个样本。
    • 仅对这K个高价值样本进行人工标注。
    • 将这些新标注的样本并入训练集。
    • 使用更新后的数据集重新训练一个性能更强的模型,并重复以上步骤。

通过这一数据闭环,我们能够确保每一份标注资源都用在提升模型处理复杂、模糊场景的能力上。

第二部分:模型优化——针对细粒度识别的架构与训练策略#

目标: 训练一个精度尽可能高的“教师模型”,作为后续模型压缩的性能基准。

核心方法: 针对性网络调整、标签平滑、可解释性分析。

优化策略:

  1. 适配细粒度分类的网络结构调整: Robomaster的装甲板识别(如区分“3号”和“4号”)属于细粒度图像分类任务。这类任务的特点是类别间差异微小,关键信息体现在局部细节上。

    • 技术洞察: 对于细粒度任务,较高的输入分辨率比更深、更宽的网络结构更为关键。高分辨率能保留更多的纹理和细节信息,而过深的网络可能会在下采样过程中丢失这些关键信息。
    • 实施方案: 我们选择了一个中等规模的网络(如YOLOv5l/x),并减小其深度与宽度参数,同时显著增大了训练和推理的输入分辨率(例如从640x640提升至800x800)。这一调整在基本不增加模型GFLOPs(计算量)的前提下,显著提升了模型对装甲板数字和细节的辨识能力。
  2. 缓解过拟合与过自信:标签平滑 (Label Smoothing):

    • 问题: One-Hot编码(硬标签)会驱动模型产生一个极端的、非0即1的预测,导致模型过分相信自己的判断,在面对稍有不同的新数据时泛化能力下降。
    • 解决方案: 标签平滑将硬标签 [0, 1, 0] 软化为 [0.05, 0.9, 0.05] 这样的软标签。这在训练中引入了一种正则化效果,相当于告诉模型:“这个目标大概率是A,但不要完全排除它是B或C的可能性”。这使得模型学习到的决策边界更平滑,类间距离更大,提升了模型的泛化能力。
  3. 模型调试与可解释性:Grad-CAM:

    • 问题: 神经网络是一个“黑箱”,当模型做出错误判断时(例如,将英雄机器人识别为前哨站),我们难以定位问题根源。
    • 解决方案: 我们使用**Grad-CAM (梯度加权类激活映射)**技术来可视化模型的决策依据。Grad-CAM能生成热力图,显示出图像中哪些区域对模型的最终分类贡献最大。通过分析,我们发现模型有时会将“前哨站周边的墙体纹理”与“前哨站装甲板”错误关联,形成了“背景偏见”。这一发现直接指导了我们在数据集中补充更多具有挑战性背景的负样本。

第三部分:模型压缩——基于知识蒸馏的性能传承#

目标: 在不显著损失精度的情况下,将大型“教师模型”的能力迁移到一个能满足嵌入式设备实时推理速度的轻量级“学生模型”上。

核心方法:知识蒸馏 (Knowledge Distillation)

技术原理: 知识蒸馏的核心是让学生模型不仅学习训练数据的“标准答案”(硬标签),更要学习教师模型在推理时输出的“思考过程”(软标签)。教师模型的输出包含了它对不同类别之间相似度的理解,这种信息被称为“暗知识”。

我们的蒸馏方案:

  1. 标准蒸馏流程: 在训练学生模型(如YOLOv5n)时,其损失函数(Loss Function)由两部分组成:

    • 标准分类/回归损失: 学生模型与地面真实标签(Ground Truth)之间的差异。
    • 蒸馏损失: 学生模型的输出(软标签)与教师模型(YOLOv5x)的输出(软标签)之间的差异。
  2. 引入助教模型解决“代沟”: 当教师模型与学生模型之间的性能差距过大时(例如YOLOv5x与YOLOv5n),直接蒸馏的效果会受限。我们引入了助教蒸馏 (Teacher Assistant Distillation) 框架。

    • 执行链条: 教师(YOLOv5x) → 助教(YOLOv5m) → 学生(YOLOv5n)
    • 原理: 首先用教师模型蒸馏一个中等大小的助教模型,再用这个助教模型去蒸馏最终的学生模型。助教模型起到了“知识翻译官”的作用,将复杂的知识逐步简化,使学生模型能更有效地吸收。
  3. 特征级蒸馏: 为了达到更好的效果,我们采用了更先进的蒸馏算法。除了匹配最终的输出层,还强迫学生模型去模拟教师模型中间卷积层的特征图(Feature Map)。这意味着学生不仅要模仿老师的答案,还要模仿其“解题步骤”,从而更深层次地复现教师模型的行为。

第四部分:后端解算——传统视觉算法与深度学习的融合#

目标: 将神经网络输出的粗略边界框(Bounding Box)转化为用于弹道解算的、像素级精确的三维坐标。

核心方法: 结合多种传统图像处理技术对ROI(Region of Interest)进行精确定位。

融合方案:

  1. 鲁棒的灯条颜色识别: 在YOLO输出的装甲板ROI内,我们并行使用两种方法提取灯条:

    • HSV颜色空间阈值分割: 在近距离、光照良好的情况下,能够精确地分离出特定颜色的像素。
    • RGB通道相减法: 例如,(蓝色通道值 - 红色通道值)可以有效放大蓝色灯条与背景的对比度,在远距离或有颜色干扰时表现更稳定。
    • 系统会根据目标距离等参数,动态选择或融合两种方法的结果,以提高鲁棒性。
  2. 抗高光干扰的特征点提取——灰度重心法:

    • 问题: 装甲板灯条的高亮部分常常出现过曝(像素值达到255),导致传统的轮廓提取或角点检测算法因边缘模糊而失效。
    • 解决方案: 我们不寻找灯条的几何边缘,而是计算灯条ROI内所有像素的灰度重心。具体来说,就是以每个像素的灰度值作为其坐标的权重,计算加权平均坐标。这个“亮度中心点”对于高光溢出不敏感,能够提供极其稳定的2D特征点。
  3. PnP三维姿态解算: 将通过灰度重心法获得的稳定2D特征点,结合装甲板的实际物理尺寸(3D模型),输入到PnP (Perspective-n-Point) 算法中,即可精确解算出目标装甲板在相机坐标系下的三维位置和姿态,为后续的弹道预测提供精确输入。

结论#

本自瞄系统是一个深度整合的工程解决方案。它始于主动学习驱动的数据高效迭代,通过对网络结构和训练策略的细粒度优化打造了强大的教师模型,再经由多级知识蒸馏将能力无损迁移至轻量化模型,最终通过融合传统视觉算法对神经网络的输出进行精密后处理。整个链路证明,系统的综合性能取决于每个环节的技术深度与协同,远超单一追求模型评价指标(如mAP)所能达到的高度。

rm10月工作
https://chr0mium.link/posts/rm-oct-task/
作者
Cr
发布于
2025-09-13
许可协议
CC BY-NC-SA 4.0