文档首页 > > AI工程师用户指南> 管理模型> 评估和诊断模型> 模型评估的优化建议>

物体检测模型的目标框边缘化敏感度分析以及相关的解决方法

物体检测模型的目标框边缘化敏感度分析以及相关的解决方法

分享
更新时间:2020/12/14 GMT+08:00

问题描述

在目标检测任务中,一张图片中的目标框在整张图片上面的位置可能会不一样,有的目标框可能分布在图片的中间,有的目标框可能分布在图片的边缘位置,边缘化程度,即目标框中心距离图片中心距离占图片总距离的比值,越大表示物体越靠近边缘。下图表示的是图片中标记框距离中心比较远的场景,即标记框的边缘化分布比较严重。

图1 图片标记框边缘化分布示例

目标框边缘化敏感度就是描述这种现象的指标,检测模型对于具有不同边缘化程度的数据集检测效果是不一样的。建议参考如下相关算法和技术说明,了解如何降低模型对于目标框边缘化的敏感程度。

解决方法

  • box loss weight

    在目标检测中,分类loss和BBOX坐标loss的值存在不均衡,如果只是简单相加,对于BBOX loss很小的值(例如小物体)在计算反向梯度时,很容易被忽略,影响收敛。给BBOX loss加权重,是缓解这种不均衡的现象的技术,即根据数据集的不同来自行调整box loss weight。下图表示在同一个检测模型训练的时候,class loss和box loss的大小值分布不均匀,两者之间相差100倍左右。

    图2 一个检测模型训练的时候,class loss和box loss数值大小分布不均

    如下代码是box loss weight的Tensorflow伪代码。

    1
    2
    3
    def model_fn(inputs, mode):    ...    
        # params为检测算法超参数配置,修改box_loss_weight的值即可    
        total_loss = cls_loss + params['box_loss_weight'] * box_loss
    
  • label smooth

    label smooth标签平滑在检测的分类任务常有用到,最早是Inceptionv2中提出。如果标签中有的是错的,或者不准,会导致网络过分信任标签而一起错下去。为了提高网络泛化能力,避免这种错误,在one-hot的label进行计算loss时,真实类别位置乘以一个系数(1-e),e很小如0.05,以0.95的概率送进去;非标注的类别原来为0,现在改为e=0.05送进去计算loss。

    下图是在检测模型中原始输出one_hot label。

    图3 原始label的one hot编码

    加了label smooth标签平滑之后的label。

    图4 label smooth处理之后的label编码

    如下代码是label smooth的tensorflow版的伪代码。

    1
    2
    3
    4
    5
    6
    7
    8
    positive_label_mask = tf.equal(targets, 1.0)    
       if label_smoothing > 0:      
          from tensorflow.python.ops import math_ops      
          smooth_positives = 1.0 - label_smoothing      
          smooth_negatives = label_smoothing / num_classes      
          labels = labels * smooth_positives + smooth_negatives    
          cross_entropy = (        
               tf.nn.sigmoid_cross_entropy_with_logits(labels=labels, logits=logits))
    

实验验证

使用交通信号灯的数据集,该数据集只有一个标签,检测交叉路口是否安装了交通信号,下图表示的是使用label smooth之前和之后,class loss的拟合曲线,可以看到,在使用label smooth之前(蓝色曲线),class loss随着迭代步数的增加,会出现过拟合的现象,而使用label smooth之后(灰色曲线),这种过拟合的现象可以有效的减小。

图5 class loss的拟合曲线

对训练之后的检测模型进行模型评估,统计出在不同的边缘化特征值分布的情况下,所对应的不同的推理情况下的recall值。使用label smooth和box loss weight之前的目标框边缘化敏感度如表1所示。

表1 使用label smooth和box loss weight之前的目标框边缘化敏感度分析

特征值分布

light

0% - 20%

0.9412

20% - 40%

0.8235

40% - 60%

0.7778

60% - 80%

1

80% - 100%

0.8333

标准差

0.0823

使用label smooth和box loss weight之后的目标框边缘化敏感度如表2所示。

可以看出在使用label smooth和box loss weight之后,目标框的边缘化程度敏感度冲0.0823降到了0.0448,降低了检测模型对目标框的边缘化敏感度。

表2 使用label smooth和box loss weight之后的目标框边缘化敏感度分析

特征值分布

light

0% - 20%

1

20% - 40%

0.9412

40% - 60%

0.8889

60% - 80%

1

80% - 100%

1

标准差

0.0448

用户建议

在模型推理结果中,如果检测出来的类别对于目标框边缘化的敏感程度比较大,推荐在训练的时候,使用label smooth和box loss weight进行模型优化和加强。

分享:

    相关文档

    相关产品