#python #face-recognition #knn
Вопрос:
В настоящее время я слежу за этим репо: https://github.com/ageitgey/face_recognition/blob/master/examples/face_recognition_knn.py для распознавания лиц в python используется алгоритм KNN. Когда я прочитал код, я нашел это
# Find encodings for faces in the test iamge
faces_encodings = face_recognition.face_encodings(X_img, known_face_locations=X_face_locations)
# Use the KNN model to find the best matches for the test face
closest_distances = knn_clf.kneighbors(faces_encodings, n_neighbors=1)
are_matches = [closest_distances[0][i][0] <= distance_threshold for i in range(len(X_face_locations))]
# Predict classes and remove classifications that aren't within the threshold
return [(pred, loc) if rec else ("unknown", loc) for pred, loc, rec in zip(knn_clf.predict(faces_encodings), X_face_locations, are_matches)]
из приведенного выше кода можно узнать, есть ли способ получить процент совпадающего изображения… например: я хотел бы знать процент изображения X, когда оно сравнивается с изображениями, которые были обучены
Ответ №1:
Попробуйте взглянуть на это: %%% на github Адам Гейтги объясняет, что нет прямого способа преобразовать расстояние в процент … но «что-то вроде этого» есть.
Комментарии:
1. Привет @Bohdan,я заглянул на этот сайт, и меня смущает то, как получить
face_distance
ценность. Являетсяface_distance
ли значение исходит изclosest_distances
(из приведенного выше кода, который я упомянул в своем вопросе) ?2. Да, это так, ваши самые близкие расстояния-это список таких расстояний… Однако это расстояние между двумя гранями нормализуется на 1: когда оно равно 0 — грани абсолютно одинаковы(100% сходства), а 1 означает, что они абсолютно разные(0% сходства), верно? Итак, мое предложение состоит в том, чтобы использовать самый простой процентный расчет » процент = (1,0 — расстояние) * 100,0 ` . Никто не может увидеть и понять разницу между 86% и 92% сходства изображений, так зачем вам нужно ломать себе голову этим?!