论文阅读笔记:Adaptive Rotated Convolution for Rotated Object Detection

论文阅读笔记:Adaptive Rotated Convolution for Rotated Object Detection

  • 1 背景
    • 1.1 问题
    • 1.2 提出的方法
  • 2 创新点
  • 3 方法
  • 4 模块
    • 4.1 旋转卷积核
    • 4.2 路由函数
    • 4.3 自适应旋转卷积模块
  • 5 效果
    • 5.1 与SOTA方法对比
    • 5.2 消融实验

论文:https://arxiv.org/pdf/2303.07820v2.pdf
代码:https://github.com/LeapLabTHU/ARC

1 背景

1.1 问题

近年来在旋转目标检测方面,各种旋转对象表示以及和这些表示对应的损失函数、旋转ROI提取、标签分配策略、网络的neck和head以及旋转RPN等方面都被提出并研究,但在设计合适的backbone方面也很少有人提及。

由于不同图像中的目标朝向不同,同一图像中的不同目标朝向也不同,在传统的视觉骨干设计中大多忽略了这两点,因此标准骨干模型的架构可能是次优的。

1.2 提出的方法

本文提出了一个简单而有效的自适应旋转卷积(ARC)模块来解决上面提到的问题。在该模块中,卷积核自适应的旋转以调整在每个输入条件下的参数,如图1所示,其中旋转角度由路由函数以数据依赖的方式进行预测。

在这里插入图片描述

此外,作者还采用了一种有效的条件计算技术,使检测器具有更强的适应性,以处理图像中不同方向的物体。具体来说,在应用卷积操作之前,将多个核单独旋转然后组合在一起。这种合并计算的过程相当于分别用不同的核进行卷积,然后对得到的结果进行求和,但计算量可以显著减少。

本文提出的ARC模块可以方便地在任意核大小的卷积层中作为即插即用的模块,因此任何具有卷积层的骨干网络都可以通过使用ARC模块来享受旋转物体的强大表示能力。

2 创新点

提出了即插即用的ARC模块。

3 方法

在这里插入图片描述

所提出的自适应旋转卷积模块ARC如图3所示。最终的卷积核 W ˜ \~{W} W˜ 由原始卷积参数 W W W 生成,由输入特征图 x x x 引导。核 W = [ W 1 , . . . , W n ] W=[W_1,...,W_n] W=[W1,...,Wn] 旋转 θ = [ θ 1 , … θ n ] \theta=[\theta_1,…\theta_n] θ=[θ1,θn] 度,再与权重 λ = [ λ 1 , … λ n ] \lambda=[\lambda_1,…\lambda_n] λ=[λ1,λn] 组合。 θ \theta θ λ \lambda λ 由路由函数以数据依赖的方式进行预测。

与DCNv2的偏移和调制权重相似。

4 模块

4.1 旋转卷积核

标准卷积核作为大多数有向目标检测器的主干,使用一致的参数从所有图像样本中提取特征。在旋转目标检测器的场景中,这意味着目标实例使用了一个固定方向的静态卷积核,而与他们的旋转角度无关。为了弥补任意方向的目标实例与这些静态方向的卷积核之间的鸿沟,作者提出以数据驱动的方式,通过在核空间内采样权重来旋转卷积核。
在这里插入图片描述

首先,将卷积权重当做核空间的采样点(如图2(b))而不是独立的参数(如图2(a)),因此原始的卷积参数可以通过插值跨越一个核空间。在实际中,作者用双线性插值。卷积核旋转过程是从卷积核空间采样新的权重值的过程。将原始坐标饶中心点顺时针旋转 θ \theta θ 度得到样本坐标(如图2©)。通过在旋转坐标中从原始核空间采样值(如图2(d)),得到旋转卷积核(如图2(e))。注意,像图2中那样坐标顺时针旋转 θ \theta θ 度相当于使卷积核逆时针旋转 θ \theta θ度。

上述过程只对卷积核的一个通道进行了旋转,那么扩展到形状为 [ C o u t , C i n , k , k ] [C_{out},C_{in},k,k] [Cout,Cin,k,k] 的卷积层,只需要对所有 C i n C_{in} Cin C o u t C_{out} Cout 通道使用相同的过程即可。

4.2 路由函数

路由函数是所提出的自适应卷积模块的关键组成部分之一,因为它以数据依赖的方式预测旋转角度和组合权重。路由函数以图像特征 x x x 为输入,预测一组旋转角度 [ θ 1 , … θ n ] [\theta_1,…\theta_n] [θ1,θn] 和相应的组合权重 [ λ 1 , … λ n ] [\lambda_1,…\lambda_n] [λ1,λn]

路由函数的整体框架如图3©所示。输入图像特征 x x x 的大小为 [ C i n , H , W ] [C_{in},H,W] [Cin,H,W],首先输入一个 3 × 3 3×3 3×3 核大小的轻量级深度卷积,然后进行层归一化和ReLU激活。然后将激活的特征平均池化成具有 C i n C_{in} Cin 维度的特征向量。池化后的特征向量被传递到两个不同的分支中。第一个分支为旋转角度预测分支,有线性层和softsign激活函数组成。将这个线性层的偏置设置为False以避免学习有偏的角度。对softsign的输出乘上一个系数以扩大旋转的范围。第二个分支为组合去权重预测分支,负责预测组合权重 λ \lambda λ。由带偏置的线性层和sigmoid激活函数构成。

4.3 自适应旋转卷积模块

考虑到图像中的对象实例通常会面向多个方向,因此在ARC模块中引入了条件计算机制来判断多个方向的对象。ARC模块的 n 个卷积核 W 1 , W 2 , … W N W_1,W_2,…W_N W1,W2,WN,每个形状均为 [ C o u t , C i n , k , k ] [C_{out},C_{in},k,k] [Cout,Cin,k,k]。给定输入特征 x x x,路由函数 f f f 预测一组旋转角度 θ \theta θ λ \lambda λ
在这里插入图片描述

n 个核首选根据预测的旋转角度 θ = [ θ 1 , … θ n ] \theta=[\theta_1,…\theta_n] θ=[θ1,θn] 单独旋转:
在这里插入图片描述

其中 θ i \theta_i θi 表示 W i W_i Wi 的旋转角度, W i ′ W_i' Wi 是旋转核, Rotate(·) 中的旋转过程如4.1。这些旋转后的核分别与输入特征图卷积,并以逐元素的方式将输入特征图相加:
在这里插入图片描述

其中 λ = [ λ 1 , … λ n ] \lambda=[\lambda_1,…\lambda_n] λ=[λ1,λn] 是路由函数预测的组合权重。 ∗ * 为卷积操作, y y y 是组合后输出的特征图。收到条件参数化的启发,式(3)可以写成:
在这里插入图片描述

该策略增加了网络对多方向特征的表征能力,并且大计算量的卷积仅在式(4)中出现了一次。,因此仍保持较高的效率。

5 效果

5.1 与SOTA方法对比

不同检测器使用ARC模块后的提升。
在这里插入图片描述
在这里插入图片描述

和SOTA方法对比。
在这里插入图片描述

多尺度训练和测试策略的指标。
在这里插入图片描述

使用ARC模块带来的计算量。
在这里插入图片描述

使用本模块带来的效果提升可视化。
在这里插入图片描述

5.2 消融实验

自适应旋转模块和条件计算机制带来的提升。
在这里插入图片描述

Resnet中不同阶段替换ARC模块的消融实验。
在这里插入图片描述

路由函数中各模块的消融实验。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

OPenCV 图片局部放大

m_image cv::imread("C:/Code/JPG/1.jpg");if (m_image.empty()) return;cv::imshow("原始图像", m_image); // TODO: 在此添加控件通知处理程序代码int width m_image.cols;int height m_image.rows;// 确定要放大的区域(这里是图像中心部分…

SpringBoot项目启动报错-Slf4j日志相关类找不到

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

剧本杀门店预约系统开发,助力门店业务升级

剧本杀门店系统是一个统一管理门店的应用程序,能够让消费者通过系统与好友组局预订剧本杀游戏,节省到线下门店排队预约的时间,提高玩家的游戏体验感。同时商家也可以借助小程序高效管理、运营门店,提高门店的整体服务质量。 小程…

c语言指针练习

1.已知数组a[10]和b[10]中元素的值递增有序&#xff0c;用指针实现将两个数组中的元素按递增的顺序输出。 #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int a[10]{1,3,5,7,9,11,13,15,17,19};int…

MYSQL中的增删改查操作(如果想知道MYSQL中有关增删改查操作的知识,那么只看这一篇就足够了!)

前言&#xff1a;在 MySQL 中&#xff0c;增、删、改、查&#xff08;CRUD&#xff09;操作是基本的数据库操作&#xff0c;增操作&#xff08;INSERT&#xff09;用于插入数据&#xff0c;删操作&#xff08;DELETE&#xff09;用于删除数据&#xff0c;改操作&#xff08;UPD…

代码随想录-算法训练营day36(贪心算法06:单调递增的数字,监控二叉树,总结)

第八章 贪心算法 part06● 738.单调递增的数字 ● 968.监控二叉树 ● 总结 详细布置 738.单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html 968.监控二叉树 &#xff08;可以跳过&#xff09;本题是…

NeurIPS Spotlight|从分类到生成:无训练的可控扩散生成

近年来&#xff0c;扩散模型&#xff08;Diffusion Models&#xff09;已成为生成模型领域的研究前沿&#xff0c;它们在图像生成、视频生成、分子设计、音频生成等众多领域展现出强大的能力。然而&#xff0c;生成符合特定条件&#xff08;如标签、属性或能量分布&#xff09;…

Neo4j:图数据库使用入门

文章目录 一、Neo4j安装1、windows安装&#xff08;1&#xff09;准备环境&#xff08;2&#xff09;下载&#xff08;3&#xff09;解压&#xff08;4&#xff09;运行&#xff08;5&#xff09;基本使用 2、docker安装 二、CQL语句1、CQL简介2、CREATE 命令&#xff0c;创建节…

声音克隆GPT-SoVITS

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 一、原理介绍 GPT-SoVITS&#xff0c;作为一款结合了GPT&#xff08;生成预训练模型&#xff09;和SoVITS&#xff08;基于变分信息瓶颈技术的歌声转换&#xff09;的创新工具&#xff0c;正在声音克隆领域掀…

嵌入式Linux,标准I/O探究,函数相关详解。

标准 I/O 虽然是对文 件 I/O 进行了封装&#xff0c;但事实上并不仅仅只是如此&#xff0c;标准 I/O 会处理很多细节&#xff0c;譬如分配 stdio 缓冲区、以优化的块长度执行 I/O 等。 1.标准 I/O 库介绍 通常标准 I/O 库函数相关的函数定义都在头文件 <stdio.h&g…

github使用SSH进行克隆仓库

SSH 密钥拉取git 查询密钥是否存在 s -al ~/.ssh这个文件夹下 known_hosts 就是存在的密钥文件 创建密钥文件 ssh-keygen -t rsa -b 4096 -C "testtt.com"-t rsa 是 rsa 算法加密 -b 是指定密钥的长度&#xff08;以位为单位&#xff09;。 -C 是用于给密钥添加注…

江铃集团新能源携四款车型亮相香港车展,国际化布局成果显著

12月5日&#xff0c;2024年香港国际汽车博览会&#xff08;香港车展&#xff09;盛大开幕&#xff0c;来自全球上百个品牌齐聚一堂&#xff0c;上演了一场汽车盛筵。江铃集团新能源作为自主品牌的代表车企之一&#xff0c;持续推进国际化布局&#xff0c;为了满足不同地区用户的…

使用Unity脚本模拟绳索、布料(碰撞)

效果演示&#xff1a; 脚本如下&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine;namespace PhysicsLab {public class RopeSolver : MonoBehaviour {public Transform ParticlePrefab;public int Count 3;public int Space 1;…

大数据-242 离线数仓 - 电商核心交易 数据导入 全量数据导入方案 产品分类、商家店铺、地域组织

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

【NLP 5、深度学习的基本原理】

目录 一、梯度下降算法 1.引例 —— 找极小值问题 目标&#xff1a; 方法&#xff1a; 2.梯度 例&#xff1a; 3.求解目标 为什么损失函数越小越好 4.梯度下降法 代码实现 5.细节问题 6.梯度爆炸和梯度消失 梯度爆炸 梯度消失 7.过拟合和欠拟合 欠拟合&#xff08;Underfitting…

云计算对定制软件开发的影响

在当代数字世界中&#xff0c;云计算是改变许多行业&#xff08;包括定制软件开发&#xff09;的最伟大的革命性趋势之一。由于这些公司努力寻求更好、更多不同的方式来履行职责&#xff0c;因此云计算与传统的内部部署基础设施相比具有许多不可否认的优势。这种范式转变对定制…

智能交通(8)——腾讯开悟智能交通信号灯调度赛道

本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法&#xff0c;模型的优化在官方提供的代码基础上进行。最终排名是在榜单16&#xff0c;没能进入最后的决赛。 一.赛题介绍 赛题简介&#xff1a;在本地赛题中&#xff0c;参赛团队…

RK3568平台开发系列讲解(IIO篇)IIO缓冲区

🚀返回专栏总目录 文章目录 一、IIO缓冲区的sysfs接口二、IIO缓冲区设置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢IIO缓冲区提供连续的数据捕获,一次可以同时读取多个数据通道。可通过dev/iio:device字符设备节点从用户空间访问缓冲区。在触发器处理程序中,用…

mybatis用pagehelper 然后用CountJSqlParser45,发现自己手写的mapper查询效率很慢

如题 效率慢疑惑 效率慢 分页查询,发现效率很慢,然后发现是比较复杂的sql,CountJSqlParser45它不会帮忙优化掉,就是select多少字段它count的时候也还是这么多字段 框架里的用法是这样的 所以去看了CountJSqlParser45里面的代码,发现如果有group之类的,它就不帮忙把count优化…

k8s,dameonset

Docker容器里应用的日志&#xff0c;默认会保存在宿主机的/var/lib/docker/containers/{{.容器ID}}/{{.容器ID}}-json.log文件里 nodeAffinity toleration DaemonSet可以继续版本回退&#xff0c; kubectl rollout status命令看到这个“滚动更新”的过程&#xff0c;可以查看…