Trong đề tài này, chúng em sẽ sử đụng một trong những mô hình học sâu phô biến nhất của trí tuệ nhân tạo hiện nay là mô hình mạng nơ-ron tích chập - Convolutional Neural Network CNN để x
Trang 1TRUONG DAI HOC THU DAU MOT
VIEN KY THUAT CONG NGHE
PAI HOC
| lim, DAU MOT
2009 +9THU DAU MOT UNIVERSITY
ĐỎ AN MON HOC
TRI TUE NHAN TAO
XAY DUNG CHUONG TRINH DIEM DANH BANG BANG NHAN DIEN KHUON MAT
GVHD: ThS Nguyén Hai Vĩnh Cường SVTH:
Nguyén Hoang Hiép - 2024802010235 Tran Quay Tin - 2024802010221 LỚP: D20CNTT04
BÌNH DƯƠNG - 03/2023
Trang 2TRUONG DAI HOC THU DAU MOT
VIEN KY THUAT CONG NGHE
PAI HOC
| lim, DAU MOT
2009 +9THU DAU MOT UNIVERSITY
ĐỎ AN MON HOC
TRI TUE NHAN TAO
XAY DUNG CHUONG TRINH DIEM DANH BANG BANG NHAN DIEN KHUON MAT
GVHD: ThS Nguyén Hai Vĩnh Cường SVTH:
Nguyén Hoang Hiép - 2024802010235 Tran Quay Tin - 2024802010221 LỚP: D20CNTT04
BÌNH DƯƠNG - 03/2023
Trang 3MUC LUC
)10/900800221575 H)H)HÂẬậH,)),., i
DANH MỤC BẢNG < 5° o< se ễEeCeEererererdeerecerserereerrre iii
Trang 4DANH MUC HINH
Hình 2.2: Q Q LH n HH HT nen n1 1111111111111 1111k khu 8
Trang 5DANH MUC BANG Bảng 3.1: Mô tả bảng cầu hình hệ thống 52-52 SE 21222212221 xe 19
ll
Trang 6DANH SACH CAC KY TU, CHU VIET TAT
Trang 7
TOM TAT CHUONG 1 Chuong trinh diém danh bang khuôn mặt được thực hiện sau quá trinh thu thập và khảo sát thông tin, như cầu từ thực tiên cuộc sông hăng ngày Chương trình
giúp người dùng có thể điểm danh một cách nhanh chóng và dễ dàng thông qua việc
phát hiện và nhận dạng khuôn mặt
CHƯƠNG 2 Dựa trên nền tảng của mô hình Deep Learning la Convolutional Neural
Network song song là ngôn ngữ lập trình bậc cao Python cùng với bộ dữ liệu tự thu
thập gôm 100 hình ảnh
CHƯƠNG 3 Cấu trúc bài báo cáo được chia thành 4 phần:
- _ Chương 1 Tổng quan đề tài
- _ Chương 2 Tiền xử lý đữ liệu
- _ Chương 3 Thiết kế mô hình
- Chương 4 Đánh giá thực nghiệm
Trang 8nó ngày càng phô biến trong nhiều lĩnh vực khác nhau
CHƯƠNG 6 Nhận diện khuôn mặt là một trone những ứng dụng phô biến nhất của trí
tuệ nhân tạo, đặc biệt là trong các lĩnh vực an ninh và giám sát Trong đó, hệ thống
điểm danh bằng nhận diện khuôn mặt đang trở thành công cụ hữu ích để có thể kiểm soát được độ chuyên cần, thời gian làm việc, chấm công tại các doanh nghiệp, cơ quan, tô chức và trường học một cách nhanh chóng, đễ dàng và tiện lợi
CHƯƠNG 7 Trong đề tài này, chúng em sẽ sử đụng một trong những mô hình học sâu phô biến nhất của trí tuệ nhân tạo hiện nay là mô hình mạng nơ-ron tích chập - Convolutional Neural Network (CNN) để xây dựng một hệ thông điểm danh bằng
nhận diện khuôn mặt Mô hình CNN sử dụng các lớp tích chập và lớp kết nối đầy đủ
để học các đặc trưng của ảnh khuôn mặt và tạo ra các dự đoán về thông tin của neười
sử dụng Bằng cách sử dụng ngôn ngữ lập trình bậc cao là Python, chúng em có thế
triển khai mô hình CNN để thực hiện điểm danh bằng nhận diện khuôn mặt một cách
hiệu quả
CHƯƠNG 8 Xây dựng hệ thống điểm danh bằng khuôn mặt dựa trên mô hình CNN là
dé tài piúp chúng em hiểu rõ hơn về cách thức huấn luyện trong trí tuệ nhân tạo, là co hội củng có lượng kiến thức trong quá trình học tập học phần Trí tuệ nhân tạo, đồng thời cũng là tiền đề đề thực hiện các hệ thông trí tuệ nhân tạo khac trong tương lai Vì hạn chế về mặt thời gian cũng như về lượng kiến thức, đề tài chưa xây dựng thành một ứng dụng hoàn chỉnh và còn có nhiều sai sót, mong quý thầy cô thứ lỗi
Trang 9CHUONG 9 TONG QUAN
9.1 Giới thiệu đề tài
9.1.1 Tên để tài
CHƯƠNG I0 Xây dựng chương trình điểm danh bằng nhận diện khuôn mặt
10.1.1 Lý do chọn đề tài
CHƯƠNG II Nhận diện khuôn mặt là một trong những đề tài phô biến hiện nay
CHƯƠNG 12 Nhận diện khuôn mặt mang lại nhiều lợi ích và ứng dụng trong cuộc sông như: điểm danh, châm công trone nhiều lĩnh vực khác nhau từ an ninh cho đên giám sát
CHƯƠNG 13 Nhận diện khuôn mặt bằng mô hình mạng nơ - ron tích chập đang được quan tâm và phát triển trong ngày nay, nó được đánh giá là có độ chính xác cao, khả năng học sâu, hiệu quả tính toán và có nhiều tiềm năng phát triển
13.1.1 Đối tượng nghiên cứu
CHƯƠNG 14 Nhận diện khuôn mặt người thông qua hình ảnh
14.1.1 Pham vì nghiÊH cứu
CHƯƠNG 15 Mô hình mạng nơ - ron tích chập - Convolutional Neural Network
(CNN)
CHUONG 16 Ngôn ngữ lập trình Python
CHƯƠNG I7 Bộ đữ liệu tự thu thập bao gồm 100 hình ảnh để huấn luyện cho mô
hình
17.1 Giới thiệu công nghệ
17.1.1 Giới thiệu về Python
CHƯƠNG I8 Python là một ngôn ngữ lập trình cao cấp, được phát triển boi Guido van Rossum vào năm 1989 và được công bô lan đâu tiên vào nam 1991 Python duoc thiết kế với mục đích để đọc và viết mã đễ dàng, có cú pháp rõ ràng, đơn giản và dễ hiểu Vì vậy, Python đã trở thành một trong những ngôn ngữ lập trình phố biến nhất trén thé gidi
CHƯƠNG I9 Python là một ngôn ngữ lập trình đa năng, có thể được sử dụng đề phát triền các ứng dụng máy tính, web, trí tuệ nhân tạo, xử ly dữ liệu, game, do hoa, va nhiêu lĩnh vực khác Python được phân phôi miền phí và có san cho nhiêu nên tang, bao gồm Windows, macOS, Linux và các hệ điều hành khác
CHUONG 20 Python có thư viện rộng lớn và đa dạng, với hơn 137.000 gói và các công cụ hỗ trợ mạnh mẽ như NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow,
2
Trang 10Pygame, va nhiéu thu viện khác Cộng đông Python cực kỳ sôi nồi và hỗ trợ mạnh mẽ,
vi vậy rât để dàng đề tìm kiếm thông tin và giải đáp các thắc mắc liên quan dén Python
Python Hình 20.1.1.1: Ngôn ngữ lập trình Python
20.1.2 Giới thiệu về Google Colab
CHƯƠNG 21 Google Colab (viết tắt của Google Colaboratory) là một địch vụ miễn phí của Google, cho phép người dùng chạy mã Python trực tuyến thông qua trình duyệt web mà không cần cài đặt bất kỳ phần mềm nảo trên máy tính của mình Google Colab sử dụng máy chủ từ Google đề thực hiện các tác vụ tính toán phức tạp
CHƯƠNG 22 Google Colab được tích hợp với Jupyter Notebook, cho phép người dùng tạo và chia sẻ các tài liệu tương tác, bao gồm mã, văn bản, hình ảnh và đồ thị Nó cũng cung cấp một loạt các công cụ phân tích dữ liệu phô biến như NumPy, Pandas và Mapplotlib, cũng như cho phép người dùng cài đặt các gói phần mềm bổ sung thông qua hệ thống quản lý gói Python như pip
CHUONG 23 Google Colab là một công cụ hữu ích cho các nhà khoa học dữ liệu, các nhà phát triển và sinh viên để thực hiện các tác vụ tính toán phức tạp mà không, cần phải mua hoặc cấu hình phần cứng đắt tiền Ngoài ra, Google Colab còn cho phép người dùng lưu trữ và chia sẻ các tài liệu tương tác này thông qua Google Drive
CHƯƠNG 24
Colaboratory
Trang 11Hinh 24.1.1.1: Cong cu Google Colab
CHUONG 25.
Trang 12CHUONG 26 TIEN XU LY DU LIEU
CHUONG 27
27.1 Thu thập dữ liệu
-_ Bộ dữ liệu được sử dụng trong đề tài là bộ đữ liệu tự thu thập
- Bộ đữ liệu gồm hình ảnh của 5 người, mỗi người 20 tâm ảnh
- _ Bộ dữ liệu thô được lấy từ ảnh trên internet với góc chụp và ánh sáng, độ tương phản khác nhau nhằm tạo sự đa dạng cho đữ liệu
Ñ œ b m z 1 ? B Be da i
CHƯƠNG 28
Hình 28.1.1.1: Bộ dữ liệu thô 28.2 Chuẩn hoá dữ liệu
- Bộ dữ liệu thô sau khi thu thập được từ trên mạng sẽ có kích cỡ, tỷ lệ và màu sắc khác nhau, gây khó khăn cho việc huân luyện mô hình
- Đề thuận tiện cho việc huấn luyện mô hình ở bước sau, bộ dữ liệu thô sẽ được chuân hoá để có thê làm bộ đữ liệu đầu vào cho quá trình huấn
CHUONG 30
Trang 13CHUONG 35 cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
CHUONG 36 Sau khi chuyén d6i thang mau, anh sé nhw sau:
Trang 14CHUONG 39 Trong do:
CHUONG 40 “detector” 1a mét déi tượng của lớp CascadeClassifer của OpenCV, được sử dụng đề phát hiện các đối tượng trong hình ảnh Trong trường hợp này, chúng
ta đang sử dụng nó dé phát hiện khuôn mặt
CHUGONG 41 "gray" 1a mét khung hinh mau xam (grayscale), dugc tao ra bang cach chuyên đổi khung hình gốc từ hệ màu BGR sang hệ màu xám
CHƯƠNG 42 "đefecfor.defectMulfiScale(" là một phương thức của đối tượng detector, được sử dụng dé phát hiện các khuôn mặt trong khung hình Đây là một phương pháp phát hiện khuôn mặt dựa trên máy học và áp dụng bộ lọc Haar Cascade
CHƯƠNG 43 ”/z'” là một danh sách các hình chữ nhật, mỗi hình chữ nhật đại diện
cho một khuôn mặt được phát hiện trong khung hình
CHƯƠNG 44 "for (x, y, w, h) in fa:" la mét vong lap for dé lap qua danh sách các
hình chữ nhật được tim thấy
CHƯƠNG 45 ”cy2.recfangle()” được sử dụng để vẽ một hình chữ nhật trên khung
hình gốc (hình ảnh màu) để đánh dấu vị trí của khuôn mặt Các tham số "(x,y)" và
"(x+w, y+h)" chỉ định tọa độ của hai đỉnh đối diện của hình chữ nhật
CHƯƠNG 46 "os.makedirs()" duoc str dung dé tao thy muc "dataset" néu nó chưa tồn tai
CHƯƠNG 47 "cv2.imwrite()" duoc str dung đề lưu trữ anh khuôn mặt được phát hiện vào thư mục "dataset" Tên tệp được đặt là "anh<I>.<J>.Jpg" với "1" và "J" là các biến được sử dụng để đánh số các ảnh Ảnh khuôn mặt được lưu trữ là ảnh xám, được cắt ra
từ khung hình sốc bằng cách sử dụng tọa độ và kích thước của hình chữ nhật tương
L1 PBYX TA K'O CA C1 C13 TA E1 PC 1B BI PBX P5 C1 E21
ứng
Hình 47.1.1.1: Bộ dữ liệu sau khi đã được xử lý
Trang 15Từ anh1.1 - anh1.20: Trân Thành
Từ anh2.1 — anh2.20: Truongg Giang
Từ anh3.1 — anh3.20: Hoa Minzy
Tu anh4.1 — anh4.20: Ngô Kiên huy
Từ anh5.1 — anh5.20: Noo Phước Thịnh
Trang 16CHUONG 51 THIET KE MO HINH CHƯƠNG 52
52.1 Giới thiệu mô hình
Mô hình CNN (Convolutional Neural Network) là một kiểu mô hình mạng
nơ-ron nhân tạo phô biến trong lĩnh vực xử ly ảnh và nhận dang hinh ảnh
Mô hình này được thiết kế để học cách trích xuất các đặc trưng quan trọng
từ ảnh thông qua các bước tích chập và lớp gộp
Các bước tích chập sẽ tìm kiếm các đặc trưng của ảnh bằng cách áp dụng các bộ lọc (filters) trên toàn bộ hình ảnh Sau đó, các lớp gộp được sử dụng để giảm kích thước của đặc trưng trích xuất được mà vẫn giữ lại thông tin quan trọng
Mô hình CNN được cấu thành từ nhiều lớp tích chập và lớp gộp liên tiếp nhau Các lớp này có thể được kết hợp với các lớp kết nối day du (fully connected layers) để tạo ra một mạng nơ-ron hoàn chỉnh Tủy thuộc vào mục đích sử dụng, mô hình CNN có thể được điều chỉnh đề có số lượng lớp và kích thước của các lớp phù hợp với dữ liệu đầu vào và yêu cầu của bài toán
Một trong những ứng dụng phố biến của mô hình CNN là nhận dạng hình ảnh, bao gồm nhận dạng khuôn mặt, phát hiện đối tượng, phân loại ảnh,
và nhiều ứng dụng khác trong thị giác máy tính
CHUONG 53
CHUONG 54
Hinh 54.1.1.1: M6 hinh Convolutional Neural Network
54.2 Giới thiệu một số thư viện sử dụng
34.2.1 Thư viện QpenCV
Trang 17OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở
và miễn phí cho xử lý ảnh và thị giác máy tính Nó được phát triển ban
đầu bởi Intel vào năm 1999 và hiện được duy trì bởi một nhóm các nhà khoa học máy tính và kỹ sư trên toàn thế giới
OpenCV hỗ trợ nhiều ngôn ngữ lập trình như C+>, Python, Java và các phiên bản khác nhau của hệ điều hành như Windows, Linux, macOS và Android Thư viện cung cấp các hàm xử lý ảnh và video đề thực hiện các nhiệm vụ như đọc và phi các tệp ảnh và video, xử lý ảnh, phát hiện đối tượng, nhận dạng khuôn mặt, phân tích video, và nhiều tác vụ khác liên quan đến thị giác máy tính
OpenCV có một cộng đồng lớn và đầy đủ tài liệu và ví dụ, p1úp cho việc
học và sử dụng thư viện trở nên dễ dàng hơn Nó là một trong những công
cụ quan trọng cho các lĩnh vực như xử lý ảnh, thị piác may tinh, robotics,
và nhiều ứng dụng khác
54.2.2, Thur vién Numpy
Numpy (Numerical Python) la mét thu vién mã nguồn mở cho tính toán khoa hoc trong Python Thu vién cung cap cac déi trong mang da chiéu (ndarray) đề lưu trữ và xử lý đữ liệu số và các hàm toán học đề thực hiện các phép tính trên mảng
Numpy cung cấp một số tính năng như:
® Lưu trữ và xử lý đữ liệu số trong các mảng đa chiều (ndarray)
© Cung cấp các hàm toán học, áp dụng trên mảng và nhiều hàm tương tự
như trong MATLAB
® Hỗ trợ việc chuyên đổi đữ liệu gitra cac dinh dạng dữ liệu khác nhau
¢ Numpy duoc su dung trong cac lĩnh vực như khoa học đữ liệu, mây học, thị piác máy tính, vật lý, toán học, và nhiều lĩnh vực khác Việc sử dụng numpy giúp tăng tốc độ xử lý đữ liệu và tính toán, giúp cho việc thực hiện các tác vụ phức tạp trở nên đơn giản và hiệu quả hơn 34.2.3 Thự viện PIL
PIL (Python Imaging Library) là một thư viện mã nguồn mở cho xử lý ảnh trong Python Thư viện cung cấp các đối tượng hình ảnh và các hàm để thực hiện các phép biến đối hình ảnh như xoay, thu phóng, cắt, dan, loc và chuyền đổi định dang ảnh
Một số tính năng của PIL:
Trang 18Hỗ trợ nhiều định dang anh, bao gdm JPEG, PNG, BMP, GIF va nhiéu dinh dang anh khac
Có thé tao ra các hình ảnh mới từ các dữ liệu pixel
Cho phép thực hiện các phép biến đổi hình ảnh, bao gồm cắt, xoay, thu phóng, lật và sập ảnh
Có thể áp dụng các bộ lọc và hiệu ứng trên ảnh, bao gồm lọc Gauss, lọc Sobel, loc median, va nhiều hiệu ứng khác
Cung cấp các chức năng xử lý ảnh nâng cao như phát hiện cạnh, phân đoạn ảnh, và nhận dạng đối tượng
34.2.4 Thư viện Keras
Keras là một thư viện mã nguôn mở cho các mô hình học máy và mạng, nơ-ron trong Python Thư viện được thiết kế để có khả năng dé dang str dụng và hiệu quả, cho phép người dùng dễ dàng xây dựng và huấn luyện
cá
M
c mô hình học máy một cách nhanh chóng
ột số tính năng của Keras:
Cung cấp các lớp và kiến trúc cho các mô hình học máy phổ biến như mang no-ron sâu (deep neural networks), mang tich chập (convolutional neural networks), va mang héi quy (recurrent neural networks)
Cho phép người dùng dễ dàng xây dựng và định nghĩa các mô hình
học máy thông qua một API đơn giản và dễ hiểu
Cung cấp các công cụ cho việc xử lý và chuẩn bị dữ liệu đầu vào cho các mô hình học máy
Cho phép người dùng lưu và tải lại các mô hình đã được huấn luyện
để sử dung lat
Tương thích với nhiều thư viện khác trong học máy và khoa học dữ liệu như TensorFlow, Theano và CN TK
54.3 Giai đoạn huấn luyện (training)
54.3.1 Phân chia tập huấn luyện
CHƯƠNG 55 Bộ dữ liệu đầu vào của mô hình là một dataset chứa 100 tắm ảnh của 5
người khác nhau, được gắn nhãn từ 1.1 đến 5.20 Bằng cách chạy hai vòng lặp lồng
nhau, ta có thê đọc được lần lượt các file ảnh và lưu nó vào data Sau đó chúng em tiến hành reshape bộ dữ liệu thành kích thước 100x100 với I màu xám