YOLOv9(3):YOLOv9损失(Loss)计算

1. 写在前面

YOLOv9的Loss计算与YOLOv8如出一辙,仅存在略微的差异。多说一句,数据的预处理和导入方式都是一样的。因此如果你已经对YOLOv8了解的比较透彻,那么对于YOLOv9你也只是需要多关注网络结构就可以。

YOLOv9本身也是Anchor-Free的,同样采用了解耦头。因此其损失计算的关键同样在于“对齐”,即通过TAL方法实现Ground Truth与Pred grid中的Cell进行对齐,然后计算Loss。

2. TAL

当前,基于CNN的目标检测算法基本都是在网络的后期阶段从特征图(Feature Map)中利用检测头进行分类和回归。YOLO系列也都遵循这个法则。

不同于早期的YOLOv3、TOLOv5等网络,YOLOX、YOLOv8以及本篇YOLOv9均采用了解耦检测头(Decoupled-Head),即将分类和回归视作两个独立的分支。

对Decoupled-Head类型的算法基本都有这么一种观念,就是不同任务间,用于分类和定位的Anchor(或乘坐Cell,指分类和回归前的特征图中的一个单元)往往不一致,需要经过对齐操作。所谓对齐,简单来看就是计算Loss时,将分类与回归所使用的预测Cell进行统一化。

TAL(Task Align Learning),最早出现在论文Task-aligned One-stage Object Detection中。改论文提供一种思想,即通过构建一种“对齐度量”,来统一分类和回归的Anchor,进而实现最终在推理时,获得一个更高得分的分类框以及更准确的定位框系数。

更通俗地讲,TAL就是给Feature Map中的每一个Cell(或称作Anchor)分配Ground Truth框。在这种前提下,有的Cell能够分配到Ground Truth框,有的Cell分配不到GT框。根据Feature Map与GT的分配情况,构建用于Loss计算的target_labels、target_bboxes和target_scores。

TAL的关键是构建一个对齐度量Align Metric,对齐度量的计算包含两个部分,首先是构建每个GT对应每个Cell的分类得分矩阵(张量)s,然后构建GT框与预测框的两两IOU(CIOU)u。之后通过如下计算,获得对应的对齐矩阵(Tensor),是为Align Metric。

Align Metric = s^{^{\alpha }}*u^{\beta }

其中s的获得依赖于预测的分类置信度信息,IOU信息依赖于GT与预测边框信息。二者结合,获得对齐度量矩阵。

3. 选取Cell

从早期的YOLO系列我们可知,并不是Feature Map上所有的Cell都参与计算Loss,因此选取哪些Cell参与计算也是关键的一环。

YOLOv9中,选取的是中心点落在GT框内的Cell参与Loss的计算。如下如所示,所有中心点位于GT框(蓝色)区域内的Cell(黄色标注)均参与计算Loss。

4. topK及二次筛选

标记与某个GT相匹配的Cell,获得shape(bs, n_max_boxes, num_total_anchors)的Tensor,标记的是用于预测某一个GT的Cell。如果某一个Cell参与预测某一个GT,那么该Cell的位置上被置1,否则置0。

需要注意的是,一个Cell只能用于预测一个GT。

官方代码工程中的select_topk_candidates函数即是完成这个任务。

之后经过IOU最大筛选后,会获得每一个Cell所匹配的GT情况。

5. 部分源代码解读

源代码中,比较难理解的就是TAL中计算对齐度量的部分,即如何获得表征GT与Pred之间的对齐关系Align Metric。

(1)get_box_metrics

该函数式TAL的关键,通过该函数我们将获得两个用于对齐的关系矩阵(Tensor),分别是align_metric和overlaps。前者表示每一个GT与每一个Cell(对应网络输出的Feature Map)的匹配得分,overlaps则时GT与Cell的IOU(CIOU)。

我们通过如下计算方式获得align_metric。

align_metric = bbox.scores^{\alpha } * overlaps^{\beta}

这里的align_metric是一个对于预测的边界框和真实边界框进行对齐评估的度量。

这里:

bbox_scores代表边界框的得分,通常反映了模型对于其包含目标的置信度。

overlaps代表预测边界框与真实边界框之间的重叠度,常用IoU(Intersection over Union)来衡量。

self.alpha和self.beta是控制bbox_scores和overlaps在对齐度量中权重的超参数。

通过将边界框得分和重叠度的权重组合,align_metric提供了一个综合指标,用于评估预测边界框的质量。具体来说:

当alpha较大时,模型更重视边界框得分,即模型对自身预测的置信度。

当beta较大时,模型更重视与真实边界框的重叠度,即预测的准确性。

(2)select_candidates_in_gts

收集和标记那些中心点位于GT内的Cell。

我们需要知道,YOLOv9和YOLOv8类似,网络推导出来的是预测框的左上和右下相对于Cell中心点的距离(这一点与YOLOv3、YOLOv5不同)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中的事件模型(详细案例代码)

文章目录 一、事件与事件流二、事件模型原始事件模型特性 标准事件模型特性 IE事件模型 一、事件与事件流 javascript中的事件,可以理解就是在HTML文档或者浏览器中发生的一种交互操作,使得网页具备互动性, 常见的有加载事件、鼠标事件、自定…

react中JSX的详解

目录 JSX的本质及其与JavaScript的关系探究 一、JSX的本质 二、JSX与JavaScript的关系 三、为什么要使用JSX 四、不使用JSX的后果 五、JSX背后的功能模块 JSX的本质及其与JavaScript的关系探究 在React开发中,JSX是一个不可或缺的部分。那么,JSX的…

SQLiteC/C++接口详细介绍之sqlite3类(四)

快速跳转文章列表:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(三) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(五) 编写不易,有用的朋友点个赞或加粉一下万分感…

图片和PDF 加水印去水印

图片和PDF 加水印去水印 前要1. 图片加水印1.1 方法11.2 方法2 2. 图片去水印3. pdf 加水印4. pdf 去水印 前要 网上查了很多资料, 汇总了几个不错的代码, 顺便做个笔记 1. 图片加水印 1.1 方法1 简单方便, 后也好处理 # -*- coding:utf-8 -*- import os from PIL import…

力扣由浅至深 每日一题.06 删除有序数组中的重复项

希望我们都能对抗生活的苦难,在乌云周围突破阴霾积极的生活 —— 24.3.16 删除有序数组中的重复项 提示 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元…

【阿里云系列】-基于云效构建部署NodeJS项目到ACK

准备工作 01、编写Dockerfile文件可以根据不同的环境,新建不同的Dockerfile文件,比如Dockerfile-PROD # Deliver the dist folder with NginxFROM nginx:stable-alpine ENV LANGC.UTF-8 ENV TZAsia/ShanghaiCOPY dist/ /usr/share/nginx/html COPY ngi…

深度强化学习01

Random variable Probability Density Function 学习视频 这绝对是我看过最好的深度强化学习!从入门到实战,7小时内干货不断!_哔哩哔哩_bilibili

202112青少年软件编程(Scratch图形化)等级考试试卷(二级)

第1题:【 单选题】 默认小猫角色, 初始位置在舞台中间, 面向 90 方向, 点击一次绿旗, 下列说法正确的是? ( ) A:程序结束后, 看不到任何图形 B:会画出一条虚线 C:会画出一条实线, 且线条粗细一直不变 D:随着角色的移动, 线条越来越粗 【正确答案】: D 【试题解…

行业突破!四信实现低延时摄像头弱网状态100ms以内实时传输

随着人工智能、大数据、区块链等技术在城市中快速发展,人们日常生活中已经离不开网络的支撑,而实现“人与人”、“人与物”及“物与物”之间高速连接应用的“时延”,是网络支撑中最重要的存在。 以城市生活例子为例,当网络延时出现…

空间计算综合指南

空间计算(spatial computing)是指使人类能够在三维空间中与计算机交互的一组技术。 该保护伞下的技术包括增强现实(AR)和虚拟现实(VR)。 这本综合指南将介绍有关空间计算所需了解的一切。 你将了解 AR、VR…

【四 (1)数据可视化之如何选用正确的图表】

目录 文章导航一、数据分析中可视化的作用1、揭示数据关联和模式2、支持数据分析和决策3、提升沟通和共享效果4、强调关键信息和发现5、增强故事叙述和记忆效果6、有效增强数据交互性数据7、复杂信息易理解8、数据多维度显示 二、如何选用合适的图表1、简洁性避免使用过于复杂或…

微服务day01 -- SpringCloud01 -- (Eureka , Ribbon , Nacos)

介绍微服务 1.认识微服务(p1-p5) 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构&#…