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 Show
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 nghĩa đơn giản pixel là gì?
Đố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 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
2- Phát hiện đối tượng là gì?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 2-Nhận diện khuôn mặt là gì?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 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 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] Tóm tắt 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 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ăngTrong 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?"
Ở đâu
và I{…} được định nghĩa như sau
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
Tiếp theo, quá trình nhận dạng như sau
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 Mã Python để nhận diện khuôn mặtPhá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)" cascade_file_path = "path for certain cascade file (xml extension)" 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 ứngHàm cascade_file_path = "path for certain cascade file (xml extension)" 2có 7 tham số, trong số các tham số này chỉ có 4 đối số quan trọngvoid cv::CascadeClassifier::detectMultiScale(
Giá trị trả về của hàm này là
image_path ="absolute or relative path for a given image" 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 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 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 Để 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) 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 cv2. phương thức warpAffine có ba tham số chính
Phương thức này trả về hình ảnh đã xoay 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ủ đề đào tạo người mẫuTạ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( 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( 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 python3 Train.py -v videos/video3.mkv # if you have a pre-recorded #video Lúc này chương trình sẽ hỏi tên người 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 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 điều này sẽ tạo ra “chuyến tàu. YAML” chứa biểu đồ và nhãn của chúng 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
Để 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
Các loại phông chữ
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)" 0OpenCV 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)" 1Nó 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 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ặtDự á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. |