这个模型思想很直观(有误),但是写的源码太难懂了(看的是release-3的版本,最接近Object Detection with Discriminatively Trained Part Based Models论文的实现)其实相似的论文还有一篇8页的A Discriminatively Trained, Multiscale, Deformable Part Model,建议先看8页的。参考博客1的格式,结合源码写写我对论文的理解(不一定对)。
Introduction
1.We describe an object detection system that represents highly variable objects using mixtures of multiscale deformable part models.
这句话就总结了算法的几个特点,mixtures指的是在代码中作者根据bounding box的长宽比进行均分,每一区间的长宽比的bbox训练出来的模型就是一个component。论文中提到两个概念叫rootfilter和partfilter感觉就是两个检测窗口的权重,更加具体来说root就是一个人,part可能是他的手、身体、头、肩膀等部分。partfilter是在图像进行放大下提取的HOG特征每维的权重,而rootfilter是原始尺寸下提取的HOG特征每维的权重,文中这样做是说rootfilter是捕捉全局的信息,而partfilter捕捉局部的信息。deformable指的是,文中对partfilter的位置有要求,比如要在rootfilter周边不能太远,甚至有上下文的要求,如果违背这些要求会带来变形上的cost。而整个score是由rootfilter的特征得分+partfilter的特征得分-变形cost。
2.Consider the problem of modeling the appearance of bicycles in photographs. People build bicycles of different types(e.g, mountain bike......) and view them in various pose(frontal versus side views).
这句话是作者说为什么要提出mixture models的原因。
3.
混合模型的得分是components的最大值。
Related Work
1.
这里说论文用了动态规划和distance transform来搜索part的位置,我的思想就是先根据VOC的bbox训练一个rootfilter,然后先检测出root的位置,再在root的周边搜索最优的part,具体怎么做还需要看看代码。
2.
这篇论文使用了hinge-loss即max(0, 1-yf(x)),分析这个函数时会发现:
当yf(x) >= 1: 1-yf(x) < 0, loss = 0
发现在这个优化目的下,优化是会往这个方向走,就是loss等于0的方向:此时y=1正例会有f(x) >= 1,当y=-1负例会有f(x) <= -1
然而在看代码的时候发现优化的方法是随机梯度下降,和SVM的SMO优化方法并没什么关系。这里就不明白,SVM是有约束的问题,而这篇论文我并没有看到约束条件,而且使用的优化方法是无约束的优化方法随机梯度下降。所以感觉作者应该是用这种marginal的形式去mining hard negatives,作者认为在 yf(x) < 1的那些难分的样本,需要移除容易分的样本加入难分的样本继续迭代。
1.什么是filter?
其实filter就是HOG特征的每一维的权重,如果不明白w和h和HOG的特征提取请看博客 http://mccormickml.com/2013/05/09/hog-person-detector-tutorial/
2.什么是Deformable Part Models
anchor的具体实现还等再看看代码。
博客1:http://zhangliliang.com/2014/09/01/paper-note-dpm/
http://*.com/questions/32155724/gcc-c-c-mex-matlab-r2015-mac-os-x-with-openmp-doesnt-work