论文提出DRConv,很好地结合了局部共享的思想并且保持平移不变性,包含两个关键结构,从实验结果来看,DRConv符合设计的预期,在多个任务上都有不错的性能提升



来源:晓飞的算法工程笔记 公众号

论文: Dynamic Region-Aware Convolution

Introduction


  目前主流的卷积操作都在空间域进行权值共享,而如果想得到更丰富的信息,只能通过增加卷积的数量来实现,这样不仅计算低效,也会带来网络优化困难。与主流卷积不同,local conv在不同的像素位置使用不同的权值,这样能够高效地提取丰富的信息,主要应用在人脸识别领域,但local conv不仅会带来与特征图大小相关的参数量,还会破坏平移不变性。

  考虑到以上两种卷积的优劣,论文提出了DRConv(Dynamic Region-Aware Convolution),DRConv的结构如图1,首先通过标准卷积来生成guided feature,根据guided feature将空间维度分成多个区域,卷积核生成模块\(G(\cdot)\)根据输入图片动态生成每个区域对应的卷积核。DRConv能够可学习地为不同的像素位置匹配不同的卷积核,不仅具有强大的特征表达能力,还可以保持平移不变性。由于卷积核是动态生成的,能比local conv减少大量的参数,而整体计算量几乎和标准卷积一致。

  论文的主要贡献如下:

  • 提出DRConv,不仅具有强大的语义表达能力,还能很好地维持平移不变性。
  • 巧妙的设计了可学习guided mask的反向传播,明确区域共享的规则(region-sharing-pattern),并根据损失函数回传的梯度进行更新。
  • 只需简单地替换,DRConv就能在图片分类,人脸识别,目标检测和语义分割等多个任务上达到很好的性能。

Our Apporach


Dynamic Region-Aware Convolution

  对于标准卷积,定义输入\(X\in \mathbb{R}^{U\times V\times C}\),空间维度\(S\in \mathbb{R}^{U\times V}\),输出\(Y\in \mathbb{R}^{U\times V\times O}\),权重\(W\in \mathbb{R}^C\),输出的每个channel的计算如公式1,\(*\)为二维卷积操作。

  对于基础的local conv,定义非共享权重\(W\in \mathbb{R}^{U\times V\times C}\),输出的每个channel计算如公式2,其中\(W_{u,v,c}^{(o)}\)表示位置\((u,v)\)上的独立非共享卷积核,即卷积在特征图上移动时,每次更换不同的卷积核。

  结合以上公式,定义guided mask\(M={S_0, \cdots,S_{m-1}}\)用来表示空间维度划分的\(m\)个区域,\(M\)根据输入图片的特征进行提取,每个区域\(S_t(t\in [0, m-1])\)仅使用一个共享的卷积核。定义卷积核集\(W=[W_0,\cdots,W_{m-1}]\),卷积核\(W_t \in \mathbb{R}^C\)对应于区域\(S_t\)。输出的每个channel的计算如公式3,即卷积在特征图上移动时,每次根据guided mask更换对应的卷积核。

  从上面的描述可以看到,DRConv包含两个主要部分:

  • 使用可学习的guided mask来将空间维度划分为多个区域,如图1所示,guided mask中相同颜色的像素归为同一区域,从语义的角度来看,即将语义相似的特征归为统一区域。
  • 对于每个共享区域,使用卷积核生成模块来生成定制的卷积核来进行常规的2D卷积操作,定制的卷积核能够根据输入图片的重要特征自动地进行调节。

Learnable guided mask

  作为DRConv的重要部分,guided mask决定了卷积核在空间维度上的分布,该模块由损失函数指导优化,从而能够适应输入的空间信息变化,从而改变卷积核的分布。

  对于包含\(m\)个channel的\(k\times k\)DRConv,定义\(F\)为guided feature,\(M\)为guided mask,\(M\)上的每个位置\((u,v)\)的值计算如公式4,函数\(argmax(\cdot)\)输出最大值的下标,\(F_{u,v}\)为位置\((u,v)\)上的guided feature向量,所以\(M\)的值为\([0, m-1]\),用来指示该位置对应的卷积下标。

  为了让guided mask可学习,必须得到用来生成guided feature的权值的梯度,但由于\(argmax(\cdot)\)的使用导致guided feature的梯度无法计算,所以论文设计了类似的梯度。

  • Forward propagation

  根据公式4获得guided mask,根据公式5得到每个位置\((u,v)\)得到卷积核\(\tilde{W}_{u,v}\),其中\(W_{M_{u,v}}\)是\(G(\cdot)\)生成的卷积核集\([W_0, \cdots, W_{m-1}]\)中的一个,\(M_{u,v}\)是guided feature在位置\((u,v)\)上值最大的channel下标,通过这种方式来\(m\)个卷积核与所有位置的关系,将空间像素分为\(m\)个组。使用相同卷积核的像素包含相似的上下文信息,主要由于具有平移不变性标准卷积将这些信息传递给了guided feature。

  • Backward propagation

  为了使梯度得到回传,首先用\(\hat{F}\)来代替guided mask的one-hot表示,计算如公式6所示,在channel维度上进行\(softmax(\cdot)\),期望\(\hat{F}_{u,v}^j\)能尽可能地接近0和1,这样\(\hat{F}_{u,v}^j\)与guided mask的one-hot表示将非常相似。公式5可以看作是卷积核集\([W_0,\cdots,W_{m-1}]\)乘以\(M_{u,v}\)的one-hot表示,这里替换为\(\hat{F}_{u,v}^j\)。

  \(\hat{F}_{u,v}^j\)的梯度计算如公式7,$\langle, \rangle \(为点积,\)\bigtriangledown_{\cdot} \mathcal{L}$表示guided mask对应loss函数的梯度,如图a,公式7近似于公式5的反向传播。

  公式8为公式6的反向传播,\(\odot\)为逐元素相乘,如果不设计特殊的反向传播,SGD将不能对相关的参数进行优化,因为函数\(argmax(\cdot)\)是不可导的。因此,\(softmax(\cdot)\)是用来接近\(argmax(\cdot)\),通过替换函数将梯度回传到guided feature,是的guided mask可学习。

Dynamic Filter: Filter generator module

  在DRConv中,使用卷积核生成模块来生成不同区域的卷积核,由于不同图片的特征不同,在图片间共享的卷积核不能高效地提取其独有的特征,需要定制化的特征来专注不同图片的特性。

  定义输入\(X\in \mathbb{R}^{U\times V\times C}\),包含两层卷积的卷积核生成模块\(G(\cdot)\),\(m\)个卷积\(W=[W_0,\cdots,W_{m-1}]\),每个卷积仅用于区域\(R_t\)。如图b所示,为了获得\(m\)个\(k\times k\)卷积,先使用自适应平均池化将\(X\)下采样为\(k\times k\),然后使用两个连续的\(1\times 1\)卷积,第一个使用\(sigmoid(\cdot)\)进行激活,第二个设定\(group=m\),不使用激活。卷积核生成模块能够增强网络获取不同图片特性的能力,由于根据输入的特征生成卷积核,每个卷积核的关注点能够根据输入的特性进行自动地调整。

Experiments


Classification

Face Recognition

COCO Object Detection and Segmentation

Ablation Study


Visualization of dynamic guided mask

Different model size

Different region number

Different spatial size

CONCLUSION


  论文提出DRConv,很好地结合了局部共享的思想并且保持平移不变性,包含两个关键结构,首先使用guided mask对特征图中的像素划分到不同的区域,其次使用卷积核生成模块动态生成区域对应的卷积核。从实验结果来看,DRConv符合设计的预期,特别是图3的guided mask的可视化结果,在多个任务上都有不错的性能提升。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

DRConv:旷视提出区域感知动态卷积,多任务性能提升 | CVPR 2020的更多相关文章

  1. 最近被旷视的YOLOX刷屏了!

    目录 论文主要信息 文章概要 背景 YOLOX-DarkNet53 实现细节 YOLOv3 baseline Decoupled head 实验 思路 story Strong data augmen ...

  2. ECCV 2018 | 旷视科技提出统一感知解析网络UPerNet,优化场景理解

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕.届时,旷视首席科学家孙 ...

  3. ECCV 2018 | 旷视科技提出GridFace:通过学习局部单应变换实现人脸校正

    全球计算机视觉三大顶会之一 ECCV 2018(European Conference on Computer Vision)即将于 9 月 8 -14 日在德国慕尼黑拉开帷幕,旷视科技有多篇论文被此 ...

  4. 旷视等Oral论文提出GeoNet:基于测地距离的点云分析深度网络

    基于网格曲面的几何拓扑信息可以为物体语义分析和几何建模提供较强的线索,但是,如此重要的连接性信息在点云中是缺失的.为此,旷视西雅图研究院首次提出一种全新的深度学习网络,称之为 GeoNet,可建模点云 ...

  5. 入职9月,旷视孙剑106分钟讲述CV创业科研的5大区别

    雷锋网按:本文为旷视科技首席科学家孙剑日前在 CCF-ADL上做的题为<如何在大公司和创业公司做好计算机视觉研究>的分享,主要介绍了近期计算机视觉的发展现状,ResNet基本原理和设计,旷 ...

  6. 旷视MegEngine核心技术升级

    旷视MegEngine核心技术升级 7 月 11 日,旷视研究院在 2020 WAIC · 开发者日「深度学习框架与技术生态论坛」上围绕 6 月底发布的天元深度学习框架(MegEngine)Beta ...

  7. ACNet: 特别的想法,腾讯提出结合注意力卷积的二叉神经树进行细粒度分类 | CVPR 2020

    论文提出了结合注意力卷积的二叉神经树进行弱监督的细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数来定义从根节点到叶子节点的计算路径,结合所有叶子节点的预测值进行最终的预测,论文的 ...

  8. 旷视MegEngine网络搭建

    旷视MegEngine网络搭建 在 基本概念 中,介绍了计算图.张量和算子,神经网络可以看成一个计算图.在 MegEngine 中,按照计算图的拓扑结构,将张量和算子连接起来,即可完成对网络的搭建.M ...

  9. 旷视MegEngine基本概念

    旷视MegEngine基本概念 MegEngine 是基于计算图的深度神经网络学习框架. 本文简要介绍计算图及其相关基本概念,以及它们在 MegEngine 中的实现. 计算图(Computation ...

  10. 旷视研究院Detection组负责人

    http://www.skicyyu.org/ https://zhuanlan.zhihu.com/p/61910297 俞刚,旷视研究院Detection组负责人.2014年博士毕业于新加坡南洋理 ...

随机推荐

  1. OpenWrt的dnsmasq, ipset和iptables配置

    说明 这篇文章主要用于介绍在运行OpenWrt的MT7621系列路由器上, 如果安装v2rxy并开启自动出园功能. 这里介绍的是最佳实践, 不同于常见的代理方法. 通过ipset和iptables配合 ...

  2. 配置主机访问virtualbox中redhat7.3虚拟机网络(其他系统配置也类似)

    为什么默认无法访问? virtualbox默认分配一个NAT网络,这个是给虚拟机操作系统访问互联网用的,默认主机通过这个ip段无法直接访问虚拟机.[网卡1] 需要添加一块网卡 在虚拟机关闭状态下,点[ ...

  3. Kafka本地单实例安装

    下载安装 从国内镜像站点下载并安装Kafka安装包,以下载并安装v3.2.3版本为例. $ tar -xzf kafka_2.12-3.2.3.tgz $ cd kafka_2.12-3.2.3 启动 ...

  4. xcode真机运行包添加(更新到15.4)

    今天给真机装包,提示xcode版本低不能安装,电脑内存有些不足,xcode更新不了,这时候了解到xcode可以单独添加开发包\(^o^)/~ 1.下载 链接: https://pan.baidu.co ...

  5. RabbitMQ和RPC

    消息队列 消息队列中间件 (Message Queue Middleware,简称 MQ) 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,它可以在分布式环境下扩展进程间的数据通信,并基于数据 ...

  6. 【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤

    问题描述 Java Spring Boot的代码在IDE里面跑可以连上 Azure 的 Redis服务,打包成Image放在容器里面跑,就连不上azure的redis服务,错误消息为: Unable ...

  7. Netty笔记(4) - 对Http和WebSocket的支持、心跳检测机制

    对HTTP的支持 服务端代码: 向 PipeLine中 注册 HttpServerCodec Http协议的编码解码一体的Handler 处理Http请求 封装Http响应 public class ...

  8. Zabbix“专家坐诊”第195期问答汇总

    问题一 Q:麻烦请教一下zabbix服务器总是上报这几个告警,需要处理嘛?怎么处理? A:同步历史数据进程负载过高的话会影响到server的性能,建议增加服务器硬件配置. Q:是需要增加哪方面的配置, ...

  9. git合并代码操作-2022新项目

    自己做开发工作已经好几年,以前由于都是开发一些小项目,基本上也没拉什么分支进行开发,也没有涉及到合并代码的操作,因此自己对于如何合并代码还真没有实际地操作过.今天负责人突然交给我一个任务,让我去合并代 ...

  10. Shell脚本自动下载FTP文件上传到S3

    1. shell脚本下载 #!/bin/bash #用户名 USER=xxx #密码 PASSWORD=xxx #下载文件临时目录 SRCTDIR=/approveform/uat/tempin #S ...