专栏首页人工智能前沿讲习CVPR 2020丨ADSCNet: 自纠正自适应膨胀率计数网络解读

CVPR 2020丨ADSCNet: 自纠正自适应膨胀率计数网络解读

编者按:在CVPR 2020上,商汤团队提出的自纠正自适应膨胀率计数网络,针对计数任务中点标注位置不一致和透视现象造成巨大的尺度变化的问题提出了有效的网络设计和监督方法。在监督方式方面,ADSCNet利用网络学习的结果来纠正不一致的人工标注从而更有效的训练;在网络设计方面,ADSCNet提出自适应膨胀率的卷积结构,不同位置采用不同的膨胀率来适应尺度的变化。ADSCNet在四个公开数据集上均有显著的提升。

作者:知乎—商汤科技SenseTime

地址:https://www.zhihu.com/org/shang-tang-ke-ji-sensetime

论文名称:

《Adaptive Dilated Network with Self-Correction Supervision for Counting》

问题和挑战

目标计数作为计算机视觉的一个重要方向。在工业界有着广泛的应用,例如交通场景下的拥堵判断,视频监视下的流量统计以及地铁中的人流分析等。近年来,使用卷积神经网络(CNN)的方法取得了显著的进展。但是,这项任务仍然具有挑战:

a. 由于密集的场景,对于目标多采用点标注的方式,这就带来标注位置不一致的问题,如下图(a)的黄点,点的位置可能在嘴上,眼睛,耳朵等。那么究竟哪里才是更有利于网络学习的位置呢?

b. 如下图(b)在监控的密集的场景下,不但在不同的场景中目标的尺度差异大,而且在同一张图中也有由于透视现象造成目标会有巨大的尺度变化。

方法介绍

针对以上提出的问题,我们提出了一个新颖的计数框架,如下图所示。它由自适应膨胀卷积网络和自校正监督组成。在这一部分,我们首先会从高斯混合模型(GMM)的角度理解传统的目标密度图,然后我们将介绍如何利用一种期望最大化(EM)的方式进行自纠正更新标签,最后将介绍自适应膨胀率卷积的网络结构和实现细节。

1. 自纠正的监督方式

动机:随着模型的训练的进行,不一致的点标注会影响网络学习的上限。通过观察发现学习一定时间以后,网络预测的密度在响应位置一致性上好于人工标注。所以我们希望通过利用网络的预测来纠正标注的位置,从而得到更一致同时更有利于网络学习的密度图标签。

方法:将高斯密度图看作一个高斯混合模型(GMM):

其中D表示高斯密度图,K表示目标个数,x表示图中的位置

这里可以用人工标注的点作为均值,固定值为方差,生成高斯混合模型的初始分布,而网络预测的密度图可以近似看作网络根据图像特征预测的一个目标分布。我们的方法就是利用网络预测来以一种类似期望值最大化(EM)的方式更新高斯混合模型从而得到适合的标签。

具体方式如下:

E步骤:

M步骤:

其中X表示位置矩阵随着E和M交替执行,我们会得到更一致响应的标签。在更新的过程,由于已知每个目标对于整体的分布是相同的,所以对于重新估计的权重系数π我们会固定为1/K.

自纠正损失函数:

提出的自纠正损失函数包含两个部分,一个部分是直接全图和纠正后密度图比较L1距离,这部分关注整图数量上的误差,第二部分为权重系数的监督,主要关注个体,保证对于整体的贡献一致

总体而言,提出的自纠正监督具有许多理想的属性。首先,它能够容忍标注偏差。动态更新目标密度图可以纠正某些标签的偏差,以帮助模型学习到一致的特征表达。其次,对于方差的变化是鲁棒的。可以根据图像特征采用迭代调整方差以适应响应区域。第三,它对象数量的变化很敏感。混合系数的波动有效地反映了漏检和误检。下面展示了密度图估计中的四种常见情况(抖动,方差增加和高斯核的变化)自纠正的对比。

2. 自适应膨胀率网络结构

我们从两个角度设计了自适应膨胀卷积

  1. 从尺度变化方面,我们使用连续的感受野也来匹配连续的尺度变化。
  2. 为了学习空间感知,不同的位置回采用不同的膨胀率来进行采样。

下图为我们的自适应膨胀卷积的过程:

步骤1:以相同特征为输入,通过标准3×3卷积层得到一张与原图相同大小的单通道的膨胀率图。特别地,我们添加了一个ReLU层来保证膨胀率图上值都为非负数。

步骤2:对特征进行自适应感受野的采样,不同位置的采样网格大小为膨胀率图对应位置的值,这个值可能会是小数,这里我们采用了双线性插值进行采样

步骤3:对采样值进行加权求和得到新的特征

我们的自适应膨胀率卷积不需要额外的尺度标签,只需要最后的密度标签就可以让网络自己学习适应不同尺度的目标。同时相比较形变卷积[1],我们的采样网格中是完全对称的,采样的特征不会有相对目标位置上的偏差,和最终目标的位置有更好的一致性,更加适合计数这种位置敏感性的任务。

实验结果

下图为可视效果的对比,可以看出,ADSCNet相比较传统的监督预测的密度图主要有两方面的优势:1.不同目标更一致的响应强度 2.不同目标响应的位置更加一致。响应点主要集中头部的左上角轮廓处,表明了相对于人工标注的眼睛,鼻子等,头部轮廓是相对更不容易遮挡,更适合计数任务的特征点。通过下图第四列可以看到整体上大的目标需要更大感受野,一些有语义的背景目标也需要更大的感受野去区分。

同时我们也进行消融实验的对比,首先我尝试了有效的数据增加方式,加入BN和增大batchsize来确立新的Baseline。我们这里复现了CSRNet[2]和MCNN[3]作为Baseline方法进行比较,如下图首先是自纠正监督的效果。自适应监督在三个baseline上取得了一致的提升。他们相对的MAE提升分别为6.19%,8.57%,8.72%。

而自适应膨胀卷积方面,我对比了不同的固定膨胀率和多列网络组合以及形变卷积的效果。相比较固定的膨胀率,我们只增加了有限的运算,却取得了明显的提升。

最后和当前SOTA的对比,ADSCNet在四个公开数据集取得更优的表现,并有着明显的提升,表明了我们方法的有效性。

结语

在本文中,我们为计数问题提出了一种新颖的监督学习框架。它利用模型估计来迭代地纠正GT,并提出自纠正损失函数同时监督整体的数量和个体的分布。同时这种方法可以应用到所有基于CNN的方法中。另一方面,我们提出了自适应膨胀卷积,它通过每个位置的动态地学习不同的膨胀率以适应目标巨大的尺度变化。在四个数据集上进行的实验表明,它可以显著提升计数网络的性能。同时也说明了利用模型从图像特征上学习的信息能够被用于纠正标注来提升性能。

References

[1] Dai, Jifeng, et al. Deformable convolutional networks. In ICCV, 2017.

[2] Li, Yuhong, Xiaofan Zhang, and Deming Chen. Csrnet: Dilated convolutional neural networks for understanding the highly congested scenes. In CVPR, 2018.

[3] Zhang, Yingying, et al. Single-image crowd counting via multi-column convolutional neural network. In CVPR, 2016

本文分享自微信公众号 - 人工智能前沿讲习(AIFrontier)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度解读轻量网络GhostNet:不用训练、即插即用的CNN升级组件究竟如何实现?

    本笔记主要分为三个部分,第一部分是论文阅读,对论文中要点进行讲解。第二部分是代码实验部分,对论文中提出的部分实验进行代码实验,包含模型训练,参数量计算,特征图可...

    马上科普尚尚
  • SFFAI分享 | 周龙:同步双向文本生成【附PPT与视频资料】

    基于双向编码的BERT在11项自然语言理解任务上取得了惊人的效果,而目前主流的自然语言生成任务(包括机器翻译,自动摘要等)仍然采用单向解码,即从左到右依次产生目...

    马上科普尚尚
  • SFFAI分享 | 李祥泰:Context modeling in semantic segmentation【附PPT,视频】

    图像语义分割是目前计算机视觉领域要解决的一个核心问题,属于视觉中场景理解的研究范畴之一,近期受到了越来越多的研究者的关注,现实中许多应用程序需要精确和高效的分割...

    马上科普尚尚
  • 各厂算法原理

    豆瓣:我买了俩馒头,问我,你要不要来碗米饭? 淘宝:我吃完俩馒头,问我,你要不要来俩馒头? 百度:“老板,给我俩馒头”—“湖南株洲馒头机制造厂供应优质馒头机” ...

    前朝楚水
  • 使用Python抓取欧洲足球联赛数据

    摘要: 本文介绍了Web Scraping的基本概念的相关的Python库,并详细讲解了如果从腾讯体育抓取欧洲联赛的详细数据的过程和代码。为下一步的大数据分析的...

    小莹莹
  • 实际应用中用到的骨声纹算法传感器---LIS2DW12(不唯一,可以用其他的传感器)

    •超低功耗:在断电模式下为50na,在活动低功耗模式下低于1微安

    心跳包
  • 使用Python抓取欧洲足球联赛数据

    数据的来源多种多样,以为我本身是足球爱好者,所以我就想提取欧洲联赛的数据来做一个分析。许多的网站都提供了详细的足球数据,例如: 网易 http://goal.s...

    机器学习AI算法工程
  • Python学习-if条件语句

    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

    py3study
  • Lambda表达式

    当需要启动一个线程去完成任务时,通常会通过 java.lang.Runnable 接口来定义任务内容,并使用java.lang.Thread 类来启动该线程。代...

    咕咕星
  • 自动化持续构建编译测试一体化经验

    jenkins,tomcat,gitlab,4399AT,其中jenkins 插件需要的主要有:

    厦门-安仔

扫码关注云+社区

领取腾讯云代金券