可变形卷积网络

可变形卷积网络1 什么是可变形卷积 可变形卷积是指卷积核在每一个元素上额外增加了一个参数方向参数 这样卷积核就能在训练过程中扩展到很大的范围 注意 这里有一个非常非常非常容易混淆的点 所谓的 deformable 到底 deformable 在哪 很多人可能以为 deformableco 学习的是可变形的 kernel 其实不是不是不是 本文并不是对 kernel 学习 offset 而是对 feature 的每个位置学习一个 offset a 是传统的标准卷积核 尺寸为 3×3 图中绿色的点 b 就是我们今天要谈论的可变形卷

1、什么是可变形卷积?

可变形卷积是指卷积核在每一个元素上额外增加了一个参数方向参数,这样卷积核就能在训练过程中扩展到很大的范围。

注意:这里有一个非常非常非常容易混淆的点,所谓的deformable,到底deformable在哪?很多人可能以为deformable conv学习的是可变形的kernel,其实不是不是不是!本文并不是对kernel学习offset而是对feature的每个位置学习一个offset。
在这里插入图片描述
(a)是传统的标准卷积核,尺寸为3×3(图中绿色的点);
(b)就是我们今天要谈论的可变形卷积,通过在图(a)的基础上给每个卷积核的参数添加一个方向向量(图b中的浅绿色箭头),使的我们的卷积核可以变为任意形状;
(c)和(d)是可变形卷积的特殊形式。



2、为什么要可变形卷积?

CNNs对大型,未知形状变换的建模存在固有的缺陷,这种缺陷来源于CNNs模块固有的几何结构:

  • 卷积单元对输入特征图的固定位置进行采样;
  • 池化层以固定的比例进行池化;

即使是ROI pooling也是将ROI分割到固定的bin中去。这些特性是有影响的,例如,在同一层Conv中,所有的激活单元的感受野是一样的,但由于不同位置可能对应着不同尺度或变形的物体,因此对尺度或者感受野大小进行自适应是进行精确定位所需要的。为了解决或者减轻这个问题,本文提出了两种新的模块,可变形卷积(deformable conv)和可变形感兴趣区域池化(deformable ROI Pooling),来提高对形变的建模能力。这两个模块都是基于一个平行网络学习offset(偏移),使得卷积核在input feature map的采样点发生偏移,集中于我们感兴趣的区域或者目标。通过研究发现,标准卷积中的规则格点采样是导致网络难以适应几何形变的“罪魁祸首”,为了削弱这个限制,对卷积核中每个采样点的位置都增加了一个偏移变量,可以实现在当前位置附近随意采样而不局限于之前的规则格点。

3、可变形卷积结构形式

在这里插入图片描述
上图是可变形卷积的学习过程,首先偏差是通过一个卷积层获得,该卷积层的卷积核与普通卷积核一样。输出的偏差尺寸和输入的特征图尺寸一致。生成通道维度是2N,对应偏移位置的x坐标和y坐标。卷积核通过双线性插值后向传播算法同时学习。

4、可变形卷积结构与普通卷积结构的比较

在这里插入图片描述

5、可变形卷积的学习过程

在这里插入图片描述
图a是标准卷积的采样过程,图b是可变形卷积的采样过程。

可变性卷积的流程为:

  • 原始图片batch(大小为b*h*w*c),记为U,经过一个普通卷积,卷积填充为same,即输出输入大小不变,对应的输出结果为(b*h*w*2c),记为V,输出的结果是指原图片batch中每个像素的偏移量(x偏移与y偏移,因此为2c)。
  • U中图片的像素索引值与V相加,得到偏移后的position(即在原始图片U中的坐标值),需要将position值限定为图片大小以内。position的大小为(b*h*w*2c),但position只是一个坐标值,而且还是float类型的,我们需要这些float类型的坐标值获取像素。
  • 例,取一个坐标值(a,b),将其转换为四个整数,floor(a), ceil(a), floor(b),ceil(b),将这四个整数进行整合,得到四对坐标(floor(a),floor(b)), ((floor(a),ceil(b)), ((ceil(a),floor(b)), ((ceil(a),ceil(b))。这四对坐标每个坐标都对应U中的一个像素值,而我们需要得到(a,b)的像素值,这里采用双线性差值的方式计算(一方面得到的像素准确,另一方面可以进行反向传播)。
  • 在得到position的所有像素后,即得到了一个新图片M,将这个新图片M作为输入数据输入到别的层中,如普通卷积。

6、可变形卷积的具体实现

在这里插入图片描述
1、首先声明一点,在可变形卷积中,可变形卷积操作和池化操作都是2维的,都是在同一channel上进行的,常规的卷积操作主要可以分为两部分:

  • (1)在输入的feature map上使用规则网格R进行采样;
  • (2)进行加权运算,R定义了感受野的大小和扩张在这里插入图片描述
    对于在输出的feature map上的每个位置P0,通过下列式子进行计算:
    在这里插入图片描述
    其中,Pn是对R中所列位置的枚举


2、可变形卷积的操作是不同的,在可变形网络的操作中,常规的规则网格R通过增加一个偏移量进行扩张,同样的位置P0变为:
在这里插入图片描述
现在,采样的位置变成了不规则位置,由于偏移量△Pn通常是小数,因此我们通过双线性插值法进行实现,公式为:
在这里插入图片描述
完整的示意图如下:
在这里插入图片描述




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222012.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:46
下一篇 2026年3月17日 下午4:46


相关推荐

  • gitee使用教程,创建项目仓库并上传代码

    gitee使用教程,创建项目仓库并上传代码文章目录一 关于 gitee 二 安装 git 三 登录 gitee 四 生成 SSH 公钥五 配置 SSH 公钥六 创建一个项目七 克隆仓库到本地八 关联本地工程到远程仓库九 添加文件十 执行 git 命令 提交文件十一 常用的 git 命令一 关于 giteegitee 中文名 码云 原名 Git OSC 是开源中国推出的基于 git 的代码托管服务 国内访问 GitHub 速度比较慢 如果想托管自己的代码到云端 gitee 是个不错的选择 华为的鸿蒙 2 0 源码也是放在 gitee 上的 二 安装 git 要使用 gitee 需要先安装 gi

    2026年3月19日
    2
  • java新手代码大全实例,深度解析,值得收藏

    java新手代码大全实例,深度解析,值得收藏策略1——停止挖掘LawofHoles是说当自己进洞就应该停止挖掘。对于单体式应用不可管理时这是最佳建议。换句话说,应该停止让单体式应用继续变大,也就是说当开发新功能时不应该为旧单体应用添加新代码,最佳方法应该是将新功能开发成独立微服务。如下图所示:除了新服务和传统应用,还有两个模块,其一是请求路由器,负责处理入口(http)请求,有点像之前提到的API网关。路由器将新功能请求发送给新开发的服务,而将传统请求还发给单体式应用。另外一个是胶水代码(gluecode),将微服务和单体应用集

    2022年6月21日
    44
  • Altium Designer 13 安装完整元件库「建议收藏」

    Altium Designer 13 安装完整元件库「建议收藏」AltiumDesigner更新的非常快,都快赶上chrome了,13出来没多久14又出来了,之前一直用AD9.4,算是10之前的最后一个版本,也是很经典的一个版本。安装新版本后看到在目录结构上有些

    2022年7月4日
    45
  • 推荐几个代码自动生成器,神器!!!「建议收藏」

    20个代码生成框架老的代码生成器的地址:https://www.cnblogs.com/skyme/archive/2011/12/22/2297592.html以下是大家推荐的最近很火爆的代码生成器神器。如果有更好的希望大家多多留言,我会及时补充上去。————————-更新补充———————————…

    2022年4月1日
    1.5K
  • Pycharm 虚拟环境配置

    Pycharm 虚拟环境配置自己安装了 python3 10 项目使用环境为 python3 61 打开 Pycharm file gt Settings2 Project gt ProjectInter 右侧设置 gt add4 Newenvironme Baseinterpre 为 python3 6 地址 5 点击 OK6 如果其他项目需要 python3 10 在 ProjectInter 可以切换

    2026年3月19日
    2
  • microsoft visual studio2010 密钥_windows7产品密钥

    microsoft visual studio2010 密钥_windows7产品密钥4D974-9QX42-9Y43G-YJ7JG-JDYBP

    2022年10月14日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号