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.

例子:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM