论文阅读——Deformable ConvNets v2

news2025/2/24 9:59:01

论文: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.coloradmin.cn/o/1292918.html

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

相关文章

Python中如何判断List中是否包含某个元素

更多资料获取 📚 个人网站:ipengtao.com 在Python中,判断一个列表(List)是否包含某个特定元素是常见的任务之一。在本文中,将深入探讨多种判断List成员包含性的方法,并提供丰富的示例代码&…

Scratch少儿编程系统开发时案例验证的必要性

scratch少儿编程[1] 随着少儿编程教育的普及,越来越多的公司和集成商开始关注scratch少儿编程系统的二次开发。scratch是一个由麻省理工学院媒体实验室开发的免费、开源的少儿编程软件。它具有易用、趣味性强、可扩展性强等特点,非常适合少儿编程教育。…

产品成本收集器流程演示

感谢大佬的文章,我只是一个翻译搬运工,原文地址:产品成本收集器 概述 SAP 令人兴奋的部分之一是它在不同操作模块之间的集成程度。使用产品成本收集器来跟踪生产就是一个很好的例子。在本博客中,我计划遵循产品成本收集器流程&a…

分享一个微信红包封面过审方法

大家好,我是小悟 兄弟们,已经12月份了,今年的最后一个月,距离过年还有两个月左右,如果你需要制作微信红包封面,我建议你现在就可以着手了。 一方面,临近春节,会有很多人在制作红包封…

[b01lers2020]Life on Mars 一个接口的sql schema.schemate表

这里还是很简单的 啥也没有 然后抓包看看 发现传递参数 直接尝试sql 然后如果正确就会返回值 否则 返回1 chryse_planitia union select database(),version() 发现回显 直接开始注入 chryse_planitia union select database(),version()chryse_planitia union select data…

ESP32-Web-Server编程- 在 Web 上开发动态纪念册

ESP32-Web-Server编程- 在 Web 上开发动态纪念册 概述 Web 有很多有趣的玩法,在打开网页的同时送她一个惊喜。 需求及功能解析 本节演示在 ESP32 上部署一个 Web,当打开对应的网页时,将运行动态的网页内容,显示炫酷的纪念贺词…

linux学习之详解文件

目录 1.先认识文件 2.c语言中常用文件接口 fopen(打开文件) 3.系统接口操作文件 open write 文件的返回值以及打开文件的本质 理解struct_file内核对象 了解文件描述符(fd)分配规则 重定向 dup接口 标准错误流 文件缓冲…

【项目问题解决】IDEA2020.3 使用 lombok 插件 java: 找不到符号 符号: 方法 builder()

目录 lombok找不到符号问题修改 1.问题描述2.问题原因3.解决思路4.解决方案5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 IDEA2020.3 使用 lombok 插件 java: 找不到符号 符号: 方法 builder(),无法使用lombok下应有的注解,一度怀疑是版本问题 …

二十一章(网络通信)

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

hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED

一、背景 要利用gpt产生的存放在es种的日志表做统计分析,通过hive建es的映射表,将es的数据拉到hive里面。 在最初的时候同事写的是全量拉取,某一天突然任务报错,但是没有错误日志一直报:Task Transitioned from NEW t…

MySQL数据库从小白到入门(二)

多表关系: 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构。由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种。 外键: 创…

JavaSE基础50题:11. 输出一个整数的每一位

概述 输出一个整数的每一位。 如:1234的每一位是4,3,2,1 。 个位:1234 % 10 4 十位:1234 / 10 123 123 % 10 3 百位:123 / 10 12 12 % 10 2 千位: 12 / 10 1 代码 ublic sta…

LinuxBasicsForHackers笔记 -- 管理用户环境变量

查看和修改环境变量 env – 您可以通过从任何目录在终端中输入 env 来查看所有默认环境变量。环境变量的名称始终为大写,如 HOME、PATH、SHELL 等。 查看所有环境变量 set – 查看所有环境变量,包括 shell 变量、局部变量和 shell 函数(例…

java学习part40collections工具类

162-集合框架-Collections工具类的使用_哔哩哔哩_bilibili 1.collections工具类 感觉类似c的algorithm包,提供了很多集合的操作方法 2.排序 3.查找 4.复制替换 5.添加,同步

蓝桥杯day03——Bigram 分词

1.题目 给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。 对于每种这样的情况,将第三个词 "th…

计数排序(C语言实现)

文章目录 算法思想操作步骤计数排序的特性总结代码实现 算法思想 计数排序是一种非比较排序,又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤 统计相同元素出现次数;根据统计的结果将序列回收到原来的序列中。 计数排序的特性总…

数据库:JDBC编程

专栏目录 MySQL基本操作-CSDN博客 MySQL基本操作-CSDN博客 数据库的增删查改(CRUD)基础版-CSDN博客 数据库增删改查(CRUD)进阶版-CSDN博客 数据库的索引-CSDN博客 基本概念 JDBC编程就是通过Java代码来操作数据库 api 数据库是…

基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL

简介 CDC 的全称是 Change Data Capture ,在广义的概念上,只要是能捕获数据变更的技术,我们都可以称之为 CDC 。目前通常描述的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。CDC 技术的应用场景非常广泛…

【学习记录】从0开始的Linux学习之旅——字符型设备驱动及应用

一、概述 Linux操作系统通常是基于Linux内核,并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程,具有强大的网络功能和良好的兼容性。基于前面应用与驱动的开发学习,本文主要讲述如何在linux系统上把应用与驱动…