目标检测:Generalized Focal Loss V2(CVPR2020)

GFLv2提出了一种新的回归质量评估方法,通过分析离散概率分布的平滑度来衡量边界框的可靠性。该方法可以提高非极大抑制(NMS)阶段的选择准确性。

Generalized Focal Loss V2: Learning Reliable Localization Quality Estimation for Dense Object Detection
CCF-A
Xiang LiWenhai WangXiaolin HuJun LiJinhui TangJian Yang
computer vision and pattern recognition arXiv: Computer Vision and Pattern Recognition Nov 2020

基于GFL v1

很显然,这篇文章书接上回
作者在v1中提出了GFL(包含优化带分类任务的QFL和优化回归任务的DFL),其回归任务是基于离散概率分布估计做的,很是巧妙。在v2中,作者基于v1中回归任务的离散概率分布估计,对回归任务进行质量评估,以帮助NMS时保留到回归质量最好的边界框。其直观的原理是这样的:估计的离散概率分布越平滑,那不确定性越高,网络对得到的框的质量是表示怀疑的,概率分布越尖锐,表示确定性很高,网络很笃定回归得到的边界框。

GFL v2的具体实现

作者在文中说,在NMS是所用的排位分数J可以按下式分解:
J = C × I
C代表分类分数向量,I代表回归质量,是一个标量(估计的当前预测框与gt框的IoU),这样J就是分类与回归质量的联合表征。

我们直接看它怎么具体实现的,首先上网络检测头的结构图:
在这里插入图片描述
回归分支得到了4个离散概率分布P,在每一个p中,取最高的k个概率值(Top-k),以及这k个概率值的均值,
得到H×W×4×(k+1)特征,文中k取4,那么就得到了H×W×20大小的特征F,然后按照FC,ReLU,FC,Sigmoid的顺序进行特征提取,中间隐藏层的通道数设置为了64,最终得到一个标量I,与分类向量C进行相乘,得到具有回归质量感知的分类结果J。
在这里插入图片描述
如上图,使用均值对P分布的相对偏移不敏感,其实也可以使用方差等,但效果没均值好。

训练还是和v1同样的策略,分类和回归两个分支分别使用QFL和DFL损失。

GFL进行回归质量评估的路子与前述工作很不一样,这算是最大的创新点,实现的细节还是很简单和轻量化的,这也让其在训练和推理时只会占用很少的计算资源,并且作为一个附加的模块可以很方便地应用到现有的检测器上。

我的感受:

目标检测刚开始是分类和回归不解耦的,即基于同一个支路的特征进行两个任务的实现,之后发展到解耦头,性能提升,但到了现在,如VarfocalNet,GFL这些文章,又是在积极探寻分类与回归之间的关联性,以帮助NMS拿到更准确的分数排位。

Generalized Focal Loss V2 (GFLV2) 是一种用于密集目标检测的新型方法,其核心思想是通过边界框分布的统计数据来学习可靠的定位质量估计。这种方法在概念上是有效的,因为分布信息与真实的定位质量高度相关。GFLV2利用这些分布特征来进行定位质量估计,从而提高了检测的准确性和效率[^2]。 ### 原理 GFLV2的核心在于其损失函数的设计,该损失函数结合了分类损失和定位损失。具体来说,GFLV2引入了一种新的定位质量估计机制,该机制基于边界框的分布统计数据。这种方法不仅考虑了每个预测框的位置信息,还考虑了其在整个数据集中的分布情况,从而提高了定位的准确性。 在GFLV2中,定位质量估计的质量直接影响最终的检测性能。为了实现这一目标,GFLV2采用了以下策略: 1. **边界框分布统计**:通过对训练数据中的边界框进行统计分析,提取出与定位质量高度相关的特征。 2. **质量估计网络**:设计了一个专门的子网络来估计每个预测框的质量。这个子网络的输入包括预测框的位置信息和从边界框分布统计中提取的特征。 3. **联合优化**:在训练过程中,同时优化分类损失和定位损失,确保模型能够同时学习到高质量的分类和定位结果。 ### 定位质量估计 在GFLV2中,定位质量估计是一个关键步骤。它通过分析边界框的分布统计数据来估计每个预测框的质量。这种估计方法不仅考虑了单个预测框的位置信息,还考虑了其在整个数据集中的分布情况,从而提高了定位的可靠性。 ### 密集目标检测 GFLV2在密集目标检测中的应用表现出色。通过在COCO数据集上的大量实验和分析,验证了GFLV2的有效性、兼容性和效率。具体来说,GFLV2在多个评估指标上均取得了优异的成绩,证明了其在实际应用中的潜力。 ### 示例代码 以下是一个简化的GFLV2模型的伪代码示例,展示了如何实现基本的定位质量估计: ```python class GFLV2: def __init__(self, num_classes): self.num_classes = num_classes # 初始化分类和定位子网络 self.classification_subnet = ClassificationSubnet() self.localization_subnet = LocalizationSubnet() self.quality_estimation_subnet = QualityEstimationSubnet() def forward(self, x): # 前向传播 class_logits = self.classification_subnet(x) box_regression = self.localization_subnet(x) quality_scores = self.quality_estimation_subnet(box_regression) return class_logits, box_regression, quality_scores def loss(self, predictions, targets): # 计算分类损失 classification_loss = focal_loss(predictions['class_logits'], targets['labels']) # 计算定位损失 localization_loss = smooth_l1_loss(predictions['box_regression'], targets['boxes']) # 计算质量估计损失 quality_loss = quality_estimation_loss(predictions['quality_scores'], targets['quality']) # 总损失 total_loss = classification_loss + localization_loss + quality_loss return total_loss ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值