主讲人:袁野 | 旷视研究院研究员

屈鑫 编辑整理

量子位 出品 | 公众号 QbitAI

12月27日晚,量子位·吃瓜社联合Face++论文解读系列第四期开讲,本期中旷视(Megvii)研究院解读了近期发表的Face Attention Network论文。

本篇论文所提出的Face Attention Network,是基于分层注意力机制的人脸图像区域检测器,能够在不影响速度的情况下显著提高被遮挡的人脸检测问题的召回率。

本期主讲人为旷视研究院研究员袁野,同时也是论文共同一作,wider face legend board第一。主要负责face detection工作。

量子位应读者要求,将精彩内容整理如下:

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=b0529ip7kbo&width=670&height=376.875&auto=0" style="display: none; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=b0529ip7kbo&width=670&height=376.875&auto=0"/>
分享视频回放

这篇论文中主要提出的是如何设计和使用Attention的机制去解决大尺度变化下的遮挡问题。论文通过精心设计的anchor setting和anchor level 的attention机制能够在不影响速度的情况下显著提高被遮挡的人脸的召回率。

Face detection的主要背景

从背景上来看,对于Face的检测,跟General detection一脉相承。从是否需要提取proposal和是否需要对这个proposal进行二次操作的角度来简单划分的话,主要分为One stage detector和Two stage detector。

这两个方法总体来说是各有利弊。One stage detector主要的优势是快速,这个主要是从工程上来说,假如你在手机上从一个256甚至更高维度的1024的 channel上直接crop一个feature出来,是一个相当耗时的工作,所以one stage天然就有很好的速度优势。

但是one stage有也存在不足,它由于没有后面refine的过程,在两个人脸或者是两个物体挨得比较近,或者是难以辨认的情况下,one stage通常会在性能上会有一定的劣势。

Face detection的挑战

在Face detection上面,相比于其他有哪些特别困难的地方?

首先是scale,由于face自身的特殊性,不论是通用物体或者行人检测,通常情况下,我们只是在意比较近处的物体。scale的变化远远没有人脸这么大。

其次是occlusion,也就是遮挡问题。遮挡问题简单地分为两部分:物体的遮挡;face的自遮挡。识别戴头巾或者口罩的人脸,这是一个典型的物体遮挡的问题。如果两个人挨得特别近,以至于把后面的人挡住了一部分,但是勉强还是可以看到另一部分,这就是face的自遮挡。

那么去解决这个遮挡问题,我们的motivation是什么?

对于遮挡的物体,我们首先需要确定这是不是一个脸,或者是至少要确定这是不是一个头。这就需要context信息,例如能够看到更多的地方,能看到身躯或者是看到头的整个区域,这样就有助于判断。这些信息可以通过合理的Anchor setting或者是合理的大感受野去隐式地学到。

此外,只看context信息也会产生一些误导,所以需要可见的部分来辅助确认这块区域真的是人脸,而不是其他的东西。这个时候我们可以考虑用segmentation或者是attention的机制去处理。

那么基于这个motivation应该怎么去设计网络?

这张图是我们主要的网络设计构架。从网络设计构架上面来说,前面这个红色和这个白色的区域,可以理解为一个FPN的结构,可以复用多层的信息,通过合理的anchor设计,保证每个anchor都有较大的感觉野,隐式地学习context信息。(c)这个部分是一个attention的子网络,我们在得到feature之后,会另开一支去学习attention,之后对attention做一个E指数的操作乘到原来的feature map上面,加强可见区域信息。

后面是一个类似于fast R-CNN两支操作:一支做classification,一支做regression。 Anchor setting设置可以保证每个人脸都有足够的感受野以及足够的context信息。底下这个attention的subnet,它可以通过有监督的信息,学到visible的information,也就能提高对遮挡物体检测的能力。

anchor setting

先统计一下Wider face本身,大概80%以上的人脸其实都是集中在16 pixel到406 pixel这样的量级上面,还有约10%的量级是在8pixel到16pixel。

所以我们在设计上的时候,需要考虑到如何让anchor去覆盖这么大的一个区域。Ratio上的设置,我们选择了1和1:1.5,其实是潜在地考虑了正脸和侧脸两种情况,因为通常情况下一个face,在正脸的情况下,1:1都是可以接受的。侧脸的情况下,可以近似到1:1.5。

P3、P4、P5、P6、P7是分别是表示我们FPN的各个layer,P3表示的是一个浅层的信息,然后P7表示的是越深层的信息。

在感受野上面,feature的感受野是anchor的4倍左右,例如P3层达到了接近99的水平,是P3 anchor的四倍大小。这样就可以提供足够的context信息来保证能够检测出轮廓。铺设密度上,没有选择传统的每一层只有一个anchor的铺设方式,采用每层3个scale,以2 ^ -1/3 步进。如果每层只铺设一个anchor,就会导致个别的ground truth,分配不到一个很好的anchor。

当然anchor也不是铺设得越密越好。如果把anchor铺设得更密一些,比如每层每个layer铺4个anchor,这样会导致的有很多的FP,最终导致性能下降。

还有一个问题是:我们统计出来的anchor只有16到406,而wider face上有大概10%的是在8到16或者是更低的程度,我们可以放弃这一部分吗?

如果这个face在8pixel量级的情况下,我们把它放大出来,图像就很糊,基本上也已经没有什么纹理的信息。加入训练会引来大量的噪声,反而会导致detector性能的下降。就实验结果来看下降还是比较明显的,大概会下降2到3个点。

Attention的操作

我们之前说过,只有context的信息,很难分辨这个物体到底是不是一个被遮挡人脸。这个时候需要加入一些attention,或者是加入一些segmentation,把这些区域给学出来,那么到底怎么学?

首先ground truth只有bounding box。那么我们就采用将bounding box的区域填1,直接作为segmentation去学。由于大量的ground truth是没有遮挡的,当发生遮挡时,最后学出来的segmentation会对于这些未遮挡的信息更加敏感。

其次还有一个细节,在我们的attention网络里面,做完attention之后,不是简单的点乘到原来的feature map上面,而是先做了一个E指数的操作,再去点乘到feature map上面。这样做就不是只保留attention高量的部分,而是对高量的部分做一些增强,这样能够很好地保留它原有的context信息,同时也能够突出它自身那个可见区域的信息。

然后是attention机制的整体框架。我们相比于其他的attention来说,attention不仅是有监督的,同时不同的层赋予不同的anchor level的监督信息。

我们来简单看一下左边这张图,是unsupervised的attention map,unsupervised attention基本上是在随机地学,这对我们来说就没有什么意义。右边这张图,是加了supervised的attention之后,对于一个遮挡的物体,它能够很好地focus到可见的部分。

其次,我们看这张图,左边是全部采用统一监督信号的结果,这表示如果我们把所有的layer都放上同样的监督信号,网络主要focus的是一些比较显著的脸;对于一些比较小的人脸学习的并不理想。右边是采用了anchor level attention的结果,不同的layer根据anchor去生成不同的ground truth。这保证在不同的layer上面,它focus的地方是不一样的,就减轻了这些大脸对小脸的干扰。

然后这是Ablation study的信息。从base model来看,它只有63点多,然后通过修正anchor,它能够达到79.8的水平。加入attention之后它会有一个80.9的涨幅。后面是scale test的一些技巧,最终可以达到88.8,相比于市面上最好的结果也要高出一个多点。

还有我们在两个主要数据集上的表现:在widerface数据集上,我们比第二名高了3个点,比现今legend board上第一高1.2个点。在mafa这个遮挡数据集上,我们比之前的AP提升了接近11个点左右。

接下来是Wider face上的检测结果:不论是尺度变化比较大,还是遮挡比较严重的情况都能够有很好的结果。

接下来是我们在MAFA上的处理的结果,也可以看到对于这些口罩或者是在被遮挡的问题上都能处理得还不错。

简单看一下之前做的一个小demo。这是在网上下载的北京地铁的一个日常的视频,可以看到我们的detect框在单个人上面是相当稳定的,即使在人流比较密集的情况,画质不好的情况下,我们依然能够做到挺不错的。

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=o052959kgm4&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=o052959kgm4&width=670&height=376.875&auto=0"/>

Paper总结

简单对paper做一些总结。

对于大尺度变化以及高遮挡的问题,detector是一个十分艰巨的任务。

  1. 对于这样的任务,首先需要保证它有足够的感受野来提供context信息,尤其是对小脸或者是遮挡的脸来说。

  2. 同时在anchor assign的策略上,比较密集的合理的分布,能够保证ground truth都有一个很好的proposal。

  3. Attention的机制可以帮助网络学到很好的可见区域。

  4. 最后是Multi anchor-level attention,这样能够让不同的layer去学face scale的information,使小脸更好地得到学习。

除总结之外,还有一些展望。

  1. 刚刚看到的视频上存在有很多的FP,这其实是一个很难调和的问题。比如说在识别小脸这种特别艰巨的问题的时候,为了保证recall,可能就会引入大量的anchor和大量的机制,这样就会导致FP激增。对于这样的问题还需要进一步的探索。

  2. 现在的Face Attention Network,它的base model是一个很大的model,如何小型化,也是我们下一步将要探索的一个地方。

一则招人硬广:

希望加入旷视科技(Megvii)一起登上CV巅峰的同学可以投简历至俞刚:yugang@megvii.com,长期招聘算法实习生。实习优秀者,更有直接跳过面试阶段,入职Megvii研究院的机会。

Q&A

小的人脸比较模糊,为了防止引入一些噪声,就把这些数据给去掉了,那这些小的人脸到底有多小,是怎么定义的?

一部分是实验本身得出来的结论,另一方面是本身我们是在8倍pixel上面去做的classification,对于8倍pixel以下的人脸,他在8倍的feature上,它可能最后就变成了1个pixel到2个pixel,本身这个任务就很艰难地完成,所以我们当时就简单地先按8 pixel来去做,后来实验表明的确这是一个很合理的setting。

Attention的机制和分割的联系?

Segmentation可以理解为一个简单的per pixel的classification,它有很好的标注信息。但是我们的attention是一个隐式的学习的过程,也就是说attention本身在ground truth的时候,给它大量无遮挡的脸和一些正脸的图像,让它去学习。我们在COCO上面其实是用到了segmentation,加入了segmentation之后会有一个很好的涨点。

如果技术落地的话,对哪些场景比较合适?

目前我们发paper的这个model是很难去做一些很实时的东西。以现在paper角度上来看,它可以做一些这样任务:安防入库;录入其他数据。也可以在云端上去做。如果说它可以小型化,就有很多很开阔的场景,比如说抓拍机,一些人脸解锁,无人化的超市等等。

框架是怎样的?

这个框架应该算one stage的detector。因为后面没有接ROI pooling或者是它之类的这些衍生物,主要是考虑到本身对于速度的要求。加上ROI pooling之后,对高feature数进行crop 的操作会非常耗时。所以我们就采用了one stage的detector。

相关学习资源

以上就是此次旷视研究院袁野带来分享的全部内容。在量子位公众号(QbitAI)界面回复“180107”可获得完整版PPT以及视频回放链接

第一期物体检测回顾:旷视研究院解读COCO2017物体检测算法夺冠论文

第二期人体姿态估计回顾:旷视研究院详解COCO2017人体姿态估计冠军论文

第三期Light-Head R-CNN回顾:旷视研究院解读Light-Head R-CNN:如何在物体检测中平衡精准度和速度

加入社群

量子位AI社群13群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot5入群;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进群请加小助手微信号qbitbot5,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。


量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态


吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)相关推荐

  1. 吃瓜笔记 | 旷视研究院解读Light-Head R-CNN:平衡精准度和速度

    主讲人:黎泽明 | 旷视研究院研究员 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月20日晚,量子位·吃瓜社联合Face++论文解读系列第三期开讲,本期中旷视(Megvii)研究院解读 ...

  2. 旷视研究院 算法岗 人脸识别方向 面经

    旷视研究院 算法岗 人脸识别方向 电话面 2020/6/19 16:00-17:00 面试官是做活体检测的 1.介绍项目 项目是做人脸识别相关的,也是小论文,问了些测试指标和公开数据集的一些指标,做这 ...

  3. 报名啦!旷视研究院解读COCO 2017物体检测夺冠算法 | 吃瓜社

    刚刚结束的ICCV 2017期间,旷视科技(Face++)在竞争激烈的MS COCO大赛中,击败谷歌.微软.Facebook等国际巨头,夺得物体检测.人体关键点检测和Places物体分割三项核心竞赛冠 ...

  4. 报名 | 旷视研究院解读COCO2017人体姿态估计竞赛冠军论文

    昨天,量子位·吃瓜社联合Face++推出了线上论文分享系列第一期,旷视研究院研究员.论文一作彭超解读了COCO 2017物体检测夺冠算法论文<MegDet: A Large Mini-Batch ...

  5. ICCV 2019 | 旷视研究院提出文字检测新方法:像素聚合网络PAN

    本文介绍ICCV 2019 旷视研究院提出任意形状文字检测模型:像素聚合网络 PAN,它考虑了任意文字识别过程中速度与精度的权衡,在大幅提升识别性能的同时也显著降低了计算量,成为当前该领域最佳方法. ...

  6. CVPR 2020 | 旷视研究院提出新方法,优化解决遮挡行人重识别问题

    IEEE国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 将于 6 月 14- ...

  7. 实录 | 旷视研究院详解COCO2017人体姿态估计冠军论文(PPT+视频)

    主讲人:王志成 | 旷视研究院研究员 屈鑫 整理编辑 量子位 出品 | 公众号 QbitAI 12月13日晚,量子位·吃瓜社联合Face++论文解读系列第二期开讲,本期中旷视(Megvii)研究院解读 ...

  8. CVPR 2020 Oral | 旷视研究院提出Circle Loss,革新深度特征学习范式

    IEEE 国际计算机视觉与模式识别会议 CVPR 2020 (IEEE Conference on Computer Vision and Pattern Recognition) 将于 6 月 14 ...

  9. 【CVPR2021】旷视研究院入选学术成果盘点

    转自:旷视研究院 在CVPR 2021中,旷视研究院共入选论文22篇,其中Oral论文2篇,研究领域涵盖激活函数.神经网络.神经网络架构搜索.光流估计.无监督学习.人体姿态估计.目标检测等. 本篇推文 ...

最新文章

  1. python读取txt文件并写入excel-Python实现读取并写入Excel文件过程解析
  2. Linux远程管理协议相关知识介绍
  3. 线程管理(九)使用本地线程变量
  4. .NET Core中间件的注册和管道的构建(1)---- 注册和构建原理
  5. Redis总结之发布订阅
  6. 两日公开课:伯克利深度强化学习训练营 | 视频+PPT
  7. ARouter 源码历险记 (二)
  8. Python数据结构与算法(附录)——块状链表的动态调整
  9. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
  10. 如何下载FLASH动画
  11. html动画人物走路,动画人物走路教程
  12. yum安装freeswitch
  13. Seafile搭建以及onlyoffice在线办公
  14. 西门子PID完整程序西门子PLC 1200和多台G120西门子变频器Modbud RTU通讯
  15. 计算机启动显示安装程序正在启动服务,电脑停在“安装程序正在启动服务”解决办法...
  16. Apollo星火计划学习笔记第四讲2——高精地图定位模块
  17. 如何设置 Mac 键盘的打字音效?
  18. 分布式架构的几种实现方式
  19. 有人模仿我的脸,还有人抄袭我的名?
  20. 互联网需要70老兵-祝贺杜红超再次创业

热门文章

  1. 新东方java开发待遇_新东方教师薪酬与考核曝光!拿去即用(仅供参考)
  2. graphics2d 乱码 java_java Graphics2D绘制文字并居中并解决服务器乱码问题
  3. 架构师必备!java三大特性用代码表现
  4. php扩展多线程和多进程,PHP 多进程和多线程的优缺点
  5. tracepro杂散光分析例子_2020临中高考咨询群咨询成效问卷结果分析
  6. 电子商务网站建设策划书_网站建设及推广的5大注意事项
  7. pantone潘通色卡对照表_赶快收藏!快速对色必备:潘通色卡电子版(一)1TPX~113TPX...
  8. java串口设备中断_利用DMA双缓冲或半完成中断实现串口不定长数据的接收
  9. java android 服务器_Android/Java从服务器端下载图片
  10. sql 在某表中加入一列count所有数据_执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?...