ASFF Learning Spatial Fusion for Single-Shot Object Detection 论文学习

1. 解决了什么问题?

目标检测取得了显著成绩,但是检测不同尺度的目标仍然是一个挑战。金字塔或多层级特征是解决目标检测中尺度变化的常用手段。但对于单阶段目标检测器而言,各特征尺度之间不一致性制约了算法的表现。与图像金字塔相比,特征金字塔在各尺度间是不一致的,要用到启发式的特征选取策略:大目标通常与高层级特征图有关,而小目标则和低层级特征图有关系。当某层级的特征图上的目标被分配为正样本,其它层级特征图的相应区域就会被看作为背景。这种不一致性会对梯度计算造成影响,使特征金字塔的效力降低。

2. 提出了什么方法?

ASFF 解决单阶段目标检测器中特征金字塔存在的不一致性。ASFF 使网络学习过滤掉其它层级有冲突的信息,只保留有用的信息。对于某层级特征,首先整合其它层级的特征,缩放到相同大小的分辨率,然后进行训练,找到最佳的融合方案。在每个空间位置上,自适应地融合不同层级的特征。一些特征因为它们携带了冲突信息,就会被滤掉;另一些特征因为信息更具判别度则发挥更加重要的作用。

2.1 Baseline

采用了 YOLOv3 框架,包含了 DarkNet-53 主干网络,以及三个层级的 FPN。采用了诸多 tricks 来提升性能,如 mixup 数据增强、余弦退火学习率机制,以及 Sync-BN。此外,使用了一个 anchor-free 分支,与 anchor-based 分支协同训练。在原来的 smooth L1 损失基础上,增加了 IOU 损失函数,更好地进行边框回归。

2.2 ASFF

之前的方法使用 element-wise 求和或 concat 操作来整合多层级特征,本方法则自适应地学习各尺度特征图在融合时的空间权重。包括了两个步骤:恒等缩放、自适应融合。
在这里插入图片描述

2.2.1 特征缩放

将第 l ∈ { 1 , 2 , 3 } l\in\lbrace1,2,3\rbrace l{1,2,3}层级的特征记做 x l \mathbf{x}^l xl。对于层级 l l l,将其它层级 n ( n ≠ l ) n(n\neq l) n(n=l)的特征 x n \mathbf{x}^n xn缩放至与 x l \mathbf{x}^l xl相同的大小。因为 YOLOv3 三个层级的分辨率和通道数都不相同,因此要修改每个尺度的上采样和下采样策略。对于上采样,首先用一个 1 × 1 1\times 1 1×1卷积来压缩特征通道数,与层级 l l l通道数相等,然后通过插值增大分辨率。对于 1 / 2 1/2 1/2比率的下采样,使用步长为 2 2 2 3 × 3 3\times 3 3×3卷积层,同时调整通道数和分辨率(对于尺度比率为 1 / 4 1/4 1/4的情况,在步长为 2 2 2的卷积层前增加一个步长为 2 2 2的最大池化层)。

2.2.2 自适应融合

在由层级 n n n缩放到 l l l的特征图上,位置 ( i , j ) (i,j) (i,j)的特征向量记做 x i j n → l \mathbf{x}_{ij}^{n\rightarrow l} xijnl。融合相应层级 l l l的特征:
y i j l = α i j l ⋅ x i j 1 → l + β i j l ⋅ x i j 2 → l + γ i j l ⋅ x i j 3 → l \mathbf{y}_{ij}^l = \alpha_{ij}^l \cdot \mathbf{x}_{ij}^{1\rightarrow l} + \beta_{ij}^l \cdot \mathbf{x}_{ij}^{2\rightarrow l} + \gamma_{ij}^l \cdot \mathbf{x}_{ij}^{3\rightarrow l} yijl=αijlxij1l+βijlxij2l+γijlxij3l
y i j l \mathbf{y}_{ij}^l yijl是输出特征图 y l \mathbf{y}^l yl上第 ( i , j ) (i,j) (i,j)个向量。 α i j l , β i j l , γ i j l \alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l αijl,βijl,γijl是特征图上三个层级相对于层级 l l l的空间权重,由网络自适应地学习得到。 α i j l , β i j l , γ i j l \alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l αijl,βijl,γijl可以是简单的标量变量,在所有通道之间共享。要求 α i j l + β i j l + γ i j l = 1 \alpha_{ij}^l+\beta_{ij}^l+\gamma_{ij}^l=1 αijl+βijl+γijl=1 α i j l , β i j l , γ i j l ∈ [ 0 , 1 ] \alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l\in \left[0,1\right] αijl,βijl,γijl[0,1]
α i j l = e λ α i j l e λ α i j l + e λ β i j l + e λ γ i j l \alpha_{ij}^l=\frac{e^{\lambda_{\alpha_{ij}}^l}}{e^{\lambda_{\alpha_{ij}}^l}+e^{\lambda_{\beta_{ij}}^l}+e^{\lambda_{\gamma_{ij}}^l}} αijl=eλαijl+eλβijl+eλγijleλαijl

这里 α i j l , β i j l , γ i j l \alpha_{ij}^l,\beta_{ij}^l,\gamma_{ij}^l αijl,βijl,γijl用 softmax 函数计算, λ α i j l , λ β i j l , λ γ i j l \lambda_{\alpha_{ij}}^l,\lambda_{\beta_{ij}}^l,\lambda_{\gamma_{ij}}^l λαijl,λβijl,λγijl是控制参数。使用 1 × 1 1\times 1 1×1卷积层分别从 x 1 → l , x 2 → l , x 3 → l \mathbf{x}^{1\rightarrow l},\mathbf{x}^{2\rightarrow l},\mathbf{x}^{3\rightarrow l} x1l,x2l,x3l计算权重标量图 λ α i j l , λ β i j l , λ γ i j l \lambda_{\alpha_{ij}}^l,\lambda_{\beta_{ij}}^l,\lambda_{\gamma_{ij}}^l λαijl,λβijl,λγijl。因而可用反向传播学习。于是,各尺度层级的特征都可自适应地融合起来。然后用 { y 1 , y 2 , y 3 } \lbrace\mathbf{y}^1,\mathbf{y}^2,\mathbf{y}^3\rbrace {y1,y2,y3}用于 YOLOv3 后续的检测。

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

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

相关文章

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性

VMware Workstation 18 Tech Preview - 增强的 Windows 11 虚拟机安全性 VMware Workstation Tech Preview 2023 请访问原文链接:https://sysin.org/blog/vmware-workstation-18/,查看最新版。原创作品,转载请保留出处。 作者主页&#xf…

OpenAI的Function calling 和 LangChain的Search Agent

OpenAI的Function calling openai最近发布的gpt-3.5-turbo-0613 和 gpt-4-0613版本模型增加了function calling的功能,该功能通过定义功能函数,gpt通过分析问题和函数功能描述来决定是否调用函数,并且生成函数对应的入参。函数调用的功能可以…

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址:torch.nn — PyTorch 2.0 documentation 常用的:Sigmoid、ReLU、LeakyReLU等。 作用:为模型引入非线性特征,这样才能在训练过程中…

Java面试题总结记录(3)—— Spring篇

1、什么是Spring? Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对 构建J2EE平台的web应用。 Spring 框架目标是简化Java企业级应用开发,并通过 POJO为基础的编程 模型促进良好的编程习惯 2、你们项…

Socks5代理在爬虫与HTTP应用中的重要性

IP代理的类型及原理常见的IP代理类型有HTTP代理、Socks代理等,本文重点关注Socks5代理。Socks5代理是一种网络协议,可以实现传输层的数据转发,使客户端在不直接连接服务器的情况下与其进行通信。其原理在于接收客户端的请求,然后将…

数组和链表、栈和队列的区别

1.数组和链表的区别 数组和链表是两种不同的数据结构,它们在存储和访问数据上有很大的区别。 1. 存储方式: 数组是一种连续内存空间的数据结构,其元素在内存中是按顺序存储的,通过索引可以直接访问元素。链表是由若干个节点组成…

[k8s] command和args

k8s中的command和args可以覆盖docker镜像中的entrypoint和cmd。其中,k8s-command可以覆盖docker-entrypoint,k8s-args可以覆盖docker-cmd。参考Difference between Docker ENTRYPOINT and Kubernetes container spec COMMAND? 了解一下entrypoint的意义…

Spring 更简单的读取和存储对象

目录 1.存储 Bean 对象 1.1 前置⼯作:配置扫描路径 1.2 添加注解存储 Bean 对象 1.2.1 Controller(控制器存储) 1.2.2 Service(服务存储) 1.2.3 Repository(仓库存储) 1.2.4 Component&a…

Python学习 - Request库

学习和使用 引入 import requests基本语法 Request常用方法总结 responserequests.get(url,params,**kwargs) responserequests.post(url,params,**kwargs)参数含义url目标URL地址params请求发起携带的数据kwargs控制请求访问的参数,使用后可以加入到requests请…

C++---string

String C语言中的字符串和C中的string类标准库中的string类string类的常用接口string类对象的常见构造string类对象的容量操作string类对象的访问及遍历操作 C语言中的字符串和C中的string类 在C语言中,字符串是一个字符数组,它以空字符\0结尾&#xff…

【数据结构】朴素模式匹配 KMP算法

🎇【数据结构】朴素模式匹配 & KMP 算法🎇 🌈 自在飞花轻似梦,无边丝雨细如愁 🌈 🌟 正式开始学习数据结构啦~此专栏作为学习过程中的记录🌟 文章目录 🎇【数据结构】朴素模式匹配 & K…

【数据架构】Data Fabric 架构是实现数据管理和集成现代化的关键

D&A 领导者应该了解数据编织架构的关键支柱,以实现机器支持的数据集成。 在日益多样化、分布式和复杂的环境中,数据管理敏捷性已成为组织的任务关键优先事项。为了减少人为错误和总体成本,数据和分析 (D&A) 领导者需要超越传统的数据…

Java相关知识点

变量的生命周期:位于内层中的变量可以访问并修改外层变量的值 注意:子类中方法的访问权限 > 父类 ReultSet不是一个集合,而是在使用jdbc(java database connectivity) 返回的一个结果集 enty中提供有参构造时, 未提供空参构…

MyBatis操作数据库

1.MyBatis是什么? MyBatis 是⼀款优秀的持久层框架,它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了⼏乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接⼝和 Java POJO&#xf…

【机器学习】吃瓜教程 | 西瓜书 + 南瓜书 (1)

文章目录 一、绪论1、什么是机器学习?2、基本术语3、假设空间4、归纳偏好5、发展历程 二、模型评估与选择A、一种训练集一种算法2.1 经验误差 与 过拟合2.2 评估方法a) 留出法b) 交叉验证法c) 自助法d) 调参与最终模型 2.3 性能度量a) 错误率与精度b) 查准率、查全率…

matlab dot()函数求矩阵内积,三维 ,多维 详解

matlab dot()函数求矩阵内积,三维 ,多维 详解 Cdot(A,b,X),这个参数X 只能取1,或者2。1 表示按列,2表示按行,如果没有参数。默认按列。 1)按列优先计算 Cdot(A,B)dot(A,B,1)[a1*b1a4*b4 ,a2*b2a5*b5 ,a…

视频拼接得AI三维生成方案-开端(一)

想使用二维得图像生成三维得空间图像,英伟达有完整得方案,开源,但是三维拼接不一样,只需要二维,并且要实时,如何生成是我每天都在思考得东西。 cnn 提取特征器和自编码 在训练细胞神经网络时,问…

linux shell比较命令

1 比较运算 num1-eq num2 等于 [ 3 -eq $mynum ] num1-ne num2 不等于 [ 3 -ne $mynum ] num1-lt num2 小于 [ 3 -lt $mynum ] num1-le num2 小于或等于 [ 3 -le $mynum ] num1-gt num2 大于 [ 3 -gt $mynum ] num1-ge num2 大于或等于 [ 3 -ge $mynum ]。 filename1-nt filen…

linux上面修改u盘的名称

首先df-h显示文件系统磁盘空间使用情况 df -hFilesystem Size Used Avail Use% Mounted on /dev/sda1 39G 24G 13G 66% / tmpfs 990M 4.5M 986M 1% /dev/shm /dev/sda2 77G 62G 12G 85% /broncho /dev/s…

C++ PCL点云圆柱结构提取/立杆结构提取

目录 一、算法实现二、结果展示适用于圆柱体提取、立杆提取。 一、算法实现 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #in