Deformable Convolutional Networks 可变形卷积网络解析

论文及代码详解——可变形卷积(DCNv1) 这四对坐标每个坐标都对应U中的一个像素值, 而我们需要得到(a,b)的像素值, 这里采用双线性差值的方式计算, 因为一方面得到的像素准确, 另一方面可以进行反向传播。DCN的卷积过程和普通卷积一样,如上图所示,假设有个2x2的kernel, 它也是以一个2x2的滑窗的形式(绿色的框)在原始图片上从左到右,从上到下进行滑动。采样点的像素值和上文中提到的可变形卷积中的一样,也是通过双线性插值得到的。它的每roi计算成本可以忽略不计。我们实验了不同数量的这类层,发现3是不同任务的一个很好的权衡,如表1所示。 阅读详情

Deformable Convolutional Networks

1. 什么是可变形卷积?

Deformable Convolutional Networks 中提出了一种可以变形的卷积核和池化核,也就是不使用原来的正方形卷积核,而且一个多边形。这样可以让卷积核更多地聚集在目标的轮廓上。

下面对比两种图片:

卷积核聚集在人的身上:
在这里插入图片描述
卷积核聚集在羊的身上:
在这里插入图片描述
所以论文中的核心思想就是:将固定形状的卷积过程改造成了能适应物体形状的可变的卷积过程,从而使结构适应物体形变的能力更强

2. 可形变卷积解决了什么问题?

传统的CNN只能靠一些简单的方法(比如max pooling)来适应物体的形变,如果形变的太厉害就无能为力了。为了改变这种情况专家们想了很多方法,最常见的有两种:

  1. 使用大量的数据进行训练。 比如用ImageNet数据集,再在其基础上做翻转等变化来扩展数据集,通俗地说就是通过穷举的方法使模型能够适应各种形状的物体,这种方法收敛较慢而且要设计复杂的网络结构才能达到理想的结果,但是,如果用训练中没有遇到过的新形状物体(但同属于一类)来做测试,由于新形状没有训练过,会造成测试不准确,而且靠数据集来适应形变的训练过程太耗时,网络结构也必须设计的很复杂
  2. 设计一些特殊的算法来适应形变。 比如SIFT,目标检测时用滑动窗口法来适应目标在不同位置上的分类也属于这类;但是,如果物体的形状极其复杂,要设计出能适应这种复杂结构的算法就更困难了。

传统的方法都不行,那要怎么办呢?

思路很清晰就是:我预定为正方形的感知野,但是感受野上的每一个点加一个偏移量,偏移的大小是通过学习得来的,偏移后感受野不再是个正方形,而是和物体的实际形状相匹配。这么做的好处就是无论物体怎么形变,卷积的区域始终覆盖在物体形状的周围。

下面用论文中的一个图来演示一下变化过程:
在这里插入图片描述

3. 可变形卷积的具体实现细节

在说明具体实现细节之前我现在这样说明一下双线性插值的概念

3.1 双线性插值

想要理解双线性查找,那我们想来说一下什么是线性插值。

线性插值的概念非常简单粗暴,就是两个点A,B,要在AB中间插入一个点C(点C坐标在AB连线上),就直接让C的值落在AB的值的连线上就可以了。

如A点坐标(0,0),值为3,B点坐标(0,2),值为5,那要对坐标为(0,1)的点C进行插值,就让C落在AB线上,值为4就可以了。当然前提是C在AB的连线上,如果C不在AB的连线上要怎么办呢,很简单分别沿x轴和y轴进行线性插值,然后给他加起来就ok啦,这个过程就叫做双线性插值。

举个栗子:

如图,已知Q12,Q22,Q11,Q21,但是要插值的点为P点,这就要用双线性插值了,首先在x轴方向上,对R1和R2两个点进行插值,这个很简单,然后根据R1和R2对P点进行插值。
在这里插入图片描述
有兴趣的可以去维基百科看看推导的公式

说了那么多这个公式究竟是用来干什么的呢?在cv中主要是用来改变图像的大小,但是在这里并不是这个用法。你需要知道双线性插值是更加坐标系中已知量的值去得到一个未知坐标的值。下面的公式就会对其进行一个运用

3.2 可变形卷积 Deformable Convolution

传统的卷积结构可以定义成如下公式:

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) \mathbf{y}\left(\mathbf{p}_{0}\right)=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}_{n}+\Delta \mathbf{p}_{n}\right) y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​+Δpn​)
pn是卷积输出每一个点相对感受野上的每一个点的偏移量,取整数。

采用全新的可变形卷积后要在公式1基础上给每个点再增加一个偏移量Δpn,这个新的偏移量是由另一个卷积得出,所以一般是小数

y ( p 0 ) = ∑ p n ∈ R w ( p n ) ⋅ x ( p 0 + p n + Δ p n ) \mathbf{y}\left(\mathbf{p}_{0}\right)=\sum_{\mathbf{p}_{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}_{n}\right) \cdot \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}_{n}+\Delta \mathbf{p}_{n}\right) y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​+Δpn​)

x(p0+pn+Δpn)的取值位置非整数,并不对应feature map上实际存在的点,所以必须用插值来得到,这里我们就用双线性插值的方法来获取。然后我们可以得到这个公式
x ( p ) = ∑ q G ( q , p ) ⋅ x ( q ) = ∑ q g ( q x , p x ) ⋅ g ( q y , p y ) ⋅ x ( q ) = ∑ q max ⁡ ( 0 , 1 − ∣ q x − p x ∣ ) ⋅ max ⁡ ( 0 , 1 − ∣ q y − p y ∣ ) ⋅ x ( q ) \begin{array}{l} x(\mathrm{p})=\sum_{q} G(\mathrm{q}, \mathrm{p}) \cdot x(\mathrm{q}) \\ =\sum_{q} \mathrm{g}\left(\mathrm{q}_{\mathrm{x}}, \mathrm{p}_{\mathrm{x}}\right) \cdot g\left(\mathrm{q}_{\mathrm{y}}, \mathrm{p}_{\mathrm{y}}\right) \cdot x(\mathrm{q}) \\ =\sum_{q} \max \left(0,1-\left|\mathrm{q}_{\mathrm{x}}-\mathrm{p}_{\mathrm{x}}\right|\right) \cdot \max \left(0,1-\left|\mathrm{q}_{\mathrm{y}}-\mathrm{p}_{\mathrm{y}}\right|\right) \cdot x(\mathrm{q}) \end{array} x(p)=∑q​G(q,p)⋅x(q)=∑q​g(qx​,px​)⋅g(qy​,py​)⋅x(q)=∑q​max(0,1−∣qx​−px​∣)⋅max(0,1−∣qy​−py​∣)⋅x(q)​
x(q)表示feature map上所有整数位置上的点的取值

这里双线性插值的公式我就不在多做说明了。原理我在上面已经说过了。通过这样的可变形卷积层我们就完成了可变形卷积啦

下面放上论文中的可变形卷积的网络结构:
在这里插入图片描述
其中上方的卷积用于输出偏移量,该输出的长宽和输入特征图的长宽一致,维度则是输入的2倍(因为同时输出了x方向和y方向的偏移量,要用2个维度分开存储)。

3.3 可变形的ROI Pooling

ROI Pooling 的改进和卷积核的改进方式基本相同都是再增加一个偏移量

改进前:

y ( i , j ) = ∑ p ∈  bin  ( i , j ) x ( p 0 + p ) / n i j \mathbf{y}(i, j)=\sum_{\mathbf{p} \in \text { bin }(i, j)} \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}\right) / n_{i j} y(i,j)=p∈ bin (i,j)∑​x(p0​+p)/nij​
改进后:

y ( i , j ) = ∑ p ∈ bin ⁡ ( i , j ) x ( p 0 + p + Δ p i j ) / n i j \mathbf{y}(i, j)=\sum_{\mathbf{p} \in \operatorname{bin}(i, j)} \mathbf{x}\left(\mathbf{p}_{0}+\mathbf{p}+\Delta \mathbf{p}_{i j}\right) / n_{i j} y(i,j)=p∈bin(i,j)∑​x(p0​+p+Δpij​)/nij​

其中 Δ p i j \Delta p_{i j} Δpij​是每个bin的偏移量,要注意这个偏移量是针对整个bin的,也就是说一个bin中的每一个点该值都相同。

下面放上网络结构:
在这里插入图片描述
可以看到,需要做ROI Pooling处理的区域首先完成没有偏移下的pooling过程,输出kkchannel个数据,再用一个全连接层输出kk2*channel个点表示在x和y方向上的偏移 p n p^n pn,再对它按如下公式进行处理处理得到真正的偏移量pn。公式中 γ \gamma γ是个增益,作者建议取0.1,与(w,h)进行点乘是为了让偏移量的调整幅度能适配ROI的尺寸。pn也是个小数,需要通过双线性插值来得到真正的值,插值的方法和可变卷积相同,不再重复描述。

Δ p i j = γ ⋅ Δ p ^ i j ∘ ( w , h ) \Delta \mathbf{p}_{i j}=\gamma \cdot \Delta \widehat{\mathbf{p}}_{i j} \circ(w, h) Δpij​=γ⋅Δp ​ij​∘(w,h)

Deformable Convolution 可变形卷积 可变形卷积 阅读详情

相关推荐

可变形卷积Deformable Convolution Net(DCN)理解

论文地址:https://arxiv.org/pdf/1703.06211 相关代码(非官方):https://github.com/4uiiurz1/pytorch-deform-conv-v2/tree/529abbbe9b81e852d272220c855255fd631c43c6 1. 为什么做DCN 传统的卷积采用固定尺寸的卷积核,不能很好地适应几何形变 2. 什么是DCN 可...

scut_salmon的博客 1万+

Deformable Convolutional Networks

1 空洞卷积 1.1 理解空洞卷积 在图像分割领域,图像输入到CNN(典型的网络比如FCN)中,FCN先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测,之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先

bbbeoy的专栏 1231

可变形卷积网络:Deformable Convolutional Networks

参考文献:https://arxiv.org/abs/1703.06211 代码实现:https://github.com/msracver/Deformable-ConvNets 包括理解! Deformable Convolutional Networks 摘要 卷积神经网络(CNNs)由于其构建模块中固定的几何结构,其固有的局限性在于模型的几何变换。在这项工作中,我们引入了两个新的模块来增强...

huangyiping12345的博客 3940

Deformable Convolutional Networks 可变形卷积网络论文精读与解析

目标检测、分割等视觉任务中的一个关键挑战在于,目标对象具有很强的不规则性。无论是传统的手工提取特征,还是使用卷积神经网络学习特征,对目标对象几何变换建模的能力主要来自大规模数据或一些先验知识,模型本身并不具有适应性足够强的几何建模能力。 具体地,对于卷积神经网络,卷积单元在固定位置对特征进行采样,池化层以固定的比例进行池化,ROI层将ROI分离为固定的空间单元。然而,固定的位置、固定的比例、固定的空间单元都是人为指定的,并不是从数据中自适应学到的,因此对于不规则特征的提取有着天然的局限。

乔卿的博客 1922

(DCN)可变形卷积Deformable Convolutional Networks论文阅读笔记

文章目录(DCN)Deformable Convolutional Networks论文阅读笔记2017Abstract1. Introduction2. Deformable Convolutional Networks2.1 Deformable Convolution2.2 Deformable RoI Pooling2.3 Deformable ConvNets3. Understanding Deformable ConvNets3.1 In Context of Related Wo

weixin_43422466的博客 2131

FPGA开发者必看:Xilinx PCIe IP核BAR地址配置避坑指南(附实例解析)

本文为FPGA开发者提供了Xilinx PCIe IP核中BAR地址配置的详细避坑指南。文章深入解析了32位与64位地址空间的选择逻辑、Pcie to AXI Translation参数的核心作用,并通过实例说明如何正确配置以避免地址映射错乱和数据访问失败。重点探讨了BAR空间类型、大小设定以及地址转换机制,帮助开发者构建清晰可靠的PCIe系统,是调试与优化PCIe设计的关键参考。

weixin_29252171的博客 425

Deformable convolutional networks(可变形卷积)使用keras/tensorflow主要代码及注释

以下对Deformable convolutional networks(可变形卷积)keras/tensorflow主要的代码进行理解和注释 代码原地址:https://github.com/kastnerkyle/deform-conv layers.py from __future__ import absolute_import, division import tensorf...

SweetWind1996的博客 4947

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1020

Deformable ConvNets--Part4: Deformable Convolutional Networks

转自:https://blog.youkuaiyun.com/u011974639/article/details/79704043 关于Deformable Convolutional Networks的论文解读,共分为5个部分,本章是第四部分: [ ] Part1: 快速学习实现仿射变换 [ ] Part2: Spatial Transfomer Networks论文解读 [ ] Part3: T...

weixin_34191845的博客 171

AD56XXR系列DAC驱动设计:SPI接口、寄存器配置与嵌入式工程实践

数模转换器(DAC)是嵌入式系统实现高精度模拟控制的核心器件,其性能取决于通信协议可靠性、寄存器配置准确性及硬件协同设计能力。基于SPI总线的电压输出型DAC广泛应用于工业控制、光模块偏置、传感器校准等场景,需兼顾静态精度、动态响应与低功耗特性。AD56XXR系列作为典型集成内部基准与多通道同步更新能力的12/14/16位DAC,支持轨到轨输出与灵活掉电模式,为资源受限MCU提供可移植固件范式。本文围绕SPI时序约束、16位指令字解析、LDAC同步机制及精度补偿策略展开,覆盖从硬件连接、初始化流程到量产级可

weixin_33481022的博客 611

Ollama-OCR实战:5分钟搞定PDF文档转Markdown(附qwen2.5vl模型配置)

本文详细介绍了如何利用Ollama本地部署多模态大模型qwen2.5vl,结合OCR技术,实现PDF文档到Markdown的端到端智能转换。通过解析传统OCR的局限与AI方案的优势,并提供从环境搭建、提示词工程到处理复杂表格的完整实战指南,帮助用户高效构建自动化文档处理流水线,彻底重塑文档处理工作流。

yog99的博客 606

Deformable ConvNets--Part4:Deformable Convolutional Networks论文解读

关于Deformable Convolutional Networks的论文解读,共分为5个部分,本章是第四部分: [ ] Part1: 快速学习实现仿射变换 [ ] Part2: Spatial Transfomer Networks论文解读 [ ] Part3: TenosorFlow实现STN [x] Part4: Deformable Convolutional Networks论文解...

DFan的NoteBook 5644

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9918

DCNv1:Deformable Convolutional Networks——可变形卷积网络

DCNv1:Deformable Convolutional Networks——可变形卷积网络

Together_CZ的博客 3244

数字电路逻辑与设计实验一 门电路逻辑功能及测试

(1)选二输入四异或门电路 74LS86,按图 1-8 接线,输入端 1、2、4、5 接逻辑开 关(S1~S4),输出端 A、B、Y 接电平显示发光二极管.用六反相器(非门)按图 1-11 接线,输入 80KHz 连续脉冲,用双踪示波器测输入, 输出相位差,计算每个门的平均传输延迟时间的 tpd 值。测试不同的输入组合:对门电路进行全面的测试,尝试不同的输入组合,包括各种可能的逻辑状态。检查门电路的输入:确认门电路的输入是否正确,并且输入信号的电平符合门电路的规格要求。确保输入信号的稳定性和准确性。

欢迎交流学习心得 2万+

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

目标检测7 - Deformable Convolutional Networks

Deformable Convolutional Networks 背景 如何有效地建模几何形变或变化(包括尺度、姿势等变化)一直以来都是一个挑战。大体上有两种方法来处理该问题:1)构建一个包含各种变化的数据集。其实就是数据扩增。2)使用具有形变不变性( transformation-invariant)的特征和算法(例如SIFT )。然而,以上的方法存在着如下缺点:1)几何形变被假设是固...

ibunny的博客 3217

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

目标检测之Deformable Convolutional Networks

本文参考以下链接,如果侵权,联系删除 参考 Deformable Convolutional Networks-ICCV2017

AndyJ的学习之旅 949

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

CNN卷积神经网络之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)

可变形卷积网络Deformable ConvNets V1、V2前言一、Deformable Convolutional NetworksDeformable ConvolutionDeformable RoI PoolingPosition-Sensitive (PS) RoI Poolingoffset偏移学习实验效果思考二、Deformable ConvNets v2Stacking More Deformable Conv LayersModulated Deformable ModulesR-CN

qq_41917697的博客 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

目标检测总结:Deformable Convolutional Networks

目标检测总结:Deformable Convolutional NetworksDeformable ConvolutionDeformable RoIPoolingDCN的效果   文章的出发点是几何形变和几何变化的建模一种是卷积神经网络的难点,之前常见的解决方法有两个:1运用数据增强的方法构建包含各种变化的数据集,2使用具有形变不变性的特征和算法(比如SIFT等)。但这两个方法对未知的形变无法...

Tianlock的博客 1332

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

论文阅读——Deformable Convolutional Networks

Deformable Convolutional Networks 可变形卷积网络
 from MARA Abstract 受限于卷积操作本身具有固定的几何结构,卷积神经网络仅能建模几何变换。本文则引入了两个新的模块来增强CNN的模型变换能力,分别是可变形卷积(deformable pooling)和可变形RoI池化(deformable RoI pooling),通过增加偏移量来增加空间采样位置,bong从目标任务中学习这一偏移量无需额外的监督信息。这种模块可以很方便的取代现在CNN中的现有模块,并且可以

qq_37151108的博客 2305
上一篇: Pytorch学习笔记【7】---统计属性
下一篇: Pytorch学习笔记【8】---经典MNIST
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值