论文阅读——Deformable ConvNets v2

论文:https://arxiv.org/pdf/1811.11168.pdf

代码:https://github.com/chengdazhi/Deformable-Convolution-V2-PyTorch

1. 介绍

可变形卷积能够很好地学习到发生形变的物体,但是论文观察到当尽管比普通卷积网络能够更适应物体形变,可变形卷积网络却可能扩展到感兴趣区域之外从而使得不相关的区域影响网络的性能,由此论文提出v2版本的可变形卷积神经网络(DCNv2),通过更有效的建模能力和训练使网络关注更恰当的图像区域。
其中建模能力的增强得益于两方面:

  • 更多的可变形卷积层
  • 调节能力,即学习偏移的同时还会加入每一个采样点的权重

当然网络也需要更强大的训练方式,借鉴知识蒸馏的思想,使用一个R-CNN作为Teacher指导网络的训练,因为这个网络可以预测有效的提议框的类别即只受到框里面内容的影响而不会受到框外区域的干扰,DCNv2在ROI层之后的特征趋向于模仿R-CNN的特征,如此一来,DCNv2就增强了自己可变形采样的能力。

2.对可变形卷积的表现进行分析

为了更好地理解可变形卷积的工作机制,论文对以下三个环节进行了可视化分析,这个三部分为理解潜在目标区域对网络节点的贡献提供了详尽的视角。

  • 有效感受野:感受野内的像素点对网络的影响是不相同的,这种影响程度的不同可以使用有效感受野来表示,有效感受野的值用每一个像素点对节点梯度的扰动来表示,利用有效感受野可以评价单个的像素点对网络节点的影响但是并不反映整个图像区域的结构性信息。
  • 有效的采样位置:用采样区域对网络节点梯度的影响表示有效采样区域来理解不同采样的位置对网络的共享。
  • 显著性区域边界错误:网络节点计算的结果不会因为移除图像不想管区域而发生变化,基于此,论文可以将有效的区域缩到最小,和全图相比误差很小,这个称为边界定位有偏差的显著性区域,可以通过不断遮挡图像来计算节点的结果。

可视化结果如下图所示:

能够观察到

  • 标准卷积也具有一定程度的对物体的几何形变进行建模的能力
  • 通过引入可变形卷积,这种能力显著增强,空间上网络接收了更大的区域,覆盖整个目标的同时也包含了更多的不相关的背景信息
  • 第三种类型很明显采样区域更加有效

通过上面的可视化及其分析,很明显可变形卷积能够更好的提升网络对几何形变进行建模的能力,对潜在区域的采样区域更大,因此论文提出需要对这个更大的区域进行进一步的分析,得到一个介于原区域与更大区域二者之间的采样区域以提升精度。


3. 更强大的可变形建模能力

为了提升网络对几何形变进行建模的能力,论文提出了一些变化。


3.1 加入更多的可变形卷积层

因为可变形卷积的特殊能力,论文大胆地(╮(︶﹏︶")╭)提出使用更多的可变形卷积层进一步增强整个网络对于几何形变的建模能力。
该论文将ResNet50的conv3,conv4和conv5阶段中的3x3卷积都替换为可变形卷积也就是一共12层可变形卷积(v1版本只有conv5阶段的三层),在较为简单的Pascal VOC数据集上观察到更多可变形卷积层的表现更为优秀。


3.2 可调节的变形模块

论文引入一种调节机制,不但能够调整接收输入的特征的位置,还能调节不同输入特征的振幅(重要性),极端情况下,一个模块可以通过将重要性设置为0来表示不接收该特征,结果对应采样区域的图像像素点显著减少同时不影响模块的输出,因此这种调节机制能够给网络模块新维度上的能力去调节支持区域。

3.3 R-CNN特征融合

可以从上面三图中看到,deformable RoIPooling使得采样区域增大,但是包含了过多的无关区域甚至可能降低其精度,而可调节的deformable RoIPooling使得区域更加合理。
此外,作者发现这种无关的图像语义信息可能是Faster R-CNN的误差来源,结合一些其他的动机(比如分类分支和边界框回归分支共享一些特征),作者提出将Faster R-CNN和R-CNN的分类分数结合从而获得最终的检测分数,这是由于R-CNN分类分数只专注于输入RoI内的图像内容,这会有助于解决重复语义信息的问题从而提升准确性。然而简单的结合Faster R-CNN和R-CNN会使训练和推断都很慢,论文提出使用R-CNN作为一个教师网络,让DCNV2的RoI池化之后的feature去模拟R-CNN的特征,如下图所示,除了Faster R-CNN外加一个R-CNN分支用于特征模仿,

4. 实验

有无可变形卷积/RoI池化和多层可变形卷积(输入图像的短边1000和800)


从哪个阶段开始R-CNN特征模仿的影响


主干网络的影响


不同尺度的目标


不同大小的输入短边


输入图像的分辨率


不同主干网络的分类精度不同


是否ImageNet预训练?

 

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

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

相关文章

Numpy数组的去重 np.unique()(第15讲)

Numpy数组的去重 np.unique()(第15讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

Linux权限详解

Linux权限 文章目录 Linux权限一、root账号与普通账号二、Linux权限管理三、权限权值表示方法四、文件访问权限的设置方法五、粘滞位六、权限总结 前言: 我们在学习Linux的时候,我们知道在Linux下一切皆文件,而不同的文件对于不同的用户有不同…

第二十一章总结。。

计算机网络实现了堕胎计算机间的互联,使得它们彼此之间能够进行数据交流。网络应用程序就是再已连接的不同计算机上运行的程序,这些程序借助于网络协议,相互之间可以交换数据,编写网络应用程序前,首先必须明确网络协议…

掌握iText:轻松处理PDF文档-基础篇

关于iText iText是一个强大的PDF处理库,可以用于创建、读取和操作PDF文件。它支持PDF表单、加密和签署等操作,同时支持多种字体和编码。maven的中央仓库中的最新版本是5.X,且iText5不是完全免费的,但是基础能力是免费使用的&…

2023-12-10 LeetCode每日一题(爬楼梯)

2023-12-10每日一题 一、题目编号 70. 爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 示例 2: 提…

gin投票系统2

投票系统 数据库的建立 先分析需求,在sql中建立数据库,关于项目数据库如何建立可以在“goweb项目创建流程分析中看如何去建表” 成功后目前有四个表: vote,user,vote_opt,vote_opt_user 建立数据库,可以…

Flink基本转换算子map/filter/flatmap

map map是大家非常熟悉的大数据操作算子,主要用于将数据流中的数据进行转换,形成新的数据流。简单来说,就是一个“一一映射”,消费一个元素就产出一个元素。 我们只需要基于DataStream调用map()方法就可以进行转换处理。方法需要…

案例026:基于微信小程序的原创音乐系统的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

汽车网络安全--关于UN R155认证的思考

1.UN R155概述 2020年6月25日,联合国颁布了全球首个汽车网络安全强制性法规 -- UN 155,详细规定了关于评估网络安全措施的审核条款、制造商和供应商降低网络安全风险的方法以及实施风险评估的义务等。 法规适用于与信息安全相关的M类(4轮及以上载客汽车)、N类(四轮载货汽车)…

SpringBoot项目连接Graylog

直接用logback将控制台输出的日志发送到graylog上 1.导入logback依赖 <dependency> <groupId>de.siegmar</groupId> <artifactId>logback-gelf</artifactId> <version>1.1.0</version> </dependency> 2.创建logback-spring.x…

golang学习笔记——编写最简单的命令行工具

编写最简单的命令行工具 用户输入bufio 使用go语言编写最简单的命令行工具 mkdir hello-cli-demo cd hello-cli-demo # 查看环境变量 go envgo mod初始化 go mod init gitcode.com/m打开vscode&#xff0c;创建main.go package mainimport ("fmt""bufio&qu…

快速测试 3节点的redis sentinel集群宕机2个节点以后是否仍能正常使用

有同事问我&#xff0c;三个redis sentinel节点&#xff0c;宕机两个节点以后&#xff0c;是否还能够正常的通过redis sentinel正常访问redis的数据。我想了想&#xff0c;理论上是可以的&#xff0c;但是我没试过&#xff0c;今天有时间就测试了一下。搭建环境和测试代码的过程…

Java并发(十七)----变量的线程安全分析

1、成员变量和静态变量是否线程安全 如果它们没有共享&#xff0c;则线程安全 如果它们被共享了&#xff0c;根据它们的状态是否能够改变&#xff0c;又分两种情况 如果只有读操作&#xff0c;则线程安全 如果有读写操作&#xff0c;则这段代码是临界区&#xff0c;需要考虑线…

深入了解Python pydash库

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在数据处理和分析领域&#xff0c;Python一直是一种强大的编程语言。然而&#xff0c;在处理大规模数据集和执行复杂操作时&#xff0c;有时候需要更高效的工具。在本文中&#xff0c;我们将深入探讨pydash库&am…

语义分割 简介及数据集简介

参考文章 MS COCO数据集介绍以及pycocotools简单使用-CSDN博客

[MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择

前言 ⭐Hello!这里是欧_aita的博客。 ⭐今日语录&#xff1a;不要在乎别人怎么看你&#xff0c;因为他们根本就没有时间&#xff0c;他们只关心他们自己。 ⭐个人主页&#xff1a;欧_aita ψ(._. )>⭐个人专栏&#xff1a; 数据结构与算法 MySQL数据库 存储引擎 前言MySQL体…

李宏毅gpt个人记录

参考&#xff1a; 李宏毅机器学习--self-supervised&#xff1a;BERT、GPT、Auto-encoder-CSDN博客 用无标注资料的任务训练完模型以后&#xff0c;它本身没有什么用&#xff0c;GPT 1只能够把一句话补完&#xff0c;可以把 Self-Supervised Learning 的 Model做微微的调整&am…

32.768KHz时钟RTC晶振精度PPM值及频差计算

一个数字电路就像一所城市的交通&#xff0c;晶振的作用就是十字路口的信号灯&#xff0c;因此晶振的品质及其电路应用尤其关键。数字电路又像生命体&#xff0c;它的运行就像人身体里的血液流通&#xff0c;它不是由单一的某个器件或器件单元构成&#xff0c;而是由多个器件及…

【Spring Boot 源码学习】ApplicationListener 详解

Spring Boot 源码学习系列 ApplicationListener 详解 引言往期内容主要内容1. 初识 ApplicationListener2. 加载 ApplicationListener3. 响应应用程序事件 总结 引言 书接前文《初识 SpringApplication》&#xff0c;我们从 Spring Boot 的启动类 SpringApplication 上入手&am…

如何查询川菜食材配料的API接口

在当今的美食文化中&#xff0c;菜谱不只是一张简单的食谱&#xff0c;更是了解美食文化和饮食知识的重要途径。然而&#xff0c;若没有准确的食材配料&#xff0c;烹制出的每道菜品都将难以达到完美的味道。因此&#xff0c;为了更好地满足人们对于菜谱和食谱的需求&#xff0…