【深度学习实战(40)】可变形卷积

=

一、可变形卷积(DCN/DConv)

在这里插入图片描述
(a)是普通的卷积操作

(b)、©、(d)是可变形卷积(deformable convolution,即DConv)

可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset,这样卷积核就能在训练过程中扩展到很大的范围。(c) (d)是(b)的特例,表明可变形卷积推广了尺度、长宽比和旋转的各种变换。

为什么要用DConv?

卷积单元(卷积核)对输入的特征图在固定的位置进行采样;池化层不断减小着特征图的尺寸;RoI池化层产生空间位置受限的RoI。然而,这样做会产生一些问题,比如,卷积核权重的固定导致同一CNN在处理一张图的不同位置区域的时候感受野尺寸都相同,这对于编码位置信息的深层卷积神经网络是不合理的。因为不同的位置可能对应有不同尺度或者不同形变的物体,这些层需要能够自动调整尺度或者感受野的方法。再比如,目标检测的效果很大程度上依赖于基于特征提取的边界框,这并不是最优的方法,尤其是对于非网格状的物体而言。
在这里插入图片描述
左图a是正常卷积,b是可变形卷积。
最上面的图像是在大小不同的物体上的激活单元。
中间层是为了得到顶层激活单元所进行的采样过程(可以看作是一个卷积操作,33卷积核对应九个点九个数最后得到上面一个点即一个数值),左图是标准的3x3方阵采样,右图是非标准形状的采样,但是采样的点依然是3x3,符合33卷积的广义定义。
最下面一层是为了得到中间层进行的采样区域,同理。
明显发现,可变形卷积在采样时可以更贴近物体的形状和尺寸,更具有鲁棒性,而标准卷积无法做到这一点。

可变形卷积怎么实现?

在这里插入图片描述

如上图所示,偏差offset通过一个卷积层conv获得,输入特征图,输出偏差。生成通道维度是2N,其中的2分别对应X和Y这2个2D偏移,N具体是靠卷积核大小计算得到,比如常见的3*3卷积,9个参数那么N=9。
一共有两种卷积核:卷积核和卷积核学习offset对应的卷积层内的卷积核,这两种卷积核通过双线性插值反向传播同时进行参数更新。
这种实现方式相当于于比正常的卷积操作多学习了卷积核的偏移offset。
总的来说整个流程如下图所示,DCN(也有的地方称为DConv)多了右边灰色框里的东西。
在这里插入图片描述

总结:DCN的操作流程(全过程)
总的来说,DConv具体操作流程是:
① 我们一开始,和正常的卷积神经网络一样,根据输入的图像,利用传统的卷积核提取特征图。
我们把得到的特征图作为输入,对特征图再施加一个卷积层,这么做的目的是为了得到可变形卷积的变形的偏移量。(重点)其中,偏移层是2N,因为我们在平面上做平移,需要改变x值和y值两个方向。
③在训练的时候,用于生成输出特征的卷积核和用于生成偏移量的卷积核是同步学习的。其中偏移量的学习是利用插值算法,通过反向传播进行学习。
在这里插入图片描述

实现DCN中的两个问题Q&A

Q:
1、如何将可变形卷积变成单独的一个层,而不影响别的层;
2、在前向传播实现可变性卷积中,如何能有效地进行反向传播。
A:
1、在实际操作时,并不是真正地把卷积核进行扩展,而是对卷积前图片的像素重新整合,变相地实现卷积核的扩张。也就是说,实际上变的是每次进行卷积后得到的带偏移值的坐标值,根据这些坐标取像素点,然后双线性差值,得到新feature map,然后作为输出并成为下一层的新输入。
2、在图片像素整合时,需要对像素进行偏移操作,偏移量的生成会产生浮点数类型,而偏移量又必须转换为整形,直接对偏移量取整的话无法进行反向传播,这时采用双线性差值的方式来得到对应的像素。

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

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

相关文章

在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南

在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南 在 Oracle Linux 8.9 上安装 FFmpeg 的完整指南准备工作安装步骤1. 更新系统2. 启用 EPEL 仓库3. 启用 RPM Fusion 仓库4. 安装 DNF 插件核心包5. 启用 CodeReady Builder 仓库6. 安装 FFmpeg7. 验证安装 可能遇到的问题注意事项…

原码、反码和补码详细集合

目录 一.什么是原码,反码,补码? 1).原码(true form): 2).反码: 3).补码: 二.为什么要有原码,反码,补码 一.什么是原…

[rejected]master -> master (non-fast-forward)的解决方法

☆ 问题描述 [rejected]master -> master (non-fast-forward)的解决方法 本地已经创建了一个项目&#xff0c;想要把远程库的代码合并到本地库上&#xff0c;报错… ★ 解决方案 git pull <远程服务器> <远程分支> --allow-unrelated-histories 先使用这个代…

[最全]设计模式实战(总序)

最近一段时间,读完了《Android源码设计模式-解析与实战》和《大话设计模式》这两本经典设计模式相关书籍,撰写相关笔记。 每种设计模式将从以下方式聊聊: 1. 是什么(What,即定义);解决什么问题(Why,即使用场景) 2. 如何使用(How,即最简UML图+Java代码) 3. 生活…

npm 安装踩坑

1 网络正常&#xff0c;但是以前的老项目安装依赖一直卡住无法安装&#xff1f;哪怕切换成淘宝镜像 解决办法&#xff1a;切换成yarn (1) npm i yarn -g(2) yarn init(3) yarn install在安装的过程中发现&#xff1a; [2/4] Fetching packages... error marked11.1.0:…

企业供应链数字化转型如何做?让企业盈利能力增强再飞一会

引言&#xff1a;企业供应链数字化转型是外部环境变化、内部需求驱动、数字化转型的必要性和技术进步的推动共同作用的结果。供应链数字化转型可以通过数据整合、自动化、协同工作等方式提高供应链的效率和降低成本&#xff0c;例如&#xff0c;使用数字化技术可以实现快速采购…

Studying-代码随想录训练营day14| 226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

第十四天&#xff0c;(ง •_•)ง&#x1f4aa;&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 226.翻转二叉树 101.对称二叉树 100.相同的树 572.另一个树的子树 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 总结 226.翻转二叉树 文档讲…

【八】【QT开发应用】QTcreate项目打包成.exe文件或.apk文件,EnigmaVirtualBox软件下载,虚拟网站代打开QT应用

EnigmaVirtualBox下载 Enigma Virtual Box QTcreate项目打包成.exe可执行文件 找到自己写好的项目的.exe文件 将这个文件复制到一个新的文件夹里面 在这个新的文件夹里面打开cmd,这样可以使得cmd直接进入到该文件夹 打包.exe命令行 输入下面的命令行 windeployqt game…

一款基于WordPress开发的高颜值的自适应主题Puock

主题特性 支持白天与暗黑模式 全局无刷新加载 支持博客与CMS布局 内置WP优化策略 一键全站变灰 网页压缩成一行 后台防恶意登录 内置出色的SEO功能 评论Ajax加载 文章点赞、打赏 支持Twemoji集成 支持QQ登录 丰富的广告位 丰富的小工具 自动百度链接提交 众多页面模板 支持评论…

bazel :Output Directory Layout

Output Directory Layout This page covers requirements and layout for output directories. Requirements for an output directory layout: Doesn’t collide if multiple users are building on the same box.如果多个用户在同一个盒子上建造则不会发生冲突。 Support…

如何开发一个项目脚手架cli

目录 背景正文unbuildpromptsprogresskolorist 设置打包命令npm execnpxnpm init/ npm create/ npm innit 使用最后 背景 随着团队项目类型越来越多&#xff0c;方便后续快速去开发项目&#xff0c;会出现各种类型的项目模版项目。 这样开发只需要通过脚手架选择自己需要的项目…

Mybatis是如何进行分页的

MyBatis 也提供了支持分页的方案&#xff0c;其主要思路是使用 Limit 偏移量和限制个数&#xff0c;来获取指定数量的数据 MyBatis 提供两种分页方式&#xff1a;基于参数改造和基于插件拦截 1、基于参数改造&#xff1a; 第一种分页方式是基于参数改造的&#xff0c;通过添加…

示例:推荐一个自定义的Ribbon皮肤

一、目的&#xff1a;WPF自带的Ribbon控件功能很强大&#xff0c;但使用过程中感觉显示的样式不是很好&#xff0c;或者不适合自己的项目&#xff0c;下面介绍一个基于自带Ribbon控件样式的修改&#xff0c;主要修改了些高度&#xff0c;间距&#xff0c;背景色&#xff0c;前景…

【漏洞复现】AJ-Report开源数据大屏 verification;swagger-ui RCE漏洞

0x01 产品简介 AJ-Report是一个完全开源的B平台&#xff0c;酷炫大屏展示&#xff0c;能随时随地掌控业务动态&#xff0c;让每个决策都有数据支撑。多数据源支持&#xff0c;内置mysql、elasticsearch、kudu等多种驱动&#xff0c;支持自定义数据集省去数据接口开发&#xff…

Spring Cloud Ribbon 介绍

目录 一、Spring Cloud Ribbon简介二、Ribbon 负载均衡策略三、Ribbon 加载机制四、Ribbon的工作原理五、Ribbon的配置和使用六、Ribbon的作用和优势 一、Spring Cloud Ribbon简介 Spring Cloud Ribbon是一个基于Netflix Ribbon实现的客户端负载均衡器。它运行在消费者端&…

什么是APP分发-了解APP分发的核心概念

APP分发的定义和意义 大家有没有过这样的经历&#xff1a;辛辛苦苦开发了一款APP&#xff0c;却不知道该怎么让更多人知道和使用&#xff1f;APP分发的重要性就凸显出来了。APP分发就是将你的应用推送到不同的应用市场和平台&#xff0c;让更多用户能够下载和使用。 小猪app封…

Python的pip切换国内源

&#x1f4da;目录 起因&#xff1a;pip切换国内源&#xff1a;操作永久修改pip配置文件测试永久源配置是否成功 pip其他环境的配置永久源配置 起因&#xff1a; pyCharm安装模块的手出现ModuleNotFoundError: No module named distutils 由于使用pip install distutils下载不了…

[图解]建模相关的基础知识-16

1 00:00:00,350 --> 00:00:04,130 刚才那个&#xff0c;就相当于&#xff0c;12这个我们可以认为是什么 2 00:00:05,020 --> 00:00:11,360 我们用类图来表达就是&#xff0c;员工、电话 3 00:00:13,320 --> 00:00:15,080 多个 4 00:00:15,090 --> 00:00:16,440 …

Python与Java实现SM2互调

文章目录 一、项目背景二、环境极其依赖三、具体功能1.Python生成密钥对2.java生成密钥对3.Python加签验签4.java加签验签 四、遇到的问题五、解决方案 一、项目背景 Python对接Java接口互相SM2加签验签 二、环境极其依赖 python环境 pip3 install gmssljava环境 <depen…

docker的隔离机制

linux内核带来的便利 Linux 内核是 Docker 实现隔离的基础。作为操作系统的核心,Linux 内核提供了许多用于资源隔离和安全性的关键机制,为 Docker 容器化技术提供了基础支持。 Namespaces Linux 内核自 2.6.24 版本开始引入了命名空间(Namespaces)机制。Namespaces 为进程提…