论文阅读Domain Adaptation of DPM models
最近老师给了几篇比较老的论文,主要是关于把DA用到SVM,DPM之类的分类器上的方法,目的是借鉴文章中的思路,方法,技巧等,看看对自己的研究是否有启发。今天主要总结的论文有:
[1]Domain Adaptation of Deformable Part-Based Models,Jiaolong Xu
[2]From Virtual to Real World Visual Perception using Domain Adaptation -The DPM as Example,Jiaolong Xu
两篇论文其实讲的是同一个事,我们直接以第一篇为主,文章指出很多分类器的学习都是在假设source domain和target domain的数据服从相同的概率分布的情况下,然而这种假设根本不成立,甚至是使用不同的sensors device也会产生a dataset shift,所以使用DA的技巧对于分类器来说非常重要。现在比较常用的传统机器学习的分类器有基于HOG-style特征和潜在的SVM学习过程的DPM(deformable part-based model)方法。
1. DPM的介绍
deformable part models,DPM,可以变形的组件模型,是基于组件的检测方法,对于目标的变形具有很强的鲁棒性。DPM可以看做是HOG(Histogrrams of Oriented Gradients)的扩展,大体思路与HOG一致。先计算梯度方向直方图,然后用SVM(Surpport Vector Machine )训练得到物体的梯度模型(Model)。DPM目前是人体检测,行为分类,分割的重要分类器。
1.1 DPM的特征
DPM的特征是在HOG基础上进行的改进。DPM的特征提取过程比HOG没有了block的概念,仍保留了cell的概念,提取时将当前cell与周围的其他3个cell进行相对领域归一化(相当于HOG中block),上图显示的梯度直方图有18个列,计算梯度时可以计算有符号(0-360)和无符号(0-180)的梯度方向,有些目标适合有符号的梯度,有些适合无符号的梯度,而DPM与原HOG不同,采用的是有符号与无符号梯度相结合的方式。

如此,如果直接将特征向量化,那么单单一个88 的单元,其特征维数就高达4(9+18)=108,维数过高。Felzenszwalb提取了大量单元的无符号梯度,每个单元共49=36维特征,并进行了主成分分析(PCA),发现使用前11个特征向量基本上可以包含所有的信息,不过为了快速计算,作者由主成分可视化的结果得到了一种近似的PCA降维效果。具体来说,将36维向量看成49的矩阵,对每一行,每一列求和得到13维特征,基本上能达到HOG特征36维的检测效果。为了提高那些适合使用有符号梯度目标的检测精度,作者再对18个有符号梯度方向求和得到18维向量,并入其中,最后得到上图中的维特征向量。
1.2 DPM模型
DPM由两部分组成,一个root,若干个component,下图为一个模型的根和部件的可视化效果。

如图(a),根模型比较粗糙,大致呈现了一个直立的正面/背面行人。如图(b)所示,部件模型为矩形框内的部分,共有6个部件,分辨率是根模型的两倍,这样能获得更好的效果。从中,我们可以明显地看到头、手臂等部位。为了降低模型的复杂度,根模型和部件模型都是轴对称的。图 4.5(c)为部件模型的偏离损失,越亮的区域表示偏离损失代价越大,部件模型的理想位置的偏离损失为0。
DPM检测过程实质为传统滑窗的检测方式,通过构建尺度金字塔在各个尺度上进行搜索,通过滑窗与已经得到的模板进行內积,得到该区域的响应得分,响应得分是特征与待匹配模板的相似度程度,越相似则得分越高(颜色越亮)。综合部件模型与特征的匹配程度和部件模型相对理想位置的偏离损失,得到最优的部件模型和相应得分。某一位置(x,y)与根模型/部件模型的响应得分,为该模型与以该位置为锚点(即左上角坐标)的子窗口区域内的特征的内积。

上式是在尺度为 l_0的层,以 (x_0,y_0)为 锚点的检测分数。 R_{0,l_0}(x_0,y_0)为 根模型的检测分数。由于同一个目标有多个组件,而不同组件模型的检测分数需要对齐,所以需要设定偏移系数b。 D_{i,l_0-\lambda}(2(x_0,y_0)+v_i)为第i个部件模型的响应,由于部件模型的分辨率是根模型的一倍,因此部件模型需要在尺度 l_0-\lambda层匹配。因此,锚点的坐标也需要重新映射到尺度层 ,即放大一倍, 2(x_0,y_0)\leftarrow(x_0,y_0)。部件模型i相对锚点 2(x_0,y_0)的偏移为 v_i,所以在尺度层 ,部件l的理想位置为
其中相应变换公式如下:
其中 为部件模型i在第l层的理想位置,(dx,dy)为相对(x,y)的偏移量
。 R_{i,l}(x+dx,y+dy)为部件模型在 (x+dx,y+dy)处的匹配得分, d_i\cdot\phi_d(dx,dy)为偏移 (dx,dy)所损失的得分,其中 \phi_d(dx,dy)=(dx,dy,dx^2,dy^2) , d_i为偏移损失系数,是模型需要学习的参数,初始化时, d_i=(0,0,1,1) ,即偏移损失为偏移量相对理想位置的欧氏距离。
1.3 DPM训练(多示例学习)
1.3.1 MI-SVM
Multiple-instance learning (MIL) is a variation on supervised learning. Instead of receiving a set of instances which are individually labeled, the learner receives a set of labeled bags, each containing many instances. In the simple case of multiple-instance binary classification, a bag may be labeled negative if all the instances in it are negative. On the other hand, a bag is labeled positive if there is at least one instance in it which is positive. From a collection of labeled bags, the learner tries to either (i) induce a concept that will label individual instances correctly or (ii) learn how to label bags without inducing the concept(from wiki)
MI-SVM来源自文章 “Support Vector Machines for Multiple-Instance Learning” ,本质思想是将SVM中最大化样本间距扩展为最大化样本集间距。具体的来说是选择正样本集s(I)中最像正样本的样本(离分类界面最远)作为训练,正样本集中的其他样本等候发落。同样取离分类界面最近的负样本作为负样本。因为我们的目的是保证正样本中有正,负样本中不能有正。就基本上化为了标准的SVM。取最大正样本(离分界面最远),最小负样本(离分界面最近):
对于负样本:可以将max展开,因为最小的负样本满足的话,其余负样本就都能满足,所以任意负样本有: 目标函数为 也就是说选取正样本集中最大的正样本,负样本集中的所有样本。与标准SVM的唯一不同之处在于拉格朗日系数的界限约束。
而SVM的约束是 0\le\alpha_i\le C,for\ all \ i
最终化为一个迭代优化问题:第一步是在正样本集中优化;第二步是优化SVM模型

.
思想很简单:第一步是在正样本集中优化;第二步是优化SVM模型。与K-Means这类聚类算法一样都只是简单的两步,却爆发了无穷的力量。
更详细的可以参考博客 Multiple-instance learning。
关于SVM的详细理论推导详见 MIT Doctor pluskid支持向量机系列
关于SVM的求解: SVM学习——Sequential Minimal Optimization
SVM学习——Coordinate Desent Method
1.3.2 latent SVM
Latent-SVM实质上和MI-SVM是一样的。区别在于扩展了Latent变量。首先解释下Latent变量,MI-SVM决定正样本集中哪一个样本作为正样本的就是一个latent变量。不过这个变量是单一的,比较简单,取值只是正样本集中的序号而已。DPM中也是要选择最大的正样本,但是它的latent变量就特别多。比如bounding box的实际位置,在HOG特征金字塔中的level,某样本属于哪一类component。也就是说我们有了一张正样本的图片,标注了bounding box,我们要在某一位置,某一尺度,提取出一个最大正样本作为某一component的正样本。
直接看Latent-SVM的训练过程:

1)这一部分还牵扯到了Data-minig,原因是负样本数量巨大,而正样本所占比例很小,直接导致优化过程缓慢,因为很多负样本远离分类界面对于优化作用很小。Data-minig的作用就是去掉那些对优化作用很小的Easy-examples保留靠近分界面的Hard-examples。分别对应13和10。
2)先只看循环中的3-6,12.步。3-6步就对于MI-SVM的第一步。12步就对应了MI-SVM的第二步。作者这里直接用了梯度下降法,求解最优模型β。
3)LSVM对初始值很敏感,因此初始化也是个重头戏。分为三个阶段。

详细见英文描述:




下面稍稍提下各阶段的工作,主要是论文中没有的Latent 变量分析:
- Phase1:是传统的SVM训练过程,与HOG算法一致。作者是随机将正样本按照aspect ration(长宽比)排序,然后很粗糙的均分为两半训练两个component的rootfilte。这两个rootfilter的size也就直接由分到的pos examples决定了。后续取正样本时,直接将正样本缩放成rootfilter的大小。
- Phase2:是LSVM训练。Latent variables 有图像中正样本的实际位置包括空间位置(x,y),尺度位置level,以及component的类别c,即属于component1 还是属于 component 2。要训练的参数为两个 rootfilter,offset(b)
- Phase3:也是LSVM过程。
先提下子模型的添加。作者固定了每个component有6个partfilter,但实际上还会根据实际情况减少。为了减少参数,partfilter都是对称的。partfilter在rootfilter中的锚点(anchor location)在按最大energy选取partfilter的时候就已经固定下来了。
这阶段的Latent variables是最多的有:rootfilter(x,y,scale),partfilters(x,y,scale)。要训练的参数为 rootfilters, rootoffset, partfilters, defs((d_x,d_y,d_x^2,d_y^2)的偏移Cost)。
以下为正文
1.DPM framework and structual learning
Domain Adaptation of Deformable Part-based Models 文章提出了adaptive-structurall SVM(A-SSVM),为了考虑到特征空间的潜在结构(DPM的parts),文章又提出了a structural-aware A-SSVM(SA-SSVM)。这两种方法结合了A-SVM和PMT-SVM的优点,在adaptation process中不需要对source domain的数据进行重访问,考虑到了特征空间的结构信息,对小样本的target domain也是可以适用。
DPM是由一个root filter和若干数目的part filter组成,part filter在处理的过程中是root filter分辨率的两倍。假设DPM有M个components,每个component有K个Parts.一个物体的hypothesis可以被定义为h=[c,p'_0,\ldots,p'_K]',其中p_j=[u_j,v_j,s_j]' 中包含第j个part的位置(u_j,v_j)和scale levels_j。给定一个候选窗口x和相关的hypothesis h ,对于每个componnet c,决策方程可以被写为parameter vecter w_c和feature vector\Phi_c(x,h) 的点积:
其中 \phi_a(x,h)代表着appearance feature vecter(如HOG描述子), \phi_d(p_j,p_0)=[dx_j,dx_j^2,dy_j,dy_j^2]'是第j个part相对于第0个part的变形方程。
对于多components model,可以使用one-vs-rest方法,然后最后的决策方程如下:
其中, w=[w'_1,\ldots,w'_M]', \Phi = [0_{n_1},\dots,\Phi'_c,\ldots,0'_{n_M}]'故DPM的训练过程为了学习出最佳w(包含appearance parameters和deformation coefficients)。
对于一组训练样本 (x_1,y_1,h_1),\ldots,(x_N,y_N,h_N)\in \cal X \times \cal Y\times \cal H(三个字目分别代表输入空间,+1-1标签空间,输出空间/hypothesis space)。把特征写成feature vecter \Phi(x,h)在DPM中,h没有被给定,故在训练中作为一个latent变量
上式的判别方程可以通过Max-margin method学习,计算上面score function的最优解w相当于解决下列latent SSVM的优化问题:
其中 L(y_i,\hat y,\hat h)是loss function。最小化凸函数和凹函数的和可以通过coordinate descend methed或general Convex-Concave Procedure(CCCP)来解决(通过简单的迭代过程保证收敛到局部最小值)
2.Domain Adaptive DPM
2.1 Adaptive SSVM(A-SSVM)
一个有效的算法是使用先验模型,基于预训练的source classfier学习一个扰动方程\Delta f(x)。作者把这个想法扩展到structural learning里,称为adaptive SSVM
给定source model w^S,最后的分类器f^T定义如下:
\Delta w=w-w^S,w^S是先验模型,w是最后调整的模型。目的的学习一个决策边界接近原来source 决策边界。上式可以转换成下面的优化问题:
其中R是正则项,L代表Loss,C是惩罚因子。上式更明确的形式如下:
其中 y_i,h_i分别代表groundtruth label 和 object hypothesis
正则项显示了A-SSVM调整了从source domain学习的model(正则化了从 w ,w_S之间的距离),以适应target domian。相当于对SSVM的优化。求解上式的对偶形式,引入拉格朗日乘子 \alpha=[\alpha_1,\ldots,\alpha_N] 比较上式和他的对偶形式,唯一的区别是对偶形式包含了一个项 w^{S'}\Delta\Phi_{i,\bar h}=L_s,当 L_S<0时,说明source classifier对target domain 错误的预测出来。因此为了最大化对偶形式,倾向于选择较大的 \alpha_i.注意只有target domain samples才在训练过程中使用,因此A-SSVM调整模型的参数使之更倾向于目标域数据。
2.2 Structure-Aware A-SSVM
上面说的A-SSVM的正则项限制了新的分类超平面不能偏离source domian太远,因此需要source domian和target domian的特征表达特征分布相类似,然而这对于混合组件的part-based模型是非常苛刻的,且这种方法没有考虑到内在的结构知识。

过程大致如下:
- 在source domain学习DPM,模型 由很多不同视角的components组成(全身,半身等),每个components由很多Parts组成(头,躯干)
- 分解结构模型 w^S=[w_1^{S'},\ldots,w_P^{S'}]',P是部件的个数,每个部件 w_p^{S'}外形和变形参数。分解的模型参数通过不同的权重 \beta_p,p\in[1,P]用于target domian
- 学习这些adaptation weights,进一步引入正则项 ||\beta||^2,正则项如下图:


求解中用到了二次规划(QP),详细的不在赘述,可以看论文(公式太多了QAQ)
2.3 Supervised DA-DPM algorithm

2.4 self-paced learning
由于domian shift和潜在detection error的存在,实际情况是采集的样本包含很多的false positives。这导致DA方法会陷入局部最优解,很高的trainning error。这主要源于CCCP算法同时考虑了所有的样本。在SPL(self pased learning)中,除了在target domian检测出样本的正负,还要分辨出哪个样本的决策时最简单的(easy example指那些有着最高confidence的样本)。但是置信度的阈值不能是固定的,这是因为:
- 如果简单样本选择的过于保守(High threshold),DA会表现很差因为这些样本离分类超平面较远,是source-domian oriented。
- 如果简单样本选择的过于激进(low threshold),那些标签错误的样本会被用于DA
因此作者提出了基于GPR的更adaptive的样本选择过程。
