1.IOU交并比
#1。交并比
import cv2
import numpy as np
img=np.zeros((512,512,3),np.uint8)#此大小的黑色画布
img.fill(255)#画布填255,变成白色画布
RecA=[50,50,300,300]#矩形的左上与右下点坐标
RecB=[60,60,320,320]
cv2.rectangle(img,(RecA[0],RecA[1]),(RecA[2],RecA[3]),(0, 255, 0),5)#在纯白画布上画上框,线条粗5个像素
cv2.rectangle(img,(RecB[0],RecB[1]),(RecB[2],RecB[3]),(255, 0, 0),5)
#计算IOU
def CountIOU(RecA,RecB):
M_X=max(RecA[0],RecB[0])
M_Y=max(RecA[1],RecB[1])#交区域的左上角点
m_x=min(RecA[2],RecB[2])
m_y=min(RecA[3],RecB[3])#交区域的右下角点
interArea=max(0,m_x-M_X)*max(0,m_y-M_Y)#交区域面积
#计算两个框的实际面积
RecA_Area=(RecA[2]-RecA[0])*(RecA[3]-RecA[1])
RecB_Area=(RecB[2]-RecB[0])*(RecB[3]-RecB[1])
#计算并区域面积,并计算IOU
iou=interArea/float(RecA_Area+RecB_Area-interArea)
return iou
IOU=CountIOU(RecA,RecB)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'iou=%.2f'%IOU,(130,190),font,0.8,(0,0,0),2)
cv2.imshow('img',img)
cv2.waitKey()
cv2.destroyAllWindows()
2.mAP
3.膨胀卷积(Dilation ,空洞卷积)
膨胀卷积是对卷积核进行0填充。
膨胀后的卷积核的大小的计算:
默认的dilation_rate=1.
(1)设原始卷积核的大小是3*3
(2)设膨胀率为2
(3)则膨胀后的卷积核的大小为:dilation_rate*(kernel_size - 1)+1
结果就是 2*(3-1)+1=5,膨胀后的卷积核大小是5*5
膨胀卷积的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者自然语言处理中需要较长的sequence信息依赖的问题中,都能很好的应用。
参考:https://blog.csdn.net/weixin_44791964/article/details/102410481
https://blog.csdn.net/weixin_44791964/article/details/102414522
https://blog.csdn.net/moshiyaofei/article/details/87474966
https://www.jianshu.com/p/f743bd9041b3