1.7 什么是可变形卷积?可变形卷积旨在解决哪类问题?

news2024/9/27 19:22:52

1.7 什么是可变形卷积?可变形卷积旨在解决哪类问题?

问题:深度卷积神经网络在许多视觉任务上获得了重大突破,其强大的特征提取能力避免了传统的人工特征工程的弊端。然而,普通的卷积操作是在固定的、规则的网格点上进行数据采样,如图1.8(a) 所示,这束缚了网络的感受野形状,限制了网络对几何形变的适应能力。

1.可变形卷积

解决:为了克服这个限制,可变形卷积在卷积核的每个采样点上添加一个可学习的偏移量(offset),让采样点不再局限于规则的网格点,如图1.8(b)所示。

  • 图1.8(c)和图1.8(d)可变形卷积的两个特例

    • 图1.8(c)在水平方向上对卷积核有较大拉伸,体现了可变形卷积的尺度变换特性;

    • 图1.8(d)则是对卷积核进行旋转

    特别地,图1.8©中的可变形卷积核有点类似于空洞卷积

    实际上,空洞卷积可以看作一种特殊的可变形卷积

    空洞卷积详见以下链接:
    https://blog.csdn.net/seasonsyy/article/details/136629145?spm=1001.2014.3001.5501

在这里插入图片描述

可变形卷积让网络具有了学习空间几何形变的能力。具体来说,可变形卷积引入了一个平行分支来端到端地学习卷积核采样点的位置偏移量,如图1.9所示。该平行分支先根据输入特征图计算出采样点的偏移量,然后再在输入特征图上采样对应的点进行卷积运算。这种结构让可变形卷积的采样点能根据当前图像的内容进行自适应调整

在这里插入图片描述

2.可变形卷积计算过程

我们以二维卷积为例,详细说明可变形卷积的计算过程

  • 假设卷积核尺寸为3×3,记R ={(-1,-1),(-1,0),(-1,1),(0,-1),(0,0),(0,1),(1,-1),(1,0),(1,1)},它对应着卷积核的9个采样点。首先来看普通卷积,它可以用公式形式化为

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n ) y({p_0}) = \sum\limits_{{p_n} \in R} {w({p_n}) \cdot x({p_0} + {p_n})} y(p0)=pnRw(pn)x(p0+pn)

​ 其中,x(·)和y(·)分别是卷积层的输入特征图和输出特征图,p₀是滑动窗的中心点,pn是卷积核的采样点。

  • 对于可变形卷积,它的计算公式则是
    y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) y({p_0}) = \sum\limits_{{p_n} \in R} {w({p_n}) \cdot x({p_0} + {p_n} + \Delta {p_n})} y(p0)=pnRw(pn)x(p0+pn+Δpn)

​ - 其中,△pn是采样点的位置偏移量。由于△pn是在网络中端到端地学习得到的,它可能不是整数,这会导致不在整数网格点上,此时需要采用双线性插值:

x ( p ) = ∑ q G ( q , p ) ⋅ x ( q ) x(p) = \sum\limits_q {G(q,p) \cdot x(q)} x(p)=qG(q,p)x(q)

其中,p是任意位置点,例如取 p = p 0 + p n + Δ p n p = {p_0} + {p_n} + \Delta {p_n} p=p0+pn+Δpn,q是整数网格点,

G ( q , p ) = max ⁡ ( 0 , 1 − ∣ q x − p x ∣ ) ⋅ max ⁡ ( 0 , 1 − ∣ q y − p y ∣ ) G(q,p) = \max (0,1 - |{q_x} - {p_x}|) \cdot \max (0,1 - |{q_y} - {p_y}|) G(q,p)=max(0,1qxpx)max(0,1qypy)是双线性插值核。

3.可变形卷积的应用

适应物体在不同图片中出现的复杂几何形变(如尺度、形态、非刚性形变等),一直是物体识别领域的难点,可变形卷积网络给出了一个可行的解决方案。它可以端到端地学习几何形变的偏移量,不需要额外的监督信息,并且只增加了少许计算量,最终却能带来效果的显著提升。图1.10是可变形卷积的一组效果示意图,图中绿点是激活点,红点是激活点对应的三层3×3可变形卷积核的采样位置(共9×9×9=729个点)。可以看到,红色采样点基本覆盖了检测物体的全部区域,这说明可变形卷积会根据物体的尺度、形态进行自适应调整
在这里插入图片描述

参考文献:

《百面深度学习》 诸葛越 江云胜主编

出版社:人民邮电出版社(北京)

ISBN:978-7-115-53097-4

2020年7月第1版(2020年7月北京第二次印刷)

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

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

相关文章

为什么要用scrapy爬虫库?而不是纯python进行爬虫?

为什么要用scrapy爬虫库?而不是纯python进行爬虫? Scrapy的优点Scrapy节省的工作使用纯Python编写爬虫的不足 Scrapy是一个使用Python编写的开源和协作的web爬虫框架,它被设计用于爬取网页数据并从中提取结构化数据。Scrapy的强大之处在于其广…

安装kibaba

官方地址:Past Releases of Elastic Stack Software | Elastic 直接下载就可以 安装好了之后开始配置文件/kibana/config打开kibanba.yml server.port:5601 服务器地址 sercer.name:kibana 服务器名称 kibana.index:.kibana 索引 elasticsearch.hosts:[http://1…

Python数学建模-2.3函数(下)

2.3.2模块的导入与使用 模块在Python中是一个包含Python定义和语句的文件,通常用来组织代码,使得代码更易于管理和复用。下面,我将详细讲解Python函数中模块的使用知识。 1. 模块的导入 在Python中,你可以使用import语句来导入…

IDEA中配置Tomcat

文章目录 一、创建Web项目二、配置tomcat三、启动Tomcat 一、创建Web项目 1.首先我们要用IDEA创建一个普通的java项目。 2.我创建的项目名称为myTomcat,想要开发web程序,我们还要做一下操作。 首先我们先给项目添加框架支持...,我的 idea 版…

Python实现BOA蝴蝶优化算法优化循环神经网络回归模型(LSTM回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝴蝶优化算法(butterfly optimization algorithm, BOA)是Arora 等人于2019年提出的一种元启发式智能算…

区别于传统家!三翼鸟定制智慧家电家居一体化场景

在这个科技创新、智能AI主导的时代,寻求更便捷智慧、舒心适宜、一体化的居家场景,成为一个时代的命题和竞赛,也是家居行业共同奔赴的使命。在纷繁复杂的竞争格局和方向答案中,一条清晰坚定的路径正在显露出来…… AWE前一天&…

关于联软UniAccess安全助手流氓行为,导致代码编译失败

今天公司里安装了这个东西, 就是监控软件 一举一动都被监控 早上我安装完 然后我继续工作编译代码, 用的clang.exe emscripten 编译webassembly项目 老是报错,而且次次报错 不一致 很奇怪的错误 我就想是不是我同步远端分支的原因, 折腾了好久, 发现已经的仓库也编…

sincecon品牌国货之光采用的聚甲基丙烯酸羟乙脂能够防护眼睛

sincecon品牌含硅半年抛华丽登场各种风格色系设计全都一网打尽给你挑花眼的囤货快乐, sincecon是KOOL旗下的一个品牌,品牌较大,且口碑很好,回头客很多。sincecon美瞳采用的聚甲基丙烯酸羟乙脂能够防护眼睛,不刺激眼睛,对眼睛的好处很大。

JavaScript 数组去重的方法12 种方法

数组去重,一般都是在面试的时候才会碰到,一般是要求手写数组去重方法的代码。如果是被提问到,数组去重的方法有哪些?你能答出其中的 10 种,面试官很有可能对你刮目相看。 在真实的项目中碰到的数组去重,一…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中,如果定义一个常量String和new出一个String对象,是不同的: String s1 "zhang" String s2 new String("zhang") 因为在Java看来,s1只是一个常量,会放在…

深入浅出讲解Python字符串格式化

字符串格式化操作符(%),非常类似于C 语言里面的printf()函数的字符串格式化,甚至所用的符号都一样,都用百分号(%),并且支持所有printf()式的格式化操作。语法如下: format_string % string_to_convert format_string为…

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例

【Python】新手入门学习:详细介绍依赖倒置原则(DIP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、Py…

【深度学习笔记】7_7 AdaDelta算法

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 7.7 AdaDelta算法 除了RMSProp算法以外,另一个常用优化算法AdaDelta算法也针对AdaGrad算法在迭代后期可能较难找到有用解的…

了解关键字

关键字 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(或单词) HelloWorld案例中,出现的关键字有 class、public 、 static 、 void 等,这些单词已经被Java定义好了。 特点:全部关键字都…

“多彩非遗 用爱编织”社区志愿者心理解压活动

为提升志愿者心理健康水平,帮助他们及时疏导情绪、缓解生活中的压力,构筑心理防线,促进身心健康,引导志愿者以积极的心态面对服务和生活中的压力,2月28日海滨街社工站在海滨街道西运社区开展了“多彩非遗 用爱编织”社…

力扣● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

● 300.最长递增子序列 1.dp数组含义。dp[i]:以nums[i]为结尾的递增子序列的最大长度。 注意一定是以nums[i]结尾,如果dp[i]定义错误的话,暴力也不知道咋整。 2.递推公式。这道题与背包的单词划分比较像,一个单层循环是弄不出来…

AJAX 02 案例、Bootstrap框架

AJAX 学习 AJAX 2 综合案例黑马 API01 图书管理Bootstrap 官网Bootstrap 弹框图书管理-渲染列表图书管理-添加图书图书管理-删除图书图书管理 - 编辑图书 02 图片上传03 更换图片04 个人信息设置信息渲染头像修改补充知识点:label扩大表单的范围 AJAX 2 综合案例 黑…

深入剖析Mysql事务和Spring事务,mongodb面试题2024

注意max_trx_id并不是m_ids中的最大值,事务id是递增分配的。比方说现在有id为1,2,3这三个事务,之后id为3的事务提交了。那么一个新的读事务在生成ReadView时,m_ids就包括1和2,min_trx_id的值就是1&#xff…

OSG编程指南<二十>:OSG路径动画

1、路径动画 如果读者耐心地读到这里,已经对路径动画不陌生了。因为前面很多处已经涉及路径动画,在很多示例中也用到了路径动画。路径动画就是按一定的插值方式生成路径,物体对象按照生成的路径或预先指定的路径来完成相应的动作的动画。 在 OSG 中,管理路径动画的核心类主…

数据结构——循环链表,双向链表,线性表和有序表的合并详解

目录 1.循环链表 1.带尾指针循环链表的合并 代码示例: 2.双向链表 代码示例: 1.双向链表的插入 ​代码示例: 2.双向链表的删除 代码示例: 3.单链表,循环链表,双向链表时间效率的比较 4.顺序表和链…