In the process of target detection , An important concept is that IOU. General reference model predicted bbox and Groud Truth The comparison between them .
What is cross comparison ?
I O U = A ∩ B A ∪ B IOU = \frac{A\cap B}{A\cup B} IOU=A∪BA∩B
aggregate A And set B The union of includes the above 3 Color regions .
aggregate C It's a collection A And set B Intersection of .
In the process of target detection ,IOU It's the ratio of the two sets above .
A ∪ B A \cup B A∪B In fact, it is A + B − C A + B - C A+B−C.
Then the formula can be transformed into :
I O U = A ∩ B A + B − ( A ∩ B ) IOU = \frac{A \cap B}{A + B - (A \cap B)} IOU=
A+B−(A∩B)A∩B
IOU Measure the degree of overlap between two sets .
* IOU by 0 Time , The two boxes do not overlap , There is no intersection .
* IOU by 1 Time , The two boxes overlap completely .
* IOU The value is 0 ~ 1 When the value between , Represents the degree of overlap between the two boxes , The higher the value , The higher the degree of overlap .
stay 2D Target detection , because bbox It's a rectangle , So it's easy to get IOU.
Box A and B intersect , Typical cases are as follows :
A and B It is easy to get the area of ,C The area is a little more complicated , But if you are patient and careful, you can get it .
If we use mathematical thinking , Careful arrangement , Area can be found C We just need to find the product of the side length , even if A and B The position of is relative , But with a little transformation, it can be found .
If W representative A and B Intersection of C Of x Side length in axis direction , So there is
W = m i n ( A . x 1 , B . x 1 ) − m a x ( A . x 0 , B . x 0 ) W =
min(A.x_{1},B.x_{1}) - max(A.x_{0},B.x_{0})W=min(A.x1,B.x1)−max(A.x0,B.x0)
In the same way ,
H = m i n ( A . y 1 , B . y 1 ) − m a x ( A . y 0 , B . y 0 ) H =
min(A.y_{1},B.y_{1}) - max(A.y_{0},B.y_{0})H=min(A.y1,B.y1)−max(A.y0,B.y0)
Look carefully at the corresponding relationship above , It can be found that the formula holds . The derivation of this formula is not difficult , nothing less than 4 Transformation of relative position of coordinates of vertices , You can figure it out for yourself .
If A And B It doesn't intersect at all .
At this time, we can find out W <= 0 or H <= 0.
Here is Python code .
class BBox: def __init__(self,x,y,w,h): self.x = x self.y = y self.w = w self.h
= h def iou(a,b): assert isinstance(a,BBox) assert isinstance(b,BBox) area_a = a
.w * a.h area_b = b.w * b.h w = min(b.x+b.w,a.x+a.w) - max(a.x,b.x) h = min(b.y+
b.h,a.y+a.h) - max(a.y,b.y) if w <= 0 or h <= 0: return 0 area_c = w * h return
area_c/ (area_a + area_b - area_c) if __name__ == '__main__': a = BBox(1,1,4,5)
b1= BBox(1,1,4,5) b2 = BBox(5,1,4,5) b3 = BBox(3,2,3,6) print("iou ",iou(a,b1))
print("iou ",iou(a,b2)) print("iou ",iou(a,b3))
The results are as follows :
iou 1.0 iou 0 iou 0.26666666666666666
Technology