0
点赞
收藏
分享

微信扫一扫

NMS算法

卿卿如梦 2022-04-14 阅读 102

非极大值抑制算法----NMS

算法概念

请添加图片描述

  • 在检测算法中,用于去掉有大量重叠的检测框,保留质量最高的检测框。

算法原理及流程

  1. 将所有检测框按置信度由高到低排序:A>B>C>D>E>F;
  2. 取出当前置信度最高的框 A,并删除和这个框IOU超过阈值的框 B、D,剩下的框C、E、F;
  3. 对于2中过滤后的检测框 C>E>F重复2,直到所有框处理完。

算法局限和改进

  • 局限

    1. 首先所有框是按分类置信度得分排序,分类置信度是分类分支的结果和定位的分支是两个不同的网络,分类置信度高的检测框不一定就是最准确的框置。 但是,置信度高的框相对来说是预测准确的框,因为制作标签时,置信度 c = Pr(Object) * IOU(truth, pred),也就是说我们网络预测的边框置信度有两层含义:预测的边框包含物体的概率和预测框的准确程度。
    2. 如果两个同类的物体靠的比较近,那么他们的 IOU 会比阈值高,这样会导致误过滤。
      请添加图片描述
  • 改进思路

    1. soft-nms: 顾名思义,soft-nms是nms的soft版本,当其他框和分类置信度最高的框iou大于阈值时,不是直接去掉这个框,而是降低这个框的置信度,在最后输出时,如果置信度小于阈值就会被过滤掉。
      请添加图片描述

    2. IOU-Net: iou-net 在网络结构里加上对iou的预测分支。这篇文章还分析了iou和分类置信度的相关性,进一步支持了假设,即分类置信度和定位准确性是两回事。在实际训练中,iou-net的gt怎么处理?检测任务的gt包括一个位置信息和一个分类label,iou-net在此基础上又增加一个iou值,一共三个监督信号。iou的训练数据生成方式是,在gt的bounding box周围随机生成一组bbox,然后从里面采样一批和gt bbox的iou大于0.5的。这样训练数据就比单一的gt bbox更丰富,训练结果更鲁棒。
      请添加图片描述

    3. Objects as Points: 将物体检测转化为关键点检测问题,一个物体从矩阵框(bbox)抽象为center point和长宽。训练时将bbox转化为heatmap。个人认为这种将bbox转化为关键点的做法比直接学习bbox要好一点,因为bbox其实是物体边界上的点,不在物体内部,学习难度要大,训练过程中一个gt box会转化为多个训练数据,所以最后才需要nms来过滤。objects as points训练的时候一个gt box对应一个训练数据,预测的时候同样只有一个结果,就不用nms了。
      请添加图片描述

    4. RepPoints: Point Set Representation for Object Detection: 使用一组关键点作为描述物体位置的中间状态,然后根据这组关键点计算bbox。使用物体的中心点初始化关键点集,然后使用可形变卷积预测实际可能的关键点相对中心点的offset。然后根据关键点集合计算bbox,然后计算loss反向传播。
      请添加图片描述

    5. 总结:目标检测任务ground truth都是矩形框,而且bbox的精度不是很高,用这些数据训练的模型预测的bbox也很难特别精确,而分割数据集相比会更加精确,通过mask生成的bbox也更准,对于精确定位的任务,可以利用分割任务finetune检测模型。否则单纯的改模型带来的提升终归有限。现在各种自监督学习大火,也是因为深度学习对监督信号的依赖太强,现实是无标签的数据集相比有标签要多的多。

举报

相关推荐

0 条评论