zoukankan      html  css  js  c++  java
  • tf.image.non_max_suppression()

    tf.image.non_max_suppression()

    在吴恩达老师深度学习yolo算法实现自动驾驶的编程题中出现了这个函数,这个函数的功能是在检测算法中我们的一个目标被检测了多次,如何排除掉多余的边界框。比如下面的图,来自于编程题中的图片,下面的这个车被多次检测到,存在多个边界框,保留概率最大的那个,去除掉与这个概率最大的边界框的IoU大于一个阙值的其余边界框。这个过程就成为非最大值抑制=NMS

    函数原型:

    tf.image.non_max_suppression(
        boxes,
        scores,
        max_output_size,
        iou_threshold=0.5,
        score_threshold=float('-inf'),
        name=None
    )

    按照参数scores的降序贪婪的选择边界框的子集。

    删除掉那些与之前的选择的边框具有很高的IOU的边框。边框是以[y1,x1,y2,x2],(y1,x1)和(y2,x2)是边框的对角坐标,当然也可以提供被归一化的坐标。返回的是被选中的那些留下来的边框在参数boxes里面的下标位置。那么你可以使用tf.gather的操作或者利用keras.backend的gather函数来从参数boxes来获取选中的边框。

    例如:

    selected_indices=tf.image.non_max_suppression(boxes,scores,max_output_size,iou_thresholde)

    selected_boxes=tf.gather(boxes,selected_indices)

    参数:boxes:2-D的float类型的,大小为[num_boxes,4]的张量;

    scores:1-D的float类型的大小为[num_boxes]代表上面boxes的每一行,对应的每一个box的一个score;

    max_output_size:一个整数张量,代表我最多可以利用NMS选中多少个边框;

    iou_threshold:一个浮点数,IOU阙值展示的是否与选中的那个边框具有较大的重叠度;

    score_threshold:一个浮点数,来决定上面时候删除这个边框

    name:可选

    返回的是selected_indices:表示的是一个1-D的整数张量,大小为[M],代表的是选出来的留下来的边框下标,M小于等于max_outpuy_size.

    例子:

  • 相关阅读:
    BZOJ3875 AHOI2014/JSOI2014骑士游戏(动态规划)
    Contest 9
    Contest 8
    Codeforces Round#514 Div.2 翻车记
    Contest 7
    安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
    2018.8 安徽师大附中培训游记
    安徽师大附中%你赛day5 T3 树上行走 解题报告
    安徽师大附中%你赛day4T2 演讲解题报告
    安徽师大附中%你赛day4T1 金字塔 解题报告
  • 原文地址:https://www.cnblogs.com/fujian-code/p/10408590.html
Copyright © 2011-2022 走看看