ASFF

ASFF:自适应特征融合方式

ASFF来自论文:《Learning Spatial Fusion for Single-Shot Object Detection》,也就是著名的yolov3-asff。

金字塔特征表示法(FPN)是解决目标检测尺度变化挑战的常用方法。但是,对于基于FPN的单级检测器来说,不同特征尺度之间的不一致是其主要限制。因此这篇论文提出了一种新的数据驱动的金字塔特征融合方式,称之为自适应空间特征融合(ASFF)。它学习了在空间上过滤冲突信息以抑制梯度反传的时候不一致的方法,从而改善了特征的比例不变性,并且推理开销降低。借助ASFF策略和可靠的YOLOV3 BaseLine,在COCO数据集上实现了45FPS/42.4%AP以及29FPS/43.9%AP。

ASFF简要思想就是:原来的FPN add方式现在变成了add基础上多了一个可学习系数,该参数是自动学习的,可以实现自适应融合效果,类似于全连接参数。

以ASFF-3为例,图中的绿色框描述了如何将特征进行融合,其中X1,X2,X3分别为来自level,level2,level3的特征,与为来自不同层的特征乘上权重参数α3,β3和γ3并相加,就能得到新的融合特征ASFF-3,如下面公式所示:

因为采用相加的方式,所以需要相加时的level1~3层输出的特征大小相同,且通道数也要相同,需要对不同层的feature做upsample或downsample并调整通道数。对于需要upsample的层,比如想得到ASFF3,需要将level1调整至和level3尺寸一致,采用的方式是先通过1×1卷积调整到与level3通道数一致,再用插值的方式resize到相同大小;而对于需要downsample的层,比如想得到ASFF1,此时对于level2到level1只需要用一个3×3,stride=2的卷积就可以了,如果是level3到level1则需要在3×3卷积的基础上再加一个stride=2的maxpooling,这样就能调整level3和level1尺寸一致。

对于权重参数α,β和γ,则是通过resize后的level1~level3的特征图经过1×1的卷积得到的。并且参数α,β和γ经过concat之后通过softmax使得他们的范围都在[0,1]内并且和为1:

具体步骤可以概况为:

1、首先对于第l级特征图输出cxhxw,对其余特征图进行上下采样操作,得到同样大小和channel的特征图,方便后续融合

2、对处理后的3个层级特征图输出,输入到1x1xn的卷积中(n是预先设定的),得到3个空间权重向量,每个大小是nxhxw

3、然后通道方向拼接得到3nxhxw的权重融合图

4、为了得到通道为3的权重图,对上述特征图采用1x1x3的卷积,得到3xhxw的权重向量

5、在通道方向softmax操作,进行归一化,将3个向量乘加到3个特征图上面,得到融合后的cxhxw特征图

6、采用3x3卷积得到输出通道为256的预测输出层

为什么ASFF有效?

文章通过梯度和反向传播来解释为什么ASFF会有效。首先以最基本的YOLOv3为例,加入FPN后通过链式法则我们知道在backward的时候梯度是这样计算的:

其中因为不同尺度的层之间的尺度变换无非就是up-sampling或者down-sampling,因此

这一项通常为固定值,为了简化表达式我们可以设置为1,,则上面的式子变成了:

进一步的,

这一项相当于对输出特征的activation操作,其导数也将为固定值,同理,我们可以将他们的值简化为1,则表达式进一步简化成了:

假设level1(i,j)对应位置feature map上刚好有物体并且为正样本,那其他level上对应(i,j)位置上可能刚好为负样本,这样反传过程中梯度既包含了正样本又包含了负样本,这种不连续性会对梯度结果造成干扰,并且降低训练的效率。而通过ASFF的方式,反传的梯度表达式就变成了:

可以通过权重参数来控制,比如刚才那种情况,另α2和α3=0,则负样本的梯度不会结果造成干扰。另外这也解释了为什么特征融合的权重参数来源于输出特征+卷积,因为融合的权重参数和特征是息息相关的。

### YOLOv8 使用指南和教程 #### 官方使用指南概述 YOLOv8 的官方文档提供了详细的安装、配置以及使用的说明。对于初次使用者来说,建议先阅读官方提供的快速入门部分,这部分涵盖了环境搭建到模型训练的基础流程[^1]。 #### 训练过程详解 在准备数据集之后,可以按照官方给出的数据预处理方法来转换自己的数据格式以适应框架的要求。接着通过调整配置文件中的参数设置完成自定义需求下的网络架构构建与优化选项指定。最后利用命令行工具启动训练任务,在此期间还可以借助可视化平台监控损失函数变化趋势从而及时发现潜在问题并作出相应调整。 #### 验证与评估 当训练完成后,为了检验模型性能是否达到预期效果,则需执行验证步骤。这通常涉及到加载已保存的最佳权重文件,并运行测试脚本来计算各类指标得分如mAP(mean Average Precision),以此作为衡量标准之一判断当前版本的好坏程度;另外也可以观察一些具体案例图片上的标注框位置准确性来进行直观感受。 #### 模型预测功能展示 一旦确认了满意的检测器版本后就可以将其应用于实际场景当中去做实时物体识别工作了。此时只需调用相应的推理接口传入待测图像即可获得输出结果——即各个类别对应的边界框坐标及其置信度分数列表形式返回给用户端进一步处理分析之用。 ```python from ultralytics import YOLO model = YOLO('path/to/best.pt') # 加载最优模型 results = model.predict(source='0', conf=0.25, iou=0.45) # 进行预测操作 for r in results: boxes = r.boxes.cpu().numpy() print(boxes) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值