import gradio as gr import face_recognition import numpy as np from PIL import Image def match_faces(image1, image2): # 이미지에서 얼굴 인식 및 특징 추출 face_encoding1 = face_recognition.face_encodings(image1)[0] face_encoding2 = face_recognition.face_encodings(image2)[0] # 두 얼굴 간의 유사도 측정 (유클리디안 거리) distance = np.linalg.norm(face_encoding1 - face_encoding2) # 유클리디안 거리를 사용하여 유사도 계산 (0에 가까울수록 비슷함) # 유사도를 백분율로 변환 (이 방식은 예제로, 실제 응용에서 더 정교한 방법이 필요할 수 있음) # 참고: 0.6은 경험적으로 얼굴이 매우 비슷하다고 판단되는 임계값입니다. 이 값을 기준으로 유사도를 계산합니다. similarity = max(0, 100 - (distance / 0.6) * 100) return f"두 얼굴의 유사도는 {similarity:.2f}% 입니다." return f"유사도: {similarity:.2f}%" # Gradio 인터페이스 생성 iface = gr.Interface(fn=match_faces, inputs=[gr.inputs.Image(shape=(224, 224)), gr.inputs.Image(shape=(224, 224))], outputs="text") iface.launch()