(thresholds, embeddings1, embeddings2, actual_issame, far_target, nrof_folds = 10)
return val_mean, val_std, far_mean
Copy from [insightface](https://github.com/deepinsight/insightface)
    :param thresholds:
    :param embeddings1:
    :param embeddings2:
    :param actual_issame:
    :param far_target:
    :param nrof_folds:
    :return:
Copy from [insightface](https://github.com/deepinsight/insightface)
    :param thresholds:
    :param embeddings1:
    :param embeddings2:
    :param actual_issame:
    :param far_target:
    :param nrof_folds:
    :return:
Copy from [ insightface ] ( https : // github . com / deepinsight / insightface ) : param thresholds : : param embeddings1 : : param embeddings2 : : param actual_issame : : param far_target : : param nrof_folds : : return :
def calculate_val(thresholds, embeddings1, embeddings2, actual_issame, far_target, nrof_folds = 10):
    '''
    Copy from [insightface](https://github.com/deepinsight/insightface)
    :param thresholds:
    :param embeddings1:
    :param embeddings2:
    :param actual_issame:
    :param far_target:
    :param nrof_folds:
    :return:
    '''
    assert (embeddings1.shape[0] == embeddings2.shape[0])
    assert (embeddings1.shape[1] == embeddings2.shape[1])
    nrof_pairs = min(len(actual_issame), embeddings1.shape[0])
    nrof_thresholds = len(thresholds)
    k_fold = KFold(n_splits = nrof_folds, shuffle = False)

    val = np.zeros(nrof_folds)
    far = np.zeros(nrof_folds)

    diff = np.subtract(embeddings1, embeddings2)
    dist = np.sum(np.square(diff), 1)
    indices = np.arange(nrof_pairs)

    for fold_idx, (train_set, test_set) in enumerate(k_fold.split(indices)):

        # Find the threshold that gives FAR = far_target
        far_train = np.zeros(nrof_thresholds)
        for threshold_idx, threshold in enumerate(thresholds):
            _, far_train[threshold_idx] = calculate_val_far(threshold, dist[train_set], actual_issame[train_set])
        if np.max(far_train) >= far_target:
            f = interpolate.interp1d(far_train, thresholds, kind = 'slinear')
            threshold = f(far_target)
        else:
            threshold = 0.0

        val[fold_idx], far[fold_idx] = calculate_val_far(threshold, dist[test_set], actual_issame[test_set])

    val_mean = np.mean(val)
    far_mean = np.mean(far)
    val_std = np.std(val)
    return val_mean, val_std, far_mean
def calculate_val ( thresholds , embeddings1 , embeddings2 , actual_issame , far_target , nrof_folds = 10 ) : assert ( embeddings1 . shape [ 0 ] == embeddings2 . shape [ 0 ] ) assert ( embeddings1 . shape [ 1 ] == embeddings2 . shape [ 1 ] ) nrof_pairs = min ( len ( actual_issame ) , embeddings1 . shape [ 0 ] ) nrof_thresholds = len ( thresholds ) k_fold = KFold ( n_splits = nrof_folds , shuffle = False ) val = np . zeros ( nrof_folds ) far = np . zeros ( nrof_folds ) diff = np . subtract ( embeddings1 , embeddings2 ) dist = np . sum ( np . square ( diff ) , 1 ) indices = np . arange ( nrof_pairs ) for fold_idx , ( train_set , test_set ) in enumerate ( k_fold . split ( indices ) ) : # Find the threshold that gives FAR = far_target far_train = np . zeros ( nrof_thresholds ) for threshold_idx , threshold in enumerate ( thresholds ) : _ , far_train [ threshold_idx ] = calculate_val_far ( threshold , dist [ train_set ] , actual_issame [ train_set ] ) if np . max ( far_train ) >= far_target : f = interpolate . interp1d ( far_train , thresholds , kind = 'slinear' ) threshold = f ( far_target ) else : threshold = 0.0 val [ fold_idx ] , far [ fold_idx ] = calculate_val_far ( threshold , dist [ test_set ] , actual_issame [ test_set ] ) val_mean = np . mean ( val ) far_mean = np . mean ( far ) val_std = np . std ( val ) return val_mean , val_std , far_mean