论文链接:https://arxiv.org/pdf/2005.09973.pdf

code:https://github.com/Anymake/DRN_CVPR2020

文章概要:

  本文是中科院自动化所、腾讯优图、快手科技联合发表的工作,收录于CVPR2020。本文针对定向和密集场景中的目标检测任务提出了动态优化网络,可以说是目标检测在特定场景下的应用与优化。本文主要创新点在于:
  1、提出了一种新颖的可自适应调整目标感受野的特征选择模块FSM。
  2、提出了两种动态优化的检测头(DRH-C/R),分别对分类和回归任务进行动态优化,实现对样本唯一性和特殊性的建模。

本文动机:

  密集多角度物体检测面临的挑战:
  1、神经元的感受野全部沿轴排列且具有相同的形状,但物体通常具有不同的形状并沿不同的方向排列;
  2、检测模型通常利用通用知识进行训练,但在测试阶段可能不能很好的处理特定的物体;
  3、有限的数据集限制了密集多角度目标检测任务的发展。

  针对问题1和问题2,本文分别提出了特征选择模块FSM和动态优化head(DRH-C/R);针对问题3,本文收集了一个扩展的且带有完整注释的数据集SKU110K-R,该数据集基于SKU110K数据集的定向边界框进行重新标记。

网络整体结构:

本文以CenterNet(https://arxiv.org/abs/1904.07850)作为baseline,CenterNet算法将目标检测问题变成了一个关键点的估计问题,通过预测物体的中心点位置及对应物体的长与宽,实现了当前检测精度与速度最好的权衡。为了预测有向的边界框(oriented bounding boxes),添加了一个分支回归边界框的方向。有向边界框定义如下:
$$\begin{split}
&P_{lt}=M_r[-w/2,-h/2]^T+[c_x+\delta_x,c_y+\delta_y]^T,\\
&P_{lt}=M_r[+w/2,-h/2]^T+[c_x+\delta_x,c_y+\delta_y]^T,\\
&P_{lt}=M_r[-w/2,+h/2]^T+[c_x+\delta_x,c_y+\delta_y]^T,\\
&P_{lt}=M_r[+w/2,+h/2]^T+[c_x+\delta_x,c_y+\delta_y]^T,
\end{split}\tag{1}
$$
参数说明:$(c_x,c_y)$和$(\delta_x,\delta_y)$表示中心点和预测的偏移量。$(w,h)$是预测的尺寸,$M_r$表示旋转矩阵,$P_{lt},P_{lb},P_{rt},P_{rb}$表示四个角点。遵循CenterNet的回归任务,文章使用$L_1$损失进行旋转角度的回归:
$$L_{ang}=\frac{1}{N}\sum_{k=1}^N|\theta-\hat{\theta}|,\tag{2}$$
其中$\theta$和$\hat{\theta}$分别表示旋转角度的目标值和预测值。$N$表示正样本的数量,总体的训练目标函数为:
$$L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off}+\lambda_{ang}L_{ang},\tag{3}$$
其中$L_k,L_{size},L_{off},L_{ang}$分别表示中心点类别损失、尺度回归损失、偏置损失、角度回归损失,$\lambda_{size},\lambda_{off},\lambda_{ang}$为权重系数,用于平衡各部分损失。

特征选择模块(Feature Selection Module)

  为了缓解各种物体与轴对齐的感受野之间的不匹配问题,作者提出了一种特征选择模块(FSM),用以自适应的聚合不同的核大小、形状(长宽比)、方向所提取的信息。 

FSM工作流程:
  1、给定初始特征图$X\in\R^{H\times W\times C}$,经过$1\times 1$Conv、BN、Relu输出$X_c\in\R^{H\times W\times C'}$;
  2、利用多个不同尺寸的的RCLs从$X_c$提取多个特征。其中每个RCl负责不同的感受野区域;
  3、利用注意力机制融合不同的特征。
  作者提到RCL的灵感来源于DCN,fig 4.展示了可变形卷积的概括了各种尺度变换、比例变换和旋转变换。同时作者在此基础上,引入了角度信息$\theta$对卷积核的方向进行编码,把之前标准的卷积核变成带有参数$\theta$的旋转卷积核,这种方式缓解了各种物体与轴对齐的感受野之间的不匹配问题,使得卷积核能更加适应旋转目标信息的提取。基于上述内容,我觉得RCL更像是DCN和ROI Trans(https://arxiv.org/pdf/1812.00155.pdf)思想的结合,但是ROI Trans是对ROI进行旋转。

Figure 4.正常卷积和可变形卷积的采样方式

 FSM的数学描述:
  1、遵循DCN的表达形式,本文依然使用$\mathcal{R}$表示规则网格的感受野。对于$3\times 3$的核,有:
$$\mathcal{R}=\lbrace(-1,-1),(-1,0),...,(0,1),(1,1)\rbrace,\tag{4}$$
  2、给定第i个位置预定义的偏移$p_i\in\mathcal{R}$和学习到的角度参数$\theta$,学习到的偏移量为:
$$\delta_{p_i}=M_r(\theta)\cdot p_i-p_i\tag{5}$$
  3、对于输出特征图$X_i$中的每个位置$p_0$,有:
$$X_i(p_0)=\sum_{p_n\in\mathcal{R}}\cdot X_c(p_0+p_n+\delta p_n),\tag{6}$$
  4、为了增强神经元感受野的自适应能力,本文采用注意力机制并与point-wise的方式融合特征。$X_i$首先经过一个注意力模块(由$1\times 1$卷积核、BN和RELU组成)得到注意力热图$A_i\in\bm{R}^{H\times W\times 1}(i\in1,2,3)$,之后归一化选择权重,
$$A'_i=SoftMax([A_1,A_2,A_3]).\tag{7}$$

  5、特征融合并输出特征图$Y$:
$$Y=\sum_{i}A'_i\cdot X_i,\tag{8}$$
其中$Y\in\mathbb{R}^{H\times W\times C}$,需要注意的是FSM可以扩展到更多的分支,文中3分支的结构只是其中一个例子。

动态优化检测head(Dynamic Refinement Head)

  文章提到,在标准的机器学习框架中,人们通过大量标注的数据训练模型。在推理阶段,将测试样例输入参数固定的模型以获得预测的结果。这种训练好的模型只能从训练集学到的普遍性知识做出响应而忽略每个样例(sample)的唯一性,会产生预测灵活性差的问题。figure 1.对本文提到的问题进行了说明。离边界较近的点很容易发生误识别。为了增强模型预测的灵活性,提出了DRH(DRH-C/R,分别用于分类和回归任务)。DRH对每个输入对象的特殊性进行建模。

Dynamic refinement for classification

  • 给定输入$F_in\in\mathcal{R}^{H\times W\times C}$,首先获得目标感知(object-aware)的滤波器$K_c$:
    $$K_c=G_c(F_{in};\phi),\tag{9}$$
    其中$G_c$表示动态滤波生成器,$\phi$表示$G_c$的参数集。$K_c$表示从样本中学习到的核权重。
  • $F_{mid}$和$K_c$进行卷积操作得到细化的特征$F_{\Delta}$:
    $$F_{\Delta}=F_{mid}\ast K_c,\tag{10}$$
    $F_{mid}$为$F_in$经过Conv-BN-ReLu处理得到。
  • 最后利用公式$(11)$得到分类预测$H_c$:
    $$H_c=C((1+\xi\cdot F_{\Delta}/||F_{\Delta}||)\cdot F_mid;\Phi),\tag{11}$$
    $C(\cdot;\Phi)$表示参数为$\Phi$的分类器。$\xi$是控制细化范围的常数因子。

Dynamic refinement for regression

  • 给定输入$F_{in}\in\mathcal{R}^{H\times W\times C}$,首先通过$G_r(\cdot;\psi)$获得$K_r$,之后通过类似公式$(10)$的操作获得$H_{\Delta}$,最后计算得到目标感知的回归结果$H_r$:
    $$\begin{split}
    &H_b=\mathcal{R}(F_{mid};\Psi),\\
    &H_r=(1+\epsilon\cdot tanh(H_{\Delta}))\cdot H_b,
    \end{split}\tag{12}
    $$
    $\mathcal{R}(\cdot;\Psi)$表示参数为$\Psi$的回归器。细化因子通过$tanh$限制在$[-1,1]$范围内变化。$\epsilon$表示防止模型被过大细化而混淆的控制因子,设置为0.1。

实验

  • 对比实验

 消融实验

  • 定性分析

总结
  本文总结了现有的有向密集目标检测任务存在的问题,提出了相应的解决方法。文章逻辑结构清晰,实验充分。我觉得文章中提到的物体与轴对齐的感受野不匹配问题就是特征不对齐问题,细化模块本质上就是学习一个映射函数,该映射函数能根据输入特征得到动态的滤波器。

CVPR2020 面向密集多角度物体检测的动态修正网络(DRN)的更多相关文章

  1. 物体检测之FPN及Mask R-CNN

    对比目前科研届普遍喜欢把问题搞复杂,通过复杂的算法尽量把审稿人搞蒙从而提高论文的接受率的思想,无论是著名的残差网络还是这篇Mask R-CNN,大神的论文尽量遵循著名的奥卡姆剃刀原理:即在所有能解决问 ...

  2. 利用opencv进行移动物体检测

    进行运动物体检测就是将动态的前景从静态的背景中分离出来.将当前画面与假设是静态背景进行比较发现有明显的变化的区域,就可以认为该区域出现移动的物体.在实际情况中由于光照阴影等因素干扰比较大,通过像素直接 ...

  3. 物体检测丨Faster R-CNN详解

    这篇文章把Faster R-CNN的原理和实现阐述得非常清楚,于是我在读的时候顺便把他翻译成了中文,如果有错误的地方请大家指出. 原文:http://www.telesens.co/2018/03/1 ...

  4. OpenCV学习 物体检测 人脸识别 填充颜色

    介绍 OpenCV是开源计算机视觉和机器学习库.包含成千上万优化过的算法.项目地址:http://opencv.org/about.html.官方文档:http://docs.opencv.org/m ...

  5. opencv,关于物体检测

    关于物体检测 环境:opencv 2.4.11+vs2013 参考: http://www.cnblogs.com/tornadomeet/archive/2012/06/02/2531705.htm ...

  6. 『计算机视觉』物体检测之RefineDet系列

    Two Stage 的精度优势 二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,导致分类器训练比较困难,这也是一步法效果不如二步法的原因之一,也是focal loss的motivation ...

  7. 后RCNN时代的物体检测及实例分割进展

    https://mp.weixin.qq.com/s?__biz=MzA3MzI4MjgzMw==&mid=2650736740&idx=3&sn=cdce446703e69b ...

  8. 物体检测算法 SSD 的训练和测试

    物体检测算法 SSD 的训练和测试 GitHub:https://github.com/stoneyang/caffe_ssd Paper: https://arxiv.org/abs/1512.02 ...

  9. ssd物体检测模型训练和测试总结

    参考网址:github:https://github.com/naisy/realtime_object_detection 2018.10.16ssd物体检测总结:切记粗略地看一遍备注就开始训练模型 ...

随机推荐

  1. 重温这几个屌爆的Python技巧!

    我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用.这些年来的经历让我学到了很多的小技巧和知识,大多数是通过阅读很流行的开源软件,如Djan ...

  2. 大学生可用来接单,利用Python实现教务系统扩容抢课!

    最近一学期一次的抢课大戏又来了,几家欢乐几家愁.O(∩_∩)O哈哈~(l我每次一选就过了hah,我还是有欧的时候滴).看着他们盯着教务系统就着急,何况我们那教务系统,不想说什么.emmm 想周围的朋友 ...

  3. JavaScript按位运算符~

    1. JavaScript按位运算符 Bit operators work on 32 bits numbers. 2. JavaScript按位运算符~ 值得注意的是,在JavaScript中,~5 ...

  4. java_内部类、匿名内部类的使用

    内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类. 内部类的分类 成员内部类,类定义在了成员位置 (类中方法外称为成员位置) 局部内部类,类定义在方法内 成员内部类 ...

  5. tomcat启动失败的解决办法

    初次安装tomcat启动失败的解决办法: 1.CATALINA_HOME    C:\Program Files\apache-tomcat-8.5.242.path  %CATALINA_HOME% ...

  6. gotoblas,mpich,hpl,hpcg的安装

    gotoblas的安装 mpich 安装 tar zxvf mpich-3.2.1.tar.gz cd mpich-3.2 ./configure --prefix=/usr/local/mpich( ...

  7. 2020-07-08:mysql只有一个表a,什么情况下会造成死锁,解决办法是什么?

    福哥答案2020-07-08: 表锁是不会出现死锁的,但锁等待现象是有可能的.行锁是行级别的,有可能出现死锁.环形等待死锁和唯一键死锁 很常见. 避免死锁方法:1.减少事务操作的记录数.2.约定按相同 ...

  8. myBatis源码解析-反射篇(4)

    前沿 前文分析了mybatis的日志包,缓存包,数据源包.源码实在有点难顶,在分析反射包时,花费了较多时间.废话不多说,开始源码之路. 反射包feflection在mybatis路径如下: 源码解析 ...

  9. 因网络时代与云端应用而生的AGPL-3.0授权条款

    ​ 此篇文章转载自:因應網路時代與雲端應用而生的 AGPL-3.0 授權條款 如你所见,原文为繁体,我将其转为简体并将"网路"替换为"网络",方便阅读.并未修改 ...

  10. moonlight不显示鼠标指针

    多显示屏导致moonlight不显示鼠标指针, 使用的时候关闭其他显示屏,只使用一个显示屏,就可以正常显示了.