File size: 1,052 Bytes
beacc91
 
 
 
112b1af
beacc91
 
 
 
 
 
 
 
52b0325
 
 
 
beacc91
52b0325
 
beacc91
 
 
 
4ccd918
beacc91
52b0325
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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์ด๋ฉด 100% ์œ ์‚ฌ, ๊ฑฐ๋ฆฌ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ ์‚ฌ๋„๋Š” ๋‚ฎ์•„์ง
    # ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๋‹จ์ˆœํ™”๋œ ๊ณต์‹. ์‹ค์ œ ์‚ฌ์šฉ์‹œ์—๋Š” ์ ์ ˆํ•œ ์กฐ์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ
    similarity = max(0, 100 - distance * 20)
    
    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()