Cv2 lbphfacerecognizer python

⛳️ Mục đích của bài viết này là xây dựng một ứng dụng nhận dạng khuôn mặt cũng như giới thiệu đến các bạn một thư viện OpenCV rất hay và hữu ích. Tôi khá chắc chắn rằng tài liệu này sẽ hữu ích cho người mới bắt đầu

Video của cottonbro từ PexelsAbstract

Trong bài viết này, chúng ta sẽ khám phá một số phương thức dựng sẵn được sử dụng trong và. Để phát hiện các cá nhân, thuật toán đã được chọn và để nhận dạng khuôn mặt, một phương pháp dựa trên việc xây dựng biểu đồ của các mẫu nhị phân cục bộ đã được mô tả trong công việc trước đây của tôi.

Học thuyết

1-Hình ảnh kỹ thuật số

Ảnh của Umberto trên Bapt

Định nghĩa đơn giản pixel là gì?

“Một pixel là đơn vị thông tin hình ảnh nhỏ nhất trong thế giới kỹ thuật số. Mọi ảnh kỹ thuật số, hình minh họa, video và trò chơi đều được tạo từ các pixel, có xu hướng tròn hoặc vuông hoàn hảo”[1]

Một hình ảnh kỹ thuật số là một mảng pixel 2D. Mỗi pixel được đặc trưng bởi tọa độ (x, y) và giá trị của nó. [2]

Đối với hình ảnh tỷ lệ xám, mỗi pixel 8 bit có giá trị cường độ trong khoảng từ 0–255, theo cách mà 0 đại diện cho pixel đen và 255 đại diện cho pixel trắng

Hình ảnh màu về cơ bản bao gồm ba kênh (RGB) như minh họa bên dưới

Thành phần RGB từ 3 ảnh Thang độ xám[3]

Hình ảnh cuối cùng được hiển thị trên màn hình máy tính bằng cách kết hợp ba kênh (RGB) này thành một kênh duy nhất

Để biết thêm thông tin về hình ảnh và không gian màu, bạn có thể tham khảo bài viết trước của tôi bất cứ lúc nào[4]

2- Phát hiện đối tượng là gì?

nguồn[5]

Phát hiện đối tượng là một cách tiếp cận, được sử dụng trong xử lý hình ảnh và thị giác máy tính, để khám phá các thể hiện của các đối tượng thuộc một lớp cụ thể (chẳng hạn như mèo, chó hoặc người) trong hình ảnh và video kỹ thuật số

Mỗi lớp đối tượng có các tính năng đặc biệt riêng giúp phân loại lớp - ví dụ: tất cả các vòng tròn đều tròn. Phát hiện lớp đối tượng sử dụng các tính năng đặc biệt này. Ví dụ: khi tìm kiếm các vòng tròn, các đối tượng ở một khoảng cách cụ thể từ một điểm (i. e. trung tâm) được tìm kiếm. Tương tự, khi tìm hình vuông cần các vật vuông góc với các góc và có độ dài các cạnh bằng nhau. Một cách tiếp cận tương tự được sử dụng để nhận dạng khuôn mặt nơi có thể tìm thấy mắt, mũi và môi và có thể tìm thấy các đặc điểm như màu da và khoảng cách giữa hai mắt. [6]

Phát hiện đối tượng được sử dụng rộng rãi trong các tác vụ máy tính, chẳng hạn như phát hiện khuôn mặt, phân đoạn đối tượng video được thể hiện trong hình minh họa sau

Phân đoạn đối tượng video bán giám sát[7]

2-Nhận diện khuôn mặt là gì?

Ảnh của Anastasiya Pavlova trên Bapt

Face Detection là hành động tìm kiếm và trích xuất khuôn mặt từ bất kỳ hình ảnh, video, webcam… đã cho nào dựa trên một số đặc điểm cụ thể (màu da, mũi, mắt, miệng…). [số 8]

Phương pháp do Paul Viola và Michael Jones đề xuất năm 2001[9], ngày nay vẫn còn quan trọng. Thuật toán cho phép phát hiện nhiều đối tượng khác nhau nhưng chủ yếu tập trung vào nhận diện khuôn mặt, cả trên hình ảnh và video…

Phương pháp này sử dụng các dấu hiệu của Haar — một tập hợp các tổ hợp cơ bản của các vùng tối và sáng. Như thể hiện trong hình dưới đây, các dấu hiệu được chia thành ba loại. các tính năng cạnh, tuyến tính và trung tâm

Các loại tính năng Haar[10]

Vì vậy nếu khu vực tìm thấy nó trong ảnh nếu có đủ các dấu hiệu thì có thể coi là đã tìm thấy vật thể đó. Vì vậy, ví dụ, người ta biết rằng má trên và mũi sáng hơn vùng mắt người

lenna

Mỗi tính năng được tính bằng cách trừ tổng pixel bên dưới hình chữ nhật màu trắng khỏi tổng pixel bên dưới hình chữ nhật màu đen. [11]Các giá trị này là các pixel trong ảnh tích phân trùng với các góc của hình chữ nhật trong ảnh đầu vào. Điều này được thể hiện trong hình bên dưới. [12]

Hình ảnh của tác giả

Tóm tắt thuật toán Viola-Jones

  • Hình ảnh được sử dụng trong biểu diễn tích phân, cho phép tính toán nhanh các đối tượng cần thiết;
  • Sử dụng các tính năng giống như Haar, có một tìm kiếm đối tượng mong muốn (trong ngữ cảnh này, thực thể và các tính năng của nó);

nguồn[13]
  • Tăng cường được sử dụng (cải thiện, khuếch đại) để chọn các tính năng phù hợp nhất cho đối tượng mong muốn trong một phần nhất định của hình ảnh;

Minh họa thuật toán AdaBoost để tạo bộ phân loại mạnh dựa trên nhiều bộ phân loại tuyến tính yếu. [14]
  • Kết hợp các bộ phân loại thành một cấu trúc xếp tầng, cho kết quả là “true” hoặc “false”;

Hình minh họa phân loại theo tầng[15]

Để biết thêm thông tin, bạn có thể đọc bài viết này nói thêm về thuật toán viola jones

3- Nhận diện khuôn mặt là gì?

Sau khi áp dụng tính năng phát hiện khuôn mặt trên một khung (hình ảnh) nhất định, thuật toán nhận dạng khuôn mặt sẽ cố gắng tìm một số kết quả khớp của khuôn mặt được trích xuất đó với khuôn mặt trong cơ sở dữ liệu (mẫu/hình ảnh được đào tạo)

Danh sách các thuật toán nhận dạng khuôn mặt

1- LBPH
2- Mặt riêng
3- Người cá
4- SỌC
5- LƯỚT

Mỗi thuật toán có bộ hướng dẫn và quy tắc riêng để nhận dạng khuôn mặt trong một hình ảnh nhất định

Như đã đề cập trong tiêu đề, chương trình Nhận dạng khuôn mặt của chúng tôi dựa trên phương pháp tiếp cận LBPH được mô tả trong bài viết trước của tôi (LBP)

Khai thác tính năng

Trong bài trước, chúng ta đã thảo luận về một loại bộ mô tả cục bộ (LBP) cơ bản và cách tính toán nó. Bây giờ câu hỏi là. " Cái gì tiếp theo?"

  • Chia hình ảnh khuôn mặt thành các vùng cục bộ R (ví dụ: R = 8 x 8 = 64 Vùng) để trích xuất biểu đồ LBP

hình ảnh của tác giả[17]
  • Biểu đồ LBP được trích xuất từ ​​​​từng tiểu vùng được sử dụng để tính toán và kết hợp thành một biểu đồ duy nhất với các tính năng nâng cao về không gian được định nghĩa là

Công thức biểu đồ của hình ảnh LBP[16]

Ở đâu

n. là số nhãn khác nhau được tạo bởi toán tử LBP

m. là số tiểu vùng

và I{…} được định nghĩa như sau

hàm nhị phân

Biểu đồ cho từng tiểu vùng[18]
  • Trình phân loại hàng xóm gần nhất được sử dụng để khớp hình ảnh mới với mẫu được đào tạo, được tính theo một trong các công thức sau

Một số biện pháp đo lường sự khác biệt có thể có[19]

trong đó S và M là hai biểu đồ LBP

Việc tìm kiếm biểu đồ phù hợp nhất từ ​​​​danh sách cũng có thể được thực hiện bằng cách tính toán giữa biểu đồ mới và biểu đồ có sẵn

khoảng cách giữa các biểu đồ từ

Đó là tất cả để trích xuất tính năng

Tiếp theo, quá trình nhận dạng như sau
a- Thêm một hình ảnh mới trong chương trình nhận dạng khuôn mặt
b- Trình nhận dạng này tạo biểu đồ LBP cho Hình ảnh mới
c) Sau đó, nó so sánh biểu đồ này với biểu đồ hiện có
d) Cuối cùng, nó tìm thấy kết quả phù hợp nhất và trả về nhãn người được liên kết với kết quả phù hợp nhất này

Triển khai Python

Để thực hiện dự án này, tôi quyết định chọn python là ngôn ngữ lập trình yêu thích của mình vì tính phổ biến của nó trong lĩnh vực thị giác máy tính và học máy.

Trước khi chạy chương trình, bạn cần cài đặt các thư viện cần thiết sau

-----------------------------OpenCV---------------------------------# OpenCV with conda
conda install -c conda-forge opencv
# Update pip :package manager for Python packages
pip install -U pip
pip show pip
# OpenCV with pip
pip install opencv-python
pip install opencv-contrib-python
# Install pip3 :package manager for Python3 packages
sudo apt-get -y install python3-pip
# OpenCV with pip3
pip3 install opencv-python
pip3 --version
--------------------------Numpy library-----------------------------# With conda
conda update conda # update conda
conda install -c anaconda numpy
# with pip, pip3
pip install numpy
pip3 install numpy

Mã Python để nhận diện khuôn mặt

Phát hiện khuôn mặt được thực hiện bằng cách sử dụng trình phân loại theo tầng với Python và OpenCV

Bấm vào đây để xem hướng dẫn chính thức do OpenCV cung cấp, có sẵn bằng ba ngôn ngữ khác nhau. Python, C++ và Java

Tạo thể hiện của lớp trình phân loại Cascade để phát hiện đối tượng

cascade_file_path = "path for certain cascade file (xml extension)" 
face_cascade = cv2.CascadeClassifier(cascade_file_path)

Danh sách các mô hình được đào tạo trước có sẵn trong OpenCV

cascade_file_path = "path for certain cascade file (xml extension)" 
face_cascade = cv2.CascadeClassifier(cascade_file_path)
2-Chức năng nhận diện cả khuôn mặt và đối tượng. Để hàm tìm kiếm chính xác các khuôn mặt, chúng ta truyền nó vào tầng tương ứng

Hàm

cascade_file_path = "path for certain cascade file (xml extension)" 
face_cascade = cv2.CascadeClassifier(cascade_file_path)
2có 7 tham số, trong số các tham số này chỉ có 4 đối số quan trọng

void cv::CascadeClassifier::detectMultiScale(
InputArray image, std::vector< Rect > & objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size() )
  • cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    4 - Một tham số cho biết kích thước hình ảnh được giảm bao nhiêu ở mỗi tỷ lệ hình ảnh. ví dụ, “1. 1” có nghĩa là giảm 10% kích thước, tăng khả năng kích thước phù hợp với tính năng tìm thấy để phát hiện

Kim tự tháp hình ảnh[20]
  • cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    5 - Tham số này ảnh hưởng đến chất lượng khuôn mặt được phát hiện. Giá trị càng cao, số lần phát hiện càng ít nhưng chất lượng càng cao.
    cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    6 là một giá trị tốt để nhận diện khuôn mặt
  • cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    7- Kích thước nhỏ nhất có thể của đối tượng được phát hiện. Các đối tượng có kích thước nhỏ hơn được bỏ qua. Thông thường,
    cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    8tốt cho việc nhận diện khuôn mặt
  • cascade_file_path = "path for certain cascade file (xml extension)" 
    face_cascade = cv2.CascadeClassifier(cascade_file_path)
    9- Kích thước tối đa có thể có của đối tượng. Các đối tượng có kích thước lớn hơn được bỏ qua. Theo mặc định, không có giới hạn trên cho tính năng nhận diện khuôn mặt

Giá trị trả về của hàm này là

Một mảng NumPy nếu một khuôn mặt được phát hiện thành công. [[x ,y ,rộng ,cao]]

Hoặc một Tuple rỗng nếu không có gì được phát hiện. ( )

image_path ="absolute or relative path for a given image"
image = cv2.imread(image_path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,
scaleFactor= 1.1,
minNeighbors= 4,
minSize=(30, 30)
)

Sau khi nhận diện khuôn mặt, chương trình tìm kiếm mắt phải (hình chữ nhật màu trắng) và mắt trái (hình chữ nhật màu vàng) như trong hình

khuôn mặt và đôi mắt được phát hiện

Sau khi tìm được tâm của hai mắt, chương trình thực hiện phép quay một góc θ được tính theo công thức

nguồn công thức tiếp tuyến

Theo Google[21], căn chỉnh khuôn mặt làm tăng độ chính xác của mô hình nhận dạng khuôn mặt FaceNet từ 98. 87 đến 99. 63

góc quay

Để tìm được góc quay, chương trình yêu cầu giá trị của “eyeXdis”(liền kề) và “eyeYdis”(đối diện), có thể tính như sau

eyeXdis = (lx + w / 2 + lw / 2) - (rx + rw / 2)
eyeYdis = (ly + lh / 2) - (ry + rh / 2)
angle_rad = np.arctan (eyeYdis / eyeXdis)
# convert rad to degree
angle_degree = angle_rad * 180 / np.pi

Sau khi tìm được giá trị của góc căn chỉnh, việc xoay có thể được thực hiện với sự trợ giúp của các phương thức “warpAffine” và “getRotationMatrix2D” do OpenCV cung cấp

# Find the center of the image
image_center = tuple(np.array(gray_chunk.shape) / 2)rot_mat = cv2.getRotationMatrix2D(image_center, angle_degree, 1.0)
rotated_image = cv2.warpAffine(gray_chunk, rot_mat,gray_chunk.shape, flags=cv2.INTER_LINEAR)

cv2. phương thức warpAffine có ba tham số chính

1- ảnh gốc. grey_chunk

2-ma trận biến đổi, trong trường hợp này là ma trận xoay. rot_mat

3-tuple với kích thước của hình ảnh đầu ra. grey_chunk. hình dạng

Phương thức này trả về hình ảnh đã xoay

trước và sau khi căn chỉnh

Bây giờ hình ảnh được xoay sẽ được lưu vào một thư mục cụ thể (bộ dữ liệu) với số ảnh (bộ đếm) và ID chủ đề
Quá trình này được lặp lại cho đến khi chụp được 50 ảnh khuôn mặt. Sau đó, các mẫu này sẽ được đưa vào một mô hình cho mục đích đào tạo

mẫu đào tạo

đào tạo người mẫu

Tại thời điểm này, cần chỉ ra phương pháp nhận dạng nào sẽ được sử dụng trong chương trình, cụ thể là phương pháp biểu đồ của các mẫu nhị phân cục bộ. Điều này có thể được thực hiện bằng phương pháp sau

recognizer = cv2.face.LBPHFaceRecognizer_create(
int radius = 1,
int neighbors = 8,
int grid_x = 8,
int grid_y = 8)

1- Bán kính. “Bán kính được sử dụng để xây dựng Mô hình nhị phân cục bộ hình tròn. Bán kính càng lớn, hình ảnh càng mịn nhưng bạn có thể nhận được nhiều thông tin không gian hơn. ”[22]

2- Láng giềng. “Số lượng điểm mẫu để xây dựng Mẫu nhị phân cục bộ hình tròn. Một giá trị thích hợp là sử dụng

void cv::CascadeClassifier::detectMultiScale(
InputArray image, std::vector< Rect > & objects,
double scaleFactor = 1.1,
int minNeighbors = 3,
int flags = 0,
Size minSize = Size(),
Size maxSize = Size() )
0 điểm mẫu. Ghi nhớ. bạn càng đưa vào nhiều điểm mẫu, chi phí tính toán càng cao. ”[22]

3- Lưới_x. “Số ô theo chiều ngang, 8 là giá trị phổ biến được sử dụng trong các ấn phẩm. Càng nhiều ô, lưới càng mịn, chiều của vectơ đặc trưng thu được càng cao. ”[22]

4- Lưới_y. “Số ô theo chiều dọc, 8 là một giá trị phổ biến được sử dụng trong các ấn phẩm. Càng nhiều ô, lưới càng mịn, chiều của vectơ đặc trưng thu được càng cao. ”[22]

Tiếp theo, chương trình tìm tất cả các hình ảnh trong thư mục tập dữ liệu với tên của từng hình ảnh (trong user_name. txt), chuyển đổi những hình ảnh này thành mảng, sau đó chuyển chúng và ID của chúng vào trình nhận dạng để đào tạo. Sau đó, mô hình tạo một tệp định dạng “. yaml”, chứa các biểu đồ tương ứng và nhãn của chúng (), cho các mục đích nhận dạng khác

Quy trình làm việc của chương trình

Chúng tôi sử dụng 2 kịch bản trong phần này
a- thu thập dữ liệu và đào tạo

python3 Train.py -v videos/video3.mkv # if you have a pre-recorded #video
python3 Train.py -c 0 # 0 is the id of the built-in camera

Lúc này chương trình sẽ hỏi tên người

hình ảnh của tác giả

sau đó, chương trình sẽ tạo một tên_người_dùng. txt để lưu Tên người và id của người đó

Bây giờ quá trình chụp sẽ bắt đầu

chụp ảnh

Sau khi chụp 50 mẫu, như được cung cấp trong chức năng chính, giai đoạn Đào tạo sẽ bắt đầu

đào tạo người mẫu

điều này sẽ tạo ra “chuyến tàu. YAML” chứa biểu đồ và nhãn của chúng

dưới cùng của 'tàu. tập tin yaml

Bây giờ bạn có thể vào thao tác chính của chương trình đó là nhận dạng khuôn mặt

b- nhận dạng khuôn mặt

python3 Recognize.py -v videos/video3.mkv # if you have a pre-recorded #video
python3 Recognize.py -c 0 # 0 is the id of the built-in camera

Lưu ý rằng độ tin cậy nhỏ hơn 100. Sự tự tin thấp hơn có nghĩa là khuôn mặt giống với những người được đào tạo hơn. “0” là kết hợp hoàn hảo

Bây giờ, tôi đã thêm một tính năng mới cho chương trình này, đó là khi haar cascade không phát hiện ra khuôn mặt, nó sẽ được phát hiện bằng thuật toán ngưỡng tông màu da được mô tả trong các bài viết trước của tôi[8]

Để viết chữ lên hình tùy ý, bạn có thể dùng hàm[23]

putText (image, text, coordinates, font type, font scale,color [, pen thickness [, line type [, center of coordinates]]])

Nó nhận các tham số sau

  • khung — hình ảnh mà chúng tôi muốn viết văn bản;
  • văn bản — văn bản mà chúng tôi sẽ hiển thị trên khung;
  • tọa độ — bộ hai tọa độ ở góc dưới bên trái của văn bản, ví dụ (1,5);
  • loại phông chữ — một trong những hằng số được chỉ ra bên dưới;
  • tỷ lệ phông chữ - kích thước phông chữ. Ví dụ: để tăng phông chữ ba lần - đặt 2, giảm 3 lần - 0. 3;
  • màu — một bộ gồm ba số từ 0 đến 255 chỉ định màu trong mô hình RGB. Màu lục — (0,255,0);
  • độ dày của bút là một tham số tùy chọn;
  • loại dòng - tham số tùy chọn, một trong ba giá trị. LINE_8 đường đứt nét nhỏ, LINE_4 — đường đứt nét lớn, LINE_AA là đường trơn;
  • tâm tọa độ là một tham số tùy chọn. Theo mặc định, tọa độ của văn bản được tính từ góc trên bên trái

Các loại phông chữ

  • FONT_HERSHEY_SIMPLEX
  • FONT_HERSHEY_PLAIN
  • FONT_HERSHEY_DUPLEX
  • FONT_HERSHEY_COMPLEX
  • FONT_HERSHEY_TRIPLEX
  • FONT_HERSHEY_COMPLEX_SMALL
  • FONT_HERSHEY_SCRIPT_SIMPLEX
  • FONT_HERSHEY_SCRIPT_COMPLEX

Chức năng vẽ hình chữ nhật tùy chỉnh xung quanh khuôn mặt được phát hiện

cascade_file_path = "path for certain cascade file (xml extension)" 
face_cascade = cv2.CascadeClassifier(cascade_file_path)
0

OpenCV cung cấp chức năng dự đoán nhãn của hình ảnh mới

cascade_file_path = "path for certain cascade file (xml extension)" 
face_cascade = cv2.CascadeClassifier(cascade_file_path)
1

Nó lấy phần được chụp của khuôn mặt làm tham số để phân tích và trả về id và giá trị độ tin cậy của nó

Luồng tóm tắt của chương trình
1. Chụp ảnh
2. Trích xuất vùng khuôn mặt bằng Haar-like feature classifier
3. Xoay hình ảnh với một góc nhất định
4. Huấn luyện hình ảnh và nhãn dưới dạng dữ liệu huấn luyện với FaceRecognizer (train())
5. Lặp lại các bước từ 1 đến 4 cho tất cả các hình ảnh đào tạo
6. Tải hình ảnh thử nghiệm để nhận dạng
7. Trích xuất vùng khuôn mặt bằng cách sử dụng trình phân loại tính năng giống như Haar
8. Thay đổi kích thước vùng mặt thành một kích thước nhất định
9. Kiểm tra hình ảnh với Dự đoán FaceRecognizer (predict()) ⇒ [id, độ tin cậy]
10. Lặp lại từ 6 đến 9 cho tất cả các hình ảnh thử nghiệm

Phần kết luận

Nhận dạng khuôn mặt cho đến nay là một trong những công nghệ quan trọng nhất, được sử dụng rộng rãi trong nhiều lĩnh vực và lĩnh vực như chăm sóc sức khỏe, quảng cáo, bảo mật, thanh toán, v.v.

Quy mô thị trường công nghệ sinh trắc học toàn cầu có thể đạt 59 USD. 31 tỷ vào năm 2025, theo một nghiên cứu mới của Grand View Research, Inc. , đạt tốc độ CAGR là 19. 5% trong giai đoạn dự báo. [27]

Mã nguồn cho chương trình này có thể được tìm thấy dưới đây

Harmouch 101/Nhận diện khuôn mặt

Dự án này triển khai thuật toán phát hiện khuôn mặt bằng cách sử dụng phân đoạn da RGB-YCrCb-HSV, viola jones và khuôn mặt…

github. com

📚văn học, tài nguyên hữu ích

[1] Shutterstock's, (2020)

[2] M. Lyra, A. Ploussi và A. Georgantzoglou, MATLAB như một công cụ trong xử lý hình ảnh y học hạt nhân (2011), MATLAB — Công cụ phổ biến dành cho kỹ sư thực hành, Chương. 23

[3] Wikiwand, Thang độ xám dưới dạng các kênh đơn của hình ảnh màu đa kênh

[4] M. Harmouch, Phân loại màu da người bằng bộ phân loại ngưỡng. RGB, YCbCr, HSV(Mã Python),(2020)

[5] Microsoft, Hướng dẫn. Phát hiện các đối tượng bằng ONNX trong ML. NET. (2020)

[6] Dasiopoulou, Stamatia, et al. “Phát hiện đối tượng video ngữ nghĩa được hỗ trợ bởi kiến ​​thức. ” IEEE Giao dịch trên Mạch và Hệ thống cho Công nghệ Video 15. 10 (2005). 1210–1224

[7] Kỹ thuật NAVER, Phân đoạn đối tượng video trong video(2017), slide-5

[8] M. Harmouch, Nhận diện khuôn mặt bằng Ngưỡng tông màu da (RGB-YCrCb). Triển khai Python(2020)

[9] P. Viola và M. Jones, Phát hiện đối tượng thời gian thực mạnh mẽ (2001), HỘI THẢO QUỐC TẾ LẦN THỨ HAI VỀ THỐNG KÊ VÀ TÍNH TOÁN

[10] M. Ameen Chhajro, Kamlesh Kumar, M. Malook Rind, Aftab Ahmed Shaikh, Haque Nawaz, và Rafaqat Hussain Arain, Phương pháp tiếp cận phát hiện người đi bộ cho hệ thống hỗ trợ người lái bằng Haar based Cascade Classifiers(2018), Tạp chí quốc tế về ứng dụng và khoa học máy tính tiên tiến

[11] Alexander Mordvintsev và Abid K. , Nhận diện khuôn mặt bằng Haar Cascades(2013)

[12] Helvig Jensen, Triển khai thuật toán nhận diện khuôn mặt Viola-Jones. P-11(2008), Kongens Lyngbởi IMM-M. Sc. -2008–93

[13] StevenPuttemans but Packt, Đào tạo Trình phân loại theo tầng

[14] Zhuo Wang, Jintao Zhang và Naveen Verma, Hiện thực hóa các Hệ thống Phân loại Năng lượng Thấp bằng Thực hiện Phép nhân Ma trận Trực tiếp Trong một ADC (2015), Giao dịch của IEEE trên Hệ thống và Mạch Y sinh

[15] W. S. Mada Sanjaya, Dyah Anggraeni, Kiki Zakaria, Atip Juwardi và Madinatul Munawwaroh, Thiết kế nhận dạng và theo dõi khuôn mặt cho tương tác giữa người và người máy,(2017), Hình. 4. Hình minh họa phân loại tầng

[16] Timo Ahonen, Abdenour Hadid và Matti Pietik¨ainen, Nhận dạng khuôn mặt với các mẫu nhị phân cục bộ (2004), P-472

[17][18] M. Harmouch, Nhận diện khuôn mặt,(2020), GitHub

[19] Timo Ahonen, Abdenour Hadid và Matti Pietik¨ainen, Nhận dạng khuôn mặt với các mẫu nhị phân cục bộ (2004), Một số biện pháp đo lường sự khác biệt có thể có đối với biểu đồ LBP. p-472

[20] F. Hôn Nhân, (2012)

[21] Omkar M. Parkhi, Andrea Vedaldi và Andrew Zisserman, poster Nhận dạng khuôn mặt sâu

[22] OpenCV,

[23] Tài liệu OpenCV, Hàm vẽ (2011–2014)

[24] OpenCV, (2011–2014)

[25] alalek, phân loại tầng Haar, Github (2013)

[26] Quora,Thuật toán nhận dạng khuôn mặt nào tốt nhất trong OpenCV Python?, (2016)

[27] Sherry James, Quy mô thị trường công nghệ sinh trắc học trị giá $59. 31 tỷ vào năm 2025. Nghiên cứu Grand View, Inc. (2019)

Thuật toán LBP hoạt động như thế nào?

Giới thiệu. LBPH (Biểu đồ mẫu nhị phân cục bộ) là thuật toán Nhận dạng khuôn mặt được dùng để nhận dạng khuôn mặt của một người . Nó được biết đến với hiệu suất và cách nó có thể nhận diện khuôn mặt của một người từ cả mặt trước và mặt bên.

Làm thế nào mô hình nhị phân cục bộ hoạt động trên nhận dạng khuôn mặt?

Mẫu nhị phân cục bộ (LBP) là một toán tử kết cấu đơn giản nhưng rất hiệu quả gắn nhãn các pixel của hình ảnh bằng cách tạo ngưỡng cho vùng lân cận của từng pixel và coi kết quả là một số nhị phân . Nó được mô tả lần đầu tiên vào năm 1994 (LBP) và kể từ đó đã được coi là một tính năng mạnh mẽ để phân loại kết cấu. . It was first described in 1994 (LBP) and has since been found to be a powerful feature for texture classification.