论文阅读——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预训练?

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 攀登者2(Java JS Python C)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5…

Qt 如何使用VTK显示点云

开发环境 ubuntu 20.04 VTK 8.2 编译VTK 下载源码 git clone --recursive https://gitlab.kitware.com/vtk/vtk.git 使用版本管理工具,切换版本到8.2 更改编译选项,这里使用cmake-gui进行配置 1、编译类型修改为Release 2、安装路径可以设置&#xf…

Appium 并行测试多个设备

一、前置说明 在自动化测试中,经常需要验证多台设备的兼容性,Appium可以用同一套测试运例并行测试多个设备,以达到验证兼容性的目的。 解决思路: 查找已连接的所有设备;为每台设备启动相应的Appium Server&#xff1b…

【头歌系统数据库实验】实验7 SQL的复杂多表查询-1

目录 第1关:求各颜色零件的平均重量 第2关:求北京和天津供应商的总个数 第3关:求各供应商供应的零件总数 第4关:求各供应商供应给各工程的零件总数 第5关:求重量大于所有零件平均重量的零件名称 第6关&#xff1…

字节开源的netPoll底层LinkBuffer设计与实现

字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解,对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…

IntelliJ IDEA开启git版本控制的简单教程

这篇文章想要分享一下怎么在IntelliJ IDEA开启版本控制,博主使用的是gitee,首先需要安装git,关于git的安装这里就不介绍了,很简单。 目录 创建git仓库 创建项目 开启版本控制 拉取项目 创建git仓库 首先,需要登录…

python 使用 AppiumService 类启动appium server

一、前置说明 在Appium的1.6.0版本中引入了AppiumService类,可以很方便的通过该类来管理Appium服务器的启动和停止。 二、操作步骤 import osfrom appium.webdriver.appium_service import AppiumService as OriginalServerfrom libs import pathclass AppiumSer…

office办公技能|ppt插件使用

PPT插件获取:链接:https://pan.baidu.com/s/1BOmPioUKeY2TdC-1V-o3Vw 提取码:tdji 一、ppt插件介绍 PPT插件是一种可以帮助用户在Microsoft PowerPoint软件中添加各种额外功能和效果的应用程序。使用PPT插件可以让用户更加轻松地制作出专业、…

No Chromedriver found that can automate Chrome ‘x.x.xxxx‘的解决办法

一、前置说明 在使用Appium对Android设备自动化测试时,切换WebView时抛出异常: selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: No Chromedriver foun…

12-07 周四 Pytorch 使用Visdom 进行可视化

简介 在完成了龙良曲的Pytroch视频课程之后,楼主对于pytroch有了进一步的理解,比如,比之前更加深刻的了解了BP神经网络的反向传播算法,梯度、损失、优化器这些名词更加熟悉。这个博客简要介绍一下在使用Pytorch进行数据可视化的一…

JAVA导出PDF(一)

思路一:直接导出pdf 使用freemarker和itext把html转pdf,存在中文乱码,宋体不识别,需下载simsun.ttc字体,空白占位符不识别等等问题,对前端依赖性较大,不推荐; 适用范围:…

使用Python实现爬虫IP负载均衡和高可用集群

做大型爬虫项目经常遇到请求频率过高的问题,这里需要说的是使用爬虫IP可以提高抓取效率,那么我们通过什么方法才能实现爬虫IP负载均衡和高可用集群,并且能快速的部署并且完成爬虫项目。 通常在Python中实现爬虫ip负载均衡和高可用集群需要一…

solidity实现ERC1155多代币标准

文章目录 1、NFT - 维基百科2、IERC1155MetadataURI3、IERC1155Receiver4、IERC11555、ERC11556、NFT11557、开源地址 1、NFT - 维基百科 ERC-1155 标准于2018年6月由Witek Radomski、Andrew Cooke、Philippe Castonguay、James Therien、Eric Binet及Ronan Sandford提出。此标…

『 C++ 』BinarySearchTree搜索二叉树

文章目录 前言 🦕二叉搜索树的概念 🦕搜索二叉树的初始化 🦕Insert( )插入函数 🦕👾 InsertR( ) 插入函数(递归) InOrder( ) 中序遍历打印 🦕Find( ) 查找函数 🦕👾 Find( ) 查找函数…

【Ajax】发送get请求获取接口数据

编写html实现通过Ajax发送get请求并获取数据 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

Libsvm中grid.py文件的解读

1.导入相关文件 这里重点讲一下 _ _all_ _ [find_parameters] &#xff1a; _all__ [find_parameters] 是 Python 中用于定义模块级别的变量 __all__ 的语法&#xff0c; __all__ 是一个包含模块中应该被公开&#xff08;即可以通过 from module import * 导入&#xff09;的…

【开源】基于Vue+SpringBoot的快乐贩卖馆管理系统

项目编号&#xff1a; S 064 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S064&#xff0c;文末获取源码。} 项目编号&#xff1a;S064&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 搞笑视频模块2.3 视…

CentOS上安装和配置Apache HTTP服务器

在CentOS系统上安装和配置Apache HTTP服务器可以为您的网站提供可靠的托管环境。Apache是开源的Web服务器软件&#xff0c;具有广泛的支持和强大的功能。下面是在CentOS上安装和配置Apache HTTP服务器的步骤&#xff1a; 步骤一&#xff1a;安装Apache HTTP服务器 打开终端&am…

总结一篇本地idea配合阿里云服务器使用docker

idea打包打镜像发到阿里云服务器 先说一下使用docker desktop软件怎么使用 1.下载docker desktop官网&#xff0c;先注册个账号吧&#xff0c;后面桌面软件登录会用到&#xff08;当然&#xff0c;配合这个软件使用需要科学上网&#xff09; 安装这个要配合wsl使用&#xf…

电脑搜不自己的手机热点,其余热点均可!

一、现象&#xff1a; 之前可正常连接&#xff0c;突然间发现收不到自己的WiFi信号&#xff0c;其余人均可收到。通过重复手机电脑关机、改变热点设置中的频段等方式均没解决&#xff0c;同事电脑和手机可搜索到我的WiFi。 二、问题&#xff1a; WiF驱动程序更新 三&#x…