TỔNG QUAN
ĐẶT VẤN ĐỀ
Nhận dạng mặt người, một lĩnh vực nghiên cứu trong ngành thị giác máy tính từ những năm 1980, được xem là một phần của sinh trắc học tương tự như nhận dạng vân tay và mống mắt Mặc dù nhận dạng vân tay và mống mắt đã được áp dụng rộng rãi trong thực tế, nhận dạng mặt người vẫn gặp nhiều thách thức So với hai phương pháp trên, nhận dạng mặt có nguồn dữ liệu phong phú hơn và yêu cầu ít sự tương tác có kiểm soát hơn Do những khó khăn này, hàng năm, nhiều nghiên cứu trong và ngoài nước vẫn tiếp tục được thực hiện nhằm phát triển các phương pháp nhận dạng mặt hiệu quả hơn.
Nhiệm vụ của bài toán nhận dạng khuôn mặt là phát triển một chương trình với độ chính xác cao nhưng yêu cầu khối lượng và thời gian tính toán thấp Nhóm nghiên cứu đã áp dụng phương pháp phân tích các thành phần đặc trưng của khuôn mặt, giúp loại bỏ những thành phần không cần thiết, từ đó tăng cường hiệu quả tính toán mà vẫn đảm bảo độ chính xác.
Nhóm thực hiện đã chọn đề tài “Ứng dụng kit Raspberry nhận dạng mặt người” dựa trên đặc trưng Haar-like và được lập trình bằng ngôn ngữ C++.
MỤC TIÊU
Mục tiêu của đề tài là phát triển một hệ thống nhận dạng khuôn mặt, sử dụng ảnh khuôn mặt làm đầu vào Hệ thống này sẽ xử lý và kiểm tra xem người trong ảnh có tồn tại trong cơ sở dữ liệu hay không, đồng thời cung cấp thông tin liên quan đến người được nhận dạng.
NỘI DUNG NGHIÊN CỨU
Với mục tiêu xây dựng hệ thống nhận dạng mặt người như trên thì nhóm sẽ nghiên cứu các nội dung như sau:
NỘI DUNG 1: Tìm hiểu các giải thuật phát hiện và nhận dạng khuôn mặt
NỘI DUNG 2: Xây dựng thuật toán phát hiện và nhận dạng khuôn mặt
NỘI DUNG 3: Áp dụng mã nguồn thư viện mở OpenCV vào thuật toán
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 2
Chương trình phát hiện và nhận dạng khuôn mặt được xây dựng dựa trên mã nguồn mở OpenCV, thực hiện trên Kit Raspberry Pi, mang lại giải pháp hiệu quả cho việc nhận diện khuôn mặt trong các ứng dụng thực tiễn.
NỘI DUNG 5: Đánh giá kết quả.
GIỚI HẠN
Nhóm nghiên cứu tập trung vào việc xác định khuôn mặt từ camera, theo dõi và xử lý khuôn mặt đã phát hiện, sau đó so sánh hình ảnh khuôn mặt với cơ sở dữ liệu hiện có.
Vì thế trong luận văn này nhóm nghiên cứu đưa ra những giả định và ràng buộc sau làm giảm độ phức tạp của bài toán như sau:
Các khuôn mặt được quay thẳng hoặc góc nghiêng không đáng kể (bé hơn 20 0 )
Phông nền không quá phức tạp, không bị che khuất
Camera được quay trong điều kiện ánh sáng khoảng 90 LUX, ngưỡng nhận dạng khoảng 4000
Đối với camera quá kém chương trình sẽ không thực hiện được tốt nhất có thể.
BỐ CỤC
Đồ án tập trung vào việc nghiên cứu giải thuật AdaBoost, các đặc trưng Haar-like và chuỗi bộ phân lớp (Cascade of Classifiers) nhằm áp dụng vào bài toán phát hiện và nhận dạng khuôn mặt từ camera Nội dung được trình bày trong sáu chương với cấu trúc rõ ràng.
Chương này giới thiệu lý do chọn đề tài, mục tiêu nghiên cứu, nội dung nghiên cứu, các giới hạn của thông số và cấu trúc của đồ án.
Chương 2: Cơ sở lý thuyết
Kit Raspberry Pi và module Camera Pi mang đến cơ hội tuyệt vời để khám phá công nghệ nhận diện hình ảnh Thư viện mã nguồn mở OpenCV hỗ trợ việc xử lý hình ảnh hiệu quả, trong khi thuật toán học máy AdaBoost giúp cải thiện độ chính xác trong việc nhận diện khuôn mặt Các đặc trưng Haar-like được sử dụng để phát hiện khuôn mặt, với quy trình tính toán đặc trưng này rất quan trọng Cuối cùng, chuỗi các bộ phân lớp (cascade of classifiers) được áp dụng để tối ưu hóa việc phát hiện mặt người, tạo ra một giải pháp mạnh mẽ cho các ứng dụng nhận diện.
Chương 3: Thiết kế và tính toán
Xây dựng chương trình phát hiện và nhận dạng khuôn mặt người bằng Visual C++ của Microsoft, kết hợp thư viện mã nguồn mở OpenCV của Intel, mang lại hiệu quả cao trong việc nhận diện khuôn mặt.
Bộ môn Điện tử Công nghiệp 3 tập trung vào việc sử dụng kit Raspberry Pi để phân tích và thiết kế chương trình, sơ đồ khối hệ thống và sơ đồ nguyên lý phần cứng Qua đó, sinh viên sẽ nắm vững các kiến thức cần thiết để phát triển các ứng dụng điện tử hiện đại.
Chương 4: Thi công hệ thống
Để xây dựng chương trình hiệu quả, cần thực hiện các bước như tạo tập tin huấn luyện, phát triển các hàm cần thiết và thiết lập lưu đồ cho chương trình Ngoài ra, việc viết tài liệu hướng dẫn sử dụng và quy trình thao tác cũng rất quan trọng để người dùng có thể dễ dàng tiếp cận và sử dụng chương trình.
Chương 5: Kết quả, Nhận xét và Đánh giá
Nêu các kết quả đạt được khi thực thi chương trình, sau đó phân tích, nhận xét, đánh giá các kết quả thực thi được
Chương 6: Kết luận và hướng phát triển
Tóm tắt những kết quả đạt được, những hạn chế và nêu lên các hướng phát triển trong tương lai.
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU VỀ KIT RASPBERRY PI VÀ MODULE CAMERA PI
Raspberry Pi là một máy tính mini được sản xuất bởi Quỹ Raspberry Pi từ tháng 12/2011, có kích thước tương đương một thẻ tín dụng và cung cấp nhiều tùy chọn về kết nối cũng như dung lượng RAM David Braben, người đứng đầu quỹ, cho biết máy tính này không chỉ có giá rẻ và nhỏ gọn mà còn có khả năng chơi các trò chơi như Quake III Arena và phát video với độ phân giải Full-HD.
Hình 2.1 Cấu tạo của Raspberry Pi 3 model B
Trái tim của Pi là chip SOC Broadcom BCM2837 với tốc độ 1.2GHz, tương đương với nhiều chip trong smartphone hiện đại và hỗ trợ hệ điều hành Linux Chip này tích hợp GPU Broadcom VideoCore IV, đủ mạnh để chơi một số game phổ thông và phát video chuẩn full HD.
Chân GPIO (General Purpose Input Output) có tổng cộng 40 chân, cho phép kết nối và điều khiển nhiều thiết bị điện tử và cơ khí khác nhau, mang lại sự linh hoạt trong việc phát triển các ứng dụng.
Ngõ HDMI: dùng để kết nối Pi với màn hình máy tính hay tivi có hỗ trợ cổng HDMI
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 5
Cổng video RCA (analog) trên thiết kế Pi được tích hợp nhằm phục vụ người dùng ở các nước đang phát triển, nơi mà việc sở hữu một chiếc tivi mới với cổng HDMI là khó khăn Nhờ vào cổng video analog này, người dùng có thể dễ dàng kết nối với tivi cũ mà không gặp phải vấn đề gì.
Ngõ audio 3.5mm cho phép kết nối thuận tiện với loa ngoài và headphone Đối với tivi trang bị cổng HDMI, âm thanh được truyền qua đường tín hiệu HDMI, do đó không cần sử dụng ngõ audio 3.5mm.
Raspberry Pi được trang bị 4 cổng USB 2.0, cho phép người dùng kết nối dễ dàng với các thiết bị như bàn phím, chuột, webcam và bộ thu GPS Nhờ vào hệ điều hành Linux, hầu hết các thiết bị đều hỗ trợ tính năng cắm-và-chạy (Plug-n-Play), giúp mở rộng khả năng ứng dụng mà không cần cài đặt driver phức tạp.
Cổng Ethernet trên Raspberry Pi cho phép kết nối Internet dễ dàng bằng cách cắm dây mạng và kết nối với màn hình, bàn phím, chuột Raspberry Pi sử dụng khe cắm thẻ SD thay vì ổ cứng để lưu trữ dữ liệu, với yêu cầu tối thiểu là thẻ nhớ 4 GB và tối đa 32 GB cho hệ điều hành Linux Ngoài ra, thiết bị còn có 5 đèn LED để hiển thị tình trạng hoạt động.
Jack micro USB 5V với dòng điện tối thiểu 700mA cho phép bạn sử dụng hầu hết các bộ sạc điện thoại di động hiện có trên thị trường để cung cấp nguồn điện cho Raspberry Pi.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6
Hình 2.2 Các chân GPIO của Raspberry Pi 3 model B Đề tài sử dụng module camera làm thiết bị chụp ảnh đầu vào
Module camera có kích thước 25mm x 20mm x 9mm và trọng lượng 3g, kết nối trực tiếp vào cổng CSI trên kit Raspberry PI qua cáp tín hiệu Sử dụng cảm biến hình ảnh CMOS QSXGA 5 Mpixel với công nghệ OmniBSI của OmniVision, module này có tiêu cự cố định và hỗ trợ quay video với độ phân giải full HD 30 fps, HD 60 fps và VGA 60/90 fps.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 7
Hình 2.4 Cách kết nối module camera với kit raspberry PI.
GIỚI THIỆU VỀ THƯ VIỆN OPENCV
OpenCV (Open Computer Vision library) hoàn thiện thành phiên bản 1.0 năm
OpenCV, thư viện mã nguồn mở nổi tiếng trong lĩnh vực xử lý ảnh và thị giác máy tính, đã ra mắt phiên bản mới nhất 3.0 vào năm 2006 Ban đầu, thư viện này được phát triển bằng ngôn ngữ lập trình C, nhưng sau đó đã được mở rộng sang các ngôn ngữ khác như Python và C++ OpenCV tương thích với nhiều hệ điều hành phổ biến như Windows, Linux và Mac OS.
Trước khi OpenCV ra đời, lĩnh vực thị giác máy tính (CV) thiếu một công cụ chuẩn, với các đoạn mã không đồng nhất và không ổn định do các nhà nghiên cứu tự viết Các bộ công cụ thương mại như Matlab, Simulink và Halcon có giá cao, chỉ phù hợp với các công ty phát triển ứng dụng quy mô lớn Thêm vào đó, nhiều giải pháp đi kèm với phần cứng thường là mã nguồn đóng và thiết kế riêng cho từng thiết bị, gây khó khăn cho việc mở rộng ứng dụng.
OpenCV là công cụ hữu ích cho việc nghiên cứu, ứng dụng CV vì các ưu điểm sau:
OpenCV là một công cụ mạnh mẽ được phát triển bởi Intel, nhằm tối ưu hóa cho các ứng dụng xử lý và phân tích ảnh Với cấu trúc dữ liệu hợp lý và thư viện tạo giao diện, OpenCV tích hợp sẵn khả năng truy xuất thiết bị phần cứng, giúp việc phát triển ứng dụng trở nên nhanh chóng và hiệu quả.
OpenCV là một công cụ mã nguồn mở miễn phí, được cấp phép theo giấy phép BSD, giúp người dùng dễ dàng nghiên cứu và phát triển Với khả năng tùy chỉnh và mở rộng các mô hình cũng như thuật toán, OpenCV trở thành lựa chọn lý tưởng cho các dự án nghiên cứu.
Cấu trúc thư viện OpenCV [3] :
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8
Hình 2.5 Cấu trúc cơ bản của OpenCV
OpenCV 1.0 được phát triển bằng ngôn ngữ C, sử dụng cấu trúc lplImage để lưu trữ dữ liệu ảnh trên RAM, nhưng yêu cầu người dùng tự giải phóng bộ nhớ sau khi sử dụng Với sự ra đời của OpenCV 2.0, ngôn ngữ C++ được áp dụng và toán tử cv::Mat được giới thiệu, giúp tất cả các kiểu dữ liệu ảnh và ma trận được lưu trữ dưới dạng cv::Mat Điều này cho phép quá trình giải phóng bộ nhớ diễn ra tự động Cơ bản, lớp Mat bao gồm hai phần: header ma trận chứa thông tin như kích thước và phương thức lưu trữ, cùng với con trỏ ma trận chứa giá trị pixel.
Hình 2.6 Minh họa kiểu dữ liệu của toán tử mat
Các hàm về xử lý ảnh và giải thuật về thị giác máy tính
Các cấu trúc dữ liệu cơ bản, cấu trúc XML, các hàm về đồ họa …
Các thuật toán học máy, bao gồm các bộ phân cụm, phân loại thống kê
Các hàm và thủ tục làm việc với file ảnh và file video
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 9
ĐẶC TRƯNG HAAR-LIKE
Viola và Jones sử dụng bốn đặc trưng cơ bản để nhận diện khuôn mặt con người Mỗi đặc trưng Haar-like được tạo thành từ sự kết hợp của hai hoặc ba hình chữ nhật "trắng" và "đen".
Bốn đặc trưng Haar-like cơ bản được mở rộng để áp dụng vào bài toán xác định mặt người, và được phân chia thành ba tập đặc trưng khác nhau.
1 Đặc trưng cạnh (edge features)
2 Đặc trưng đường (line features)
3 Đặc trưng xung quanh tâm (center-surround features)
Hình 2.8 Các đặc trưng mở rộng của các đặc trưng Haar-like cơ sở
Các đặc trưng Haar-like mang lại lợi ích lớn trong việc diễn đạt tri thức về các đối tượng trong ảnh, nhờ vào khả năng biểu diễn mối liên hệ giữa các bộ phận của đối tượng, điều mà từng điểm ảnh đơn lẻ không thể làm được Để tính toán giá trị của các đặc trưng này, ta thực hiện phép tính chênh lệch giữa tổng số pixel của các vùng đen và vùng trắng theo công thức: f(x) = Tổng vùng đen (pixel) - Tổng vùng trắng (pixel).
Bằng cách sử dụng giá trị này để so sánh với các giá trị pixel thô, các đặc trưng Haar-like có khả năng điều chỉnh sự khác biệt giữa các lớp trong và ngoài khuôn mặt người, từ đó giúp cải thiện độ chính xác của bộ phân loại.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 10
Để tính các giá trị của đặc trưng Haar-like, cần tổng hợp các vùng pixel trên ảnh Tuy nhiên, việc tính toán cho tất cả các vị trí trên ảnh tốn kém về chi phí và không phù hợp với các ứng dụng yêu cầu tính toán thời gian thực Để khắc phục điều này, Viola và Jones đã giới thiệu khái niệm Integral Image, giúp tính toán nhanh chóng cho các đặc trưng cơ bản.
Lienhart introduced the concept of the Integral Image, also known as the Summed Area Table (SAT), and further developed the Rotated Summed Area Table (RSAT) for efficient calculations of features rotated by 45 degrees The Integral Image is a two-dimensional array that matches the dimensions of the image for Haar-like feature computation, where each element is calculated as the sum of the pixel values above (row-1) and to the left (column-1) This computation progresses from the top-left to the bottom-right of the image, relying solely on simple integer addition, which ensures rapid execution.
Hình 2.9 Cách tính Integral Image của ảnh
Sau khi tính toán xong Integral Image, việc tính tổng điểm ảnh trong một vùng bất kỳ trên ảnh trở nên đơn giản Ví dụ, để tính tổng điểm ảnh của vùng D như trong hình 2.9, ta có thể áp dụng phương pháp này một cách dễ dàng.
Giá trị tại điểm P4 trên Hình ảnh Tích phân được xác định bởi A + B + C + D, trong khi giá trị tại điểm P2 là A + B, tại P3 là A + C, và tại P1 là A Do đó, biểu thức tính D có thể được viết lại như sau [5]:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 11
Hình 2.10 Cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh
Hình 2.11 Cách tính nhanh tổng điểm ảnh của vùng D với các đặc trưng xoay 45 o
Với các đặc trưng Haar-like xoay 45 o Integral Image tại một điểm (x, y) được tính theo công thức [5]:
Tổng pixel của một vùng bất kỳ trên ảnh vẫn được tính theo cách sau [5]:
Tổng số điểm ảnh trong một hình chữ nhật, bao gồm cả trường hợp xoay 45º, có thể được tính nhanh chóng thông qua hình ảnh tích phân tại bốn đỉnh của hình chữ nhật đó.
Để chọn các đặc trưng Haar-like cho việc thiết lập ngưỡng, Viola và Jones áp dụng phương pháp máy học AdaBoost Phương pháp này kết hợp các bộ phân loại yếu để tạo thành một bộ phân loại mạnh, trong đó bộ phân loại yếu chỉ có độ chính xác cao hơn việc đoán ngẫu nhiên một chút, trong khi bộ phân loại mạnh đạt độ chính xác trên 60%.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 12
ADABOOST
AdaBoost (Adaptive Boost) là một bộ phân loại phi tuyến mạnh mẽ, được phát triển bởi Freund và Schapire vào năm 1995, dựa trên phương pháp boosting Thuật toán này kết hợp các bộ phân loại yếu thông qua việc sử dụng các đặc trưng Haar-like, nhằm tạo ra một bộ phân loại mạnh Để tối ưu hóa quá trình kết hợp, AdaBoost áp dụng trọng số để đánh dấu các mẫu khó nhận diện Trong quá trình huấn luyện, mỗi khi một bộ phân loại yếu được xây dựng, trọng số sẽ được cập nhật: tăng trọng số cho các mẫu bị nhận diện sai và giảm cho các mẫu được nhận diện đúng Nhờ vào cơ chế này, các bộ phân loại yếu tiếp theo sẽ tập trung vào những mẫu mà các bộ phân loại trước đó chưa xử lý hiệu quả, và cuối cùng, chúng sẽ được kết hợp dựa trên độ chính xác để tạo thành một bộ phân loại mạnh mẽ.
Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc trưng Haar-like theo mô hình phân tầng (cascade) như sau:
Hình 2.12 Mô hình phân tần kết hợp các bộ phân loại yếu để xác định khuôn mặt
Vùng ảnh con cần xét h1 h2 h3 hN
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 13
Các weak classifiers hk (x) là các bộ phân loại yếu, được biểu diễn như sau [2]:
X : mẫu hay cửa sổ con cần xét ( X = (x1,x2,…,xn) là vector đặc trưng của mẫu)
k: ngưỡng fk: giá trị của đặc trưng Haar-like pk: hệ số quyết định chiều của bất phương trình
Công thức này diễn tả rằng nếu giá trị đặc trưng của mẫu từ hàm đánh giá của bộ phân loại vượt qua ngưỡng đã định, thì mẫu đó được xác định là khuôn mặt (đối tượng cần nhận dạng); ngược lại, nếu không vượt qua ngưỡng, mẫu sẽ được coi là background (không phải đối tượng).
AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau [2]:
H(x) = sign( 1h1(x) + 2h2(x) + + nhn(x)) (2.9) Với: t >= 0 là hệ số chuẩn hoá cho các bộ phân loại yếu
Hình 2.13 Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh
Cho một tập gồm n mẫu có đánh dấu (x1,y1), (x2,y2),… (xn,yn) với xk ∈ (xk1, xk2,
… , xkm) là vector đặc trưng và yk ∈ (-1, 1) là nhãn của mẫu (1 ứng với object, -1 ứng với background)
Khởi tạo trọng số ban đầu cho tất cả các mẫu: với m là số mẫu đúng (ứng với object và y = 1) và l là số mẫu sai (ứng với background và y = -1)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 14
Với mỗi đặc trưng trong vector đặc trưng, xây dựng một weak classifier hj với ngưỡng θj và lỗi εj
Chọn ra hj với εj nhỏ nhất, ta được ht:
Cập nhật lại trọng số:
𝑍 𝑡 : Hệ số dùng để đưa 𝑊 𝑡+1 về đoạn [0,1] (normalization factor)
Strong classifier được xây dựng :
Quá trình huấn luyện bộ phân loại diễn ra qua một vòng lặp, trong đó thuật toán lựa chọn weak classifier ht với lỗi εt nhỏ nhất, nhằm bổ sung vào strong classifier Mỗi khi một bộ phân loại ht được chọn, AdaBoost sẽ tính toán giá trị αt theo công thức đã nêu, với mục tiêu giảm thiểu giá trị lỗi εt.
Hệ số αt nói lên mức độ quan trọng của ht:
Trong công thức của bộ phân loại H(x):
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 15
Tất cả các bộ phân loại ht đều đóng góp vào kết quả H(x), và mức độ quan trọng của mỗi bộ phân loại phụ thuộc vào giá trị αt tương ứng; bộ phân loại ht với αt cao hơn sẽ có vai trò lớn hơn trong việc xác định H(x).
Dễ thấy giá trị αt tỉ lệ nghịch với εt Bởi vì ht được chọn với tiêu chí đạt εt nhỏ nhất, do đó nó sẽ đảm bảo giá trị αt lớn nhất
Sau khi tính giá trị αt, AdaBoost cập nhật trọng số của các mẫu bằng cách tăng trọng số cho những mẫu bị phân loại sai và giảm trọng số cho những mẫu được phân loại đúng Qua đó, trọng số của mỗi mẫu sẽ phản ánh mức độ khó khăn trong việc nhận diện, giúp ht+1 tập trung vào việc cải thiện khả năng phân loại cho những mẫu khó này.
Vòng lặp xây dựng strong classifier sẽ dừng lại sau T lần lặp, nhưng trong thực tế, giá trị T ít được sử dụng do không có công thức xác định giá trị tối ưu cho quá trình huấn luyện Thay vào đó, người ta thường dựa vào giá trị tối đa của false positive hoặc false alarm, tức là tỷ lệ nhận dạng sai tối đa các mẫu background Tỷ lệ này không được phép vượt quá giá trị đã định Qua các lần lặp, false alarm của strong classifier Ht(x) sẽ giảm dần và vòng lặp sẽ kết thúc khi tỷ lệ này thấp hơn mức tối đa cho phép.
CHUỖI CÁC BỘ PHÂN LỚP (CASCADE OF CLASSIFIER)
Thuật toán Cascade Classifier sử dụng các đặc trưng haar-like để rút trích đặc điểm của đối tượng Vì đối tượng có thể thay đổi hình dạng đa dạng, việc phân tầng nhận dạng là cần thiết để nâng cao độ chính xác trong quá trình nhận diện.
Chúng ta sẽ xây dựng một chuỗi các bộ phân lớp sử dụng thuật toán Adaboost Sau đó, tất cả các cửa sổ con sẽ được đưa qua chuỗi bộ phân lớp này để thu thập kết quả.
Bộ phân lớp đầu tiên sẽ loại bỏ hầu hết các cửa sổ không phải là khuôn mặt (negative sub window) và chỉ cho phép các cửa sổ được xác định là khuôn mặt (positive sub window) đi qua Với cấu trúc đơn giản, bộ phân lớp này giúp giảm thiểu độ phức tạp tính toán.
Bộ môn điện tử công nghiệp 16 có độ chính xác thấp trong việc nhận diện khuôn mặt Điều này dẫn đến việc một số lượng lớn cửa sổ được nhận dạng không chính xác, không phải là khuôn mặt thực sự.
Các cửa chỗ được phân loại bởi bộ phân lớp đầu tiên sẽ được đánh giá bởi bộ phân lớp tiếp theo Nếu bộ phân lớp này xác định đó không phải là khuôn mặt, chúng sẽ bị loại bỏ Ngược lại, nếu bộ phân lớp cho rằng đó là khuôn mặt, chúng sẽ được tiếp tục chuyển đến bộ phân lớp phía sau.
Các bộ phân lớp càng sâu sẽ trở nên phức tạp hơn và yêu cầu tính toán nhiều hơn Những mẫu khó nhận dạng, hay còn gọi là cửa sổ con, là những mẫu mà bộ phân lớp không thể loại bỏ Khi các mẫu này đi sâu vào chuỗi bộ phân lớp, việc nhận dạng trở nên khó khăn hơn Chỉ những cửa sổ vượt qua tất cả các bộ phân lớp mới được xác định là khuôn mặt.
Hình 2.14 Mô hình Cascade Classifier
Chuỗi bộ phân lớp xử lý các mẫu (cửa sổ con) theo nguyên tắc: nếu một bộ phân lớp xác định không phải là mặt người, mẫu đó sẽ bị loại bỏ ngay Ngược lại, nếu bộ phân lớp nhận diện đó là khuôn mặt, mẫu sẽ được chuyển tiếp đến bộ phân lớp tiếp theo Chỉ khi một mẫu vượt qua tất cả các bộ phân lớp, chúng ta mới kết luận đó là khuôn mặt.
Trước tiên, ta cần nói đến hai độ đo quan trọng là detection rate và false positive rate Cụ thể như sau:
Detection rate = Số lượng các vùng được nhận dạng là khuôn mặt và đúng /
Số lượng khuôn mặt thật sự trong ảnh.
False positive rate = Số lượng các vùng được nhận dạng là khuôn mặt và sai/Số
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 17 lượng các vùng được nhận dạng là khuôn mặt.
Xét một cascade gồm K bộ phân lớp.
Detection rate của cascade được tính như sau [2]:
D d i (2.17) i 1 với d i là detection rate của bộ phân lớp thứ i.
False positive rate của cascade được tính như sau [2]:
D d f (2.18) i 1 với d i là detection rate của bộ phân lớp thứ i.
Bước đầu tiên trong quy trình là người dùng cần lựa chọn các giá trị quan trọng, bao gồm f, tức là tỷ lệ dương giả lớn nhất chấp nhận được cho mỗi bộ phân lớp trong chuỗi phân lớp (cascade); d, tỷ lệ phát hiện tối thiểu chấp nhận được cho từng bộ phân lớp; và F target, tỷ lệ dương giả lớn nhất chấp nhận cho toàn bộ chuỗi phân lớp.
o P = tập các mẫu là khuôn mặt (positive.) o N = tập các mẫu không phải là khuôn mặt (negative.) o F 0 = 1.0; D 0 = 1.0 o i = 0 //Chỉ số của bộ phân lớp trong cascade
Bước 3:Trong khi mà F i > F target :
o i = i +1 //Xây dưng bộ phân lớp thứ i trong cascade o n i = 0 //Số bộ phân lớp yếu của bộ phân lớp thứ i o F i = F i-1 o Trong khi mà F i > f * F i-1
Thuật toán Adaboost: Dùng bộ P và N để huấn luyện 1 bộ phân lớp với n i đặc trưng (n i bộ phân lớp yếu.)
Tính F i và D i của cascade hiện tại thông qua validation set
Giảm ngưỡng của bộ phân lớp thứ i cho tới khi cascade hiện tại đạt detection rate ít nhất là d*D i-1 (để ý là F i cũng sẽ thay đổi theo) o N = 0.
Nếu F i lớn hơn F target, những mẫu không phải khuôn mặt sẽ được đưa vào cascade hiện tại để tiến hành nhận dạng Các mẫu được xác định là khuôn mặt sẽ được chuyển vào tập N.
Nguyên tắc xử lý của cascade là loại bỏ ngay các mẫu không phải là khuôn mặt và chỉ chuyển tiếp các mẫu được xác định là khuôn mặt cho bộ phân lớp tiếp theo Trong quá trình xây dựng các bộ phân lớp của cascade, tập P (ảnh khuôn mặt) luôn giữ nguyên, trong khi tập N (ảnh không phải khuôn mặt) sẽ thay đổi Khi đã xây dựng đến bộ phân lớp thứ i, các ảnh không phải khuôn mặt sẽ được đưa vào cascade hiện tại để nhận dạng Những ảnh được xác định là khuôn mặt sẽ được thêm vào tập N để tiếp tục xây dựng bộ phân lớp thứ i+1.
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Chương trình chủ yếu có nhiệm vụ phát hiện khuôn mặt từ camera, sau đó tiến hành xử lý các khuôn mặt này để điều chỉnh ánh sáng, cân bằng màu xám và thay đổi kích thước Quá trình nhận dạng diễn ra bằng cách so sánh với cơ sở dữ liệu đã được thiết lập, từ đó đưa ra kết luận chính xác.
Như vậy các chức năng chương trình bao gồm:
Kết nối đến camera, đọc dữ liệu từ camera
Phát hiện khuôn mặt có trong camera
Xử lý khuôn mặt được phát hiện
Nhận dạng khuôn mặt và đưa ra kết luận
3.1.1 Thiết kế sơ đồ khối hệ thống
Hệ thống được chia thành hai phần chính: huấn luyện và nhận dạng Quá trình huấn luyện bao gồm các khối như đầu vào, xử lý đầu vào, phát hiện khuôn mặt, xử lý khuôn mặt đã phát hiện và cơ sở dữ liệu Trong khi đó, quá trình nhận dạng cũng bao gồm các khối tương tự, bao gồm đầu vào, xử lý đầu vào, phát hiện khuôn mặt, xử lý khuôn mặt đã phát hiện, cùng với khối so sánh và khối kết luận.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20
Sơ đồ khối quá trình huấn luyện: Đầu vào (ảnh từ camera)
Xử lý khuôn mặt được phát hiện
Tạo cơ sở dữ liệu (lưu ảnh khuôn mặt)
Hình 3.1 Sơ đồ khối quá trình huấn luyện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21
Sơ đồ khối quá trình nhận dạng: Đầu vào (ảnh từ camera)
Xử lý khuôn mặt được phát hiện
So sánh với cơ sở dữ liệu (tập ảnh)
Hình 3.2 Sơ đồ khối quá trình nhận dạng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22
Chương trình nhận đầu vào là camera, nhưng việc phát hiện khuôn mặt được thực hiện trên các bức ảnh tĩnh Do đó, cần chuyển đổi hình ảnh từ camera thành các ảnh tĩnh để xử lý Sau khi có ảnh đầu vào, chúng sẽ được chuyển đến giai đoạn xử lý tiếp theo.
Khối xử lý đầu vào chuyển đổi các khung hình màu thành ảnh xám Việc nhận diện khuôn mặt thường không chính xác trong điều kiện ánh sáng yếu, do đó cần thực hiện cân bằng biểu đồ xám để cải thiện độ tương phản và độ sáng của hình ảnh.
Khối phát hiện khuôn mặt sử dụng phương pháp chia ảnh gốc thành nhiều cửa sổ nhỏ để phân tích các đặc trưng Sau đó, hệ thống xác định các vùng khả thi có thể là khuôn mặt, và cuối cùng, những ứng viên này được đưa vào bộ phân loại để xác định chính xác khuôn mặt người.
Khối xử lý khuôn mặt yêu cầu ảnh huấn luyện và ảnh đầu vào phải có kích thước đồng nhất Do đó, ảnh khuôn mặt sau khi được phát hiện cần được cắt và chỉnh sửa để phù hợp với kích thước của ảnh trong cơ sở dữ liệu đã được huấn luyện.
Trong quá trình huấn luyện, các ảnh được phát hiện và xử lý sẽ được lưu trữ trong cơ sở dữ liệu nhằm phục vụ cho việc nhận dạng.
Khối so sánh: Sau khi ảnh được phát hiện và xử lý nhận dạng, chúng sẽ được so sánh với ảnh đã được huấn luyện trong cơ sở dữ liệu để đưa ra kết luận chính xác.
Khối kết luận: Hệ thống sẽ đưa ra thông tin khuôn mặt cần nhận dạng
3.1.2 Tính toán và thiết kế
Hệ thống được phát triển trên nền tảng Visual Studio C++ của Microsoft và thực hiện trên kit Raspberry, với quá trình tính toán và thiết kế chủ yếu diễn ra trên phần mềm Đối với khối đầu vào, nhóm đã sử dụng camera Pi v1 với cảm biến OV5647 có độ phân giải 5MP, gắn trực tiếp vào socket CSI của kit Raspberry Camera này cung cấp chất lượng hình ảnh tốt, độ phân giải cao và khả năng quay phim ở chế độ HD Trong quá trình huấn luyện, camera sẽ chụp 50 ảnh chứa khuôn mặt để lưu trữ vào cơ sở dữ liệu phục vụ cho việc nhận dạng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 23
Hình 3.3 Sơ đồ nguyên lý phần cứng khối đầu vào b Thiết kế khối xử lý đầu vào
Để xử lý hình ảnh bằng thư viện OpenCV, chúng ta có thể xây dựng một chương trình sử dụng các lệnh và hàm hỗ trợ Đầu tiên, để chuyển đổi hình ảnh màu RGB sang xám, ta sử dụng hàm cvtColor() Sau đó, để cải thiện độ tương phản và độ sáng, cần thực hiện cân bằng histogram Cân bằng histogram là phương pháp giúp phân bố đồng đều biểu đồ histogram của ảnh Để thực hiện việc này, ta sử dụng hàm equalizeHist(cv::InputArray src, cv::OutputArray dst).
Trong đó: src là ảnh đầu vào một kênh màu (ảnh xám chẳng hạn) dst là ảnh sau khi cân bằng
Cân bằng histogram của ảnh đầu vào bằng cách sử dụng thuật toán sau đây:
Tính biểu đồ histogram H cho ảnh đầu vào src
Chuẩn hóa các biểu đồ sao cho tổng của histogram là 255
Tính tích phân của biểu đồ: '
Chuyển đổi hình ảnh bằng cách sử dụng H ’ : dst(x,y) = H ’ (src(x,y))
Bộ môn Điện tử Công nghiệp 24 tập trung vào thiết kế khối phát hiện khuôn mặt, sử dụng phương pháp học máy Adaboost kết hợp với chuỗi các bộ phân lớp Cascade of Classifiers để phân tầng đối tượng Hệ thống xử lý các mẫu bằng cách loại bỏ những mẫu không phải là khuôn mặt và cho phép những mẫu được xác định là khuôn mặt tiếp tục qua các bộ phân tầng Nếu mẫu vượt qua tất cả các bộ phân tầng, nó sẽ được xác nhận là khuôn mặt người Tiếp theo, thiết kế khối xử lý khuôn mặt đã được phát hiện sẽ được thực hiện.
Phương pháp nhận dạng khuôn mặt sử dụng đặc trưng Haar-like yêu cầu tất cả ảnh đầu vào và ảnh huấn luyện phải có kích thước đồng nhất Vì vậy, khuôn mặt sau khi được phát hiện cần được cắt để đảm bảo kích thước giống như các khuôn mặt trong cơ sở dữ liệu huấn luyện.
Chúng ta thực hiện điều đó bằng lệnh sau:
Resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_CUBIC)
src - hình ảnh đầu vào
dst - hình ảnh đầu ra
dsize -kích thước hình ảnh đầu ra; nếu nó bằng không, nó được tính như sau: dsize = Size (round(fx*src.cols), round(fy*src.rows))
Hoặc dsize hoặc cả hai fx và fy phải không bằng 0
fx -yếu tố quy mô dọc theo trục ngang; khi nó có bằng 0, nó được tính:
(double)dsize.width/src.cols
fy -yếu tố quy mô dọc theo trục thẳng đứng; khi nó có bằng 0, nó được tính:
(double)dsize.height/src.rows
interpolation -Phương pháp nội suy:
Sử dung phương pháp INTER_CUBIC – nội suy bicubic là nội suy các điểm ảnh gần nhất, 4x4 điểm ảnh
Bộ môn Điện tử Công nghiệp 25 tập trung vào thiết kế khối cơ sở dữ liệu, nơi hệ thống lưu trữ các ảnh đã được xử lý sau khi phát hiện Điều này phục vụ cho quá trình nhận dạng bằng cách tạo các file lưu trữ cho từng ảnh của các đối tượng cần nhận diện Ngoài ra, khối so sánh cũng được thiết kế để nâng cao hiệu quả trong việc nhận dạng các đối tượng.
Khối so sánh sẽ đối chiếu các hình ảnh đã được xử lý trong quá trình nhận dạng với các hình ảnh trong cơ sở dữ liệu huấn luyện Chúng ta sẽ xây dựng khối này trong hàm main của chương trình chính Nếu đạt được độ chính xác và độ tin cậy cao, hệ thống sẽ đưa ra kết luận chính xác.
Hệ thống sử dụng hàm saysomething để cung cấp thông tin về đối tượng được nhận dạng, đồng thời đếm số lần phát hiện khuôn mặt trong cơ sở dữ liệu Mục tiêu của hàm là xác nhận chính xác danh tính đối tượng Khi số lần phát hiện đạt 15, hàm sẽ kích hoạt chương trình làm cho ngõ ra chân GPIO của kit Raspberry ở mức cao, dẫn đến việc đèn LED sáng lên.
Hình 3.4 Sơ đồ nguyên lý phần cứng khối kết luận
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 26
3.1.3 Sơ đồ nguyên lý phần cứng
Hình 3.5 Sơ đồ nguyên lý phần cứng
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Chương này trình bày về hệ thống nhóm đã phát triển, bao gồm lưu đồ cho chương trình nhận dạng khuôn mặt, chương trình chính và hướng dẫn các bước thao tác để sử dụng mô hình hiệu quả.
THI CÔNG MÔ HÌNH
Mô hình phục vụ cho nhóm thực hiện đề tài:
Hình 4.1 Mô hình trong quá trình thực hiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 29
LẬP TRÌNH HỆ THỐNG
Hệ thống nhóm thực hiện có lưu đồ:
Hình 4.2 Lưu đồ chương trình Để bắt đầu chúng ta sẽ chọn chế độ để cho chương trình hoạt động:
Khi chọn chế độ 1 chương trình sẽ tiến hành huấn luyện theo lưu đồ:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 30
Chuyển xám và cân bằng xám
Chuẩn hóa kích thướt ảnh
Tạo và lưu thông tin ảnh
Hình 4.3 Lưu đồ chương trình huấn luyện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 31
Chế độ huấn luyện sẽ thực hiện việc chụp 50 hình ảnh có chứa khuôn mặt Đầu tiên, một biến đếm được khởi tạo bằng 0, sau đó camera sẽ được khởi động để chụp ảnh Mỗi bức ảnh sẽ được cân bằng xám và xác định vùng chứa khuôn mặt, giúp tách khuôn mặt với kích thước nhất định Thông tin của ảnh đã được tách sẽ được lưu lại Quá trình này tiếp tục cho đến khi có đủ 50 bức ảnh có chứa khuôn mặt, và khi hoàn tất, hệ thống sẽ thông báo kết quả.
Khi chọn chế độ 0, chương trình tiến hành nhận dạng theo lưu đồ:
Xử lý cơ sở dữ liệu
So sánh ảnh chụp với cơ sở dữ liệu
Hình 4.4 Lưu đồ chương trình nhận dạng
Bộ môn Điện tử Công nghiệp 32 thực hiện quy trình xác định danh tính người qua camera bằng cách so sánh với cơ sở dữ liệu đã được lưu trữ từ quá trình huấn luyện Đầu tiên, quá trình xử lý cơ sở dữ liệu sẽ được tiến hành để đảm bảo tính chính xác và hiệu quả trong việc nhận diện.
Tải cơ sở dữ liệu
Hình 4.5 Lưu đồ chương trình xử lý cơ sở dữ liệu
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 33
Quá trình xử lý cơ sở dữ liệu bắt đầu bằng việc tải tập tin XML từ thư viện OpenCV, sau đó nhập cơ sở dữ liệu của người dùng muốn nhận dạng Tiếp theo, hệ thống sẽ tải cơ sở dữ liệu của người cần nhận dạng Nếu có sai sót trong quá trình thực hiện hoặc cơ sở dữ liệu chưa được thiết lập, hệ thống sẽ thông báo lỗi.
Tiếp theo đó khởi động camera để xác định người trong camera:
Chuyển xám và cân bằng xám
Chuẩn hóa kích thướt ảnh
Hình 4.6 Lưu đồ chương trình xử lý ảnh chụp
Tiến hành so sánh hình ảnh người trong camera với cơ sở dữ liệu, nếu phát hiện sự khác biệt, sẽ tiếp tục đối chiếu với các ảnh trong cơ sở dữ liệu Khi nhận diện đúng, chương trình sẽ đếm số lần xuất hiện và hiển thị tên người trong camera Nếu biến đếm đạt 15, hệ thống sẽ thông báo và kích hoạt đèn báo hiệu, sau đó kết thúc chương trình.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 34
4.3.2 Phần mềm lập trình cho hệ thống
Raspberry PI chủ yếu sử dụng các hệ điều hành dựa trên nhân Linux (Linux Kernel)
Hình 4.7 Một số hệ điều hành chạy trên kit Raspberry PI Ở đây nhóm sử dụng hệ điều hành Raspbian
Hình 4.8 Giao diện hệ điều hành raspbian
To configure the Raspberry Pi to recognize the camera module, enter the command: sudo raspi-config Next, select "Enable camera" and press Enter.
Sau khi nhấn phím Tab để di chuyển con trỏ tới nút Finish, hệ điều hành sẽ yêu cầu khởi động lại Sau khi khởi động lại, module camera sẽ sẵn sàng để sử dụng.
Hình 4.9 Thiết lập để sử dụng camera pi
Nhóm thực hiện cài đặt Opencv cho Raspberry theo hướng dẫn tại địa chỉ: http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian- jessie-opencv-3/
VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC
4.4.1 Tài liệu hướng dẫn sử dụng
Bước 1: Kết nối kit Raspberry với máy tính hoặc chạy độc lập với nguồn, màn hình, chuột, bàn phím
Bước 2: Kết nối kit Raspberry với mạng để tiện sử dụng
Bước 3: Khởi động kit Raspberry Đăng nhập với user:pi và password:123456 Bước 4: Bật Terminal
Bước 5: Di chuyển tới thư mục camcv (cd camcv)
Bước 6: Biên dịch chương trình (make –j4) và đợi quá trình hoàn tất
Bước 7: Tiến hành chạy chương trình (./camcv 0or1 mứcsáng 0or1)
Mode 0 hoặc 1 đầu tiên là có cân bằng mức xám hoặc không
Mode 0 hoặc 1 đầu tiên là chế độ nhận dạng và huấn luyện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 36
Bước 8: Nhập thư mục lưu ảnh của một người cho quá trình huấn luyện (nhập số)
Nhập người mà bạn muốn nhận dạng (nhập số) đã được lưu ảnh thông qua quá trình huấn luyện
Chuẩn bị Kết nối Khởi động Mở Terminal
Di chuyển tới thư mục Biên dịch
Chạy chương trình Quan sát kết quả
Hình 4.10 Quy trình thao tác
Quy trình đã được giải thích trong mục 4.4.1
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 37
KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
KẾT QUẢ
5.1.1 Tổng quan kết quả đạt được
Sau khi thực hiện đề tài: Ứng dụng kit raspberry nhận dạng mặt người, nhóm đã hoàn thành được các nội dung:
Nắm được kiến thức cơ bản về kit raspberry
Cài đặt được hệ điều hành raspbian lên kit raspberry pi 3
Cài đặt được opencv lên kit raspberry pi 3
Nắm được kiến thức cơ bản về ngôn ngữ C++
Tìm hiểu về camera pi sử dụng cho kit raspberry
Có thể chụp ảnh thông qua camera pi và xuất hình ảnh
Mô hình có thể phát hiện được mặt người và tách lấy ảnh khuôn mặt
Có thể nhận dạng được người trong camera pi có cơ sở dữ liệu được lưu lại thông qua quá trình huấn luyện
Các kết quả sau quá trình thực hiện của nhóm:
Nhóm thực hiện sử dụng tập ảnh huấn luyện gồm 10 người
Hình 5.1 Phát hiện khuôn mặt trường hợp nhìn sang trái
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 38
Hình 5.2 Phát hiện khuôn mặt trường hợp nhìn sang phải
Hình 5.3 Phát hiện khuôn mặt trường hợp nhìn thẳng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 39
Hình 5.4 Nhận dạng khuôn mặt trường hợp nhìn sang trái
Hình 5.5 Nhận dạng khuôn mặt trường hợp nhìn sang phải
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 40
Hình 5.6 Nhận dạng khuôn mặt trường hợp nhìn thẳng
Trường hợp phát hiện khuôn mặt với độ sáng 45 lux (độ sáng thực tế tại phòng):
Nhìn thẳng Nhìn sang trái 20 0
Bảng 1 Kết quả quá trình huấn luyện ở độ sáng 45 lux
Một khuôn mặt Hai khuôn mặt Ba khuôn mặt
Bảng 2 Kết quả phát hiện nhiều khuôn mặt
Lux là đơn vị đo lường công suất ánh sáng chiếu trên một diện tích 1m² Nhóm nghiên cứu đã thực hiện quá trình huấn luyện và nhận dạng trong điều kiện thực tế của độ sáng bằng phần mềm “LightMeter”.
Hiện suất quá trình huấn luyện được tính bằng số lần phát hiện được khuôn mặt chia cho tổng thời gian quá trình huấn luyện là 50s
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 41
Trường hợp nhận dạng khuôn mặt:
Nhóm đã chọn ba tập ảnh, bao gồm tập ảnh một, tập ảnh hai và tập ảnh ba, để tiến hành nhận dạng và tính toán hiệu suất Ba tập ảnh này đại diện cho ba người khác nhau và đã được xử lý qua quá trình huấn luyện.
Nhìn thẳng Nhìn sang trái 20 0
Bảng 3 Kết quả quá trình nhận dạng với độ sáng 40 lux và ngưỡng 4000
Nhìn thẳng Nhìn sang trái 20 0
Bảng 4 Kết quả nhận dạng với độ sáng 110 lux và ngưỡng 4000
Ngưỡng kiểm tra nhận dạng có được thông qua quá trình thử nghiệm thực tế với nhiều người trên nhiều độ sáng khác nhau
5.2 NHẬN XÉT VÀ ĐÁNH GIÁ
Mô hình do nhóm thực hiện đã đạt được khoảng 85% mục tiêu do nhóm đặt ra
Tỉ lệ phát hiện khuôn mặt đạt khoảng 96%, ít bị ảnh hưởng bởi góc nhìn Tỉ lệ nhận dạng đúng người vào khoảng 90%, phụ thuộc vào góc nhìn và độ sáng Mô hình có khả năng phát hiện nhiều khuôn mặt cùng lúc, nhưng chỉ có thể nhận dạng một người trong thời gian cụ thể do chỉ so sánh với một thư mục ảnh duy nhất.
Ngoài ra, mô hình hoạt động còn hơi giật lag do camera pi, cấu hình của kit raspberry không cao và đoạn chương trình chưa được tối ưu tốt.