关于DPMv5(Deformable Part Model)算法中Model结构的解释
论文描述Model
关于可变部件模型的描述在作者[2010 PAMI]Object Detection with Discriminatively Trained Part Based Models的论文中已经有说明:(这部分来自masikkk的翻译Object Detection with Discriminatively Trained Part Based Models [PAMI 2010]中文翻译有关可变形部件模型(Deformable Part Model)的一些说明)
含有n个部件的目标模型可以形式上定义为一个(n+2)元组:(F0,P1,…, Pn, b),F0是根滤波器,Pi是第i个部件的模型,b是表示偏差的实数值。每个部件模型用一个三元组定义:(Fi,vi, di),Fi是第i个部件的滤波器;vi是一个二维向量,指定第i个滤波器的锚点位置(anchor position,即未发生形变时的标准位置) 相对于根的坐标;di是一个四维向量,指定了一个二次函数的参数,此二次函数表示部件的每个可能位置相对于锚点位置的变形花费(deformation cost)。
v5 VS v3
由于我一直在看的是v5部分的代码,而masikkk的博客主要分析的是v3的全部,虽然v5版本很复杂,但是还得硬着头皮看不是~
上图:v3-person模型
上图:v5-car模型
v5中的初始化是存放在model文件夹下的model_creat.m文件
简要的字段说明如下表:
字段名 | 值 | 维度 | 说明 |
---|---|---|---|
class | car | 类名 | |
year | 2010 | Pascal数据集的年份 | |
note | 字符串 | 表示对此数据集的说明 | |
filters | 数组 | 1*numfilters的结构体(一个结构体是四元组(blocklabel,size(2*1),flip,symbol)) | 终端滤波器 |
rules | 数组 | 1*numsymbols的单元 | 规则 |
symbols | 数组 | 1*numsymbols的结构体 | 语法样本表?? |
numfilters | int | 滤波器的长度 | |
numblocks | int | 块的长度 | |
numsymbols | int | 符号集的长度 | |
start | 数组 | 语法开始的符号(代码中显示是数组,但是打开model却是int) | |
maxsize | 数组 | 2*1 | 检测窗口的最大高宽比 |
minsize | 数组 | 2*1 | 检测窗口的最小高宽比 |
interval | int | HOG特征金字塔的层数 | |
sbin | int | HOG特征的单元宽度 | |
thresh | int | 判断正负样本的阈值 | |
type | 字符 | 模型的类型,默认为星型,还可以是语法型 | |
blocks | 数组 | 1*numblocks的结构体 | 保存块数据的结构体 |
features | 数组 | 1*1的结构体 | 存储图像的基本特征(sbin,dim,truncation_dim,extra_octave,bias) |
stats | 结构体 | 1个4*2的结构体 | 存储的是模型训练过程中的耗时和状态 |
bboxpred | 单元cell | 6*1的单元 | 是对检测结果所要标注的框的位置x1,y1,x2,y2 |
待续
还没有看完,比如block,symbols,grammar的含义,都待续