in 04_detect_segment/utils_box.py [0:0]
def compute_mistakes(box_x, box_y, box_w, box_c_sim, target_x, target_y, target_w, target_is_plane, grid_nn):
DETECTION_TRESHOLD = 0.5 # plane "detected" if predicted C>0.5 TODO: refactor this
ERROR_TRESHOLD = 0.3 # plane correctly localized if predicted x,y,w within % of ground truth
detect_correct = tf.logical_not(tf.logical_xor(tf.greater(box_c_sim, DETECTION_TRESHOLD), target_is_plane))
ones = tf.ones(tf.shape(target_w))
nonzero_target_w = tf.where(target_is_plane, target_w, ones)
# true if correct size where there is a plane, nonsense value where there is no plane
size_correct = tf.less(tf.abs(box_w - target_w) / nonzero_target_w, ERROR_TRESHOLD)
# true if correct position where there is a plane, nonsense value where there is no plane
position_correct = tf.less(tf.sqrt(tf.square(box_x - target_x) + tf.square(box_y - target_y)) / nonzero_target_w / grid_nn, ERROR_TRESHOLD)
truth_no_plane = tf.logical_not(target_is_plane)
size_correct = tf.logical_or(size_correct, truth_no_plane)
position_correct = tf.logical_or(position_correct, truth_no_plane)
size_correct = tf.logical_and(detect_correct, size_correct)
position_correct = tf.logical_and(detect_correct, position_correct)
all_correct = tf.logical_and(size_correct, position_correct)
mistakes = tf.reduce_sum(tf.cast(tf.logical_not(all_correct), tf.int32), axis=[1,2,3]) # shape [batch]
return mistakes, size_correct, position_correct, all_correct