Python có thể được sử dụng để nhận dạng khuôn mặt không?

You can also read a translated version of this file in Chinese 简体中文版 or in Korean 한국어 or in Japanese 日本語

Nhận dạng và thao tác khuôn mặt từ Python hoặc từ dòng lệnh với thư viện nhận dạng khuôn mặt đơn giản nhất thế giới

Được xây dựng bằng cách sử dụng công nghệ nhận dạng khuôn mặt tiên tiến nhất của dlib được xây dựng bằng học sâu. Mô hình có độ chính xác 99. 38% trên tiêu chuẩn Khuôn mặt được dán nhãn trong Wild

Điều này cũng cung cấp một công cụ dòng lệnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5 đơn giản cho phép bạn thực hiện nhận dạng khuôn mặt trên một thư mục hình ảnh từ dòng lệnh

Đặc trưng

Tìm khuôn mặt trong ảnh

Tìm tất cả các khuôn mặt xuất hiện trong ảnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_locations = face_recognition.face_locations[image]

Tìm và thao tác với các đặc điểm khuôn mặt trong ảnh

Nhận vị trí và đường viền của mắt, mũi, miệng và cằm của mỗi người

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]

Tìm các đặc điểm trên khuôn mặt cực kỳ hữu ích cho nhiều thứ quan trọng. Nhưng bạn cũng có thể sử dụng nó cho những thứ thực sự ngớ ngẩn như trang điểm kỹ thuật số [hãy nghĩ đến 'Meitu']

Nhận dạng khuôn mặt trong ảnh

Nhận ra ai xuất hiện trong mỗi bức ảnh

import face_recognition
known_image = face_recognition.load_image_file["biden.jpg"]
unknown_image = face_recognition.load_image_file["unknown.jpg"]

biden_encoding = face_recognition.face_encodings[known_image][0]
unknown_encoding = face_recognition.face_encodings[unknown_image][0]

results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]

Bạn thậm chí có thể sử dụng thư viện này với các thư viện Python khác để thực hiện nhận dạng khuôn mặt theo thời gian thực

Xem ví dụ này để biết mã

Trình diễn trực tuyến

Bản demo máy tính xách tay Jupyter được chia sẻ do người dùng đóng góp [không được hỗ trợ chính thức].

Cài đặt

Yêu cầu

  • Trăn 3. 3+ hoặc Python 2. 7
  • macOS hoặc Linux [Windows không được hỗ trợ chính thức, nhưng có thể hoạt động]

Tùy chọn cài đặt

Cài đặt trên Mac hoặc Linux

Trước tiên, hãy đảm bảo rằng bạn đã cài đặt dlib với các liên kết Python

  • Cách cài đặt dlib từ nguồn trên macOS hoặc Ubuntu

Sau đó, đảm bảo rằng bạn đã cài đặt cmake

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
6

Cuối cùng, cài đặt mô-đun này từ pypi bằng cách sử dụng

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
7 [hoặc
import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
8 cho Python 2]

pip3 install face_recognition

Ngoài ra, bạn có thể thử thư viện này với Docker, xem

Nếu bạn gặp sự cố khi cài đặt, bạn cũng có thể dùng thử máy ảo được cấu hình sẵn

Cài đặt trên bo mạch Nvidia Jetson Nano

  • Hướng dẫn cài đặt Jetson Nano
    • Hãy làm theo hướng dẫn trong bài viết một cách cẩn thận. Hiện tại có một lỗi trong thư viện CUDA trên Jetson Nano sẽ khiến thư viện này bị lỗi âm thầm nếu bạn không làm theo hướng dẫn trong bài viết để nhận xét một dòng trong dlib và biên dịch lại nó

Cài đặt trên Raspberry Pi 2+

  • Hướng dẫn cài đặt Raspberry Pi 2+

Cài đặt trên FreeBSD

________số 8

Cài đặt trên Windows

Mặc dù Windows không được hỗ trợ chính thức nhưng những người dùng hữu ích đã đăng hướng dẫn về cách cài đặt thư viện này

Cài đặt hình ảnh Máy ảo được định cấu hình sẵn

  • Tải xuống hình ảnh máy ảo được cấu hình sẵn [dành cho VMware Player hoặc VirtualBox]

Cách sử dụng

Giao diện dòng lệnh

Khi bạn cài đặt

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5, bạn sẽ nhận được hai chương trình dòng lệnh đơn giản

  • import face_recognition
    image = face_recognition.load_image_file["your_file.jpg"]
    face_landmarks_list = face_recognition.face_landmarks[image]
    5 - Nhận dạng khuôn mặt trong ảnh hoặc thư mục đầy ảnh
  • import face_recognition
    known_image = face_recognition.load_image_file["biden.jpg"]
    unknown_image = face_recognition.load_image_file["unknown.jpg"]
    
    biden_encoding = face_recognition.face_encodings[known_image][0]
    unknown_encoding = face_recognition.face_encodings[unknown_image][0]
    
    results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]
    1 - Tìm khuôn mặt trong ảnh hoặc thư mục chứa đầy ảnh

Công cụ dòng lệnh
import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5

Lệnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5 cho phép bạn nhận dạng khuôn mặt trong ảnh hoặc thư mục chứa đầy ảnh

Trước tiên, bạn cần cung cấp một thư mục có một hình ảnh của mỗi người mà bạn đã biết. Nên có một tệp hình ảnh cho mỗi người với các tệp được đặt tên theo người trong ảnh

Tiếp theo, bạn cần một thư mục thứ hai chứa các tệp bạn muốn xác định

Sau đó, bạn chỉ cần chạy lệnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5, chuyển vào thư mục của những người đã biết và thư mục [hoặc một hình ảnh] với những người chưa biết và nó sẽ cho bạn biết ai là người trong mỗi hình ảnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_locations = face_recognition.face_locations[image]
5

Có một dòng trong đầu ra cho mỗi khuôn mặt. Dữ liệu được phân tách bằng dấu phẩy với tên tệp và tên của người được tìm thấy

import face_recognition
known_image = face_recognition.load_image_file["biden.jpg"]
unknown_image = face_recognition.load_image_file["unknown.jpg"]

biden_encoding = face_recognition.face_encodings[known_image][0]
unknown_encoding = face_recognition.face_encodings[unknown_image][0]

results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]
5 là khuôn mặt trong ảnh không khớp với bất kỳ ai trong danh mục những người đã biết của bạn

Công cụ dòng lệnh
import face_recognition
known_image = face_recognition.load_image_file["biden.jpg"]
unknown_image = face_recognition.load_image_file["unknown.jpg"]

biden_encoding = face_recognition.face_encodings[known_image][0]
unknown_encoding = face_recognition.face_encodings[unknown_image][0]

results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]
1

Lệnh ________ 31 cho phép bạn tìm vị trí [tọa độ pixel] của bất kỳ khuôn mặt nào trong ảnh

Chỉ cần chạy lệnh

import face_recognition
known_image = face_recognition.load_image_file["biden.jpg"]
unknown_image = face_recognition.load_image_file["unknown.jpg"]

biden_encoding = face_recognition.face_encodings[known_image][0]
unknown_encoding = face_recognition.face_encodings[unknown_image][0]

results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]
1, chuyển vào một thư mục hình ảnh để kiểm tra [hoặc một hình ảnh]

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
0

Nó in một dòng cho mỗi khuôn mặt đã được phát hiện. Các tọa độ được báo cáo là tọa độ trên, phải, dưới và trái của khuôn mặt [tính bằng pixel]

Điều chỉnh dung sai / độ nhạy

Nếu bạn nhận được nhiều kết quả trùng khớp cho cùng một người, thì có thể những người trong ảnh của bạn trông rất giống nhau và cần có giá trị dung sai thấp hơn để so sánh khuôn mặt chặt chẽ hơn

Bạn có thể làm điều đó với tham số

import face_recognition
known_image = face_recognition.load_image_file["biden.jpg"]
unknown_image = face_recognition.load_image_file["unknown.jpg"]

biden_encoding = face_recognition.face_encodings[known_image][0]
unknown_encoding = face_recognition.face_encodings[unknown_image][0]

results = face_recognition.compare_faces[[biden_encoding], unknown_encoding]
9. Giá trị dung sai mặc định là 0. 6 và các số thấp hơn giúp so sánh khuôn mặt chặt chẽ hơn

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
2

Nếu bạn muốn xem khoảng cách khuôn mặt được tính cho mỗi lần khớp để điều chỉnh cài đặt dung sai, bạn có thể sử dụng

pip3 install face_recognition
0

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
4

Thêm ví dụ

Nếu bạn chỉ muốn biết tên của những người trong mỗi bức ảnh nhưng không quan tâm đến tên tệp, bạn có thể làm điều này

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5

Tăng tốc nhận diện khuôn mặt

Nhận dạng khuôn mặt có thể được thực hiện song song nếu bạn có máy tính có nhiều lõi CPU. Ví dụ: nếu hệ thống của bạn có 4 lõi CPU, bạn có thể xử lý số lượng hình ảnh gấp khoảng 4 lần trong cùng một khoảng thời gian bằng cách sử dụng song song tất cả các lõi CPU

Nếu bạn đang sử dụng Python 3. 4 hoặc mới hơn, chuyển vào tham số

pip3 install face_recognition
1

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
0

Bạn cũng có thể chuyển vào

pip3 install face_recognition
2 để sử dụng tất cả các lõi CPU trong hệ thống của mình

Mô-đun Python

Bạn có thể nhập mô-đun

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5 và sau đó dễ dàng thao tác với các mặt chỉ bằng một vài dòng mã. Nó siêu dễ dàng

Tài liệu API. https. //nhận dạng khuôn mặt. đọcthedocs. io

Tự động tìm tất cả các khuôn mặt trong một hình ảnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
1

Xem ví dụ này để thử

Bạn cũng có thể chọn tham gia mô hình nhận diện khuôn mặt dựa trên học sâu chính xác hơn một chút

Ghi chú. Tăng tốc GPU [thông qua thư viện CUDA của NVidia] là cần thiết để có hiệu suất tốt với kiểu máy này. Bạn cũng sẽ muốn kích hoạt hỗ trợ CUDA khi tuân thủ

pip3 install face_recognition
4

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
2

Xem ví dụ này để thử

Nếu bạn có nhiều hình ảnh và GPU, bạn cũng có thể tìm thấy các khuôn mặt theo lô

Tự động định vị các đặc điểm khuôn mặt của một người trong ảnh

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
3

Xem ví dụ này để thử

Nhận dạng khuôn mặt trong hình ảnh và xác định họ là ai

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
4

Xem ví dụ này để thử

Ví dụ mã Python

Tất cả các ví dụ có sẵn ở đây

Phát hiện khuôn mặt

  • Tìm khuôn mặt trong ảnh
  • Tìm khuôn mặt trong ảnh [sử dụng deep learning]
  • Tìm khuôn mặt trong hàng loạt hình ảnh với GPU [sử dụng học sâu]
  • Làm mờ tất cả các khuôn mặt trong video trực tiếp bằng webcam của bạn [Yêu cầu phải cài đặt OpenCV]

Đặc điểm khuôn mặt

  • Xác định các đặc điểm khuôn mặt cụ thể trong một bức ảnh
  • Trang điểm kỹ thuật số [xấu khủng khiếp]

Nhận dạng khuôn mặt

  • Tìm và nhận ra những khuôn mặt không quen biết trong một bức ảnh dựa trên ảnh của những người đã biết
  • Xác định và vẽ các hộp xung quanh mỗi người trong ảnh
  • So sánh khuôn mặt theo khoảng cách khuôn mặt số thay vì chỉ đối sánh Đúng/Sai
  • Nhận dạng khuôn mặt trong video trực tiếp bằng webcam của bạn - Phiên bản đơn giản / chậm hơn [Yêu cầu cài đặt OpenCV]
  • Nhận dạng khuôn mặt trong video trực tiếp bằng webcam của bạn - Phiên bản nhanh hơn [Yêu cầu cài đặt OpenCV]
  • Nhận dạng khuôn mặt trong tệp video và ghi ra tệp video mới [Yêu cầu cài đặt OpenCV]
  • Nhận dạng khuôn mặt trên Raspberry Pi với máy ảnh
  • Chạy dịch vụ web nhận dạng khuôn mặt qua HTTP [Yêu cầu cài đặt Flask]
  • Nhận dạng khuôn mặt với bộ phân loại K-hàng xóm gần nhất
  • Đào tạo nhiều hình ảnh cho mỗi người sau đó nhận dạng khuôn mặt bằng SVM

Tạo một tệp thực thi độc lập

Nếu bạn muốn tạo một tệp thực thi độc lập có thể chạy mà không cần cài đặt

pip3 install face_recognition
5 hoặc
import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5, bạn có thể sử dụng PyInstaller. Tuy nhiên, nó yêu cầu một số cấu hình tùy chỉnh để hoạt động với thư viện này. Xem vấn đề này để biết cách thực hiện

Bài báo và Hướng dẫn bao gồm
import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5

  • Bài viết của tôi về cách thức hoạt động của Nhận dạng khuôn mặt. Nhận dạng khuôn mặt hiện đại với Deep Learning
    • Bao gồm các thuật toán và cách chúng thường hoạt động
  • Nhận dạng khuôn mặt với OpenCV, Python và học sâu của Adrian Rosebrock
    • Bao gồm cách sử dụng nhận dạng khuôn mặt trong thực tế
  • Nhận dạng khuôn mặt Raspberry Pi của Adrian Rosebrock
    • Bao gồm cách sử dụng cái này trên Raspberry Pi
  • Phân cụm khuôn mặt với Python của Adrian Rosebrock
    • Bao gồm cách tự động nhóm ảnh dựa trên người xuất hiện trong mỗi ảnh bằng cách học không giám sát

Cách thức hoạt động của tính năng Nhận dạng khuôn mặt

Nếu bạn muốn tìm hiểu cách hoạt động của vị trí và nhận dạng khuôn mặt thay vì phụ thuộc vào thư viện hộp đen, hãy đọc bài viết của tôi

Hãy cẩn thận

  • Mô hình nhận dạng khuôn mặt được đào tạo trên người lớn và không hoạt động tốt trên trẻ em. Nó có xu hướng trộn lẫn trẻ em khá dễ dàng bằng cách sử dụng ngưỡng so sánh mặc định là 0. 6
  • Độ chính xác có thể khác nhau giữa các nhóm dân tộc. Vui lòng xem để biết thêm chi tiết

Triển khai lên Máy chủ đám mây [Heroku, AWS, v.v.]

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5 phụ thuộc vào
pip3 install face_recognition
4 được viết bằng C++ nên có thể khó triển khai ứng dụng sử dụng nó cho nhà cung cấp dịch vụ lưu trữ đám mây như Heroku hoặc AWS

Để làm cho mọi thứ dễ dàng hơn, có một Dockerfile ví dụ trong kho lưu trữ này cho biết cách chạy một ứng dụng được tạo bằng

import face_recognition
image = face_recognition.load_image_file["your_file.jpg"]
face_landmarks_list = face_recognition.face_landmarks[image]
5 trong bộ chứa Docker. Cùng với đó, bạn sẽ có thể triển khai cho bất kỳ dịch vụ nào hỗ trợ hình ảnh Docker

Bạn có thể thử hình ảnh Docker cục bộ bằng cách chạy.

pkg install graphics/py-face_recognition
1

Ngoài ra còn có một số hình ảnh Docker dựng sẵn

Người dùng Linux có GPU [trình điều khiển >= 384. 81] và Nvidia-Docker đã cài đặt có thể chạy ví dụ trên GPU. Mở docker-compose. yml và bỏ ghi chú các dòng

pkg install graphics/py-face_recognition
2 và
pkg install graphics/py-face_recognition
3

Đang có những vấn đề?

Nếu bạn gặp sự cố, vui lòng đọc phần Lỗi thường gặp của wiki trước khi gửi vấn đề lên github

Chúng ta có thể nhận dạng khuôn mặt bằng Python không?

Trong bài viết này, một cách khá đơn giản được đề cập để triển khai hệ thống nhận dạng khuôn mặt bằng mô-đun Python và OpenCV cùng với phần giải thích mã . Trước khi bắt đầu, chúng ta cần cài đặt một số thư viện để triển khai mã.

Nhận dạng khuôn mặt Python chính xác đến mức nào?

Nhận dạng và thao tác với khuôn mặt từ Python hoặc từ dòng lệnh với thư viện nhận dạng khuôn mặt đơn giản nhất thế giới. Được xây dựng bằng cách sử dụng công nghệ nhận dạng khuôn mặt tiên tiến nhất của dlib được xây dựng bằng học sâu. Mô hình có độ chính xác là 99. 38% trên tiêu chuẩn Khuôn mặt được gắn nhãn trong Wild.

Phiên bản Python nào là tốt nhất để nhận dạng khuôn mặt?

Chỉ có thể cài đặt mô-đun Nhận dạng khuôn mặt cho phiên bản Python 3. 7 và 3. 8 .

Ngôn ngữ lập trình nào là tốt nhất để nhận dạng khuôn mặt?

Ngôn ngữ lập trình tốt nhất cho nhận dạng hình ảnh .
[1] Trăn. Python hiện đang giữ vị trí là ngôn ngữ lập trình phổ biến nhất. .
[2] C / C ++ / C # C / C ++ / C # cũng có thể được sử dụng để nhận dạng hình ảnh. .
[3] Matlab. Matlab là một ngôn ngữ lập trình độc lập có framework riêng. .
[4] Java

Chủ Đề