Nhận diện khuôn mặt all-in-one chỉ với vài dòng Python
TL;DR
UniFace là thư viện Python mã nguồn mở, dùng ONNX Runtime để chạy các model AI nhận diện khuôn mặt nhanh và nhẹ. Tích hợp sẵn detection, recognition, landmark, parsing, gaze estimation, attribute analysis và cả anti-spoofing — chỉ cần cài pip install uniface là chạy được, hỗ trợ cả CPU lẫn GPU.
Nói đơn giản: Thư viện này giúp mình detect khuôn mặt trong ảnh, nhận ra ai là ai, đọc được tuổi/giới tính/cảm xúc, thậm chí là phát hiện khuôn mặt giả — tất cả chỉ trong vài dòng code.
Bài này dành cho ai?
1. Người muốn AI làm việc thay mình
Vấn đề: Muốn tự động phân tích khuôn mặt trong ảnh/video nhưng không muốn train model từ đầu, không muốn cài cắm nhiều thư viện rời rạc
Khi nào cần: Khi cần build pipeline xử lý ảnh hàng loạt — ví dụ như kiểm tra nhân viên chấm công, phân tích khách hàng từ camera, hoặc lọc ảnh profile
Được gì: Chỉ 3 dòng code là có kết quả: bbox, landmarks, embedding, attributes — không cần hiểu sâu về model bên dưới
2. Người muốn build sản phẩm
Vấn đề: Cần tích hợp face analysis vào app/web nhưng sợ performance chậm, sợ phải tự optimize cho từng hardware
Khi nào cần: Khi build attendance system, access control, smart gallery, hoặc bất kỳ sản phẩm nào cần nhận diện khuôn mặt
Được gì: ONNX Runtime chạy nhanh trên cả CPU, tối ưu sẵn cho ARM64 (Mac/Mobile) và CUDA (GPU NVIDIA) — production-ready từ đầu
3. Người cần privacy/anonymization
Vấn đề: Cần làm mờ khuôn mặt trong ảnh để protect privacy, nhưng muốn tự động và chính xác
Khi nào cần: Khi xử lý dữ liệu video từ camera công cộng, hoặc chuẩn bị dataset mà không muốn lộ khuôn mặt người thật
Được gì: 5 cách blur khác nhau, tích hợp sẵn — không cần viết code xử lý ảnh từ đầu
Các điểm chính
-
All-in-one — một thư viện cho tất cả Thay vì cài retinaface, insightface, dlib… riêng lẻ, giờ chỉ cần
pip install unifacelà có đủ: detection, recognition, landmark, parsing, gaze, attributes, anti-spoofing, anonymization. → Làm gì: Xóa hết mấy thư viện rời rạc trong requirements.txt, thay bằng một thư viện duy nhất. -
ONNX Runtime — chạy nhanh trên mọi hardware Model convert sang ONNX rồi, nên inference nhanh hơn PyTorch thuần. Hỗ trợ CPU, CUDA, và ARM64 — tức là chạy ngon trên Mac M1/M2/M3 luôn. → Làm gì: Test thử trên máy local (Mac/Windows) trước khi deploy lên server — không cần GPU vẫn chạy được.
-
Tự động download model Lần đầu chạy nó tự tải model về
~/.uniface/models, có verify SHA-256. Có thể set cache directory riêng qua code hoặc environment variable. → Làm gì: SetUNIFACE_CACHE_DIR=/data/modelsnếu máy production không có internet, download sẵn model rồi copy vào. -
Anti-spoofing — phát hiện khuôn mặt giả Tích hợp sẵn MiniFASNet để nhận ra ảnh giả, video giả — quan trọng cho mấy hệ thống xác thực khuôn mặt. → Làm gì: Nếu đang build face authentication, nhớ enable anti-spoofing — không thì bị hack bằng ảnh màn hình.
-
Privacy protection — 5 cách blur khuôn mặt Xóa blur, gaussian blur, pixelate, predicted mask… — dùng cho dataset anonymization hoặc video streaming. → Làm gì: Dùng thẳng
FaceAnonymizerclass thay vì viết code OpenCV lòng vòng. -
FairFace — attribute analysis có fairness Model FairFace được train để giảm bias về chủng tộc — attribute analysis sẽ accurate hơn cho đa dạng dân số. → Làm gì: Nếu sản phẩm hướng đến user toàn cầu, ưu tiên FairFace thay vì model bias về người da trắng.
-
Jupyter Notebook có sẵn — học nhanh 9 examples từ detection cơ bản đến anonymization, có sẵn link Colab — copy-paste chạy thử liền. → Làm gì: Mở 05_face_analyzer.ipynb lên, thay ảnh mẫu bằng ảnh của mình, chạy thử 30 giây là hiểu.
Quick Start
1. Cài đặt — chạy ngay hôm nay
pip install uniface
Nếu có GPU NVIDIA:
pip install uniface[gpu]
2. Test nhanh — detect khuôn mặt trong ảnh
import cv2
from uniface.detection import RetinaFace
detector = RetinaFace()
image = cv2.imread("photo.jpg")
faces = detector.detect(image)
for face in faces:
print(f"Confidence: `{face.confidence:.2f}`")
print(f"BBox: `{face.bbox}`")
3. Chạy full analysis — detection + recognition + attributes
import cv2
from uniface.analyzer import FaceAnalyzer
from uniface.detection import RetinaFace
from uniface.recognition import ArcFace
detector = RetinaFace()
recognizer = ArcFace()
analyzer = FaceAnalyzer(detector, recognizer=recognizer)
image = cv2.imread("photo.jpg")
faces = analyzer.analyze(image)
for face in faces:
print(f"BBox: `{face.bbox}`")
print(f"Embedding: `{face.embedding.shape}`")
print(f"Attributes: `{face.attributes}`")
Đang tải nội dung...
Xây phần mềm không cần UI
Agent-first development: 3 buổi từ CLI commerce engine → MCP server → website trên Cloudflare.
Xem chi tiết & đăng ký →
Công ty một người: Present, Bán & Vận hành
3-pack cohort cho công ty một người: Skill làm slide, bán & vận hành workshop tự động, vault giữ tri thức compound.
Xem chi tiết & đăng ký →