Deformable Convolutional Networks论文阅读

news2024/11/27 4:12:14

Deformable Convolutional Networks论文阅读

  • Abstract
  • 1. Introduction
  • 2. Deformable Convolutional Networks
    • 2.1. Deformable Convolution
    • 2.2. Deformable RoI Pooling
  • 总结

文章信息:

在这里插入图片描述

原文链接:https://arxiv.org/abs/1703.06211
源代码:https://github.com/msracver/Deformable-ConvNets

Abstract

这项工作介绍了两个新模块,以增强卷积神经网络(CNNs)的变换建模能力,分别是可变形卷积(deformable convolution)和可变形RoI池化(deformable RoI pooling)。这两个模块的基本思想是在模块中增加额外的偏移量,从而增强空间采样位置的变换能力,并从目标任务中学习这些偏移量,无需额外的监督。这些新模块可以直接替换现有CNNs中的普通模块,并且可以通过标准的反向传播方法轻松进行端到端的训练,从而产生可变形卷积网络(deformable convolutional networks)。大量实验证实了我们方法的性能。我们首次展示,在深度CNNs中学习密集空间变换对于复杂的视觉任务,如目标检测和语义分割,是有效的。该代码已发布在https://github.com/msracver/Deformable-ConvNets。

1. Introduction

视觉识别中的一个关键挑战是如何适应对象尺度、姿态、视点和部分变形的几何变化,或者模拟几何变换。一般来说,有两种方法。第一种方法是构建具有足够所需变化的训练数据集。这通常通过对现有数据样本进行增广来实现,例如通过仿射变换。可以从数据中学习到稳健的表示,但通常以昂贵的训练成本和复杂的模型参数为代价。第二种方法是使用具有变换不变性的特征和算法。这一类别涵盖了许多众所周知的技术,例如SIFT(尺度不变特征变换)[42]和基于滑动窗口的对象检测范式。

上述方法存在两个缺点。首先,假设几何变换是固定且已知的。这种先验知识被用来增广数据,并设计特征和算法。这种假设阻止了对具有未知几何变换的新任务的泛化,因为这些未知变换没有得到合适的建模。其次,手工设计不变特征和算法可能会对过于复杂的变换变得困难或不可行,即使这些变换是已知的。

最近,卷积神经网络(CNNs)[35] 在视觉识别任务中取得了显著的成功,例如图像分类[31]、语义分割[41]和目标检测[16]。然而,它们仍然具有上述两个缺点。它们对于建模几何变换的能力主要来自于大量的数据增强、大模型容量以及一些简单的手工设计模块(例如,用于小平移不变性的最大池化[1])。

简而言之,卷积神经网络(CNNs)固有地受限于对大型、未知变换的建模能力。这种限制源于CNN模块的固定几何结构:卷积单元在固定位置对输入特征图进行采样;池化层以固定比例减少空间分辨率;RoI(感兴趣区域)池化层将感兴趣区域分割成固定的空间区域,等等。缺乏内部机制来处理几何变换。这导致了明显的问题。举一个例子,同一CNN层中所有激活单元的感受野大小都相同。这对于编码空间位置上的语义的高级CNN层来说是不可取的。因为不同位置可能对应着具有不同尺度或变形的对象,因此在需要进行精细定位的视觉识别中,例如使用全卷积网络进行语义分割[41],适应性地确定尺度或感受野大小是可取的。举另一个例子,尽管目标检测最近取得了显著而迅速的进展[16, 52, 15, 47, 46, 40, 7],但所有方法仍然依赖于基于原始边界框的特征提取。这显然是次优的,尤其是对于非刚性对象。

在这项工作中,我们引入了两个新模块,大大增强了CNNs对建模几何变换的能力。
第一个是可变形卷积。它在标准卷积中的常规网格采样位置上添加了2D偏移量。这样可以自由地对采样网格进行形变。如图1所示。这些偏移量是通过额外的卷积层从前面的特征图中学习到的。因此,变形是根据输入特征以局部、密集和自适应的方式进行条件化的。

第二个模块是可变形RoI池化。它在前一个RoI池化[15, 7]的常规bin分区中为每个bin位置添加了一个偏移量。类似地,这些偏移量是通过前面的特征图和RoIs学习到的,从而实现了对具有不同形状的对象进行自适应的部分定位。

这两个模块都是轻量级的。它们只添加了少量的参数和计算用于偏移量的学习。它们可以轻松地替换深度CNNs中的普通模块,并且可以通过标准的反向传播方法进行端到端的训练。由此产生的CNNs被称为可变形卷积网络,或称为可变形ConvNets。

我们的方法与空间变换网络[26]和可变形部件模型[11]在高层次上有类似的精神。它们都具有内部的变换参数,并且纯粹从数据中学习这些参数。可变形ConvNets的一个关键区别在于,它们以简单、高效、深度和端到端的方式处理密集空间变换。在第3.1节中,我们详细讨论了我们的工作与之前工作的关系,并分析了可变形ConvNets的优越性。

2. Deformable Convolutional Networks

CNNs中的特征图和卷积是3D的。可变形卷积和RoI池化模块都在2D空间域上操作。在通道维度上,操作保持不变。为了符号清晰,这里对模块进行了2D描述,但可以轻松地扩展到3D。

2.1. Deformable Convolution

2D卷积由两个步骤组成:
1)使用规则网格 R \mathcal{R} R在输入特征图 x x x上进行采样;
2)对采样值按权重 w w w进行求和。网格 R \mathcal{R} R定义了感受野大小和膨胀率。例如,
在这里插入图片描述

定义了一个具有膨胀率为1的3 × 3内核。

对于输出特征图 y y y上的每个位置 p 0 p_0 p0,我们有
在这里插入图片描述
其中 p n p_n pn枚举 R \mathcal{R} R中的位置。

在可变形卷积中,常规网格 R \mathcal{R} R被增加了偏移量 { Δ p n ∣ n = 1 , . . . , N } \{\Delta\mathbf{p}_n|n=1,...,N\} {Δpnn=1,...,N},其中 N = ∣ R ∣ N=|\mathcal{R}| N=R。方程(1)变为

在这里插入图片描述
现在,采样是在不规则和偏移位置 p n + Δ p n \mathbf{p}_n+\Delta\mathbf{p}_n pn+Δpn上进行的。由于偏移 Δ p n \Delta\mathbf{p}_n Δpn通常是分数,因此方程(2)是通过双线性插值来实现的,如下所示:
在这里插入图片描述
其中,p表示任意(分数)位置(对于方程(2),p = p 0 + p n + Δ p n \mathbf{p}_0+\mathbf{p}_n+\Delta\mathbf{p}_n p0+pn+Δpn),q枚举特征图x中的所有整数空间位置,而 G ( ⋅ , ⋅ ) G(\cdot,\cdot) G(,)是双线性插值核函数。请注意, G G G是二维的。它被分解为两个一维核函数,如下所示:
在这里插入图片描述
其中  g ( a , b ) = max ⁡ ( 0 , 1 − ∣ a − b ∣ ) 。 方程  ( 3 )  的计算速度 较快,因为只有少数 q s 的 G ( q , p ) 非零。 \begin{aligned}&\mathrm{其中~}g(a,b) = \max(0,1 - |a - b|)。 \mathrm{方程~(3)~的计算速度}\\&\mathrm{较快,因为只有少数\mathbf{qs}的}G(\mathbf{q},\mathbf{p})\mathrm{非零。}\end{aligned} 其中 g(a,b)=max(0,1ab)方程 (3) 的计算速度较快,因为只有少数qsG(q,p)非零。

如图2所示,偏移量是通过对同一输入特征图应用卷积层获得的。卷积核的空间分辨率和膨胀率与当前卷积层相同(例如,图2中也是3×3膨胀率为1的卷积核)。输出偏移场具有与输入特征图相同的空间分辨率。通道维度2N对应于N个二维偏移量。在训练期间,用于生成输出特征和偏移量的卷积核都同时进行学习。为了学习偏移量,梯度通过方程(3)和方程(4)中的双线性操作进行反向传播。详情请参见附录A。
在这里插入图片描述

2.2. Deformable RoI Pooling

RoI池化在所有基于区域提议的目标检测方法中都被使用[16, 15, 47, 7]。它将任意大小的输入矩形区域转换为固定大小的特征。
RoI池化[15]:给定输入特征图 x x x和大小为 w × h w\times h w×h且左上角为 p 0 p_0 p0的RoI,RoI池化将RoI划分为 k × k k\times k k×k k k k是一个自由参数)个bin,并输出一个 k × k k\times k k×k的特征图 y y y。对于第 ( i , j ) (i, j) (i,j)个bin( 0 ≤ i , j < k 0 \leq i, j < k 0i,j<k),我们有
在这里插入图片描述
其中  n i j  是该bin中像素的数量。第 ( i , j ) -个 bin跨越的范围为  ⌊ i w k ⌋ ≤ p x < ⌈ ( i + 1 ) w k ⌉  和  ⌊ j h k ⌋ ≤ p y < ⌈ ( j + 1 ) h k ⌉ 。 \begin{aligned}&\text{其中 }n_{ij}\text{ 是该bin中像素的数量。第}(i,j)\text{-个}\\&\text{bin跨越的范围为 }\lfloor i\frac wk\rfloor \leq p_x < \lceil(i + 1)\frac wk\rceil\text{ 和 }\lfloor j\frac hk\rfloor \leq p_y <\\&\lceil(j+1)\frac hk\rceil。\end{aligned} 其中 nij 是该bin中像素的数量。第(i,j)-bin跨越的范围为 ikwpx<⌈(i+1)kw  jkhpy<⌈(j+1)kh

类似于方程(2),在可变形RoI池化中,将偏移量 { Δ p i j ∣ 0 ≤ i , j < k } \{\Delta\mathbf{p}_{ij}|0\leq i,j<k\} {Δpij∣0i,j<k}添加到空间分bin的位置上。方程(5)变为:
在这里插入图片描述

通常, Δ p i j \Delta\mathbf{p}_{ij} Δpij是分数。方程(6)通过方程(3)和(4)通过双线性插值来实现。

3 \color{red}{3} 3说明了如何获取偏移量。首先,RoI池化(方程(5))生成池化的特征图。从这些特征图中,一个全连接层生成了归一化的偏移量 Δ p ^ i j \Delta\widehat{\mathbf{p}}_{ij} Δp ij,然后通过逐元素乘积与RoI的宽度和高度,将其转换为方程(6)中的偏移量 Δ p i j \Delta\mathbf{p}_{ij} Δpij,即 Δ p i j = γ ⋅ Δ p ^ i j ∘ ( w , h ) \Delta\mathbf{p}_{ij}=\gamma\cdot\Delta\widehat{\mathbf{p}}_{ij}\circ(w,h) Δpij=γΔp ij(w,h)。这里 γ \gamma γ是一个预定义的标量,用于调节偏移量的大小。经验上设定 γ = 0.1 \gamma=0.1 γ=0.1。偏移量的归一化是必要的,以使偏移量学习对RoI大小不变。全连接层通过反向传播进行学习,详细内容请参见附录A。

在这里插入图片描述

位置敏感(PS)RoI池化[7]是完全卷积的,与RoI池化不同。通过一个卷积层,所有输入特征图首先被转换为每个对象类别(总共 C + 1 C+1 C+1个,其中 C C C个是对象类别)的 k 2 k^2 k2个得分图,如图 4 \color{red}{4} 4底部分支所示。不需要区分类别,这些得分图被表示为 { x i , j } \{\mathbf{x}_{i,j}\} {xi,j},其中 ( i , j ) (i,j) (i,j)枚举所有的bin。在这些得分图上进行池化。 ( i , j ) (i,j) (i,j)-th bin的输出值通过从对应于该bin的一个得分图 x i , j \mathbf{x}_{i,j} xi,j中进行求和而获得。简而言之,与方程(5)中的RoI池化的不同之处在于,通用特征图 x x x被替换为特定的位置敏感得分图 x i , j \mathbf{x}_{i,j} xi,j

在可变形PS RoI池化中,方程(6)中唯一的改变是 x x x也被修改为 x i , j \mathrm{x}_{i,j} xi,j。然而,偏移量的学习是不同的。它遵循[7]中的“完全卷积”精神,如图 4 \color{red}{4} 4所示。在顶部分支中,一个卷积层生成全空间分辨率的偏移场。对于每个RoI(也是每个类别),PS RoI池化被应用在这些字段上以获得 n o r m a l i z e d normalized normalized偏移量 Δ p ^ i j \Delta\widehat{\mathbf{p}}_{ij} Δp ij,然后将它们以与上述描述的可变形RoI池化相同的方式转换为真实的偏移量 Δ p i j \Delta\mathbf{p}_{ij} Δpij

在这里插入图片描述

总结

在这里插入图片描述

卷积不是固定的,由上图可知,每个点的感受范围不再是一个正方形的3x3的范围,而是“不规则”的卷积,当然,这个不规则是通过训练而学习得到的,在原来的基础上学习到了偏移量,就使卷积变成可形变的卷积了。

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

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

相关文章

2024.4.8-day12-CSS 常用样式属性和字体图标

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.8-学习笔记盒子阴影文本阴影透明的vertical-align字体使用 作业 &…

谷歌浏览器插件开发速成指南:弹窗

诸神缄默不语-个人CSDN博文目录 本文介绍谷歌浏览器插件开发的入门教程&#xff0c;阅读完本文后应该就能开发一个简单的“hello world”插件&#xff0c;效果是出现写有“Hello Extensions”的弹窗。 作为系列文章的第一篇&#xff0c;本文还希望读者阅读后能够简要了解在此基…

SQL执行流程图文分析:从连接到执行的全貌

SQL执行总流程 下面就是 MySQL 执行一条 SQL 查询语句的流程&#xff0c;也从图中可以看到 MySQL 内部架构里的各个功能模块。 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在…

LwIP TCP/IP

LWIP 架构 LwIP 符合 TCP/IP 模型架构&#xff0c;规定了数据的格式、传输、路由和接收&#xff0c;以实现端到端的通信。 此模型包括四个抽象层&#xff0c;用于根据涉及的网络范围&#xff0c;对所有相关协议排序&#xff08;参见图 2&#xff09;。这几层从低到高依次为&am…

962: 括号匹配问题

【学习版】 【C语言】 【C】 #include<iostream>class MyStack { public:struct Node {char val;Node* prev;Node* next;Node(char x) :val(x), prev(NULL),next(NULL) {};};MyStack() {base new Node(0);top base;}bool empty() {return top base;}void push(int …

什么是并行通信、串行通信?什么是全双工、半双工、单工? 什么是异步通信、同步通信? 什么是RS232、RS485?什么是pwm?

这篇文章主要讲一下单片机中的通信相关的内容 主要讲一下以下5个问题&#xff1a; 1.什么是并行通信、串行通信&#xff1f; 2.什么是全双工、半双工、单工&#xff1f; 3.什么是异步通信、同步通信&#xff1f; 4.什么是RS232、RS485&#xff1f; 5.什么是pwm&#xff1f;什…

C语言从入门到实战————编译和链接

目录 前言 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理&#xff08;预编译&#xff09; 2.2 编译 2.2.1 词法分析&#xff1a; 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 2.4 链接 3. 运行环境 前言 编译和链接是将C语言源代码转换成可执行文件的必经过程&a…

OpenStack云计算(六)——OpenStack身份管理

项目实训一 【实训题目】 通过图形界面管理项目、用户和角色 【实训目的】 掌握图形界面的身份管理基本操作。 【实训准备】 &#xff08;1&#xff09;复习Keystone身份服务体系相关知识。 &#xff08;2&#xff09;了解项目、用户和角色之前的关系。 【实训内容】 …

界面控件Kendo UI for jQuery 2024 Q1亮点 - 新的ToggleButton组件

Telerik & Kendo UI 2024 Q1 版本于2024年初发布&#xff0c;在此版本中将AI集成到了UI组件中&#xff0c;在整个产品组合中引入AI Prompt组件以及10多个新的UI控件、支持Angular 17、多个数据可视化功能增强等。 P.S&#xff1a;Kendo UI for jQuery提供了在短时间内构建…

UE4_动画基础_角色的缩放

以第三人称模板进行制作。 一、首先为角色缩放新建粒子效果 1、新建niagara system&#xff0c;重命名为NS_Shrink。 2、双击打开设置参数&#xff1a; 发射器重命名&#xff1a; Emitter State&#xff1a; 发射器一次喷发数量&#xff1a; 粒子初始大小&#xff0c;生命周…

为什么 GraphQL 是构建微服务的更好选择

关于使用REST还是GraphQL来构建微服务哪个更好&#xff0c;一直存在争论。这两种技术都有其支持者和批评者&#xff0c;但当涉及微服务架构的特定需求时&#xff0c;GraphQL 成为明显的领先者。原因如下。 了解 RESTful 的关注点 虽然 REST 多年来一直是首选 API 风格&#x…

牛顿:Archetype AI 的开创性模型,实时解读真实世界的新宠儿

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

表格比对作业指导书 使用access对excel表格数据进行比对

初级代码游戏的专栏介绍与文章目录-CSDN博客 &#xff08;注&#xff1a;这是以前给秘书写的作业指导书&#xff0c;用来处理两个表格中哪些人存在、哪些人不存在。看起来当时使用的access版本是2016。access是微软office套件中的一个软件&#xff0c;存在于家庭版&#xff0c…

CSS变换

CSS变换 根据 CSS 的变换的功能特性&#xff0c;它可以分为位移、旋转、缩放、倾斜和透视&#xff1a; 也可以分成2D变换和3D变换&#xff0c;2D变换是二维平面上进行的&#xff0c;即 X 轴和 Y 轴。这些变换不涉及 Z 轴。3D 变换允许元素在三维空间中进行操作&#xff0c;这些…

系统架构评估_3.ATAM方法

架构权衡分析方法&#xff08;Architecture Tradeoff Analysis Method&#xff0c;ATAM&#xff09;是在SAAM的基础发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。 &#xff08;1&#x…

K8s学习十(高级调度)

高级调度 CronJob计划任务 在 k8s 中周期性运行计划任务&#xff0c;与 linux 中的 crontab 相同注意点&#xff1a;CronJob 执行的时间是 controller-manager 的时间&#xff0c;所以一定要确保 controller-manager 时间是准确的cron表达式如下&#xff1a; 配置如下&#x…

提高网站安全性,漏洞扫描能带来什么帮助

随着互联网的蓬勃发展&#xff0c;网站已经成为人们获取信息、交流思想、开展业务的重要平台。然而&#xff0c;与之伴随的是日益严重的网络安全问题&#xff0c;包括恶意攻击、数据泄露、隐私侵犯等。 为了保障网站的安全性&#xff0c;提前做好网站的安全检测非常有必要&…

基于Springboot+Vue实现前后端分离酒店管理系统

一、&#x1f680;选题背景介绍 &#x1f4da;推荐理由&#xff1a; 近几年来&#xff0c;随着各行各业计算机智能化管理的转型&#xff0c;以及人们经济实力的提升&#xff0c;人们对于酒店住宿的需求不断的提升&#xff0c;用户的增多导致酒店管理信息的不断增多&#xff0c;…

[计算机网络] 当输入网址到网页

HTTP 首先&#xff0c;对URL进行解析&#xff0c;URL包含了Web服务器和对应的文件&#xff08;文件路径&#xff09; URL是请求服务器中的文件资源 通过Web服务器和对应文件来生产HTTP包&#xff08;超文本传输协议&#xff09; DNS 根据域名查询对应的IP地址 域名的层级 根…

基于深度学习的电动自行车头盔佩戴检测系统

文章目录 1. 文档说明2. 运行环境说明2.1 硬件配置2.2 软件配置2.3 程序依赖库 3. 基本环境配置3.1 软件安装3.1.1 集成开发环境安装与配置3.1.2 数据库安装与配置3.1.3 编程语言安装3.1.4 CUDA和cuDNN安装与配置3.1.5 机器学习库安装 3.2 依赖库安装 4. 运行程序资源下载地 1.…