理解Deformable Convolution网络

news2024/11/26 18:43:37

1.简介

偶然了解到了可形变卷积这篇文章,看了几篇博文后大致了解的差不多了,但是有些细节还是看了代码之后才理解。这里想自己写一下关于这篇论文的了解,希望自己能够讲清楚。这里放一篇写的很好地博文链接,想更深入了解代码的可以去看一下。DCN可形变卷积实现1:Python实现_可变形卷积pytorch_Adenialzz的博客-CSDN博客

这里先放一下原文的摘要:

卷积神经网络(cnn)由于其构建模块中固定的几何结构,固有地局限于模拟几何变换。在这项工作中,我们引入了两个新的模块来增强cnn的变换建模能力,即形变卷积和形变RoI池。两者都是基于用额外的偏移量来增加模块中的空间采样位置,并在没有额外监督的情况下从目标任务中学习偏移量的想法。新的模块可以很容易地取代现有cnn中的普通模块,并且可以很容易地通过标准反向传播进行端到端训练,从而产生可形变的卷积网络。大量的实验验证了我们的方法的性能。我们首次证明了在深度cnn中学习密集空间变换对于复杂的视觉任务(如目标检测和语义分割)是有效的。 

 2.可形变卷积的原理

其实可形变卷积并不是改变卷积核,卷积核一直都是3x3大小的,里面的权重也是通过训练得到的,可以就看成一个正方形。变得其实是与之做卷积操作的原特征图的像素值。

一个普通的卷积操作的流程是什么,一个3x3的卷积核,规律的以固定的步长移动窗口,对每个窗口内的原特征图的像素值进行相乘求和,输出一个值。第一个公式就是普通卷积的公式,y中的p0代表输出特征图的某一个点,x中的p0代表这个点对应的卷积核在原特征图中作用时的中心点坐标。下面我画的图能够很好地理解这一点,Pn是卷积核相对于P0的坐标,从(-1,-1)到(1,1),其中也包括(0,0)。所以先确定P0的坐标x,y,这样通过相对坐标Pn就能够遍历卷积核范围内的像素值了。

形变卷积的操作其实就变了一个地方,就是原特征图的像素值,他不再是输入特征图的那个位置的像素值,而是经过网络学习后,其他地方的像素值。举个例子,原特征图位置(1,1)的像素值是150,正常卷积就是当窗口里有(1,1)时,就将卷积核对应位置的权重乘上150。但是可变性卷积不是,网络经过学习产生一个偏移值,假如偏移值(x,y)是(2,3),这样(1,1)+(2,3)=(3,4),若位置(3,4)的像素值为20。这时原特征图中位置(1,1)的像素值就不是150,而是20了。当卷积核窗口里包含(1,1)时,是按照20来计算的。

上图就是可形变卷积的操作示意图,先将原特征图卷积得到一个通道数为2N的特征图,这一步是在求偏移值。N是kernal_size*kernal_size,乘2是因为偏移值具有x方向和y方向。然后将这个2N通道的offsets加到原卷积公式中去,就得到了偏移后的坐标。

但是偏移后的坐标基本上都是小数,所以想要确定该坐标的像素值,就需要双线性插值的操作。下面的公式就是文章给出的双线性差值的公式。最后再通过3x3步长为三的卷积操作得到最后与输入特征图shape相同的输出特征图。 

3.可形变ROI池化

k是输入特征图的尺寸,滑动窗口时产生k 2 k^2k 2个scroe map, 每个score map包括C类物体和1个背景的结果,2同样是offsets的x,y两个值。普通ROI池化公式为:

在这里插入图片描述

可形变的ROI池化公式为:

在这里插入图片描述

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

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

相关文章

Gateway自定义过滤器——全局过滤器

一、什么是全局过滤器🍉 首先,我们要知道全局过滤器其实是特殊路由过滤器(特殊的GatewayFilter),会有条件地作用于所有路由。 为什么要自定义全局过滤器?就好比是看大门的保安大叔,平时主要是做好进出大门外来人员登记…

Chatglm实现agent控制

背景: 这个系列文章,会从LLM搭建应用生态角度来写。从0到1训练一个大的通用的模型对于大部分人和团队来讲是不现实的。重资金,重技术含量、重投入这几个门槛可以把很多团队直接劝退。那么在LLM蓬勃发展的时候我们可以做些什么呢,…

C语言程序设计——字符、字符串、内存函数

一、长度不受限的字符串函数 1. strlen size_t strlen(const char* str); 功能:求字符串长度 (1)字符串以\0作为结束标志,strlen函数返回的是在字符串中\0之前出现的字符个数(不包含\0)。 &#xff08…

【每日运维】大文件的分割与合并

产生背景 特殊单位需要将文件刻盘带入,并且刻盘有大小限制,所以有了这个需求 推荐方法 个人电脑上使用 split 命令指定大小分割Linux 服务上使用 cat 命令进行合并使用 md5sum 命令校验包的完整性 方法演示 需要将一个按照100M分割后刻盘导入 在个…

数据结构 ~ 树

什么是树 - tree 一种分层数据的抽象模型; 如:DOM、级联选择、树形控件,js 中没有树 可以用 Object 构建树: const tree {val: a,children: [{val: a-1,children: [{val: a-1-1,children: []}]},{val: a-2,children: [{val: a…

mapbox绘制多边形

1、实现效果 请忽略马赛克 2、实现思路 绘制一个填充的多边形,再描个边框。 3、实现代码 绘制多边形函数 drawPolygon() {map.addSource(maine, {type: geojson,data: https://asc-test1.oss-cn-beijing.aliyuncs.com/2023/07/05/45f6bd80f2f34d79b3e457b31ec5d…

云原生网关如何实现安全防护能力

作者:刘晓瑞(钰诚) 云原生网关:将安全、流量和微服务三合一 作为面向南北向的公网网关,使用 Waf 防护异常流量是很常规的需求,而且随着互联网环境变得越来越复杂,用户对防护的诉求是持续增强的,常规做法是…

需要我怎么帮你?关于维护Nutsdb开源社区的思考

背景 近来有人问我打算怎么继续维护Nutsdb社区,他们当中不乏有开源项目的狂热爱好者,发起了好几个几千star的开源项目,也有对Nutsdb感兴趣的,想来问问后续的计划。这不禁让我回想到从刚开始参与这个项目到最近这段时间一个人维护…

三维重建的工作

文章目录 一、北京:二、广州:三、深圳: 一、北京: 链接 三维重建技术是自动驾驶领域4D真值数据生成的核心基础能力。融合LiDAR、Camera、IMU、轮速计等传感器数据像BlockNeRF一样重建城市级别逼真精细的三维场景,将…

ArcGIS Pro 矢量数据的空间校正

GIS 数据通常来自多个源。当数据源之间出现不一致时,有时需要执行额外的工作以将新数据集与其余数据进行整合。相对于基础数据而言,一些数据会在几何上发生变形或旋转。 在编辑环境中,空间校正提供用于对齐和整合数据的交互式方法。 空间校正可执行的一些任务包括:将数据…

SQLite数据库安装

安装方式一: sudi apt-get install sqlite 安装方式二: https://www.sqlite.org/download.html 1. 把下载的文件 sqlite-autoconf-3420000.tar.gz 上传到开发板 2. tar xvf sqlite-autoconf-3420000.tar.gz 解压 3. cd sqlite-autoconf-3420000 进入…

[Mysql] 索引失效的情况详解~

一条查询语句走了索引和没走索引的查询效率是非常大的,但有很多情况导致我们的索引失去效果。这里总结一下常见的索引失效的情况~ 数据准备 我们准备一张简单的学生来做演示。 CREATE TABLE student (id int NOT NULL COMMENT id,name varchar(255) COLLATE utf8…

基于weka手工实现支持向量机smo算法

关于svm机器学习模型,我主要学习的是周志华老师的西瓜书(《机器学习》); 但是西瓜书中对于参数优化(即:Sequential Minimal Optimization,smo算法)部分讲解的十分简略,看…

Linux运维面试题(三)之shell编程类

Linux运维面试题(三)之shell编程类 文本截取有一个b.txt文本,要求将所有域名截取出来,并统计重复域名出现的次数统计当前服务器正在连接的IP地址,并按连接次数排序(cut不能以空格做分隔符) 随机…

Vis相关的期刊会议

中国计算机学会推荐国际学术会议和期刊目录 文档, 下载 link:CCF推荐国际学术刊物目录-中国计算机学会 一.可视化方向文章 1.IEEE VIS,是由 IEEE Visualization and Graphics Technical Committee(VGTC) 主办的数据可视化领域的顶级会议&a…

VMware桥接模式无法识别英特尔AX200无线网卡解决办法

1.先到英特尔网站下载最新驱动,更新网卡驱动适用于 Intel 无线网络卡的 Windows 10 和 Windows 11* Wi-Fi 驱动程序 2.到控制面板查看无线网卡属性是否有下图组件 没有的话,依次操作 安装---服务---添加---从磁盘安装----浏览--进入VMware安装目录&…

Linux系统的目录结构

目录 一、Linux系统使用注意 1、Linux严格区分大小写 2、Linux文件"扩展名" 3、Linux中所有内容以文件形式保存 4、Linux中存储设备都必须在挂载之后才能使用 二、目录结构 1、Linux分区与Windows分区 2、Linux系统文件架构 3、Linux系统的文件目录用途 一、…

Docker【安装与基本使用】

【1】Docker的安装 注意:如果之前安装过docker其他版本,请删除干净。 docker-01 10.0.0.51 2G docker-02 10.0.0.52 2G docker-01 [rootdocker-01 ~]# cp -rp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite ‘/etc/localtime’? …

(中等)LeetCode146 LRU 缓存 Java

本题有两种实现操作&#xff0c;需要使用到一个哈希表和一个双向链表。在Java语言中&#xff0c;有一种结合了哈希表和双向链表的数据结构&#xff0c;LinkedHashMap import java.util.LinkedHashMap; import java.util.Map;class LRUCache extends LinkedHashMap<Integer,…

网络运维能转型到系统运维吗?

很多网工处于刚起步的初级阶段&#xff0c;各大公司有此专职&#xff0c;但重视或重要程度不高&#xff0c;可替代性强&#xff1b;小公司更多是由其它岗位来兼顾做这一块工作&#xff0c;没有专职&#xff0c;也不可能做得深入。 现在开始学习入门会有一些困难&#xff0c;不…