Сначала я думаю, что важно проверить, с помощью какого измерения сходства использует ваше распознавание лиц, чтобы решить, являются ли два вложения одного и того же человека. Некоторые движки используют косинусное сходство, а не евклидово расстояние (например, Sphereface или Arcface)
Во-вторых, я бы проверил, каково пороговое значение в этом измерении сходства, когда механизм распознавания лиц рассматривает два вложения одного и того же человека. Обычно это делается для того, чтобы балансировать между TP и FP на помеченном наборе данных.
Используя эти два пункта выше, я сделаю следующий алгоритм:
- Создать матрицу сходства между всеми матрица вложений A1900x1900, где значение entrey I, j соответствует подобию, измеренному между внедрением I и внедрением j.
- Порог матрицы с использованием соответствующего значения (вторая точка выше). Каждая запись в матрице выше порогового значения получит 1, а ниже получит ноль
- Обрабатывать пороговую матрицу как вспомогательную матрицу графа и запускать алгоритм связанных компонентов графа (используя BFS или DFS), чтобы найти количество компонентов , Каждый компонент соответствует уникальному идентификатору.
Примечание по второму пункту: вы можете самостоятельно определить порог, используя некоторый набор данных распознавания лиц, например LFW или Celeb a, и решить, как именно вы хотите точно настроить порог по балансировке ФП и ТП.