in 04_detect_segment/utils_box.py [0:0]
def boxintersect(primeroi, rois, min_intersect=0):
# primeroi: single region shape=[4] Tensor: [x1, y1, x2, y2]
# rois: multiple regions shape=[n, 4] Tensor: n x [x1, y1, x2, y2]
# min_intersect: value between 0 and 1.
# area(intersection) >= min_intersect * min(area(primeroi), area(roi)) to count as intersection
# return value: [n] Tensor type bool indicating which rois intersect the primeroi
px1, py1, px2, py2 = tf.unstack(primeroi, axis=0)
x1, y1, x2, y2 = tf.unstack(rois, axis=1)
is_inter_x, inter_x, inter_w = one_d_intersect(px1, px2, x1, x2)
is_inter_y, inter_y, inter_h = one_d_intersect(py1, py2, y1, y2)
inter_area = inter_w * inter_h
parea = (px2-px1)*(py2-py1)
areas = (x2-x1)*(y2-y1)
min_areas = tf.minimum(areas, parea)
inter = tf.logical_and(is_inter_x, is_inter_y)
inter_with_area = tf.greater_equal(inter_area, min_areas*min_intersect)
return tf.logical_and(inter, inter_with_area)