mask-rcnn代碼解讀(五):mask_iou的計算


我以為只有box能計算iou值,但我看了maskrcnn后,發現該模型對mask進行了iou的計算,該方法巧妙之處在於

mask1與mask2必須有相同的height and width,而后在同一個位置的值累加,即交叉面積,而后將mask1與mask2

所有值累加為並集,而后計算類似於box的iou計算了。

然而,我為了簡化,將變量a看作mask,並將mask1與mask2均等於a,以下是詳細代碼:

 

import numpy as np
a=np.array([[1,0,1,0,1,1],[1,0,1,0,1,0]])
print(a > .5)
masks = np.reshape(a > .5, (-1, 1)).astype(np.float32) # flatten two dimension,but line only one
print('masks=',masks)
area1 = np.sum(masks, axis=0) # 計算mask_面積
print('mask_area1=',area1)

mask_intersections = np.dot(masks.T, masks)
print('mask_intersections=',mask_intersections)
union = area1[:, None]+area1[None,:]-mask_intersections
print(union)
iou_mask=union/mask_intersections
print('iou_mask=',iou_mask)

結果如下:

 

 

 


免責聲明!

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



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