您的位置:首页 > 产品设计 > 产品经理

目标检测“DPMs are CNNs”

2015-10-27 15:56 423 查看
DPMs是图形模型(Markov 随机域),CNNs是”黑盒子”非线性分类器。论文将DPM重构为CNN,将DPM算法展开,每步映射到一个相当的CNN层,将DPM使用的特征用学到的特征替换,得到DeepPyramid DPM。

基于区域的检测R-CNN和基于滑动窗的方法DPM是互补的,一些物体比较容易分割,比如cats,另一些比如bottle,people难分割。

DeepPyramid DPMs

输入图像金字塔,输出目标检测得分金字塔,可描述为两个小的网络,一个特征金字塔“front-end”CNN和一个DPM-CNN,模型的原理图如下所示:



特征直方图front-end CNN

物体以不同的尺度出现在图像中,常用的技术是使用图像金字塔在多个尺度运行检测器,论文使用单尺度的CNN结构

DPM-CNN

DPM将物体以多”Components”模型化,每个”Components”负责不同的外形表示(如车辆侧视图,倒立的行人等),每个组件使用一个低分辨率的全局模型和几个高分辨率的“part filters”。

测试时,DPM以滑动窗方式在HOG特征金字塔上运行,每个金字塔通过优化得分函数(平衡deformation part costs 和 image match scores)分配一个DPM得分,得分函数的全局最大值通过临近位置的共享计算和动态规划算法得到。对于一个给定的DPM,将每步展开,得到一个具有固定深度的CNN网络,网络的结构如图2所示。



1.DPM-CNN输入是特征金字塔层(con5特征图)

2.将特征图与一个root filter和P个part filter卷积,得到P+1个特征图

3.part filter的P个特征图输入距离变换池化层

4.将P+1个特征图堆栈

5.将P+1个特征图与object geometry filter卷积,生成DPM得分图

距离变换池化

最大池化:Mf(p)=maxΔp∈−k,...,kf(p+Δp)M_f(p)=max_{\Delta p\in {-k,...,k}}f(p+\Delta p)

距离变换池化:Df(p)=maxq∈G(f(q)−d(p−q))D_f(p) = max_{q\in G}(f(q)-d(p-q))

对于DPM,d(r)是凸二次函数d(r)=ar2+brd(r)=ar^2+br,a,b是可学的参数,池化的区域可从数据中学到。

Object Geometry Filters

component c在位置s处的得分是root filter的得分和经过距离变化的part的得分之和,每个part相对于锚点的位移为vp=(vpx,vpy)v_p=(v_{px},v_{py}),计算组件在所有位置的得分可认为是卷积。将P+1个得分图与”object geometry”卷积,”object geometry filter”只有一个系数为1,其余都为0。”object geometry”第一个通道的左上角系数为1,令其筛选root的得分,通道p在位置vpv_p处系数为1,筛选 part p的得分。

maxout 所有components的结果

使用zqcz_{qc}表示组件c在位置q的结果,所有组件的结果是最大化值:zq=maxczqcz_q=max_cz_{qc},在DPM-CNN中,zqc=wc⋅xq+bcz_{qc}=w_c\cdot x_q+b_c,wcw_c是组件c的object geometry滤波器,xqx_q是位置q处root和part得分的子矩阵,bcb_c是偏移量。下图是DPM-CNN的maxout结构:



实验设置

两个方法训练Deep Pyramid DPM,第一个方法是将模型认为是一个CNN,使用SGD和BP进行端到端的训练。第二个方法是分两步训练模型,(1)固定front-end CNN;(2)使用latent SVM在第一阶段后训练DPM,本文选用第二种方法。

实验结果

HOG描述尺度不变图像特征,conv5特征描述大图像块,如下图所示:



在VOC2010上的实验结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: