MXNet中目标检测API使用总结:MultiBoxDetection、MultiBoxPrior、MultiBoxTarget

  MXNet在目标检测提供了许多API供用户调用,灵活使用这些函数能大大降低编程难度,其中跟锚框有关的三个函数MultiBoxDetection、MultiBoxPrior、MultiBoxTarget,我也探索了一段时间,下面总结一下这三个函数的用法吧,也方便自己查阅


常用函数

  • MultiBoxPrior
  • MultiBoxTarget
  • MultiBoxDetection

MultiBoxPrior

  该函数是用来在一张给定的特征图中,对于给定的大小比例和宽高比例,生成不同锚框,函数原型为mxnet.ndarray.contrib.MultiBoxPrior(data=None, sizes=_Null, ratios=_Null, clip=_Null, steps=_Null, offsets=_Null, out=None, name=None, **kwargs)下面总结一下一些常用参数的作用。

参数 作用说明
data 输入的特征图,一般形状为(批量大小,通道数、宽、高)
sizes 要生成的锚框的大小比例列表,比如 sizes=[0.2,0.5,0.75]
ratios 要生成的锚框的宽高比例列表,比如 ratios=[0.5,1,2]
clip boolean 类型变量,设置是否要剪切超出边界的锚框,默认为0

输出:生成的锚框,形状为 (1,锚框总数,4) ,其中最后一维为生成的锚框的四个坐标,均除以了宽和高进行了归一化,锚框总数 = 宽*高*每个像素锚框个数,各个批量之间共享这些锚框。


MultiBoxTarget

  该函数是用来对生成锚框进行标记,函数原型为MultiBoxTarget(anchor=None, label=None, cls_pred=None, overlap_threshold=_Null, ignore_label=_Null, negative_mining_ratio=_Null, negative_mining_thresh=_Null, minimum_negative_samples=_Null, variances=_Null, out=None, name=None, **kwargs)下面总结一下一些常用参数的作用。

参数 作用说明
anchor 输入的锚框,一般是通过MultiBoxPrior生成,形状为(1,锚框总数,4)
label 训练集的真实标签,一般形状为(批量大小,每张图片最多的真实锚框数,5),第二维中,如果给定图片没有这么多锚框,将会用-1填充空白,最后一维中的元素为 类别标签+四个坐标值(归一化)
cls_pred 对于第一个输入参数,即输入的锚框,预测的类别分数,形状一般为(批量大小,预测的总类别数+1,锚框总数),这个输入的作用是为了负采样(negative_mining),如果不设置负采样,那么这个输入并不影响输出
negative_mining_ratio 设置负采样的比例大小
negative_mining_thresh 设置负采样的阈值
minimum_negative_samples 最少的负采样样本

其中输出为一个列表,有三个元素,分别为bbox_offset、bbox_mask、cls_labels,注意以上三个输出均为二维矩阵

输出 说明
bbox_offset 每个锚框的标注偏移量,形状为(批量大小,锚框总数*4)
bbox_mask 每个锚框的掩码,这些掩码一一对应上面的偏移量,由于我们不关心背景的偏移量,所以负类锚框坐标对应的掩码均为0,正类锚框坐标对应的掩码均为1,形状为(批量大小,锚框总数*4)
cls_labels 每个锚框的标注类别,其中0表示为背景,当设置了负采样后,标签为-1表示负采样中被丢弃,计算损失函数时应丢弃该样本,输出形状为 (批量大小,锚框总数)

MultiBoxDetection

  该函数是用来对预测完毕的锚框进行例如加上偏移量,非极大值抑制等处理,函数原型为MultiBoxDetection(cls_prob=None, loc_pred=None, anchor=None, clip=_Null, threshold=_Null, background_id=_Null, nms_threshold=_Null, force_suppress=_Null, variances=_Null, nms_topk=_Null, out=None, name=None, **kwargs)下面总结一下一些常用参数的作用。

参数 说明
cls_prob 预测的各个锚框的概率,一般要经过 s o f t m a x softmax softmax运算,形状为(批量大小,预测总类别数+1,锚框总数)
loc_pred 预测的各个锚框的偏移量,一般形状为 (批量大小,锚框总数*4)
anchor 生成的默认锚框,一般形状为(1,锚框总数,4)
clip 是否要剪切超出边界的锚框,默认为1
threshold 正类预测的阈值,当对某一个锚框预测的类别置信度大于设置的阈值时,会被当做正类锚框处理,否则视为负类
background_id 背景的类别id,默认为0
nms_threshold 非极大值抑制的阈值

  输出为经过处理之后的锚框,形状为(批量大小,锚框总数,6)其中最后一维组成为,类别标签+置信度+边界框四个坐标(归一化处理),其中类别标签为-1表示为背景或者在NMS中被移除

你可能感兴趣的:(深度学习)