Đồ Án Tốt Nghiệp: Hệ Thống Phần Mềm Nhận Diện Khuôn Mặt và Điểm Danh Bằng Python

Chuyên khảo phân tích Hệ thống nhận diện khuôn mặt điểm danh chấm công bằng python, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2022

63
6
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

MỞ ĐẦU

1. CHƯƠNG I: PHÂN TÍCH YÊU CẦU HỆ THỐNG ỨNG DỤNG DESKTOP NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH

1.1. Tổng quan hệ thống ứng dụng desktop nhận diện mặt và điểm danh

1.2. Yêu cầu hệ thống

1.2.1. Yêu cầu chức năng

1.2.2. Yêu cầu phi chức năng

1.3. Các công nghệ sử dụng

1.3.1. Thiết kế giao diện ứng dụng (PyQt5)

1.3.2. Thiết kế back end

1.4. Nghiên cứu tổng quan

1.4.1. Bài toán nhận dạng mặt người

2. CHƯƠNG II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ỨNG DỤNG DESKTOP NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH

2.1. Thiết kế hệ thống tổng thể

2.2. Phân tích yêu cầu hệ thống

2.3. Thiết kế cơ sở dữ liệu

2.4. Xây dựng hệ thống

2.4.1. Danh sách các Actor

2.4.2. Danh sách Use Case

2.4.3. Sơ đồ Use Case chi tiết

2.4.4. Đặc tả Use Case

2.4.5. Biểu đồ hoạt động và biểu đồ tuần tự

2.4.6. Phân tích kiến trúc

3. CHƯƠNG III: KẾT QUẢ THỰC NGHIỆM

3.1. Triển khai hệ thống

3.1.1. Training hình ảnh nhân viên và lưu trữ

3.1.2. Lớp detector nhận diện khuôn mặt đã training

3.1.3. Giới thiệu một số giao diện của hệ thống

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Hướng phát triển

DANH MỤC TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng quan về phần mềm nhận diện khuôn mặt bằng Python

Phần mềm nhận diện khuôn mặt và điểm danh bằng Python đang trở thành một trong những ứng dụng quan trọng trong lĩnh vực công nghệ thông tin. Với sự phát triển của machine learningdeep learning, việc nhận diện khuôn mặt đã trở nên chính xác và hiệu quả hơn. Sử dụng thư viện OpenCV, phần mềm này có khả năng nhận diện khuôn mặt trong thời gian thực, phục vụ cho nhiều mục đích như an ninh, quản lý nhân sự và điểm danh tự động.

1.1. Lịch sử phát triển của công nghệ nhận diện khuôn mặt

Công nghệ nhận diện khuôn mặt đã có từ những năm 1960, nhưng chỉ thực sự phát triển mạnh mẽ trong những năm gần đây nhờ vào sự tiến bộ của machine learning. Các thuật toán như PCALDA đã được áp dụng để cải thiện độ chính xác trong việc nhận diện khuôn mặt.

1.2. Tại sao Python là lựa chọn hàng đầu cho nhận diện khuôn mặt

Python là ngôn ngữ lập trình phổ biến nhờ vào cú pháp dễ đọc và thư viện phong phú. Thư viện OpenCV cho phép lập trình viên dễ dàng triển khai các thuật toán nhận diện khuôn mặt mà không cần phải viết mã phức tạp.

II. Những thách thức trong việc nhận diện khuôn mặt

Mặc dù công nghệ nhận diện khuôn mặt đã đạt được nhiều thành tựu, nhưng vẫn còn nhiều thách thức cần phải vượt qua. Các yếu tố như ánh sáng, góc nhìn và chất lượng hình ảnh có thể ảnh hưởng đến độ chính xác của hệ thống. Việc phát triển các thuật toán mạnh mẽ hơn để xử lý những vấn đề này là rất cần thiết.

2.1. Ảnh hưởng của ánh sáng đến độ chính xác

Ánh sáng không đồng đều có thể làm giảm chất lượng hình ảnh, dẫn đến việc nhận diện không chính xác. Các thuật toán cần phải được tối ưu hóa để xử lý các điều kiện ánh sáng khác nhau.

2.2. Vấn đề về góc nhìn và độ phân giải

Góc nhìn khác nhau có thể làm cho khuôn mặt trở nên khó nhận diện. Hệ thống cần phải được huấn luyện với nhiều góc nhìn khác nhau để cải thiện khả năng nhận diện.

III. Phương pháp nhận diện khuôn mặt hiệu quả bằng Python

Để xây dựng một hệ thống nhận diện khuôn mặt hiệu quả, có thể áp dụng nhiều phương pháp khác nhau. Sử dụng OpenCV kết hợp với các thuật toán deep learning như CNN có thể mang lại kết quả tốt hơn. Việc sử dụng các mô hình đã được huấn luyện trước cũng giúp tiết kiệm thời gian và tài nguyên.

3.1. Sử dụng OpenCV cho nhận diện khuôn mặt

Thư viện OpenCV cung cấp nhiều công cụ hữu ích cho việc phát hiện và nhận diện khuôn mặt. Các hàm như cv2.CascadeClassifier giúp phát hiện khuôn mặt trong ảnh một cách nhanh chóng.

3.2. Kết hợp với deep learning để cải thiện độ chính xác

Sử dụng các mô hình deep learning như CNN có thể giúp cải thiện độ chính xác của hệ thống nhận diện khuôn mặt. Việc huấn luyện mô hình trên tập dữ liệu lớn sẽ giúp mô hình học được nhiều đặc điểm của khuôn mặt.

IV. Ứng dụng thực tiễn của phần mềm nhận diện khuôn mặt

Phần mềm nhận diện khuôn mặt có nhiều ứng dụng thực tiễn trong đời sống. Từ việc quản lý nhân sự, điểm danh tự động đến các hệ thống an ninh, công nghệ này đang ngày càng trở nên phổ biến. Các tổ chức, doanh nghiệp đang áp dụng công nghệ này để nâng cao hiệu quả công việc.

4.1. Ứng dụng trong quản lý nhân sự

Hệ thống nhận diện khuôn mặt giúp quản lý nhân sự hiệu quả hơn. Việc điểm danh tự động giúp tiết kiệm thời gian và giảm thiểu sai sót trong quá trình quản lý.

4.2. Ứng dụng trong an ninh và giám sát

Công nghệ nhận diện khuôn mặt được sử dụng rộng rãi trong các hệ thống an ninh. Việc nhận diện nhanh chóng và chính xác giúp tăng cường an ninh tại các khu vực công cộng.

V. Kết luận và tương lai của công nghệ nhận diện khuôn mặt

Công nghệ nhận diện khuôn mặt đang trên đà phát triển mạnh mẽ. Với sự tiến bộ của machine learningdeep learning, tương lai của công nghệ này hứa hẹn sẽ mang lại nhiều ứng dụng mới và cải tiến đáng kể. Việc nghiên cứu và phát triển các thuật toán mới sẽ giúp nâng cao độ chính xác và khả năng ứng dụng của công nghệ này.

5.1. Xu hướng phát triển trong tương lai

Công nghệ nhận diện khuôn mặt sẽ tiếp tục phát triển với sự hỗ trợ của các công nghệ mới như AI và big data. Việc tích hợp các công nghệ này sẽ giúp cải thiện hiệu suất và độ chính xác của hệ thống.

5.2. Thách thức và cơ hội trong ngành công nghệ

Mặc dù có nhiều cơ hội, nhưng ngành công nghệ nhận diện khuôn mặt cũng đối mặt với nhiều thách thức như vấn đề bảo mật và quyền riêng tư. Cần có các quy định rõ ràng để đảm bảo việc sử dụng công nghệ này một cách hợp lý.

10/07/2025
Hệ thống nhận diện khuôn mặt điểm danh chấm công bằng python

Trích đoạn nội dung tài liệu

CHƯƠNG I: PHÂN TÍCH YÊU CẦU HỆ THỐNG ỨNG DỤNG DESKTOP NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH Ứng dụng desktop nhận diện khuôn mặt và điểm danh được xây dựng trên ngôn ngữ Python 3 cùng với thư viện OpenCV giúp nhận diện khuôn mặt và dùng thư viện, công cụ của PyQt5 để xây dựng giao diện, ứng dụng sử dụng hệ quản trị cơ sở dữ liệu Sqlite 3 với ưu điểm gọn nhẹ dễ thao tác và sử dụng; Ứng dụng được nghiên cứu và phát triển trên môi trường Visual Studio Code… 1. Tổng quan hệ thống ứng dụng desktop nhận diện mặt và điểm danh Phổ biến trong đời sống con người đã làm cho lượng thông tin thu được bằng hình ảnh ngày càng tăng. Theo đó, lĩnh vực xử lý ảnh cũng được chú trọng phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại. Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà với công nghệ xử lý ảnh hiện nay chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khuôn mặt… Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử lý ảnh hiện nay đó là nhận dạng khuôn mặt (Face Recognition).

Như chúng ta đã biết, khuôn mặt đóng vai trò quan trọng trong quá trình giao tiếp giữa người với người, nó mang một lượng thông tin giàu có, chẳng hạn như từ khuôn mặt chúng ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt là xác định mối quan hệ với đối tượng (có quen biết hay không). Do đó, bài toán nhận dạng khuôn mặt đóng vai trò quan trọng trong nhiều lĩnh vực đời sống hằng ngày của con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm thông tin một người nổi tiếng,…đặc biệt là an ninh, bảo mật. Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất tuy nhiên dù ít hay nhiều những 9 phương pháp này đang vấp phải những thử thách về độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường. Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc trưng của các phần tử trên khuôn mặt như biến đổi Gabor Wavelet và mạng Neural, SVM,…và nhận dạng dựa trên xét tổng thể toàn khuôn mặt như phương pháp PCA, LDA, LFA.

Chính nhờ những yếu tố trên, nhóm chúng em đã đưa ra ý tưởng tạo ra phần mềm nhận diện khuôn mặt và điểm danh. Được dựa trên thư viện OpenCV. Yêu cầu hệ thống: ❖ Yêu cầu chức năng: - Xây dựng được các chức năng cơ bản của một ứng dụng desktop nhận diện khuôn mặt và điểm danh: nhận diện, điểm danh, xem thông tin điểm danh, thêm/sửa/xóa nhân viên, cập nhật tài khoản v.v - Quản lý hệ thống nhận diện và điểm danh dễ dàng giúp nâng cao khả năng quản lý thồn tin. - Cung câp chức năng nhận diện khuôn mặt để điểm danh 1 cách dễ dàng.

- Hỗ trợ chức năng quản trị chung hệ thống ( admin) trong đó người quản trị có thể thêm mới, sữa xóa thông tin nhân viên và cập nhật thông tin (admin) - Cung cấp bảng lịch điểm danh giúp người dùng có thể dễ dàng tra cứu lịch điểm danh của bình. ❖ Yêu cầu phi chức năng: - Ứng dụng có giao diện đẹp, dễ dàng sử dụng. - Hỗ trợ người dùng khi có trục trặc. - Giúp việc điểm danh trở lên khách quan - Dễ dàng quản lý danh sách nhân viên.

10 - Năm bắt được các phương thức xác định khuôn mặt ( Face Detection) cũng như thư viện Open CV. - Năm bắt được thư viện tạo ứng dụng tạo giao diện PyQt5. - Năm bắt được ngôn ngữ lập trình python3. Các công nghệ sử dụng Để giải quyết bài toán nhận dạng khuôn mặt sử dụng thư viện OpenCV, chúng ta có thể sử dụng các ngôn ngữ lập trình như: .NET C#, VB, IronPython, Java, C++… Trong đồ án này ngôn ngữ lập trình được sử dụng là Python, được viết trên môi trường của Python là IDLE và Visual Studio Code.

Thiết kế giao diện ứng dụng ( PyQt5) ❖ Giới thiệu chung: - Qt là một Application framework đa nền tảng viết trên ngôn ngữ C++ , được dùng để phát triển các ứng dụng trên desktop, hệ thống nhúng và mobile. Hỗ trợ cho các platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS và một số platform khác. PyQt là Python interface của Qt, kết hợp của ngôn ngữ lập trình Python và thư viện Qt, là một thư viện bao gồm các thành phần giao diện điều khiển (widgets , graphical control elements). - PyQt API bao gồm các module bao gồm số lượng lớn với các classes và functions hỗ trợ cho việc thiết kế ra các giao diện giao tiếp với người dùng của các phần mềm chức năng.

Hỗ trợ với Python 2. - PyQt được phát triển bởi Riverbank Computing Limited, version mới nhất của PyQt có thể download tại đường link : PyQt Riverbank Computing Limited - Các class của PyQt5 được chia thành các module, bao gồm : 11 + QtCore : là module bao gồm phần lõi không thuộc chức năng GUI, ví dụ dùng để làm việc với thời gian, file và thư mục, các loại dữ liệu, streams, URLs, mime type, threads hoặc processes. + QtGui : bao gồm các class dùng cho việc lập trình giao diện (windowing system integration), event handling, 2D graphics, basic imaging, fonts và text. + QtWidgets : bao gồm các class cho widget, ví dụ : button, hộp thoại, … được sử dụng để tạo nên giao diện người dùng cơ bản nhất.

+ QtMultimedia : thư viện cho việc sử dụng âm thanh, hình ảnh, camera,… + QtBluetooth : bao gồm các class giúp tìm kiếm và kết nối với các thiết bị có giao tiếp với phần mềm. + QtNetwork : bao gồm các class dùng cho việc lập trình mạng, hỗ trợ lập trình TCP/IP và UDP client , server hỗ trợ việc lập trình mạng. + QtPositioning : bao gồm các class giúp việc hỗ trợ xác định vị. + Enginio : module giúp các client truy cập các Cloud Services của Qt.

+ QtWebSockets : cung cấp các công cụ cho WebSocket protocol. + QtWebKit : cung cấp các class dùng cho làm việc với các trình duyệt Web , dựa trên thư viện WebKit2. + QtWebKitWidgets : các widget cho WebKit. 12 + QtXml : các class dùng cho làm việc với XML file.

+ QtSvg : dùng cho hiển thị các thành phần của SVG file. + QtSql : cung cấp các class dùng cho việc làm việc với dữ liệu. + QtTest : cung cấp các công cụ cho phép test các đơn vị của ứng dụng với PyQt5. ❖ Giới thiệu các tool công cụ phần mềm phục vụ thiết kế với PyQt5: - Qt Designer : Qt sử dụng IDE tên Qt Creator với một tool thiết kế giao diện người dùng Qt Designer.

Qt Designer có thể làm việc một mình độc lập với Qt Creator. Qt Designer sử dụng XML .ui file để lưu thiết kế và không sinh thêm bất kỳ mã nguồn nào của nó. User Interface Compiler (uic) đọc định dạng file XML (.ui) và xuất ra header file mã nguồn C++ tươn ứng. Qt có một class QUiLoader cho phép một ứng dụng tải một file .ui và tạo một giao diện động tương ứng.

- uic Python module : PyQt5 không chứa class QUiLoader nhưng thay vào đó là module Python uic. Cũng giống như QUiLoader , module python uic này cũng tải định dạng file .ui và tạo giao diện động tương ứng. Giống như UIC (User Interface Compiler) module python uic này cũng sinh ra mã nguồn python tạo nên giao diện tương ứng. Command line : $ pyuic5 .py là dòng lệnh làm việc với module python uic này.

13 - Python3 : python là một ngôn ngữ lập trình bậc cao, linh hoạt, là ngôn ngữ thông dịch và là một ngôn ngữ động. Python do Guido van Rossum tạo ra năm 1990. Các phiên bản của Python trong quá trình phát triển : Python 1 – giai đoạn 1990 tới 1995; Python 2 – phát hành vào năm 2000; Python 3 , python 3000 hoặc py3k được phát hành 3/12/2008. Thiết kế back end ❖ Ngôn ngữ lập trình Python: Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991.

Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu. Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl.

Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý. Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python.

Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python. 14 Hình 1: Ngôn ngữ lập trình Python ❖ Thư viện OpenCV: OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, và các vấn đề liên quan tới thị giác máy. OpenCv được thiết kế một cách tối ưu, sử dụng tối đa mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó thể đủ nhanh cho các ứng dụng thông thường. OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-platform),nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Việc sử dụng thư viện OpenCv tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho các mục đích phi thương mại lẫn thương mại.

Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính 15 thức được công bố và năm 2008 bản 1.1 (prerelease) mới được ra đời. Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là phiên bản 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Phần Mềm Nhận Diện Khuôn Mặt và Điểm Danh Bằng Python" cung cấp cái nhìn tổng quan về việc phát triển phần mềm nhận diện khuôn mặt sử dụng ngôn ngữ lập trình Python. Tài liệu này không chỉ hướng dẫn cách xây dựng hệ thống nhận diện khuôn mặt mà còn nhấn mạnh những lợi ích mà công nghệ này mang lại, như tăng cường an ninh và cải thiện quy trình điểm danh trong các tổ chức.

Để mở rộng kiến thức của bạn về lĩnh vực này, bạn có thể tham khảo thêm các tài liệu liên quan như Luận văn thạc sĩ hcmute ứng dụng mạng học sâu cho nhận diện khuôn mặt, nơi bạn sẽ tìm thấy thông tin về việc áp dụng mạng học sâu trong nhận diện khuôn mặt. Ngoài ra, tài liệu Luận văn thạc sĩ khoa học máy tính authentication via deep learning facial recognition with and without mask and timekeeping implementation at working spaces sẽ giúp bạn hiểu rõ hơn về việc xác thực danh tính qua nhận diện khuôn mặt trong môi trường làm việc. Cuối cùng, bạn có thể tìm hiểu thêm về Xây dựng hệ thống điểm danh giờ thư viện bằng nhận diện khuôn mặt đồ án tốt nghiệp, một ứng dụng thực tiễn của công nghệ này trong việc quản lý điểm danh.

Những tài liệu này sẽ giúp bạn có cái nhìn sâu sắc hơn về các ứng dụng và công nghệ liên quan đến nhận diện khuôn mặt.