狗都能看懂的可变形卷积详解

news2025/1/13 10:27:46

Deformable Convolution Networks

论文地址:https://arxiv.org/pdf/1703.06211
官方源码:https://github.com/msracver/Deformable-ConvNets/tree/master

Deformable Convolution

conv
文章提出了可变形卷积和可变形ROI采样。原理是一样的,这里先讲解一下可变形卷积,传统的卷积如上图a所示吗,采样点是固定的9个位置,bcd是对应的可变形卷积,b是比较常见的状态,9个采样点位置随机。cd是可变形卷积比较特殊的情形。

compare.png
这么做有什么好处呢?如上图所示,左边是普通卷积,卷积位置固定,模型关注的位置被限定成一个方形。右边是可变形卷积,由于偏移量是一个可学习参数,模型关注的形状可以是任意外形。

可变形卷积是怎么做的呢?从下图可以看到,只要计算出一个offsets偏移即可。

d-conv
如果不考虑batch和channel的维度,假设有一个 H × W H \times W H×W的feature map,对于任意一个采样点的偏移,都需要x方向和y方向的偏移,仅仅这样还不够。由于卷积核是 k × k k \times k k×k大小的,卷积核上的每个采样点都要有偏移。所以每个点必须要有 2 × k × k 2 \times k \times k 2×k×k个offsets。所以生成的offsets的尺寸为 H × W × 2 k 2 H \times W \times 2k^2 H×W×2k2

在mmcv中使用可变形卷积,先利用常规的conv计算出offsets变量:

import torch
import torch.nn as nn
from mmcv.ops import DeformConv2d

class DeformableConvNet(nn.Module):
    def __init__(self, in_channels, out_channels, kernel_size=3):
        super(DeformableConvNet, self).__init__()
        self.offsets = nn.Conv2d(in_channels, 2 * kernel_size * kernel_size, kernel_size=kernel_size, padding=1)
        self.deform_conv = DeformConv2d(in_channels, out_channels, kernel_size=kernel_size, padding=1)

    def forward(self, x):
        offsets = self.offsets(x)  # 生成偏移量
        x = self.deform_conv(x, offsets)  # 可变形卷积操作
        return x

# 示例
input = torch.randn(1, 3, 64, 64)
model = DeformableConvNet(in_channels=3, out_channels=64, kernel_size=3)
output = model(input)

Deformable RoI Pooling

ROI-Pooling.png
应用到ROI Pooling也是一样的,而且ROI Pooling相较于普通的Pooling,不需要进行移动和多次采样。所以直接是用一个全连接层,输出的offsets特征通道数是 2 × h × w 2 \times h \times w 2×h×w,其中 h h h w w w是输出ROI的特征图的大小,2表示x,y方向的偏移。具体来说,输出的offsets tensor形状为 ( N , 2 × h × w , H , W ) (N,2 \times h \times w, H,W) (N,2×h×w,H,W),其中 N N N是batch的大小。

文章最后给出了验证集中的样例对比。左边第一张图是普通卷积,由于采样点位置很固定,那么模型实际上的关注点都是很分散的,模型无法聚焦到主体位置上。如果把普通卷积换成可变形卷积,效果就是右边两张图。由于可变形卷积的偏移量是可学习的,经过训练后,模型的关注点都会集中到主要物体上。

image.png

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

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

相关文章

软件测试-测试分类

测试分类 按照测试目标测试 界面测试 页面内展示的所有内容/元素都需要测试 参考UI图找不同 功能测试 ​ 如何设计功能测试用例? 参考产品规格说明书进行用例的编写,具体的测试用例需要使用黑盒设计测 试用例的方法,如等价类、边界值、…

【HTML】为网页添加表单(控件)

1、表单 表单控件:包含了具体的表单功能项,如单行文本输入框、密码输入框、复选框、提交按钮、重置按钮等。 提示信息:一个表单中通常需要包含一些说明性的文字,提示用户进行填写和操作。 表单域:相当于一个容器&…

精准掌控,速看顶级软件资产管理方案,让您企业软件资产一目了然!

企业软件资产的管理是保障业务连续性、优化成本结构和提升信息安全的重要基石。然而,随着企业规模的扩大和软件的多样化,软件资产管理面临着前所未有的挑战。 如何精准掌控每一项软件资产,确保其合规使用、高效运维,成为了企业IT…

欧拉函数和快速幂

欧拉函数: 定义: 互质:互质是公约数只有1的两个整数,叫做互质整数。 欧拉函数:欧拉函数,即 表示的是小于等于n并且和n互质的数的个数。 比如说 φ(1) 1。当n是质数的时候,显然有 (n)n-1。 …

【每日刷题】Day105

【每日刷题】Day105 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode) 2. 904. 水果成篮 - 力…

File的常见成员方法(获取并遍历)

一.File的常见成员方法(获取并遍历): 二.代码实现: 1.D盘下的JavaTest文件夹为: 2.执行listFiles方法后: package com.itheima.a01myfile; ​ import java.io.File; ​ public class FileDemo6 {public s…

es的学习

1.认识es 2.ik分词器 对于某些词进行特定分词设置或者忽略设置 3.索引库的操作 就是相当于操作表 4.文档的操作 就是相当于操作数据

[windows][apache]Apache代理安装

下载apache服务软件和VC_redist安装包 https://www.apachelounge.com/download/ https://www.microsoft.com/zh-CN/download/details.aspx?id48145 解压文件,修改httpd.conf文件 37行出修改文件的解压目录 60行修改监听端口 安装服务 进入apache的目录&#xf…

windows系统蓝屏怎么办_Windows系统蓝屏原因查找及解决方法

电脑蓝屏怎么办?windows蓝屏是十分常见的故障,也是十分难以解决的问题,例如软件冲突兼容性问题、系统补丁bug、超频不当、系统文件损坏、硬件驱动兼容性、虚拟内存设置不当、电脑硬件温度过高、内存硬盘等硬件损坏、内存松动等均可能造成电脑…

2024年8月22日嵌入式学习

今日主要学习网络知识 udp recvfrom ssize_t recvfrom(int sockfd, //socket的fd void *buf, //保存数据的一块空间的地址 size_t len, //这块空间的大小 int flags, // 0 默认的接收方式 --- 阻塞方式…

克服编程学习中的挫折感:从心态到策略的全方位指南

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 一、心态调整:积极乐观,合理期望 二、学习方法:有效策…

js中的字符串的length的知识点。

unicode字符集 unicode字符集是对世界上绝大部分字符进行编码,一个字符对应一个编码,范围:0x0000-0x10FFFF,可以表示一百多万个字符,其中0x0000-0xFFFF的字符为BMP(基本多语言平面字符集),剩余…

【大模型从入门到精通34】开源库框架LangChain 利用LangChain构建聊天机器人1

这里写目录标题 利用LangChain构建聊天机器人介绍介绍对话型聊天机器人构建环境环境变量和平台设置 加载文档和创建向量存储高级检索技术对话上下文和记忆纳入聊天历史会话缓冲内存 构建对话检索链环境设置与API密钥配置选择合适的语言模型版本Q&A系统设置 利用LangChain构…

无人机之喊话器的用途

无人机喊话器,俗称无人机扬声器,其用途广泛且多样化,主要体现在以下几个方面: 一、应急救援与指挥 紧急响应与指挥:在自然灾害(如山洪、火灾、地震等)或突发事件发生时,无人机搭载喊…

iOS App上架审核被拒——2.3.3 - Performance - Accurate Metadata

iOS上架审核被拒——Guideline 2.3.3 - Performance - Accurate Metadata 噢,又被拒了… 文章目录 iOS上架审核被拒——Guideline 2.3.3 - Performance - Accurate Metadata被拒原因解决 被拒原因 大概翻译了下:预览图问题,只因某张预览图加了…

前端开发攻略---在Vue3项目中修改Element-Plus主题色

1、演示 2、安装依赖 npm i use-element-plus-theme -d 3、使用 import { useElementPlusTheme } from use-element-plus-theme const { changeTheme } useElementPlusTheme()const changePrimaryColor () > {// 传入颜色changeTheme(red) } 4、演示代码 <templa…

[godot] 采用状态机时,如何处理攻击时移动?如“冲撞”

这里以‘史莱姆撞击’为例子&#xff0c;将‘空中跃进’定义为伤害帧。&#xff08;见下图&#xff09; 先梳理流程&#xff1a;a.史莱姆原地蓄力(起跳准备)--->b.跳起并移动一段距离(空中跃进)--->c.落地调整 一 当状态机进入‘攻击状态’时&#xff0c;在enter()中…

day40——数据库 sqlite3

1 安装sqlite3数据库以及sqlite3函数库 1&#xff1a;sudo apt install sqlite3 //安装数据库 2&#xff1a;sudo apt install libsqlite3-dev // 安装数据库的函数库 2 什么是数据库 一种存放数据的文件&#xff0c;但是该文件拥有特殊的结构 第一层结构&#xff1a;数据…

存储数据(常量)

常量&#xff1a;用来存储数据&#xff08;不可变&#xff09; 常量不能修改 //常量 const PI:number 3.14 const Name: string "啦啦啦" console.log(名字,Name) console.log(π等于,PI)前面带 后面不带&#xff0c;不然就是打印字符串了

PHPShort轻量级网址缩短程序源码开心版,内含汉化包

需要网址缩短并且想获得更多有关链接点击率和流量的数据分析&#xff0c;那么 PHPShort 可能是一个非常好的选择。PHPShort 是一款高级的 URL 缩短器平台&#xff0c;可以帮助你轻松地缩短链接&#xff0c;并根据受众群体的位置或平台来定位受众。 该程序基于 Laravel 框架编写…