BMVC2010 The Fastest Pedstrain Detector in the West

$巨苣检测第二篇文章:”西方跑得最快的行人检测算子”。
不得不说,你们搞得这个算子啊,excited! 但比起香港记者来,毕竟还是图样。

$觉得上篇文章“Integral Channel Features”中设计的ChnFtrs特征跑得太慢了,于是他发现了一个骚操作:在单尺度上提取的特征可以用来近似附近尺度上的特征响应(在深度学习里看来,其实等效于对feature map进行pooling,因为没谁会对原图去pooling吧)。

这样一搞可以大幅减少图像金字塔上提取的特征次数;这个可以这么理解,在极端情况,假设一张图1024 x 1024大小,我做了一个四层的金字塔,也就是1024 x 1024, 512 x 512, 256 x 256, 128 x 128,那么原来的ICF特征ChnFtrs就是分别在这四张金子塔图上提特征;而现在我就在原图1024 x 1024先提一次特征,然后512 x 512, 256 x 256, 128 x 128这些层的特征,我只要用原图提的特征去近似这另外三层就行了;因为提特征要计算各种Grad Hist之类的,自然比直接近似计算特征要快的多,所以可以省下大量计算消耗。
作者测试,FPDW特征比ChnFtrs特征计算速度可以提升1-2个数量级,而只损失1-2%的检测率。很惭愧,只做了一点微小的工作。

上面说的极端情况只是个示意,要真能那么吊,作者就不会只说是西方跑得最快的了。怎么说,假设我有10层金字塔,由于近似误差的存在,最顶层的特征图不可能直接用最底层的特征图去近似(或者一层层递进的近似);直观上可以理解,俩层离的越近,这两层的特征近似越准确,所以$选择了一个折中的方案,如图一。
a中展示的是标准的多尺度检测的流水线,其实就是上面说的极端情况,由原图建立一个稠密图像金子塔,然后分别在塔层计算特征图,最后用一个固定大小的滑动窗口(classifer)去检测,因为图像特征是多尺度的,所以固定大小的滑动窗口也可以框到不同大小的目标;a也可以称作图像金字塔方法(image pyramid);
b中是经典VJ检测器中提出的方法,它是将对图像缩放变成了对滑动窗口进行缩放,再在原图上做滑动,感觉这样就可以不用建立图像金子塔,用不同大小的检测框在图像不同位置进行滑动就可以达成检测的效果了不是,想法是好的,但是这个方法只在特征是具有平移和尺度不变性的情况下才有效,因为一种特征要是不满足上述情况的话进行缩放或平移,很明显设计出的特征会发生不可预测的改变,例如梯度直方图,对它进行缩放的话计算的梯度会变得不明确。b也可以称作分类器金字塔(classifier pyramid);
c中就是折中的方法,就是结合上面ab两种方法,先利用image pyramid方法构建一个层数没那么多的稀疏金字塔,然后在层与层之间构建classifier pyramid。这样既可以获得与a相当的准确度,还能获得和b相似的速度。
BMVC2010 The Fastest Pedstrain Detector in the West
知道了近似能加速特征计算,那么怎么近似就是$接下来要讨论的问题了。由于特征表现不同,分上、下采样分别来考虑。
上采样:上采样不会产生新的图像结构,所以只要按下面的公式递推就能得到近似公式hq‘ ≈ khq了。
BMVC2010 The Fastest Pedstrain Detector in the West
下采样:下采样会导致高频信息和梯度能量的丢失,所以最终近似公式表现为hq‘ < khq。但是信息丢失是否恒定是需要继续探究的。
BMVC2010 The Fastest Pedstrain Detector in the West
图二前两副图表示的是对图像上下采样,行人和自然图片在概率上的表现关系,结合采样因子k,可以看出是和上面的公式大致对应的;最后一副图最实验数据进行最小二乘拟合,可以求出下文细化公式中的参数,同时也表明了下采样中信息丢失是线性恒定的。
BMVC2010 The Fastest Pedstrain Detector in the West
图三做了另外一个实验,即不管上采样还是下采样,它们与原图的归一化直方图应该大致等高的(因为自然图片中的图像结构纹理在上下采样中并不会发生太大变化),前三副图很明显每个bin的三个柱子差不多高;但是最后一个纯纹理图就不一样了,下采样会导致高频信息即纹理丢失,因此可以看到最后一张图的黄色柱子特别矮。

有了上几个实验,特别是图二的实验,那么接下来就要估计近似表达式的格式和其中的详细参数了。
作者预想的是,近似公式肯定要与原图大小无关,只与相对尺度大小有关,有了这个先验结合实验可以猜想如下结论(经验主义):
1. expectation over natural images of f(I, s1) / f(I, s2) should depend only on s1 − s2;
2. assuming there exists a function r(s) such that f (I, s1) / f (I, s2) ≈ r(s1 − s2) and E[f(I, s1) / f (I, s2)] = E[f(I, s1)] / E[f(I, s2)] = r(s1 − s2) for all s1 , s2;
3. r(s1 + s2) = r(s1)r(s2);
因此很明显就得到了公式肯定是指数结构的如下,体现的是上下两层间的近似关系:
BMVC2010 The Fastest Pedstrain Detector in the West
推到原图上去公式就可以变为:
BMVC2010 The Fastest Pedstrain Detector in the West
有了公式接下来就是预估lamda,3.2节写的很明白这里就不罗嗦,结论就是不同的特征不同的通道的lambda都不一样,但是每个lambda都是基本恒定的;这样估算下来准确率也很高,图四可以表明,图中低标准差对应低的平均误差。
BMVC2010 The Fastest Pedstrain Detector in the West
有了具体公式和参数,下面就是干正事了,拿来做快速的多尺度检测,检测方法图一说的很明确,接下来就是分析了一下复杂度分析。
BMVC2010 The Fastest Pedstrain Detector in the West
如果我们每层仅用一个尺度的话(image prymid方式),那么近似方法的计算复杂度将会是4/3n2,要比原方法多三个之一的计算量;但是检测算子一般每层有8-16个尺度,这样采用近似方法计算的话1-2个数量级的加速就来了。

下面就是测试了,图五是确定了尺度步长,个数以及lambda;六七两张图就是讲FPDW state-of-the-art了。
BMVC2010 The Fastest Pedstrain Detector in the West
BMVC2010 The Fastest Pedstrain Detector in the West
BMVC2010 The Fastest Pedstrain Detector in the West

总结一下,全文是围绕特征近似做的相关工作,在当时来说insight很好,又将检测real time的历史进程推进了一步。
FPDW与ICF的关系可以这么理解:ICF指的是一种特征组合方式,这种组合对行人的显著性表示较强;FPDW是一种行人检测算子,它利用特征近似方法加速计算ICF特征,并通过构建稀疏的图像金字塔结合检测器(检测器金字塔)变换加速检测过程。