- Ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt giúp choviệc chấm công tại doanh nghiệp trở nên đơn giản và thuận tiện hơn - Bên cạnh đó ứng dụng còn giúp giải quyết cá
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 2Đà Nẵng, tháng 6/2022
Trang 3ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 5- Ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt giúp cho
việc chấm công tại doanh nghiệp trở nên đơn giản và thuận tiện hơn
- Bên cạnh đó ứng dụng còn giúp giải quyết các công việc như:
o Giúp cho người quản lý có thể quản lý được tài khoản của nhân viên, cóthể xem được tình hình đi làm của nhân viên theo ngày, đồng thời có thểthêm hoặc xóa tài khoản nếu có nhân viên mới hoặc nghỉ việc
o Nhân viên có thể xem được số ngày làm việc của mình, đồng thời có thểtìm kiếm tình hình chấm công của mình theo tháng
Trang 6TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA CÔNG NGHỆ SỐ
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Giảng viên hướng dẫn: TS Hoàng Thị Mỹ Lệ
Sinh viên thực hiện: Nguyễn Hoàng Anh Mã SV: 1811505310402 Lớp: 18T4
1 Tên đề tài:
- Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn
mặt
2 Các số liệu, tài liệu ban đầu:
- Dữ liệu hình ảnh về khuôn mặt của cá nhân
- Các tài liệu về nhận diện khuôn mặt tại các website, kênh youtube
3 Nội dung chính của đồ án:
Quá trình xây dựng hệ thống quản lý việc chấm công bằng phương pháp nhậndiện khuôn mặt bao gồm các công việc:
- Khảo sát nghiệp vụ thực tế
- Phân tích thiết kế các chức năng của hệ thống
- Thiết kế giao diện cho các chức năng
- Thu thập dữ liệu để xây dựng cơ sở dữ liệu
- Xây dựng cơ sơ dữ liệu
- Xây dựng hệ thống
- Kiểm thử và cài đặt
- Hoàn thành bài báo cáo
4 Các sản phẩm dự kiến
- Hệ thống quản lý việc chấm công bằng phương pháp nhận diện khuôn mặt
- File báo cáo hoàn chỉnh
5 Ngày giao đồ án: 14/02/2022
Trang 76 Ngày nộp đồ án: 20/06/2022
Đà Nẵng, ngày … tháng … năm 2022
Trang 8LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin đã có những bước phát triển mạnh mẽ theo cả chiều rộng và sâu Máy tính điện tử không còn là một thứ phương tiện quý hiếm mà đang ngày càng trở thành một công cụ làm việc và giải trí thông dụng của con người, không chỉ ở công sở mà còn ngay cả trong gia đình.
Đứng trước vai trò của thông tin hoạt động cạnh tranh gay gắt, các tổ chức và các doanh nghiệp đều tìm mọi biện pháp để xây dựng hoàn thiện hệ thống thông tin của mình nhằm tin học hóa các hoạt động tác nghiệp của đơn vị.
Hiện nay các công ty tin học hàng đầu thế giới không ngừng đầu tư và cải thiện các giải pháp cũng như các sản phẩm nhằm cho phép tiến hành tự động hóa trên Internet Thông qua các sản phẩm và công nghệ này, chúng ta dễ dàng nhận ra tầm quan trọng và tính tất yếu của các ứng dụng Với những thao tác đơn giản trên điện thoại có nối mạng Internet bạn sẽ có tận tay những gì mình cần mà không phải mất nhiều thời gian Bạn chỉ cần vào các ứng dụng làm theo hướng dẫn và click vào những gì bạn cần Các hoạt động sẽ thực hiện ngay trên hệ thống đó
Ở Việt Nam cũng có rất nhiều trường đại học tự động hóa các quy trình trên hệ thống website nhưng do những khó khăn về cơ sở hạ tầng như viễn thông chưa phát triển mạnh nên các quy trình vẫn còn rất nhiều sổ sách, giấy tờ thủ công dẫn đến thiếu hiệu quả, mất khá nhiều thời gian
Để tiếp cận và góp phần đẩy mạnh sự phổ biến và tiện ích của các ứng dụng, em
đã tìm hiểu và cài đặt “Ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt”.
Với sự hướng dẫn tận tình của TS Hoàng Thị Mỹ Lệ em đã hoàn thành đồ án tốt nghiệp này Tuy đã cố gắng hết sức tìm hiểu, phân tích thiết kế và cài đặt hệ thống nhưng chắc rằng không tránh khỏi những thiếu sót Chúng em rất mong nhận được sự thông cảm và góp ý của quí Thầy cô
Em xin chân thành cảm ơn!
i
Trang 9CAM ĐOAN
Em xin cam đoan :
1 Những nội dung trong luận văn này do em thực hiện dưới sự hướng dẫn của cô HoàngThị Mỹ Lệ
2 Mọi tham khảo trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên côngtrình ,thời gian, địa điểm công bố
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàntoàn trách nhiệm
Sinh viên thực hiện
Nguyễn Hoàng Anh
Trang 10MỤC LỤC
MỤC LỤC iii
DANH MỤC BẢNG BIỂU vi
DANH MỤC HÌNH VẼ vii
MỞ ĐẦU 1
1 Mục tiêu đề tài 1
a Đối tượng nghiên cứu 1
b Phạm vi nghiên cứu 1
2 Phương pháp nghiên cứu 1
a Phương pháp thu thập 1
b Phương pháp xử lý thông tin 2
3 Giải pháp công nghệ 2
4 Cấu trúc đồ án 2
Chương 1 CƠ SỞ LÝ THUYẾT 3
1.1 Hệ quản trị cơ sở dữ liệu MySQL 3
1.2 React Native Framework 4
1.3 OpenCV Library 5
1.4 Flask 5
1.5 Java Spring Boot 6
1.6 Quy trình xử lý nhận diện khuôn mặt 7
Chương 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG 8
2.1 Tác nhân và chức năng 8
2.1.1 Trưởng phòng nhân sự (Admin) 8
2.1.2 Nhân viên 8
iii
Trang 112.2 Phân tích chức năng 8
2.2.1 Sơ đồ Use-case 8
2.2.2 Sơ đồ hoạt động 9
2.2.2.1 Nhân viên 9
2.2.2.2 Trưởng phòng nhân sự 12
2.2.3 Sơ đồ tuần tự 14
2.2.3.1 Nhân viên 14
2.2.3.2 Trưởng phòng nhân sự 15
2.3 Phân tích hệ thống 16
2.3.1 Thiết kế cơ sở dữ liệu 16
2.3.2 Sơ đồ ERD 17
Chương 3 XÂY DỰNG CHƯƠNG TRÌNH 18
3.1 Công cụ xây dựng chương trình 18
3.2 Giao diện chương trình 18
3.2.1 Giao diện đăng nhập 18
3.2.2 Giao diện trang chủ 19
3.2.3 Giao diện chụp ảnh xác nhận ngày đi làm 19
3.2.4 Giao diện kết quả xác nhận ngày đi làm 20
3.2.5 Giao diện xem số ngày làm việc 21
3.2.6 Giao diện thông tin tài khoản 23
3.2.7 Giao diện cập nhật thông tin cá nhân 23
3.2.8 Giao diện danh sách nhân viên 24
3.2.9 Giao diện xác nhân xóa nhân viên 24
3.2.10 Giao diện xem tình hình đi làm của nhân viên 25
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 27
Trang 123.3 Kết luận 27 3.4 Hướng phát triển 27 TÀI LIỆU THAM KHẢO 28
v
Trang 13DANH MỤC BẢNG BIỂU
Bảng 2.1: Bảng NhanVien 16
Bảng 2.2: Bảng HinhAnh 17
Bảng 2.3: Bảng ChamCong 17
Bảng 2.4: Bảng PhongBan 17
Trang 14DANH MỤC HÌNH VẼ
Hình 1.1: React Native Framework 12
Hình 1.2: Quy trinh xử lý nhận diện khuôn mặt 15
Hình 2.1: Sơ đồ Use-case 17
Hình 2.2: Sơ đồ hoạt động cho Use-case Xác nhận ngày đi làm 18
Hình 2.3: Sơ đồ hoạt động cho Use-case Cập nhật thông tin cá nhân 19
Hình 2.4: Sơ đồ hoạt động cho Use-case Xem số ngày đi làm 20
Hình 2.5: Sơ đồ hoạt động cho Use-case Cập nhật tài khoản nhân viên 21
Hình 2.6: Sơ đồ hoạt động cho Use-case Báo cáo tình hình đi làm của nhân viên 22
Hình 2.7: Sơ đồ tuần tự cho Use-case Xác nhận ngày đi làm 23
Hình 2.8: Sơ đồ tuần tự cho Use-case Cập nhật thông tin cá nhân 23
Hình 2.9: Sơ đồ tuần tự cho Use-case Xem số ngày làm việc 24
Hình 2.10: Sơ đồ tuần tự cho Use-case Báo cáo tình hình đi làm của nhân viên .24 Hình 2.11: Sơ đồ tuần tự cho Use-case Cập nhật tài khoản nhân viên 25
Hình 2.12: Sơ đồ ERD 27
Hình 3.1: Giao diện đăng nhập 28
Hình 3.2: Giao diện trang chủ 29
Hình 3.3: Giao diện chụp ảnh chấm công 29
Hình 3.4: Giao diện thông báo chấm công hoàn tất 30
Hình 3.5: Giao diện thông báo khi đã chấm công trước đó 30
Hình 3.6: Giao diện thông báo chấm công thất bại 31
Hình 3.7: Giao diện xem số ngày làm việc 31
Hình 3.8: Giao diện tra cứu ngày đi làm theo tháng 32
Hình 3.9: Giao diện kết quả số ngày làm việc theo tháng 32
Hình 3.10: Giao diện thông tin tài khoản 33
Hình 3.11: Giao diện cập nhật thông tin cá nhân 33
Hình 3.12: Giao diện danh sách nhân viên 34
Hình 3.13: Giao diện xác nhận xóa nhân viên 34
Hình 3.14: Giao diện thêm mới nhân viên 35
vii
Trang 15Hình 3.15: Giao diện tình hình đi làm của nhân viên 35Hình 3.16: Giao diện tra cứu tình hình đi làm của nhân viên theo tháng 36Hình 3.17: Giao diện kết quả tra cứu tình hình đi làm theo tháng 36
Trang 16Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
MỞ ĐẦU
Ngày nay, với sự tiến bộ vượt bậc của công nghệ thông tin, ngày càng có nhiềuứng dụng của công nghệ thông tin được đưa vào trong cuộc sống Con người ngàycàng tạo ra những cỗ máy thông tin có khả năng tự nhận biết và xử lý công việc mộtcách tự động, phục vụ nhu cầu và lợi ích của con người
Trong vài năm trở lại đây, lĩnh vực trí tuệ nhân tạo đang nhân được sự quan tâmcủa xã hội Một trong những vấn đề của trí tuệ nhân tạo được quan tâm nhất là bài toánnhận diện Tuy xuất hiện chưa lâu nhưng đã nhận được sự quan tâm rất lớn Một trongnhững bài toán nhận diện được quan tâm nhất chính là bài toán nhận diện khuôn mặt.Một trong những ứng dụng của bài toán nhận diện khuôn mặt là chấm công chonhân viên Với mong muốn có một hệ thống chấm công bằng nhận diện khuôn mặt,
em đã nghiên cứu và phát triển đề tài này
1 Mục tiêu đề tài
Xây dựng hệ thống quản lý việc chấm công bằng nhận diện khuôn mặt giúp chocác doanh nghiệp có một giải pháp chấm công cho nhân viên hiệu quả, an toàn hơn sovới các phương pháp chấm công truyền thống, đồng thời giúp cho việc quản lý nhân
sự tại doanh nghiệp trở nên dễ dàng hơn
a Đối tượng nghiên cứu
Các phương pháp nhận diện khuôn mặt
b Phạm vi nghiên cứu
Có thể áp dụng đề tài cho một doanh nghiệp vừa và nhỏ
2 Phương pháp nghiên cứu
a Phương pháp thu thập
- Tìm kiếm thông tin, tài liệu trên các website, các ứng dụng có sẵn
- Nghiên cứu các website, ứng dựng hiện đã có trên thị trường
- Nghiên cứu các công nghệ nhận diện khuôn mặt, các thư viện hỗ trợ việc xâydựng ứng dụng nhận diện khuôn mặt
b Phương pháp xử lý thông tin
- Xác định yêu cầu của đề tài từ đó chọn lọc những thông tin cần thiết
Trang 17Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
- Phân tích, đánh giá độ chính xác của các thông tin tìm được
- Tổng hợp những thông tin tìm được để hoàn thiện đề tài
3 Giải pháp công nghệ
- React Native Framework
- Java Spring Boot
Chương 1: Cơ sở lý thuyết
- Hệ quản trị cơ sở dữ liệu MySQL
- React Native Framework
- OpenCV Library
- Flask
- Java Spring Boot
- Quy trình xử lý nhận diện khuôn mặtChương 2: Phân tích thiết kế hệ thống
- Tác nhân và chức năng
- Phân tích chức năng
- Phân tích hệ thốngChương 3: Xây dựng chương trình
- Công cụ xây dựng chương trình
- Giao diện chương trìnhKết luận và hướng phát triển
Tài liệu tham khảo
Trang 18Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
Chương 1
CƠ SỞ LÝ THUYẾT1.1 Hệ quản trị cơ sở dữ liệu MySQL
- MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (RelationalDatabase Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server RBDMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữliệu (Database) theo hình thức quản lý các mối liên hệ giữa chúng [1]
- MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và hoạt động trênnhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.MySQL hỗ trợ rất nhiều chức năng SQL cả trực tiếp lẫn gián tiếp [2]
- MySQL dựa trên mô hình client-server Cốt lõi của MySQL là máy chủMySQL, xử lý tất cả các hướng dẫn cơ sở dữ liệu (hoặc các lệnh) Máy chủ MySQL
có sẵn như là một chương trình riêng biệt để sử dụng trong môi trường mạng server và như một thư viện có thể được nhúng (hoặc liên kết) vào các ứng dụngriêng biệt [3]
client MySQL ban đầu được phát triển để xử lý cơ sở dữ liệu lớn một cách nhanhchóng Mặc dù MySQL thường chỉ được cài đặt trên một máy, nhưng nó có thể gửi
cơ sở dữ liệu đến nhiều vị trí, vì người dùng có thể truy cập thông qua các giao diệnmáy khách MySQL khác nhau Các giao diện này gửi các câu lệnh SQL đến máychủ và sau đó hiển thị kết quả [3]
Trang 19Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
1.2 React Native Framework
Hình 1.2.1.1.1.1: React Native Framework
- React Native là một framework được tạo bởi Facebook, cho phép developer xâydựng các ứng dụng di động trên cả Android và iOS chỉ với một ngôn ngữ lập trìnhduy nhất: JavaScript [4]
- React Native sẽ giúp bạn tiết kiệm được nhiều thời gian và công sức nếu muốnxây dựng một ứng dụng đa nền tảng (multi-platform) Chỉ cần biết JavaScript,không cần phải học thêm bất cứ ngôn ngữ nào khác [4]
- Bằng cách tích hợp 2 thread là Main Thread và JS Thread cho ứng dụng mobile.Với Main Thread sẽ đảm nhận vai trò cập nhật giao diện người dùng(UI) Sau đó sẽ
xử lý tương tác người dùng Trong khi đó, JS Thread sẽ thực thi và xử lý codeJavascript Hai luồng này hoạt động độc lập với nhau [4]
- Để tương tác được với nhau hai Thread sẽ sử dụng một Bridge(cầu nối) Chophép chúng giao tiếp mà không phụ thuộc lẫn nhau, chuyển đổi dữ liệu từ threadnày sang thread khác Dữ liệu từ hai Thread được vận hành khi tiếp nối dữ liệu chonhau [4]
- Ưu điểm của React-native
o Thời gian phát triển ứng dụng được rút ngắn
o Tiết kiệm chi phí nhân lực cho doanh nghiệp
Trang 20Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
o Khả năng tái sử dụng code cao
o Trải nghiệm người dùng rất mượt mà
o Không cần nhiều kiến thức nền
- Nhược điểm của React-native
- OpenCV hỗ trợ các giao diện C++, C, Python và Java và hỗ trợ Windows,Linux, Mac OS, iOS và Android OpenCV được thiết kế để hỗ trợ hiệu quả về tínhtoán và chuyên dùng cho các ứng dụng real-time (thời gian thực) Nếu được viếttrên C/C++ tối ưu, thư viện này có thể tận dụng được bộ xử lý đa lõi (multi-coreprocessing) [5]
- OpenCV có các tính năng chính:
o Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
o Phát hiện các vật thể (objdetect, features2d, nonfree)
o Geometry-based monocular hoặc stereo computer vision (calib3d, stitching,videostab)
o Computational photography (photo, video, superres)
o Machine learning & clustering (ml, flann)
o CUDA acceleration (gpu)
1.4 Flask
- Flask là một framework web của Python, còn được coi là một microframeworkbởi nó không yêu cầu các công cụ hoặc thư viện cụ thể Được phát triển bởi ArminRonacher, người dẫn đầu một nhóm những người đam mê Python quốc tế có tên là
Trang 21Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
Poocco Flask phát triển dựa trên bộ công cụ Werkzeug WSGI và công cụ mẫuJinja2 [6]
- Flask cung cấp tất cả các công cụ, thư viện và công nghệ cho phép xây dựngmột api Flask là một microframework bởi nó không yêu cầu các công cụ hoặc thưviện cụ thể, điều này mang đến cả ưu điểm và khuyết điểm cho người sử dụng Ưuđiểm của Flask là Framework nhẹ, ít phụ thuộc vào các cập nhật và dễ tìm kiếm cáclỗi bảo mật Nhược điểm là đôi khi bạn phải tự thêm các danh sách phụ thuộc bằngviệc thêm các plugin [6]
1.5 Java Spring Boot
- Spring Bootlà một Java framework được phát triển bởi Pivital Team dựa trênJava framework mã nguồn mở để tạo ra các microservice, nhằm mục đích xây dựngcác ứng dụng Spring độc lập một cách nhanh chóng và có khả năng thực thi ngay[7]
- Microservice là một mô hình cho phép bạn lập trình và phát triểnnhiều service (dịch vụ/ chức năng) một cách độc lập Mỗi service có thể chạy độclập với nhau và hỗ trợ cho một phần mềm lớn hơn Với Microservice, các lập trìnhviên sẽ cần ít thời gian hơn để lập trình vì việc tách nhỏ sẽ tạo điều kiện thuận lợihơn nhiều so với việc thực hiện một service lớn [7]
- Java Spring Boot có 3 tính năng quan trọng:
o SpringApplication: Khi lập trình xong và chỉ muốn chạy thử nghiệm luônứng dụng chỉ cần gọi run() là được Vì Spring Boot được thiết kế theo dạng
“just run” nhằm giúp lập trình viên chỉ cần cấu hình ít Spring nhất có thể, cònlại Spring Boot sẽ tự động lo liệu
o Externalized Configuration: Một ứng dụng có thể chạy trên nhiều môi trườngkhác nhau? Vậy, Spring Boot sẽ config cấu hình từ bên ngoài và ứng dụng sẽ
có thể thoải mái chạy
o Profiles: Khi có nhiều config khác nhau, ta có thể sử dụng Profile để phânchia từng loại config cho từng môi trường để dễ dàng quản lý hơn
Trang 22Xây dựng ứng dụng quản lý chấm công bằng phương pháp nhận diện khuôn mặt
- Không chỉ dừng lại ở những tính năng đó, với Spring Boot, bạn còn có thể pháttriển web Application, Caching, gửi Email, Validation, làm việc với công nghệSQL,…
1.6 Quy trình xử lý nhận diện khuôn mặt
Hình 1.6.1.1.1.1: Quy trinh xử lý nhận diện khuôn mặt
- Quy trình nhận diện khuôn mặt gồm các bước cơ bản:
o Nhận diện khuôn mặt: Máy ảnh phát hiện và định vị hình ảnh của mộtkhuôn mặt khi đối tượng đang ở một mình hoặc trong một đám đông Từ
đó ghi nhận hình ảnh của đối tượng [8]
o Phân tích khuôn mặt: Hình ảnh sẽ được đưa vào phần mềm để tiến hànhđọc hình dạng khuôn mặt của đối tượng Các yếu tố chính cần xử lý baogồm khoảng cách giữa hai mắt, độ sâu của hốc mắt, khoảng cách từ tránđến cằm, hình dạng của gò má và đường viền của môi, tai và cằm Mụcđích là để xác định các điểm mốc chính trên khuôn mặt nhằm phân biệtnhiều người khác nhau [8]
o Chuyển đổi hình ảnh thành dữ liệu: Chuyển đổi ảnh chụp khuôn mặtthành một tập hợp thông tin kỹ thuật số (dữ liệu) dựa trên các đặc điểmkhuôn mặt của người đó Những thuộc tính khuôn mặt sẽ được xử lýdưới dạng các thuật toán và công thức, và mỗi người sẽ sở hữu một dữliệu khuôn mặt riêng biệt [8]
o Tìm kết quả nhận diện khuôn mặt phù hợp: tiến hành so sánh với cơ sở
dữ liệu khuôn mặt sẵn có Nếu khuôn mặt được ghi lại khớp với mộthình ảnh trong cơ sở dữ liệu, thì việc xác định sẽ hoàn tất [8]