Giải pháp nhận diện khuôn mặt hơn 15K người nổi tiếng

computer-vision

#1

Hôm nay trong lúc chán code mình mô tả các bước cơ bản triển khai một hệ thống nhận dạng với số lượng người lên đến hàng triệu. Demo của mình khoản 15K người với 500K ảnh. Các bước cơ bản:

  1. Detect và trích xuất đặc trưng khuôn mặt. Model sử dụng: https://github.com/AIInAi/tf-insightface Với 1 khuôn mặt đầu vào sẽ trích xuất ra vector đặc trưng 512 chiều.
  • Nhận diện khá tốt với mặt thẳng.
  • Mặt nghiêng vì thông tin khuôn mặt mất mát khá nhiều nên ko tốt.
  • Mạng hơi kồng kềnh nên tốc độ ko quá nhanh.
  1. Chuẩn bị dữ liệu: Chuẩn bị data khuôn mặt. Với demo của mình thì khoảng 15K người, mỗi người gồm khoảng 10-100 ảnh tùy vào độ nổi tiếng của người ấy.
  2. Index dữ liệu: Thuật toán sử dụng: https://github.com/facebookresearch/faiss Một số đặc điểm nổi bật của faiss trong index vector đặc trưng:
  • Có thể đáp ứng được 1B item với thời gian search real time. Mình mới test ở bài toán 100M item ở bài toán near duplicate images và thấy quản cáo này là đáng tin.
  • Chỉ cần build model với 1M item ban đầu sau đó có thể thêm thoải mái item mà ko phải build lại model.
  • Tốc độ: Các bạn hãy tự kiểm chứng.
  • Triển khai dễ dàng: Chỉ cần một con máy tính nhiều RAM. :slight_smile:
  1. Search: Với 1 ảnh đầu vào, bạn trích xuất vector đặc trưng và tìm kiếm người giống bạn nhất dựa vào độ tương đồng với các item trong tập data. Nhà nghèo nên chỉ deploy được trên con server lớm CPU RAM 8Gb 50$ một tháng nên anh em nhẹ tay nếu có lỗi:

https://computervision.com.vn/try-now?id=3

Dataset: Links: https://docs.google.com/spreadsheets/d/12gRG7-lZ-S5q0wtpZfDM-UQu8tjVDHHNOIOuJaecZyU/edit?usp=sharing mình share danh sách những cái tên từ wiki tiếng Việt. Các bạn có thể lên kế hoạch crawl từ google và làm sạch dữ liệu để thấy sự khó khăn như thế nào khi tạo một dataset dùng được nhé.