Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说DPM are CNNs学习,希望能够帮助你!!!。
转载自:DPM are CNNs学习
Deformable Part Models are Convolutional Neural Networks
记录一下DPM are CNNS中的几个图及其含义(转载)
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)
距离变换池化:Df(p)=maxq∈G(f(q)−d(p−q))
对于DPM,d(r)是凸二次函数d(r)=ar2+br,a,b是可学的参数,池化的区域可从数据中学到。
Object Geometry Filters
component c在位置s处的得分是root filter的得分和经过距离变化的part的得分之和,每个part相对于锚点的位移为vp=(vpx,vpy),计算组件在所有位置的得分可认为是卷积。将P+1个得分图与”object geometry”卷积,”object geometry filter”只有一个系数为1,其余都为0。”object geometry”第一个通道的左上角系数为1,令其筛选root的得分,通道p在位置vp处系数为1,筛选 part p的得分。
maxout 所有components的结果
使用zqc表示组件c在位置q的结果,所有组件的结果是最大化值:zq=maxczqc,在DPM-CNN中,zqc=wc⋅xq+bc,wc是组件c的object geometry滤波器,xq是位置q处root和part得分的子矩阵,bc是偏移量。下图是DPM-CNN的maxout结构:
训练方式
两种方式训练Deep Pyramid DPM:
Way1:将模型认为是一个CNN,使用SGD和BP进行端到端的训练。
Way2:分两步训练模型,Step1固定front-end CNN;(2)使用latent SVM在第一阶段后训练DPM,本文选用第二种方法。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章