一、定义
detection层是ssd预测阶段的最后一层。它接收底层网络输出的位置偏移量(loc_data)、各个框置信度(conf_data)以及默认框(prior_data)。该层的作用是整合各层的预测结果,过滤置信度太低的预测框,通过类内nms抑制大量相同的预测框。
二、代码解读
1.输入
- loc_data 网络六个层预测的坐标偏移。Shape:[batch,num_priors*4]
- conf_data 各预测框对应各类的置信度(每个预测框针对每一类都预测一个得分,因此每个预测框对应num_classes个得分) Shape: [batch*num_priors,num_classes]
- prior_data 默认框(上篇博客中介绍过),网络的预测框其实就是针对这个默认框的偏移量。 Shape: [num_priors,4]
2.参数配置
- top_k 一张图片中,每一类保存top_k个预测框
- conf_thresh 置信度阈值,置信度低于该阈值的预测框会被抛弃
- nms_thresh nms阈值
3.输出格式
output的Shape为 [batch, num_classes, top_k, 5]
取其中一个输出output[i,j,k,:]表示在当前mini_batch中的第i张图片的第j类的第k个框对应的预测结果。
最后一维的五个数依次为[score,xmin,ymin,xmax,ymax]