1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đồ án tốt nghiệp

91 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Hệ Thống Điểm Danh Bằng Phương Pháp Nhận Diện Khuôn Mặt
Tác giả Ngô Đức Thông
Người hướng dẫn TS. Lê Đình Công
Trường học Trường Đại Học Vinh
Chuyên ngành Điện Tử Và Truyền Thông
Thể loại đồ án tốt nghiệp
Năm xuất bản 2023
Thành phố Nghệ An
Định dạng
Số trang 91
Dung lượng 4,93 MB

Cấu trúc

  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ HỆ THỐNG NHẬN DIỆN KHUÔN MẶT [1] (17)
    • 1.1. Giới thiệu bài toán nhận dạng khuôn mặt [4][12] (17)
    • 1.2. Quy trình hoạt động của hệ thống nhận diện khuôn mặt (19)
    • 1.3. Các phương pháp nhận dạng khuôn mặt phổ biến (19)
    • 1.4. Ứng dụng của nhận diện khuôn mặt vào thực tiễn [3] (25)
  • CHƯƠNG 2: PHÂN TÍCH NỀN TẢNG CÔNG NGHỆ CƠ BẢN CỦA HỆ THỐNG NHẬN DIỆN KHUÔN MẶT (28)
    • 2.1. Ngôn ngữ lập trình Python[5] (28)
      • 2.1.1. Lợi ích của Python (28)
      • 2.1.2. Các thư viện được dùng trong dự án [6] (29)
    • 2.3. OpenCV-Python (30)
      • 2.3.1. Ứng dụng của OpenCV (31)
      • 2.3.2. Tính năng và các module phổ biển của OpenCV [14] (31)
    • 2.4. Môi trường lập trình JetBrains PyCharm Community Edition (32)
    • 2.5. Hệ quản trị cơ sở dữ liệu MySQL (34)
    • 2.6. Giao diện hỗ trợ Tkinter (36)
  • CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỂM DANH BẰNG PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT (37)
    • 3.1. Yêu cầu bài toán (37)
    • 3.2. Phân tích hệ thống (38)
      • 3.2.1. Phân tích các tác nhân (39)
      • 3.2.2. Phân tích thuật toán (41)
      • 3.2.3. Phân tích, thiết kế cơ sở dữ liệu MySQL (47)
    • 3.3. Quy trình thiết kế hệ thống (49)
    • 3.4. Thử nghiệm và đánh giá hệ thống (76)
      • 3.3.1. Thử nghiệm hệ thống (76)
      • 3.3.2. Đánh giá hệ thống (78)
  • KẾT LUẬN (80)
  • TÀI LIỆU THAM KHẢO (82)
  • PHỤ LỤC (84)

Nội dung

Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên Đồ án tốt nghiệp về đề tài xử lý ảnh, nhận diện khuôn mặt, ứng dụng điểm danh học sinh sinh viên .

CƠ SỞ LÝ THUYẾT VỀ HỆ THỐNG NHẬN DIỆN KHUÔN MẶT [1]

Giới thiệu bài toán nhận dạng khuôn mặt [4][12]

Nhận dạng khuôn mặt (Face Recognition) là một phương pháp sinh trắc để xác định hoặc xác minh một cá nhân nào đó bằng cách so sánh dữ liệu hình ảnh chụp trực tiếp hoặc hình ảnh kỹ thuật số với bản ghi được lưu trữ cho người đó Nó được xem là một lĩnh vực nghiên cứu của ngành Biometrics (tương tự như nhận dạng vân tay – Fingerprint Recognition, hay nhận dạng mống mắt – Iris Recognition)

Xét về nguyên tắc chung, nhận dạng khuôn mặt có sự tương đồng rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự khác biệt nằm ở bước trích chọn đặt trưng (feature extraction) của mỗi lĩnh vực Trong khi nhận dạng vân tay và mống mắt đã đạt tới độ chín, tức là có thể áp dụng trên thực tế một cách rộng rãi thì nhận dạng khuôn mặt người vẫn còn nhiều thách thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người.So với nhận dạng vân tay và mống mắt, nhận dạng khuôn mặt có nguồn dữ liệu phong phú hơn (chúng ta có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên mạng) và ít đòi hỏi sự tương tác có kiểm soát hơn (để thực hiện nhận dạng vân tay hay mống mắt, dữ liệu input lấy từ con người đòi hỏi có sự hợp tác trong môi trường có kiểm soát)

Các hệ thống nhận dạng khuôn mặt thường được sử dụng cho các mục đích an ninh như kiểm soát an ninh tại tòa nhà, sân bay, máy ATM, tra cứu thông tin của tội phạm, phát hiện tội phạm ở nơi công cộng, và ngày càng được ứng dụng rộng rãi trong cuộc sống

Bên cạnh những thành công đã được ghi nhận thì nhận dạng khuôn mặt cũng còn gặp nhiều khó khăn như về độ sáng, hướng nghiêng, kích thước hình ảnh, diện mạo, biểu hiện cảm xúc của khuôn mặt hay ảnh hưởng của tham số môi trường Để xây dựng một hệ thống nhận dạng khuôn mặt có đầu vào của hệ thống là một hình ảnh kỹ thuật số hay một khung hình video từ một nguồn video Đầu ra là xác định hoặc xác minh người ở trong bức hình hoặc trong video đó là ai Hướng tới mục tiêu này chúng ta thường chia thủ tục nhận dạng khuôn mặt gồm ba bước: Phát hiện khuôn mặt, trích rút đặc trưng và nhận dạng khuôn mặt.

Những thách thức này cần được vượt qua để tạo ra các hệ thống nhận dạng khuôn mặt hiệu quả hơn Sau đây là những thách thức ảnh hưởng đến khả năng của Hệ thống nhận dạng khuôn mặt đi thêm một quãng đường nữa. a) Sự chiếu sáng

Sự chiếu sáng đóng một vai trò thiết yếu trong quá trình nhận dạng hình ảnh. Nếu có một chút thay đổi trong điều kiện ánh sáng, nó sẽ ảnh hưởng lớn đến kết quả của nó Đó là ánh sáng thay đổi, và sau đó kết quả có thể khác nhau đối với cùng một đối tượng gây ra ánh sáng thấp hoặc cao. b) Background

Nền của đối tượng cũng đóng một vai trò quan trọng trong việc Nhận diện khuôn mặt Kết quả có thể không giống ngoài trời so với những gì được tạo ra trong nhà bởi vì yếu tố – ảnh hưởng đến hiệu suất của nó thay đổi ngay sau khi địa điểm thay đổi. c) Pose

Hệ thống nhận dạng khuôn mặt rất nhạy cảm với các biến thể tư thế Sự chuyển động của đầu hoặc các vị trí khác nhau của máy ảnh có thể gây ra thay đổi cấu trúc khuôn mặt và nó sẽ tạo ra kết quả sai. d) Tắc nghẽn

Sự tắc nghẽn có nghĩa là khuôn mặt như râu, ria mép, các phụ kiện (kính bảo hộ, mũ lưỡi trai, mặt nạ, v.v.) cũng ảnh hưởng đến ước tính của hệ thống nhận dạng khuôn mặt. e) Biểu thức

Một yếu tố quan trọng khác cần được ghi nhớ là biểu hiện khác nhau của cùng một cá nhân Thay đổi biểu hiện trên khuôn mặt có thể tạo ra một kết quả khác cho cùng một cá nhân.

Quy trình hoạt động của hệ thống nhận diện khuôn mặt

Hình 1 1 Hệ thống nhận diện khuôn mặt a) Phát hiện khuôn mặt (Face Detection):

Chức năng chính của bước này là phát hiện ra khuôn mặt xem nó có xuất hiện ở trong một bức hình hay một đoạn video hay không? Tỉ lệ phát hiện ra khuôn mặt phụ thuộc nhiều vào điều kiện về độ sáng, hướng khuôn mặt, biểu hiện cảm xúc trên khuôn mặt hay các yếu tố môi trường khác Để hệ thống nhận dạng hoạt động đạt hiệu quả cao thì hình ảnh khuôn mặt sau khi được phát hiện cần chuẩn hóa về kích thước, ánh sáng b) Trích rút đặc trưng (Feature Extraction):

Sau khi phát hiện ra khuôn mặt trong bức ảnh, chúng ta tiến hành trích rút những đặc trưng của khuôn mặt Bước này trích xuất ra một vector đặc trưng đại diện cho một khuôn mặt Nó phải đảm bảo được tính duy nhất của một khuôn mặt c) Nhận dạng khuôn mặt (Face Recognition):

Với hình ảnh đầu vào sau khi phát hiện ra khuôn mặt, trích rút các đặc trưng của khuôn mặt và đem so sánh các đặc trưng này với cơ sở dữ liệu khuôn mặt d) Nhận dạng/Phân lớp.

Bước nhận dạng (recognition) hay phân lớp (classification), tức là xác định danh tính (identity) hay nhãn (label) của ảnh – đó là ảnh của ai.

Các phương pháp nhận dạng khuôn mặt phổ biến

Bài toán nhận dạng khuôn mặt được ứng dụng nhiều trong các lĩnh vực đời sống đặc biệt ở những lĩnh vực công nghệ cao, yêu cầu về an ninh, bảo mật Do đó để hệ thống nhận dạng khuônmặt hoạt động mạnh mẽ với tốc độ và độ tin cậy thì có rất nhiều các phương pháp về nhận dạng khuôn mặt được đưa ra Các phương pháp có thể được phân loại theo các tiêu chí khác nhau như nhận dạng với dữ liệu ảnh đầu vào là ảnh tĩnh 2D (Elastic Bunch Graph, Active Appearance Model) Phương pháp này là phổ biến nhất và tương lai sẽ là 3D (3D Morphable Model) Tuy nhiên trên thực tế người ta hay chia phương pháp nhận dạng khuôn mặt ra thành 2 loại [1][3]:

- Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Feature Base Face Recognition)

Cho tới nay bài toán này hầu như được giải quyết dựa trên phương pháp sử dụng các đặc trưng haar like Phương pháp này được cho là đơn giản và kết quả phát hiện là tương đối cao, lên tới 98%, các hãng sản xuất máy ảnh như Canon, Samsung… cũng đã tích hợp nó vào trong các sản phẩm của mình Và trong bài viết này, mình sẽ cùng các bạn tìm hiểu về phương pháp pháp phát hiện khuôn mặt của Violas và John được cài đặt trong OpenCV.

 Các đặc trưng Haar-Like[2]

Các đặc trưng Haar-Like là những hình chữ nhật được phân thành các vùng khác nhau như hình:

Hình 1 2 Các đặc trưng Haar Đặc trưng do Viola và Jones công bố gồm 4 đặc trưng cơ bản để xác định khuôn mặt người Mỗi đặc trưng Haar-Like là sự kết hợp của hai hay ba hình chữ nhật trắng hay đen như trong hình sau: Để sử dụng các đặc trưng này vào việc xác định khuôn mặt người, 4 đặc trưng Haar- Like cơ bản được mở rộng ra và được chia làm 3 tập đặc trưng như sau:

 Đặc trưng cạnh (edge feature)

 Đặc trưng đường (line feature)

 Đặc trưng xung quanh tâm (center-surround features)

Dùng các đặc trưng trên, ta có thể tính được các giá trị của đặc trưng Haar- Like là sự chênh lệch giữa tổng của các pixel của vùng đen và vùng trắng như trong công thức sau: f(x)=Tổng vùng đen (các mức xámcủa pixel)−Tổng vùng trắng ¿)

Viola và Joines đưa ra một khái niệm gọi là Integral Image, là một mảng 2 chiều với kích thước bằng với kích thước của ảnh cần tính đặc trưng Haar-Like, với mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó.

Hình 1 3 Cửa sổ trượt pixel

Công thức tính Intergral Image

Sau khi tính được Integral Image, việc tính tổng các giá trị mức xám của một vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản theo cách sau:

Giả sử ta cần tính tổng giá trị mức xám của vùng D như hình dưới, ta có thể tính được như sau:

Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự như vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3, và A là giá trị tại điểm P1 Vậy ta có thể viết lại biểu thức tính D ở trên như sau:

AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận boosting được Freund và Schapire đưa ra vào năm 1995 Adaboost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các weak classifiers để hình thành một trong các classifiers.

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 1 4 Mô hình phân tầng Cascade

Trong đó, h(k) là các bộ phân loại yếu, được biểu diễn như sau: h k ={ 1,∧nếu p 0,∧ngượclại k f k ( x )< p k θ k với: x: cửa sổ con cần xét θ k : ngưỡng f k : các giá trị đặc trưng của Haar-like p k : hệ số quyết định chiều của phương trình 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:

Với: a t ≥0 là hệ số chuẩn hóa cho các bộ phận loại yếu Đây là hình ảnh minh họa việc kết hợp các bộ phân loại yếu thành bộ phân loại mạnh

Hình 1 5 Kết hợp các bộ phân loại yếu thành bộ phân loại mạnh

- Nhận dạng dựa trên xét tổng thể toàn khuôn mặt (Appearance Based Face Recognition). Ở phương pháp này, thuật toán đã được đào tạo Mỗi biểu đồ được tạo được sử dụng để đại diện cho từng hình ảnh từ tập dữ liệu đào tạo Vì vậy, với một hình ảnh đầu vào, hệ thống sẽ thực hiện lại các bước cho hình ảnh mới này và tạo một biểu đồ đại diện cho hình ảnh.

 Xác minh hoặc xác thực hình ảnh khuôn mặt: về cơ bản nó so sánh hình ảnh khuôn mặt đầu vào với hình ảnh khuôn mặt liên quan đến người dùng đang yêu cầu xác thực Về cơ bản nó là một so sánh 1x1.

 Nhận dạng hoặc nhận dạng khuôn mặt: về cơ bản nó so sánh hình ảnh khuôn mặt đầu vào với tất cả các hình ảnh khuôn mặt từ một tập dữ liệu với mục đích tìm ra người dùng phù hợp với khuôn mặt đó Về cơ bản nó là một so sánh1xN

Ứng dụng của nhận diện khuôn mặt vào thực tiễn [3]

a) Giúp theo dõi sự hiện diện của học sinh

Bên cạnh việc giúp cho trường học an toàn hơn thì ứng dụng này còn có thêm khả năng theo dõi hoạt động tham dự của học sinh Nói cách khác là điểm danh sĩ số tham gia của các em, thay vì cách điểm danh truyền thống bằng danh sách, phát hiện và thông báo nhưng học sinh không đến lớp Điều này giúp quản lý học sinh tốt hơn giảm được khả năng tệ nạn ham chơi bỏ học của các em học sinh b) Mở khóa khuôn mặt trên các thiết bị thông minh Đây cũng là muột bước ngoặt đối với ngành công nghệ, bởi khi nhận diện khuôn mặt được ra đời thì cụ thể là ngành điện thoại đã phát triển thêm một loại khóa bảo mật bằng khuôn mặt Công nghệ này các bạn hiện nay có thể thấy trên dòng điện thoại iphone đang áp dụng và làm rất hiệu quả Chúng giúp bảo mật thông tin dữ liệu cá nhân một cách tốt nhất, an toàn nhất, thậm trí chúng còn bảo đảm ngay cả khi bạn bị mất điện thoại thì tội phạm vẫn không thể truy cập tiếp cận và lấy dữ liệu của bạn được c) Nhận diện khuôn mặt giúp ngăn chặn tội phạm tại cửa hàng

Hệ thống camera nhận dang khuôn mặt hiện đang được sử dụng để xác định được danh tính tội phạm hoặc chúng còn giúp chủ cửa hàng biết được tiền sử gian lận trước đó và thông báo để kịp thời ngăn chặn Những thông tin bao gồm hình ảnh cá nhân của tội phạm cùng với các dữ liệu sẽ được gửi đến hoặc thông báo đến chủ cửa hàng ngay lập tức Thành quả của công nghệ này nhìn thấy rõ rệt bằng việc số lượng tội phạm ở các cửa hàng giảm đáng kể d) Quảng cáo thông minh ở các công ty

Một khả năng của nhận diện khuôn mặt mà chúng ta ít ai có thể ngờ đến đó là khả năng làm cho quảng cáo, điều này giúp quảng cáo phân tích và nhắm chúng mục tiêu đối tượng khác hàng để đưa ra nhưng chương trình quảng cáo mang lại hiệu quả cao, giảm thêm một phần chi phí so với quảng cáo đại chà e) Tìm người thân bị mất tích

Khi có người bị mất tích, đặc biệt là ở trẻ em thì nhận diện khuôn mặt cũng phát huy được rất tốt giúp nhận diện được nạn nhân trong những vụ bắt cóc.

Nạn nhân bị bắt cóc đó được thêm vào cơ sở dữ liệu, các cơ quan thực thi pháp luôn có thể được ảnh báo ngay sau khi hệ thống nhận diện khuôn mặt thu thập được thông tin hình ảnh ở các khu vực có gắn camera như sân bay, cửa hàng hoặc cây xăng là những điểm công cộng f) Hỗ trợ đối với những khiếm thị

Một phần mềm đã được phát triển ứng dụng nhận diện khuôn mặt này giúp cho người khiếm thị có thể nhận ra mọi người khi họ đang mỉm cười và thông báo bằng chế độ rung Điều này có thể một phần nào đó giúp cho họ hiểu rõ hơn về các tình huống xã hội i) Nhận diện mọi người trên mạng xã hội

Có lẽ đây là tính năng mà chúng ta ai cũng điều đã được thấy và trải nghiệm rõ nhất, thực tế nhất và gần gũi nhất không xa lạ như những tính năng khác Bởi hiện nay trên thế giới cũng như ở các nước tự do thì mạng xã hội là công cụ cũng như ứng dụng phổ biến rộng rãi nhất điển hình như ông lớn FaceBook Điều này có thể thấy rõ nhất đó là khi bạn đăng 1 tấm hình bao gồm nhiều thành viên lên trên Fb công nghệ nhận diện khuôn mặt sẽ tự động đề xuất gắn thẻ các thành viên có mặt trong hình và cũng đang sử dụng mạng xã hội Facebook.

Chúng ta có thể thấy được ứng dụng này được áp dụng trong nhiều lĩnh vực khác nhau mang lại hiệu quả cao đối với cuộc sống Từ những ứng dụng đó ta có thể suy ra được, nhận diện khuôn mặt có rất nhiều lợi ích, cụ thể như sau:

- Không cần phải thực hiện tiếp xúc với thiết bị hay cá nhân vẫn có thể xác thực

- Cải thiện mức độ bảo mật

- Yêu cầu xử lý ít hơn so với các kĩ thuật khác

- Dễ dàng kết hợp với các tính năng bảo mật sẵn có

- Độ chính xác cao hơn và ngày một hoàn thiện

- Sử dụng vào tự động hóa xác thực

- Bảo mật quyền riêng tư của cá nhân một cách tối ưu nhất

Như vậy là chúng ta đã cùng nhau tìm hiểu một cách tổng quan về hệ thống nhận diện khuôn mặt, các phương thức và ứng dụng của nó trong thực tiễn cũng như trong cá nhân đề tài mà em đang nghiên cứu Để có một hệ thống hoàn chỉnh, hoạt động được như đúng mục tiêu đề ra, chúng ta phải nghiên cứu kỹ càng các nền tảng được sử dụng cũng như phân tích đúng vai trò của các Use được sử dụng Ở chương II,chúng ta sẽ cùng làm rõ điều này.

PHÂN TÍCH NỀN TẢNG CÔNG NGHỆ CƠ BẢN CỦA HỆ THỐNG NHẬN DIỆN KHUÔN MẶT

Ngôn ngữ lập trình Python[5]

Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.

Những lợi ích của Python bao gồm:

- Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngôn ngữ này có cú pháp cơ bản giống tiếng Anh

- Python giúp cải thiện năng suất làm việc của các nhà phát triển vì so với những ngôn ngữ khác, họ có thể sử dụng ít dòng mã hơn để viết một chương trình Python.

- Python có một thư viện tiêu chuẩn lớn, chứa nhiều dòng mã có thể tái sử dụng cho hầu hết mọi tác vụ Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu.

- Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổ biến khác như Java, C và C++.

- Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình hỗ trợ trên toàn thế giới Nếu gặp phải vấn đề, bạn sẽ có thể nhận được sự hỗ trợ nhanh chóng từ cộng đồng.

- Trên Internet có rất nhiều tài nguyên hữu ích nếu bạn muốn học Python Ví dụ: bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển.

- Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau, chẳng hạn như Windows, macOS, Linux và Unix.

- Ngôn ngữ Python được sử dụng nhiều trong lĩnh vực phát triển ứng dụng, bao gồm những ví dụ sau:

 Phát triển web phía máy chủ

 Tự động hóa bằng các tập lệnh Python

 Khoa học dữ liệu và máy học

 Tự động hóa kiểm thử phần mềm

2.1.2 Các thư viện được dùng trong dự án [6] a) Thư viện Pandas

Pandas cung cấp cấu trúc dữ liệu được tối ưu hóa và linh hoạt mà bạn có thể sử dụng để thao tác với dữ liệu chuỗi thời gian và dữ liệu có cấu trúc, chẳng hạn như bảng và nhóm Ví dụ, bạn có thể sử dụng Pandas để đọc, ghi, hợp nhất, lọc và nhóm dữ liệu. Thư viện này được nhiều người sử dụng cho các tác vụ khoa học dữ liệu, phân tích dữ liệu và ML. b) Thư viện NumPy

NumPy là một thư viện phổ biến mà các nhà phát triển sử dụng để dễ dàng tạo và quản lý nhóm, thao tác với các hình dạng logic và thực hiện các phép toán đại số tuyến tính

Ngoài ra còn rất nhiều thư viện khác như:

OpenCV-Python

OpenCV-Python là một thư viện mà các nhà phát triển sử dụng để xử lý hình ảnh cho các ứng dụng thị giác máy tính Thư viện này cung cấp nhiều hàm cho các tác vụ xử lý hình ảnh như đọc và ghi hình ảnh cùng lúc, xây dựng môi trường 3D từ môi trường 2D cũng như chụp và phân tích hình ảnh từ video.

Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky OpenCV viết tắt cho Open Source Computer Vision Library OpenCV là thư viện nguồn mở hàng đầu cho Computer Vision và Machine Learning, và hiện có thêm tính năng tăng tốc GPU cho các hoạt động theo real-time.

Trước Opencv không có một công cụ chuẩn nào cho lĩnh vực xử lí ảnh Các đoạn code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định Các bộ công cụ thương mại như Matlab, Simulink, v.v lại có giá cao chỉ thích hợp cho các công ty phát triển các ứng dụng lớn Ngoài ra còn có các giải phảp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho tứng thiết bị, rất khó khan cho việc mở rộng ứng dụng.

OpenCV được sử dụng cho đa dạng nhiều mục đích và ứng dụng khác nhau bao gồm:

 Kiểm tra và giám sát tự động

 Robot và xe hơi tự lái

 Phân tích hình ảnh y học

 Tìm kiếm và phục hồi hình ảnh/video

 Phim – cấu trúc 3D từ chuyển động

 Nghệ thuật sắp đặt tương tác

2.3.2 Tính năng và các module phổ biển của OpenCV [14]

Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm tính năng và module tương ứng như sau:

 Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)

 Phát hiện các vật thể (objdetect, features2d, nonfree)

 Thị giác máy tính bằng một mắt hoặc âm thanh nổi dựa trên hình học (calib3d, stitching, videostab)

 Nhiếp ảnh điện toán (photo, video, superres)

 Học máy & phân cụm (ml, flann)

OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết tĩnh(static libraries) hoặc thư viện liên kết động (shared libraries) Xin phép liệt kê một số định nghĩa chi tiết các module phổ biến có sẵn như sau:

 Core functionality (core) – module nhỏ gọn để xác định cấu trúc dữ liệu cơ bản, bao gồm mảng đa chiều dày đặc và nhiều chức năng cơ bản được sử dụng bởi tất cả các module khác.

 Image Processing (imgproc) – module xử lý hình ảnh gồm cả lọc hình ảnh tuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổi hình học (chỉnh size, afin và warp phối cảnh, ánh xạ lại dựa trên bảng chung), chuyển đổi không gian màu, biểu đồ, và nhiều cái khác.

 Video Analysis (video) – module phân tích video bao gồm các tính năng ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể

 Camera Calibration and 3D Reconstruction (calib3d) – thuật toán hình học đa chiều cơ bản, hiệu chuẩn máy ảnh single và stereo (single and stereo camera calibration), dự đoán kiểu dáng của đối tượng (object pose estimation), thuật toán thư tín âm thanh nổi (stereo correspondence algorithms) và các yếu tố tái tạo 3D.

 2D Features Framework (features2d) – phát hiện các đặc tính nổi bật của bộ nhận diện, bộ truy xuất thông số, thông số đối chọi.

 Object Detection (objdetect) – phát hiện các đối tượng và mô phỏng của các hàm được định nghĩa sẵn – predefined classes (vd: khuôn mặt, mắt, cốc, con người, xe hơi,…).

 High-level GUI (highgui) – giao diện dễ dùng để thực hiện việc giao tiếp UI đơn giản.

 Video I/O (videoio) – giao diện dễ dùng để thu và mã hóa video.

 GPU – Các thuật toán tăng tốc GPU từ các modun OpenCV khác.

 … và một số module hỗ trợ khác, ví dụ như FLANN và Google test wrapper,Python binding, v.v.

Môi trường lập trình JetBrains PyCharm Community Edition

PyCharm là một nền tảng phát triển tích hợp tối đa nền tảng (IDE) được thiết kế dành riêng cho các lập trình viên Python Phần mềm này được JetBrains phát triển nhằm mục đích cung cấp tất cả các công cụ cần thiết để tăng năng suất của các lập trình viên Python Pycharm được trang bị sẵn các yếu tố mở rộng bao gồm biên dịch mã, điều hướng project nhanh, tô sáng cú pháp, công cụ cơ sở dữ liệu và trình soạn thảo văn bản có lập trình để thúc đẩy phát triển Web.

Tương tự như Python, PyCharm là một trong những IDE được nhiều người tin tưởng và sử dụng rộng rãi nhất trong các ngôn ngữ lập trình Ngày nay, những doanh nghiệp có sức ảnh hưởng như Twitter, Symantec và Pinterest cũng đang dùng công cụ Pycharm để làm IDE Python.

Một trong những ưu thế vượt trội của việc sử dụng PyCharm là nó cung cấp API cho các nhà phát triển và cho phép họ viết các plugin của riêng mình để mở rộng các tính năng Phần mềm này tương thích với Windows, Linux và macOS, hỗ trợ các lập trình viên Python tiết kiệm được rất nhiều thời gian trong lúc viết nhiều ứng dụng một cách hiệu quả.

Ngoài ra, nó có một phiên bản cộng đồng miễn phí phù hợp với các ứng dụng Python nhỏ và một phiên bản chuyên nghiệp trả phí dành cho việc xây dựng các ứng dụng Python quy mô lớn, với đầy đủ những tính năng sau:

 Tự động hoàn thành và kiểm tra mã

 Xử lý lỗi và sửa lỗi nhanh chóng

 Làm sạch mã mà không thay đổi chức năng

 Hỗ trợ các khung ứng dụng web như Django và Flask

 Hỗ trợ các ngôn ngữ lập trình khác, chẳng hạn như JavaScript, CoffeeScript, TypeScript, AngularJS và Node

 Các công cụ và thư viện khoa học như Matplotlib và NumPy

 Khả năng chạy, gỡ lỗi, kiểm thử và triển khai các ứng dụng trong máy ảo từ xa

 Trình gỡ lỗi để tìm lỗi trong mã, trình kiểm tra để xác định các vấn đề về hiệu suất trong mã và trình chạy thử nghiệm để chạy các bài kiểm thử đơn vị

 Hỗ trợ cơ sở dữ liệu

Trên đây là những phân tích để chúng ta có thể nhận thấy được ngôn ngữ Python cùng với các thư viện và môi trường của nó có thể giải quyết được vấn đề em đã nêu ở trên.

Hệ quản trị cơ sở dữ liệu MySQL

Trong dự án này, ngoài việc xây dựng một hệ thống điểm danh có thể hoạt động được thì em phải tạo một cơ sở dữ liệu để có thể thống kê được các danh sách cụ thể như: danh sách sinh viên, danh sách giảng viên, danh sách lớp học, danh sách buổi học, danh sách điểm danh, … Với quy mô dự án này em sẽ sử dụng hệ quản trị cơ sở dữ liệu MySQL để phù hợp với tính năng cũng như chi phí Chúng ta cùng phân tích hệ quản trị cơ sở dư liệu MySQL là gì?

MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (gọi tắt là RDBMS) hoạt động theo mô hình client-server Với RDBMS là viết tắt của Relational Database Management System MySQL được tích hợp apache, PHP MySQL quản lý dữ liệu thông qua các cơ sở dữ liệu Mỗi cơ sở dữ liệu có thể có nhiều bảng quan hệ chứa dữ liệu MySQL cũng có cùng một cách truy xuất và mã lệnh tương tự với ngôn ngữ SQL.

MySQL có khá nhiều những ưu điểm riêng Tuy nhiên, song song với đó, nó vẫn còn tồn tại một số những nhược điểm Hãy cùng tìm hiểu chi tiết về ưu nhược điểm của MySQL.

- Dễ sử dụng: MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng và hoạt động trên nhiề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.

- Độ bảo mật cao: MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên Internet khi sở hữu nhiều nhiều tính năng bảo mật thậm chí là ở cấp cao.

- Đa tính năng: MySQL hỗ trợ rất nhiều chức năng SQL được mong chờ từ một hệ quản trị cơ sở dữ liệu quan hệ cả trực tiếp lẫn gián tiếp.

- Khả năng mở rộng và mạnh mẽ: MySQL có thể xử lý rất nhiều dữ liệu và hơn thế nữa nó có thể được mở rộng nếu cần thiết.

- Nhanh chóng: Việc đưa ra một số tiêu chuẩn cho phép MySQL để làm việc rất hiệu quả và tiết kiệm chi phí, do đó nó làm tăng tốc độ thực thi.

- Giới hạn: Theo thiết kế, MySQL không có ý định làm tất cả và nó đi kèm với các hạn chế về chức năng mà một vào ứng dụng có thể cần.

- Độ tin cậy: Cách các chức năng cụ thể được xử lý với MySQL (ví dụ tài liệu tham khảo, các giao dịch, kiểm toán,…) làm cho nó kém tin cậy hơn so với một số hệ quản trị cơ sở dữ liệu quan hệ khác.

- Dung lượng hạn chế: Nếu số bản ghi của bạn lớn dần lên thì việc truy xuất dữ liệu của bạn là khá khó khăn, khi đó chúng ta sẽ phải áp dụng nhiều biện pháp để tăng tốc độ truy xuất dữ liệu như là chia tải database này ra nhiều server, hoặc tạo cache MySQL

Mặc dù còn tồn tại khá nhiều hận chế nhưng chúng ta không thể phủ nhận những ưu điểm mà hệ sơ sở này mang lại Bằng chứng ở đây là trên thế giới đang có rất nhiều ông lớn về công nghệ còn đang phụ thuộc vào MySQL, ví du: cPanel, DirectAdmin, WordPress Những lí do qua trọng nhất ở đây là:

- MySQL là CSDL có tốc độ khá cao, ổn định và khá dễ sử dụng có thể hoạt động được trên khá nhiều hệ điều hành.

- Tính bảo mật mạnh và sử dụng được trên nhiều ứng dụng mà MySQL còn hoàn toàn được sử dụng miễn phí.

- MySQL không chỉ dừng lại ở bổ trợ cho PHP và Perl, mà nó còn bổ trợ cho nhiều ngôn ngữ khác, Nó là nơi để lưu trữ thông tin trên các trang web được viết bằng Perl hoặc PHP.

Với những lí do trên em đã tự tin để có thể sử dụng hệ cơ sở dữ liệu MySQL để ứng dụng vào dự án của mình.

Giao diện hỗ trợ Tkinter

Để trực quan hóa phần giao diện đồ họa của phần mềm, em lựa chọn đến giao diện hỗ trợ Tkinter.

Framework này cung cấp cho người dùng Python một cách đơn giản để tạo các phần tử GUI bằng cách sử dụng các tiện ích có trong bộ công cụ Tk Tiện ích Tk có thể được sử dụng để xây dựng các button, menu, field, v.v trong ứng dụng Python Sau khi được tạo, các phần tử đồ họa này có thể được liên kết hoặc tương tác với các tính năng, chức năng, phương thức, dữ liệu hoặc thậm chí các tiện ích con khác.

Ví dụ: tiện ích nút có thể chấp nhận nhấp chuột và cũng có thể được lập trình để thực hiện một số loại hành động, chẳng hạn như thoát khỏi ứng dụng Tương tự như giao diện đăng nhập và các giao diện khác có mặt trong hệ thống.

THIẾT KẾ HỆ THỐNG ĐIỂM DANH BẰNG PHƯƠNG PHÁP NHẬN DIỆN KHUÔN MẶT

Yêu cầu bài toán

Như đã đặt vấn đề ở phần mở đầu, bài toán hiện tại cần giải quyết là làm thế nào để phát triển được một hệ thống điểm danh bằng phương pháp nhận diện khuôn mặt.

Hệ thống có thể tự ghi nhận và thống kê danh sách điểm danh sinh viên có thời gian vào ra cụ thể, phát hiện sinh viên đi học hộ, điểm danh thay Ngoài ra, hệ thống được tạo ra còn phải động tốt và ứng dụng được một phần nào đó vào trường Đại học Vinh. Trong đề tài này, chúng ta tập trung tìm kiếm và đề xuất một thuật toán hiệu quả nhận dạng khuôn mặt nhằm kiểm tra việc vào ra lớp học của học sinh trường đại học Do các khó khăn của bài toán nhận dạng khuôn mặt như: Tư thế góc chụp, sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt, sự biểu cảm của khuôn mặt, sự che khuất, hướng của ảnh, điều kiện của ảnh

Vì thế em đư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:

- Góc ảnh trực diện (frontal) hoặc gần như trực diện, không bị che khuất

- Ảnh được chụp trong điều kiện ánh sáng bình thường.

- Cơ sở dữ liệu ảnh nhỏ, khoảng trăm ảnh. Ảnh được xét là ảnh số, nghĩa là ảnh mặt người được chụp từ các thiết bị như máy ảnh số, camera,…Không xem xét các ảnh mặt người nhân tạo như vẽ, điêu khắc

Sơ lược về hệ thống sẽ bao gồm:

+ Các database về: Thông tin môn học, danh sách sinh viên, danh sách giảng viên đào tạo, danh sách các buổi học, danh sách thống kê theo từng buổi học.

+ Dữ liệu sẽ được cập nhật và gửi lên MySQL, có thể nhập và xuất (file excel) dữ liệu.

+ Hệ thống được triển khai tại các lớp học, thao tác trực tiếp trên máy tính của giảng viên bộ môn hoặc một admin phụ trách điểm danh.

+ Các đối tượng tham gia sử dụng hệ thống:

- Tham gia điểm danh Giảng viên:

- Quản lý thông tin lớp học phân cũng như danh sách sinh viên trong lớp học phần, môn học.

- Quản lý việc điểm danh sinh viên.

- Xem báo cáo thống kê của lớp học phần.

- Có tất cả các quyền của Giảng viên.

- Quản lý tất cả các giảng viên và sinh viên theo danh sách.

- Xem báo cáo thống kê của tất cả các học phần

Phân tích hệ thống

Nhiệm vụ chính của chương trình là nhận dạng một khuôn mặt người xem khuôn mặt đó có được biết đến hay chưa Ngoài ra, chương trình còn thực hiện công việc phát hiện, tách các khuôn mặt người (nếu có) từ một ảnh tĩnh, hoặc từ các frame ảnh thu được từ camera Sau đó, lưu vào CSDL làm tập mẫu

- Như vậy, các chức năng của chương trình bao gồm:

 Lấy một ảnh từ kết nối đến webcam hiển thị lên

 Thực hiện tách các khuôn mặt

 Thực hiện lưu khuôn mặt phát hiện được vào CSDL

 Nhận dạng ảnh một khuôn mặt Nếu “biết” người đó (có lưu thông tin trong CSDL) thì hiển thị tên và một ảnh của người đó Nếu “không biết” (không có thông tin của người đó trong CSDL) thì hiển thị 1 màu đen lên màn hình và tên người là: “Unknow”

3.2.1 Phân tích các tác nhân

Tác nhân Các ca sử dụng nghiệp vụ Kết quả đem lại

Nhập thông tin học sinh Lưu tất cả các thông tin về học sinh mới vào hệ thống Sửa thông tin học sinh Cập nhật thông tin học sinh vào hệ thống Xóa thông tin học sinh Xóa tất cả thông tin học sinh khỏi hệ thống Lấy ảnh nhận diện cho học sinh Lấy dữ liệu ảnh khuôn mặt học sinh để tiến hành training tạo ra model nhận dạng khuôn mặt Tìm thông tin học sinh Hiện thị thông tin học sinh vừa nhập vào qua tìm kiếm theo Id, Tên hoặc số điện thoại Nhập thông tin giảng viên Lưu tất cả các thông tin về giảng viên mới vào hệ thống

Sửa thông tin giảng viên Cập nhật thông tin giảng viên vào hệ thống Xóa thông tin giảng viên Xóa tất cả thông tin giảng viên khỏi hệ thống Tìm thông tin giảng viên Hiện thị thông tin giảng viên vừa nhập vào qua tìm kiếm theo Id, Tên hoặc số điện thoại Nhập thông tin môn học Lưu tất cả thông tin về môn học mới nhập vào hệ thống Tìm thông tin môn học Lưu tất cả thông môn học mới vào hệ thống Sửa thông tin môn học Cập nhật thông tin môn học vào hệ thống Xóa thông tin môn học Xóa tất cả thông tin môn học khỏi hệ thống Quản lý môn học cho học sinh Thêm, sửa, xóa môn học cho từng học sinh Tìm thông tin môn học học sinh Hiện thị các môn học của học sinh đăng ký học theo

Id, tên, … Quản lý môn học cho giảng viên Thêm, sửa, xóa môn học cho từng học sinh Tìm thông tin môn học cho giảng viên Hiển thị các môn học của giảng viên theo Id, … Nhập buổi học cho từng môn học Lưu tất cả thông tin buổi học của môn học đã có lên hệ thống Sửa thông tin buổi học Cập nhật thông tin buổi học lên hệ thống Xóa thông tin buổi học Xóa tất cả thông tin buổi học trên thống Tìm thông tin buổi học Hiển thị thông tin buổi học của các môn học theo ngày, Id môn học, Id buổi học, … Thống kê học sinh đi muộn Hiển thị danh sách học sinh đi học muộn theo ngày, Id học sinh, Id buổi học, … Thống kê học sinh đi vắng Hiển thị danh sách học sinh đi vắng theo ngày, Id học sinh, Id buổi học, … Thống kê học sinh không điểm danh Hiển thị danh sách học sinh không điểm danh theo ngày, Id học sinh, Id buổi học, … Giảng viên Nhận dạng học sinh theo buổi học Nhận dạng được học sinh theo từng buổi học có trong ngày và lọc các học sinh không có trong danh sách lớp cũng như không có dữ liệu khuôn mặt Lưu thông tin điểm danh học sinh theo buổi học

Lưu thông tin học sinh, thời gian điểm danh, trạng thái điểm danh của học sinh (Có mặt, Đi muộn,

Bảng 3 1 Phân tích các tác nhân

3.2.2 Phân tích thuật toán a) Thuật toán nhận diện khuôn mặt Viola-Jones [12][13]

Viola và Jone đề xuất một thuật toán có khả năng phát hiện các vật thể bất kì trong hình ảnh, thuật toán này có thể chạy trong thời gian thực, giúp phát hiện các đối tượng trong video stream Để phát hiện vạ nhận dạng được một khuôn mặt người, trong bức ảnh trên, chúng ta phải cung cấp các mẫu positive và negative của riêng mình, huấn luyện bộ phân loại riêng cho từng khuôn mặt Thật may là OpenCV đã giúp chúng ta không phải làm điều đó OpenCV có thể thực hiện phát hiện khuôn mặt bằng các sử dụng cascade được đào tạo trước: Đối với mỗi điểm dừng dọc theo đường dẫn cửa sổ trượt, năm tính năng hình chữ nhật được tính:

Nếu bạn đã quen thuộc với wavelet, bạn có thể thấy rằng chúng có một số điểm tương đồng với các chức năng cơ bản Haar wavlet. Để có được các tính năng cho từng khu vực trong năm hình chữ nhật này, chúng ta chỉ cần trừ tổng số pixel ở vùng trắng cho tổng số pixel ở vùng đen Thật thú vị, các tính năng này có tầm quan trọng thực sự trong bối cảnh nhận diện khuôn mặt:

- Vùng mắt có xu hướng tối hơn vùng má.

- Vùng mũi sáng hơn vùng mắt.

Do đó, với năm vùng hình chữ nhật này, chúng ta có thể tạo thành các đặc điểm có thể phân loại các phần của khuôn mặt Sau đó, đối với toàn bộ tập hợp các tính năng, chúng ta sẽ sử dụng thuật toán AdaBoost để chọn những tính năng tương ứng với các vùng trên khuôn mặt của hình ảnh.

Tuy nhiên, như bạn có thể tưởng tượng, sử dụng một cửa sổ trượt cố định và trượt nó trên mọi (x, y) của hình ảnh, tiếp theo là tính toán các Haar-like feature và cuối cùng thực hiện phân loại thực tế có thể tốn kém về mặt tính toán. Để chống lại điều này, Viola và Jones đã đưa ra khái niệm về cascade hoặc stages Tại mỗi điểm dừng dọc theo đường dẫn cửa sổ trượt, cửa sổ phải vượt qua một loạt các thử nghiệm trong đó mỗi thử nghiệm tiếp theo đắt hơn về mặt tính toán so với trước đó Nếu bất kỳ một thử nghiệm thất bại, cửa sổ sẽ tự động bị loại bỏ. b) Thuật toán LBPH

Local Binary Pattern (LBP) là một toán tử kết cấu đơn giản nhưng rất hiệu quả, nó gắn nhãn các pixel của hình ảnh bằng cách ngưỡng vùng lân cận của mỗi pixel và coi kết quả là một số nhị phân.

Sử dụng LBP kết hợp với biểu đồ, chúng ta có thể biểu diễn hình ảnh khuôn mặt bằng một vectơ dữ liệu đơn giản.

 Tham số: LBPH sử dụng 4 tham số:

 Radius: bán kính được sử dụng để xây dựng mẫu nhị phân cục bộ hình tròn và đại diện cho bán kính xung quanh pixel trung tâm Nó thường được đặt thành 1.

 Vùng lân cận: số lượng điểm mẫu để xây dựng mẫu nhị phân cục bộ hình tròn. Hãy nhớ rằng: bạn càng đưa vào nhiều điểm mẫu, thì chi phí tính toán càng cao.

Nó thường được đặt thành 8.

 Grid X: số ô theo hướng ngang Càng nhiều ô, lưới càng mịn, thì số chiều của vectơ đặc trưng thu được càng cao Nó thường được đặt thành 8.

 Grid Y: số ô theo hướng dọc Càng nhiều ô, lưới càng mịn, thì số chiều của vectơ đặc trưng thu được càng cao Nó thường được đặt thành 8.

 Áp dụng phép toán LBP [12]:

Bước tính toán đầu tiên của LBPH là tạo ra một hình ảnh trung gian mô tả hình ảnh gốc một cách tốt hơn, bằng cách làm nổi bật các đặc điểm trên khuôn mặt Để làm như vậy, thuật toán sử dụng khái niệm cửa sổ trượt, dựa trên bán kính tham số và các vùng lân cận.

Bây giờ, sử dụng hình ảnh được tạo ở bước cuối cùng, chúng ta có thể sử dụng các tham số Lưới X và Lưới Y để chia hình ảnh thành nhiều lưới, như có thể thấy trong hình sau:

 Thực hiện nhận dạng khuôn mặt: Ở bước này, thuật toán đã được đào tạo Mỗi biểu đồ được tạo được sử dụng để đại diện cho từng hình ảnh từ tập dữ liệu đào tạo Vì vậy, với một hình ảnh đầu vào, chúng tôi thực hiện lại các bước cho hình ảnh mới này và tạo một biểu đồ đại diện cho hình ảnh.

Quy trình thiết kế hệ thống

Sau khi đã phân tích rõ các tính năng, tác nhân, lựa chọn các nền tảng công nghệ phù hợp em tiến hành thiết kế hệ thống.

Với các chức năng nêu trên, chương trình được chia thành 5 phần chính:

 Xử lý ảnh đầu vào.

Bước 1: Sử dụng ngôn ngữ Python để tạo giao diện hệ thống trên môi trường

PyCharm và các thư viện đã nêu. Để tạo được những giao diện dưới đây, đồ án này cần phải xây dựng một số biểu đồ tuần tự liên quan đến từng giao diện Mặc dù đã phân tích ở chương II nhưng trong phần trình bày này sẽ nhắc lại để dễ hình dung hơn.

Những icon được tải về từ free icon, background và khung của giao diện được thiết kế ở draw.io Ở đây chúng ta có thể hoàn toàn thỏa sức sáng tạo theo ý riêng Đồ án này cũng có những nét riêng của nó.

Hình 3 11 Sơ đồ thực hiện chương trình

Hình 3 12 Biểu đồ tuần tự đăng nhập

- Giải thuật: Theo hướng mũi tên của biểu đồ tuần tự đăng nhập, Nhân viên nhập tên đăng nhập và mật khẩu, form đăng nhập sẽ kiểm tra xem đúng hoặc sai để trả kết quả

- Code minh họa để khởi tạo giao diện:

Hình 3 14 Giao diện đăng nhập hệ thốngHình 3 13 Code tạo giao diện đăng nhập

- Code minh họa để khởi tạo giao diện

Phần code còn lại ở phụ lục sẽ bổ sung các button cũng như quan hệ của từng lớp.

Hình 3 15 Code tạo giao diện trang chủ

Hình 3 16 Giao diện trang chủ

*) Giao diện quản lý chung

- Code minh họa để khởi tạo giao diệnHình 3 17 Code khởi tạo giao diện quản lý chung

Hình 3 18 Giao diện quản lý chung

*) Giao diện quản lý sinh viên

: Admin : Admin Form Sinh vien Form Sinh vien Controller Controller Database Database

Chon chuc nang Hiên thi form yêu cau

Nhap thong tin yêu cau

Thuc hien yeu cau Tra ve ket qua Tra ve ket qua

Câp nhat len he thông

Hình 3 19 Biểu đồ tuần tự quản lý sinh viên

- Giải thuật: Sau khi Admin chọn form hiển thị và nhập thông tin sinh viên thì hệ thống sẽ kiểm tra, xử lý yêu cầu Gửi thông tin lên database và trả kết quả.

- Code minh họa của giao diện quản lý sinh viên:

Hình 3 21 Giao diện quản lý sinh viên

*) Giao diện quản lý giảng viên

Hình 3 20 Code minh họa khởi tạo giao diện quản lý sinh viên

Chon chuc nang Hiên thi form yêu cau

Nhap thong tin yêu cau

Thuc hien yeu cau Tra ve ket qua Tra ve ket qua

Câp nhat len he thông

Hình 3 22 Biểu đồ tuần tự quản lý giảng viên

- Giải thuật: Sau khi Admin chọn form hiển thị và nhập thông tin giảng viên thì hệ thống sẽ kiểm tra, xử lý yêu cầu Gửi thông tin lên database và trả kết quả.

- Code khởi tạo giao diện quản lý giảng viên

Hình 3 24 Giao diện quản lý giảng viên

*) Giao diện quản lý lớp học

Hình 3 23 Code khởi tạo giao diện quản lý giảng viên

: Admin Form Môn hoc Form Môn hoc Controller Controller Database Database

Chon chuc nang Hiên thi form yêu cau

Nhap thong tin yêu cau

Thuc hien yeu cau Tra ve ket qua Tra ve ket qua

Câp nhat len he thông

Hình 3 25 Biểu đồ tuần tự quản lý lớp học

- Giải thuật: Sau khi Admin chọn form hiển thị và nhập thông tin lớp thì hệ thống sẽ kiểm tra, xử lý yêu cầu Gửi thông tin lên database và trả kết quả.

- Code khởi tạo giao diện quản lý lớp học

Hình 3 26 Code khởi tạo giao diện quản lý lớp học

Hình 3 27 Giao diện quản lý môn học

*) Giao diện quản lý lịch học

Hình 3 29 Giao diện quản lý lịch họcHình 3 28 Code khởi tạo giao diện quản lý lịch học

*) Giao diện nhận dạng và điểm danh

Hình 3 30 Code khởi tạo màn hình nhận diện

Hình 3 31 Giao diện nhận dạng và điểm danh

*) Giao diện quản lý thông tin điểm danh

Hình 3 33 Giao diện quản lý thông tin điểm danh

*) Giao diện thống kê hệ thống

Hình 3 32 Code khởi tạo giao diện quản lý thông tin điểm danh

Chon chuc nang thông kê

Hiên thi form thông kê

Chon thông kê ds sinh viên diem danh

Yêu câu thông kê sinh viên diem danh

Truy vân DS sinh viên di muon,nghi hoc

Tra vê kêt qua Tra vê kêt qua

Hình 3 34 Biểu đồ tuần tự thống kê hệ thống

- Giải thuật: Sau khi admin chọn thống kê danh sách điểm danh thì hệ thống sẽ xử lý yêu cầu, truy vấn lên database để phân loại được danh sách sinh viên đi muộn, nghỉ học và trả kết quả.

- Code khởi tạo giao diện thống kê hệ thống:

Hình 3 35 Code khởi tạo giao diện thống kê hệ thống

Hình 3 36 Giao diện thống kê hệ thống

Bước 2: Cài đặt hệ quản trị dữ liệu MySQL Ở quy mô dự án mang tính học tập và nghiên cứu như thế này, em sử dụng phần mềm XAPP bởi lẽ nó cho phép giả lập môi trường server hosting ngay trên máy tính cá nhân, cho phép bạn chạy demo website mà không cần phải mua hosting hay VPS.

XAMPP được viết tắt của X + Apache + MySQL + PHP + Perl vì nó được tích hợp sẵn Apache, MySQL, PHP, FTP server, Mail Server.

Một số lưu ý nhỏ để cài đặt XAMPP:

- Gỡ hết phần mềm liên quan đến thiết lập localhost như: PHP, MySQL.

- Đổi port cho 1 số phần mềm đang chiếm dụng cổng 80 hoặc 443.

- Nếu máy chủ đã được cài đặt sẵn IIS thì không cần thiết phải cài thêm Xampp.

- Tắt cài đặt tường lửa trên Windows, cũng như tất cả các phần mềm Antivirus khác.

- Tắt User Account Control trên Windows để tránh bị giới hạn quyền truy cập.

Bước 3: Sau khi đã cài đặt xong, Mở XAMPP lên Ở cột MySQL và Apeche chọn Start như hình:

Hình 3 37 Giao diện khởi tạo Xampp

- Nếu không Start đc Apeche đổi cổng thành 8080.

- MYSQL để mặc định, không cần chỉnh sửa gì.

- Sau khi đã Start thành công Apache và MySQL mở PHPMyAdmin bằng đường dẫn: http://localhost/phpmyadmin/ nếu đổi port Apeche sang 8080 thì truy cập: http://localhost:8080/phpmyadmin/

Sau khi vào trang chủ phpMyAdmin chọn New

Hình 3 38 Thiết lập cơ sở dữ liệu Face_recognizer

+ Nhập database name: face_recognizer Click chọn Create

Hình 3 39 Thiết lập cơ sở dữ liệu Face_recognizer

+ Chọn database mới tạo và nhấn Import để thêm file sql đã tạo từ trước

Hình 3 40 Thiết lập cơ sở dữ liệu Face_recognizer

Bước 4: Thiết kế cơ sở dữ liệu

Dựa trên những phân tích ở mục 3.2.3 để triển khai thiết kế cơ sở dữ liệu.

Bước 5: Mở file dự án bằng Pycharm và cài bổ sung các thư viện còn thiếu [10][11]

- pip install opencv-contrib-python

Bước 6: Để chạy thử chương trình ta Run file LoginPage.py Đăng nhập bằng tài khoản Admin bằng cách chọn đăng nhập bằng Admin để được cấp quyền truy cập cao nhất.

Pass:123456 (Tích vào chọn đăng nhập bằng quyền admin)

*) Hướng dẫn sử dụng Phần mềm

Bạn có thể đăng nhập phần mềm bằng tài khoản admin hoặc tài khoản giáo viên. +) Admin: cho phép sử dụng tất cả các chức năng của phần mềm.

*) Học sinh: Thêm, sửa, xóa thông tin học sinh, chụp ảnh học sinh bằng Webcam.

Sau khi đã chụp ảnh học sinh xong Chọn Training Data để Train model nhận dạng học sinh.

*) Buổi học: Thêm, sửa, xóa thông tin buổi học của từng môn học.

*) Xem ảnh: Xem tất cả các ảnh của học sinh đã chụp trong máy.

*) Nhận dạng: Cho phép điểm danh tất cả các buổi học trong ngày

Chọn Lớp học có buổi học trong ngày sau đó chọn Mở Camera để bắt đầu điểm danh:

Hệ thống sẽ thông báo ra màn hình những học sinh điểm danh thành công và lưu lên database.

Những học sinh chưa có dữ liệu khuôn mặt hoặc không có trong tiết học sẽ thông báo lên màn hình.

Kiểm tra thời gian vào, ra lớp và so sánh với thời gian bắt đầu/kết thúc của tiết học qua đó lưu trạng thái điểm danh (Đi muộn, vắng, Có mặt) lên Database

*) Điểm danh: Cho phép xem thông tin tất cả các bản điểm danh đc lưu trữ trên DB

*) Thống kê: Thống kê các học sinh đi muộn, trốn về sớm hoặc không điểm danh

*) Xuất file excel: Có trong các chức năng Điểm danh, thống kê

*) Thêm danh sách học sinh, buổi học bằng file excel: Thêm các danh sách học sinh theo mẫu excel có sẵn lên database

Thử nghiệm và đánh giá hệ thống

Tình huống 1: Điểm danh vào lớp

Hình 3 41 Điểm danh vào lớp

Tình huống 2: Thêm danh sách sinh viên và lớp biên chế

Hình 3 42 Thêm danh sách sinh viên

Tính huống 3: Thống kê danh sách điểm danh và xuất dữ liệu ra file csv

Hình 3 43 Thống kê điểm danh

Hình 3 44 Xuất danh sách ra file csv 3.3.2 Đánh giá hệ thống

Hệ thống đã cơ bản giải quyết được vấn đề bài toán đặt ra, cụ thể như sau:

- Cho phép việc cập nhật thông tin sinh viên, giảng viên, lịch học.

- Hệ thống cho phép điểm danh sinh viên vào, ra khỏi lớp học và đã thống kê được danh sách sinh viên có mặt, vắng mặt, đi muộn một cách chính xác và rõ ràng

- Việc nhận diện các khuôn mặt còn hạn chế một số góc nhìn.

- Thuật toán sử dụng chưa được tối ưu.

- Việc nhập thời khóa biểu còn mất khá nhiều thời gian.

Như vậy đồ án này em đã thiết kế thành công hệ thống điểm danh bằng phương pháp nhận diện khuôn mặt thỏa mãn các yêu cầu đề ra Đám bảo cho hệ thống hoạt động ổn định, chính xác Một số ưu nhược điểm của hệ thống như sau: Ưu điểm:

- Tận dụng được các cơ sở dữ liệu cũ của đơn vị.

- Tốc độ truy xuất nhanh.

- Đã hỗ trợ nhiều chức năng quản lý sinh viên, buổi học,…

- Giao diện dễ dùng, đáp ứng nghiệp vụ điểm danh, quản lý học sinh trong buổi học.

- Còn một số chức năng quản lý điểm danh chưa được hỗ trợ

- Giao diện của một số chức năng không thuận tiện: Kết thúc một lần thực hiện thì không hỏi mà tự thoát, người dùng phải thao tác lại từ đầu.

- Cổng giao tiếp với sinh viên, giảng viên, nhà trường, nhà quản lý còn hạn chế.

- Việc nhận diện các khuôn mặt còn nhiều hạn chế về góc nhìn.

- Thuật toán sử dụng chưa được tối ưu.

Ngày đăng: 11/08/2023, 11:05

w