main3.py
quoc14
python
5 months ago
3.6 kB
3
Indexable
FaceRC
import gradio as gr from face_engine.engine import FaceEngine from PIL import Image # Danh sách mô hình cho người dùng lựa chọn model_list = [ "ir18_webface4m", "ir50_webface4m", "ir101_webface4m", "ir101_webface12m", "vit_base_kprpe_webface4m", "vit_base_kprpe_webface12m", "vit_base_webface4m" ] # Khởi tạo FaceEngine face_engine = FaceEngine() # Hàm cập nhật mô hình dựa trên lựa chọn của người dùng def update_model(model_name): face_engine.set_model(model_name) return f"Đã chuyển đổi sang mô hình: {model_name}" # Giao diện chọn mô hình model_selector = gr.Dropdown( choices=model_list, label="Chọn mô hình trích xuất đặc trưng", value="vit_base_kprpe_webface4m", type="value" ) # Hàm để đăng ký người dùng mới def enroll_new_person(pil_image, user_id): # Kiểm tra xem khuôn mặt đã tồn tại trong hệ thống chưa check_result = face_engine.get_id(pil_image) if check_result['status'] == "not_found": # Nếu khuôn mặt chưa có trong hệ thống, tiến hành đăng ký face_engine.save_to_db(pil_image, user_id) return f"Khuôn mặt đã đăng ký thành công với ID là {user_id}." # Nếu khuôn mặt đã có trong hệ thống return f"Khuôn mặt đã tồn tại với ID là {check_result['id']}." # Giao diện đăng ký (enroll) enroll_interface = gr.Interface( fn=enroll_new_person, inputs=[gr.Image(), gr.Textbox(label="Nhập ID (ví dụ: CCCD)")], outputs="text", title="Đăng ký khuôn mặt mới", description="Tải lên ảnh và nhập ID của bạn để đăng ký vào hệ thống." ) # Hàm để xác minh hai khuôn mặt có giống nhau không def verify(pil_image_1, pil_image_2): cosine_similarity = face_engine.compute_cosine_similarity(pil_image_1, pil_image_2) if cosine_similarity > face_engine.threshold: return f"Hai ảnh là cùng một người, điểm tương đồng: {cosine_similarity:.2f}" return f"Hai ảnh là hai người khác nhau, điểm tương đồng: {cosine_similarity:.2f}" # Giao diện xác minh (verify) verification_interface = gr.Interface( fn=verify, inputs=[gr.Image(), gr.Image()], outputs="text", title="Xác minh khuôn mặt", description="Tải lên hai ảnh để xác minh xem chúng có phải cùng một người hay không." ) # Hàm để nhận diện khuôn mặt từ ảnh đầu vào def identify(pil_image): check_result = face_engine.get_id(pil_image) if check_result['status'] == "not_found": return "Khuôn mặt không tồn tại trong hệ thống." # Nếu tìm thấy khuôn mặt return f"Khuôn mặt được nhận diện với ID là {check_result['id']}." # Giao diện nhận diện (identify) identification_interface = gr.Interface( fn=identify, inputs=gr.Image(), outputs="text", title="Nhận diện khuôn mặt", description="Tải lên một ảnh để nhận diện khuôn mặt từ hệ thống." ) # Giao diện chính với các tab demo = gr.TabbedInterface( interface_list=[ gr.Interface(fn=update_model, inputs=model_selector, outputs="text", title="Chọn Mô Hình"), enroll_interface, verification_interface, identification_interface ], tab_names=["Chọn Mô Hình", "Enroll", "Verification", "Identification"] ) # Khởi chạy ứng dụng Gradio if __name__ == "__main__": demo.launch()
Editor is loading...
Leave a Comment