(num_gbboxes, num_detections, tp, fp, scores,
                     dtype=tf.float64, scope=None)
Compute precision and recall from scores, true positives and false
    positives booleans arrays
Compute precision and recall from scores, true positives and false
    positives booleans arrays
Compute precision and recall from scores true positives and false positives booleans arrays
def precision_recall(num_gbboxes, num_detections, tp, fp, scores,
                     dtype=tf.float64, scope=None):
    """Compute precision and recall from scores, true positives and false
    positives booleans arrays
    """
    # Input dictionaries: dict outputs as streaming metrics.
    if isinstance(scores, dict):
        d_precision = {}
        d_recall = {}
        for c in num_gbboxes.keys():
            scope = 'precision_recall_%s' % c
            p, r = precision_recall(num_gbboxes[c], num_detections[c],
                                    tp[c], fp[c], scores[c],
                                    dtype, scope)
            d_precision[c] = p
            d_recall[c] = r
        return d_precision, d_recall

    # Sort by score.
    with tf.name_scope(scope, 'precision_recall',
                       [num_gbboxes, num_detections, tp, fp, scores]):
        # Sort detections by score.
        scores, idxes = tf.nn.top_k(scores, k=num_detections, sorted=True)
        tp = tf.gather(tp, idxes)
        fp = tf.gather(fp, idxes)
        # Computer recall and precision.
        tp = tf.cumsum(tf.cast(tp, dtype), axis=0)
        fp = tf.cumsum(tf.cast(fp, dtype), axis=0)
        recall = _safe_div(tp, tf.cast(num_gbboxes, dtype), 'recall')
        precision = _safe_div(tp, tp + fp, 'precision')
        return tf.tuple([precision, recall])
def precision_recall ( num_gbboxes , num_detections , tp , fp , scores , dtype = tf . float64 , scope = None ) : # Input dictionaries: dict outputs as streaming metrics. if isinstance ( scores , dict ) : d_precision = { } d_recall = { } for c in num_gbboxes . keys ( ) : scope = 'precision_recall_%s' % c p , r = precision_recall ( num_gbboxes [ c ] , num_detections [ c ] , tp [ c ] , fp [ c ] , scores [ c ] , dtype , scope ) d_precision [ c ] = p d_recall [ c ] = r return d_precision , d_recall # Sort by score. with tf . name_scope ( scope , 'precision_recall' , [ num_gbboxes , num_detections , tp , fp , scores ] ) : # Sort detections by score. scores , idxes = tf . nn . top_k ( scores , k = num_detections , sorted = True ) tp = tf . gather ( tp , idxes ) fp = tf . gather ( fp , idxes ) # Computer recall and precision. tp = tf . cumsum ( tf . cast ( tp , dtype ) , axis = 0 ) fp = tf . cumsum ( tf . cast ( fp , dtype ) , axis = 0 ) recall = _safe_div ( tp , tf . cast ( num_gbboxes , dtype ) , 'recall' ) precision = _safe_div ( tp , tp + fp , 'precision' ) return tf . tuple ( [ precision , recall ] )