Finding Tiny faces 思想解析

Posted walter-xh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Finding Tiny faces 思想解析相关的知识,希望对你有一定的参考价值。

论文链接:https://arxiv.org/abs/1612.04402

前言

这篇论文收录在CVPR2017,距今已经两年多了,今天上英语课发现带了这篇论文就看了起来,觉得还挺有意思就仔细看了一下,网上翻译总结较少,推荐知乎大佬对这篇文章的总结(调侃)链接

作者公开了他们的代码,是用matlab语言写的,看了一下实在不知道写了什么(自己太渣)。还好有另一位大佬用pytorch复现了一版,代码写得很整洁,复现得比较完整。撸了一遍代码,已经开始训练,最后看测试结果与原文相差多少。

tiny-face pytorch 实现:https://github.com/varunagrawal/tiny-faces-pytorch

作者没有给使用说明,但是代码就是最好的doc,一看就懂。

主要思想

  1. multiscale modeling: 多尺度建模,特征图金字塔(不是FPN)+ 图像金字塔(稀疏的);
  2. fovel descriptors:不知道怎么翻译,实现上就是浅层特征+深层特征作为最后的特征;
  3. context: 上下文信息对于找到小的脸比找大脸更重要,所以将context信息包含进来。

论文咋看非常高深,但整体实现却非常简单,给我的感觉这篇文章更像一个 tech report,然后在公开数据集上表现效果很好就中了。

但是文章对于小尺度图像检测问题的分析还是做得非常好的。看了后可以对小尺度目标检测问题有更好得认识。

看图说话

好的论文,一图胜万言。

 技术图片

图 1

第一张图,没什么好说的,秀就完事。

技术图片

图 2

第二张,介绍了几种解决多尺度的方式,左边糊的脸代表模板(其实就是prior box 或者 anchor box),右边是图像金子塔,经典的多尺度解决方法。本文采用的是(d)多个尺度的模板加图像金子塔,(d) 就是foveal descriptor展示,后面图细说。

 

技术图片

图 3

第三张,左边图像说明的是人要检测出小的脸需要额外的context信息,而大的脸不用,中间列是成比例方法(context框是跟人脸大小成比列的,这里3倍),第三列是固定的context框。最后一个是统计人对于不同情况的识别准确率。可以看到固定尺寸的context框对识别小目标更好。

技术图片

图 4

第四张,可以说明两个点,第一,特征融合,res2+res3+res4+res5, 浅层特征特征更多小目标和细节信息,融合后对检测小目标有益; 第二, 顺便把context也获得了,context其实就是大的感受野如这里的291*291, 服气。

技术图片

图 5

第五张,是两张图的尺度处理方法,可以看出小的目标,将原图放大两倍后用大模板检测率更高(74.8% 比68.5%),而对于大目标缩小后用小模板检测的目标检测率更高(94.2%比88.6%)。下面这张图统计了ImageNet上的表现情况。

技术图片

图 6.

第六张,横坐标是经过聚类得到的25个尺度,纵坐标是用这个些尺度做为模板尺度在不同的输入scale下进行预测的精度。

技术图片

图 7 模板去冗余方法

由于图6 中的模板存在冗余,作者给出了一种去除冗余的方法,去除后效果还提升了。图7 所示,横纵坐标的定义依然如图6, 即做出了图6的外包曲线(每个阶段AP最大的段),蓝色代表0.5X、橙色代表1X、黄色代表2X,分别位于large、medium、small 尺度区。去冗余的方法是:取出A段的模板和B段的模板,图像使用特征金子塔(0.5,1,2),则可以大概覆盖整个尺度范围。但是这一点在pytorch实现中似乎没有做。

技术图片图 8

这张图真的不是很好,会有点误导人。最开始我以为是同时输入一个图像金子塔进行预测和训练,后来看了源码和论文的附录后才知道,其实使用多尺度的方式训练,分别以三分之一的概率进行三个尺度的变化,送进网络进行训练,预测的时候可以选择使用多尺度(浪费性能)或者不适用多尺度(小目标检测肯定会差)。

整体的框架设计与yolov2和RPN(faster-rcn中的region proposal network)类似,是one-stage的检测方法,不同的是加入了一些scale specific的设计(anchor box的选择)和多尺度特征的融合,再辅以图像金子塔,最后对小目标检测效果显著。具体的实现细节都是常规的object detection 那一套。

实验结果

技术图片

可以看到文章的主要贡献在hard部分也就是小目标检测。这也与文章所要解决的问题。

 总结

  1. 作者针对小尺度目标检测的相关分析做的很完善。对于刚入门图像检测的读者挺不错的。
  2. 简单问题复杂分析,作者还是很厉害的。

以上是关于Finding Tiny faces 思想解析的主要内容,如果未能解决你的问题,请参考以下文章

javax.faces.FacesException:无法解析 NavigationCase 的结果

AI换脸技术源码

AI换脸技术源码

无法在 JSF 应用程序中解析文档 faces-config.xml

java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/gms/vision/face/FaceDetector;

Face Alignment by Coarse-to-Fine Shape Searching--解析