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

举报
talking_cv 发表于 2020/08/13 11:30:31 2020/08/13
【摘要】 一、问题描述 在目标检测任务中,一张图片中的目标框在整张图片上面的位置可能会不一样,有的目标框可能分布在图片的中间,有的目标框可能分布在图片的边缘位置,边缘化程度,即目标框中心距离图片中心距离占图片总距离的比值,越大表示物体越靠近边缘。下图表示的是图片中标记框距离中心比较远的场景,即标记框的边缘化分布比较严重。图1 图片标记框边缘化分布示例目标框边缘化敏感度就是描述这种现象的指标,检测模型...

一、问题描述

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

image.png

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

目标框边缘化敏感度就是描述这种现象的指标,检测模型对于具有不同边缘化程度的数据集检测效果是不一样的,那么如何降低模型对于目标框边缘化的敏感程度呢,下面对相关的技术进行介绍。

二、 解决方法

 1、box loss weight

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

image.pngimage.png

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

下面是box loss weight的Tensorflow伪代码:

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

2、label smooth

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

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

image.png

图3 原始label的one hot编码

  加了label smooth标签平滑之后的labelhttps://bbs.huaweicloud.com/static/blog/ueditor/themes/default/images/spacer.gif

image.png

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

    下面是label smooth的tensorflow版的伪代码:

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之后(灰色曲线),这种过拟合的现象可以有效的减小。

image.png

图5 使用label smooth之前和之后的class loss拟合曲线

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

image.png

图6 使用label smoothbox loss weight之前的目标框边缘化敏感度分析

  使用label smoothbox loss weight之后的目标框边缘化敏感度如下:

image.png

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

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

四、用户建议

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。