当前位置: 首页 > ds >正文

YOLOv7细节解读

  1. RepVGG 推理加速
    • 背景与动机:在模型的骨干网络(backbone)优化中,VGG 因结构简单,在显存利用上有优势(单一路径,仅需一倍显存),但被多分支结构的 ResNet 超越。然而,ResNet 的多分支结构存在速度和显存方面的劣势,如分支间需相互等待和数据相加,导致显存翻倍。RepVGG 旨在通过重参数化技术,提升推理速度并节省显存。 

    • 实现原理
      • 卷积和 BN 合并:对一个 batch 的数据进行归一化操作,将 BN 的计算转化为类似卷积的形式,以便与卷积合并。通过特定公式,将归一化后的结果表示为一个 11C 的卷积(wx + b),进而更新卷积核和偏置,实现卷积和 BN 的合并。
      • 转 3*3 卷积:将多分支、不同卷积核以及带 BN 的结构全部转换为 3×3 的卷积。以 ResNet 残差链接转换为例,将其转换为 3×3 卷积的形式,最终实现整体结构的统一。
  2. 正样本分配策略
    • 核心思想:依据 GT(Ground Truth)的中心点在特征图上的落点来确定正样本,即该落点附近的 anchor 被认定为正样本。为增加正样本数量,采用 “threeble - kill” 策略9。
    • 筛选过程
      • 初筛:基于长宽差异,要求 gt 与 anchor 的长宽比例处于 0.25 - 4 之间10。
      • 计算 IOU:计算候选框与 GT 之间的 IOU,得到一个 [正样本数量,候选框数量] 的矩阵。例如,当输入 3 个正样本和 13 个候选框时,会得到 [3, 13] 的 IOU 矩阵。之后通过 TOPK 操作,选取 IOU 较大的前几个候选框(通常为 10 个,若不足则取实际数量),得到新的矩阵,如 [3, 10] 矩阵。
      • 计算类别预测损失并二次筛选:计算类别预测损失,综合损失排名进行第二次筛选,确保每个 GT 至少有一个对应的候选框。同时,处理可能出现的一个候选框对应多个 GT 的情况,选择损失最小的匹配。
  3. 预测相关内容
    • 预测结果形式:不同版本的 YOLO 在预测框的计算方式上有所不同。V3V4 的预测结果中,bw​=pw​etw​ ,bh​=ph​eth​ ;V5V7 的预测结果为bw​=pw​(2σ(tw​))2 ,bh​=ph​(2σ(th​))2 。这些计算方式与正样本筛选时的 4 倍数字范围存在关联。
    • 预测值套 sigmoid 的原因:V3 不使用 sigmoid 时会出现梯度爆炸问题,V5 通过平方将取值范围限制在 0 - 4,这与选正样本时的倍率范围(0.25 - 4)相契合,避免了倍率差异过大的问题。
  4. AUX 辅助输出:输入图像大小为 1280,经下采样后实际输入为 640。模型设有 4 个输出层,每层 3 个 anchor,带辅助输出后共 8 个输出层。辅助头在选择正样本时依赖主头的预测结果,为提高召回率,选择周围 5 个区域,将偏移量由 0.5 调整为 1。
  5. 物体检测评估指标
    • 基础指标 IOU:IOU 用于衡量 GT 与预测框之间的差异,是后续所有评估指标的基础,其计算方式为交集面积除以并集面积。
    • TP、FP、FN 的定义
      • TP(True Positive):需同时满足置信度和 IOU 都达到阈值的条件,意味着预测框与 GT 相似且预测为物体的可能性高。
      • FP(False Positive):满足置信度阈值但 IOU 不够,或者前两者满足但最终预测的类别与实际不同。
      • FN(False Negative):存在 GT,但没有满足条件的预测框,即 GT 未被检测到。
      • TN(True Negative):文档中提及在计算相关指标时通常不需要该指标,它表示将背景正确识别为背景的情况。
    • PR 曲线与 AP 计算
      • PR 曲线绘制:以 7 张测试图像数据为例,在 IOU 默认满足 0.5 的条件下,首先确定哪些预测框是 TP,哪些是 FP。将预测框按照置信度排序,同一 GT 只能匹配一个预测框且选择置信度大的作为 TP。计算不同预测框的 Precision(精度)和 Recall(召回率),公式分别为 Precision = TP / (TP + FP),Recall = TP / (TP + FN) 。将这些值绘制曲线,该曲线展示了模型在精度和召回率之间的权衡关系,通常两者难以同时达到最优 。
      • AP 计算
        • VOC 中的计算方法(11 点插值法):计算 PR 曲线与坐标轴围成的面积。在召回率为 0, 0.1, ..., 1 这 11 个点处进行插值计算,公式为AP=111​∑r∈(0,0.1,...,1)​pinterp(r)​,即计算不同召回率下对应精度的平均值。例如,通过计算得到 AP = 0.2683。
        • COCO 中的计算方法:相比 VOC 更为科学,不再仅采用 0.5 这一阈值,而是从 0.5 到 0.95,间隔 0.05,共 10 个阈值。计算这 10 个阈值下的平均 AP(AP@[0.5:0.05:0.95]) 。同时,COCO 还会对不同大小的物体(小物体 area<32² 、中等物体 32²<area<96² 、大物体 area>96² )分别计算 AP,从而更全面地评估模型在不同尺度物体检测上的性能 。
http://www.xdnf.cn/news/3904.html

相关文章:

  • Go语言实现Kafka消息队列
  • NaVILA: Legged Robot Vision-Language-ActionModel for Navigation
  • PHP的include和require
  • FGMRES(Flexible Generalized Minimal Residual)方法
  • 系统思考:核心价值与竞争力
  • 永磁同步电机控制算法--基于PI的位置伺服控制
  • C# 方法(返回值、返回语句和void方法)
  • 微服务框架选型
  • SpringMVC——第三章:获取请求数据
  • React--》掌握react构建拖拽交互的技巧
  • Linux ACPI - ACPI系统描述表架构(2)
  • 【Redis】Redis常用命令
  • 软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用
  • 蓝桥杯15届国赛 合法密码
  • 嵌入式系统基础知识
  • 【Hive入门】Hive与Spark SQL集成:混合计算实践指南
  • python使用cv2在图片上标点
  • Python语句类型与格式规范研究
  • RT-Thread studio的驱动5.1.0报错修改
  • c++学习
  • 算法笔记。质数筛算法
  • 一种实波束前视扫描雷达目标二维定位方法——论文阅读
  • 短信登录功能实现(黑马点评)
  • 高中数学联赛模拟试题精选学数学系列第6套几何题
  • QT —— QWidget(1)
  • 白皮解读:数据流通关键技术白皮书【附全文阅读】
  • MNN 支持 DeepSeekVL
  • shell入门
  • 通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】
  • 驱动总裁v2.19(含离线版)驱动工具软件下载及安装教程