Tải bản đầy đủ (.docx) (38 trang)

Đồ án khoa cơ điện, điện tử, đại học lạc hồng (18)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.12 MB, 38 trang )

ĐẠI HỌC LẠC HỒNG
KHOA CƠ ĐIỆN ĐIỆN TỬ
---

ĐỒ ÁN TỐT NGHIỆP

Đề tài:

PHẦN MỀM ĐIỂM DANH TỰ ĐỘNG

SVTH: NGƠ CHÍ LỘC
VÕ QUANG TRƯỜNG
GVHD: TS PHAN NHƯ QUÂN

Đồng nai, 2022


MỞ ĐẦU
Hiện nay, với sự phát triển của xã hội, các khu công nghiệp, nhà máy, công
ty, các cơ sở giáo dục,…những nơi tập trung đông người với số lượng có thể lên tới
hàng trăm, hàng ngàn người. Các phương pháp điểm danh truyền thống, sử dụng
dấu vân tay, quét thẻ có thể chứa đựng nhiều bất cập. Như là tốn thời gian, chen lấn
dẫn đến ùn ứ, trễ giờ dẫn đến nhiều trường hợp tiêu cực như gây gổ, va chạm dẫn
đến xơ sát. Ngồi ra với tình tình dịch bệnh Covid-19 còn diễn biến phức tạp như
hiện nay thì nguy cơ dịch lây lan trong cộng đồng là rất cao.
Nắm bắt được những vấn đề trên. Nhóm em đã cùng thảo luận với giáo viên
hướng dẫn là Ts.Phan Như Quân và được thầy giao cho đề tài ứng dụng camera
thực hiện việc nhận diện khuôn mặt và điểm danh tự động. Xét theo yêu cầu của đề
tài, nhóm em thấy đề tài có thể giải quyết được các hầu hết các vấn đề tồn đọng của
các phương pháp điểm danh truyền thống. Qua đó có thể giúp cơng ty, trường học
và trụ sở làm việc nâng cao cơ sở hạ tầng, bắt kịp với công nghệ thời đại 4.0 ngày


nay.
Trong đồ án này, nhóm đồ án chúng em sẽ giải quyết vấn đề nhận dạng
khuôn mặt để điểm danh và lưu dữ liệu đã điểm danh vào chương trình excel để có
thể trích xuất dữ liệu điểm danh một cách dễ dàng.


LỜI CẢM ƠN
Nhóm đồ án chúng em xin gửi lời cảm ơn đến thầy Phan Như Quân, giảng
viên hướng dẫn đã trang bị cho em những kiến thức, kỹ năng cơ bản cần có để hồn
thành đề tài này.
Tuy nhiên trong quá trình nghiêm cứu đề tài, do kiến thức chun ngành cịn
hạn chế nên nhóm chúng em vẫn cịn nhiều thiếu sót khi tìm hiểu, đánh giá và trình
bày về đề tài. Rất mong nhận được sự quan tấm và góp ý của thầy/cơ thuộc hội
đồng để tài của em được đầy đủ và hoàn chỉnh hơn
Xin chân thành cảm ơn.


NHẬN XÉT
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................

................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................

MỤC LỤC



Trang

DANH MỤC CỤM TỪ VIẾT TẮT
STT
1
2

Cụm từ
Cơ Sở Dữ Liệu
Công nghệ thông tin

Viết tắt
CSDL
CNTT


Chương 1

Giới thiệu

1.1 Tổng quan
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 khn mặt (Face Recognition). Như chúng ta đã
biết, khn mặt đóng vai trị quan trọng trong q trình giao tiếp giữa người với
người, nó mang một lượng thơng tin cực kì có giá trị, chẳng hạn như từ khn 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 tốn nhận
dạng khn 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,… đặ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 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ể tồn khn mặt như phương pháp PCA,
LDA, LFA .
Ở thời điểm hiện tại, tại các cơ quan, doanh nghiệp, trường học…. thường sử
dụng phổ biến phương pháp nhận diện tổng thể khuôn mặt để quản lý, kiểm sốt,
điểm danh cơng nhân, nhân viên, học sinh,….bằng cách lập bản đồ các đặc điểm
trên khn mặt của cá nhân về mặt tốn học và lưu trữ dưới dạng dấu khuôn mặt
được phát hiện.Công nghệ nhân diện gương mặt xác định các điểm trên khuôn mặt,
các điểm này dung để đo các biến thể trên khuôn mặt như chiều dài, chiều rộng, độ
sâu,…. Kết quả mang lại vô cùng khả quan với nhiều ưu điểm vượt trội
• Khơng tiếp xúc trực tiếp với các thiết bị nhận dạng.
• Tính bảo mật cao và sai số rất thấp.
• u cầu xử lý ít hơn các u cầu nhận dạng sinh trắc học khác.
• Nhiều ứng dụng thực tiễn.
Hiện tại trên thị trường có các ứng dụng có sẵn trên điện thoại di động như
Face First, Railer, … hay các thiết bị như Dahahi 01, Dahahi 02,….
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. Phần mềm được viết trên nền tảng Python
thơng qua chương trình Visual Studio Code.


6


1.2 Giới hạn nghiên cứu
Tìm hiểu và ứng dụng chương trình lập trình Visual Studio Code và Python.
Tìm hiểu và ứng dụng các trình thư viện của python để viết phần mềm.
Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt theo thời gian
thực.

1.3 Phương pháp, kết quả
1.3.1 Phương pháp
Nghiên cứu các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận
dạng khuôn mặt người trên ảnh.
Nghiên cứu bộ thư viện của Python.
Tự tạo bộ thư viện ảnh bằng cách thu thập thông qua chụp bằng camera hoặc
lấy dữ liệu khn mặt bằng hình ảnh được cung cấp.
Tìm hiểu nhận dạng khn mặt (Face Recognition)
1.3.2 Kết quả
Khi camera bắt được hình khn mặt thì sẽ hiển thị tên và độ chính xác khi so
sánh với ảnh được lưu trong thư viện trước đó.
Lưu dữ liệu điểm danh như: tên, ngày tháng, thời gian và tình trạng (có mặt hoặc
đi trễ) vào excel để dễ dàng quản lí.

7


Chương 2

Nghiên cứu tổng quan


2.1 Hệ thống xác định khuôn mặt và áp dụng vào thực tế
2.1.1

Định nghĩa
Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác
định các vị trí và các kích thước của các khuôn mặt người trong các ảnh bất kỳ. Kỹ
thuật này nhận biết các đặc trưng của khuôn mặt và bỏ qua những thứ khác, như:
tòa nhà, cây cối, cơ thể…
2.1.2 Một số phương pháp xác định khuôn mặt người
Trên thực tế người ta hay chia các phương pháp nhận dạng mặt ra làm 3 loại:
phương pháp tiếp cận toàn cục (global, như Eigenfaces-PCA, Fisherfaces-LDA),
phương pháp tiếp cận dựa trên các đặc điểm cục bộ (local feature based, như LBP,
Gabor wavelets) và phương pháp lai (hybrid, là sự kết hợp của hai phương pháp
toàn cục và local feature).
Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt hơn
khi làm việc trong các điều kiện khơng có kiểm sốt và có thể nói rằng lịch sử phát
triển của nhận dạng mặt (A never ending story) là sự phát triển của các phương
pháp trích chọn đặc trưng (feature extractrion methods) được sử dụng trong các hệ
thống dựa trên feature based.
Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mơ hình nhận dạng:
identification (xác định danh tính, bài tốn 1-N), và verification (xác thực danh tính,
bài tốn 1-1). Trong bài tốn identification, ta cần xác định danh tính của ảnh kiểm
tra, cịn trong bài tốn verification ta cần xác định 2 ảnh có cùng thuộc về một
người hay khơng.
2.1.3 Bài tốn nhận dạng mặt người
Hệ thống nhận dạng mặt người là một hệ thống nhận vào là một ảnh, một
đoạn video (một dòng các hình ảnh liên tục) hoặc bằng webcam. Qua xử lý, tính
tốn hệ thống xác định được vị trí mặt người (nếu có) trong ảnh và xác định là
người nào trong số những người mà hệ thống đã được biết (qua quá trình học) hoặc

là người lạ.
Trước khi nhận dạng mặt người, chương trình phải chuẩn bị trước một dữ
liệu thơ. Bao gồm các hình ảnh có chứa khn mặt của người hoặc lấy trực tiếp
thơng qua camera.
Từ đó hệ thống nhận diện khuôn mặt sẽ bắt đầu so sánh giữa khn mặt đã
được lưu trước đó và khn mặt được hiển thị trên camera.

8


Hình 2.1 Hệ thống nhận diên khn mặt

Hệ thống sẽ được tạo ra bằng cách sử dụng trình lâph trình Python. Python
có các thư viện hổ trợ cho hệ thống nhận diện khuôn mặt như: Opencv,
face_recognition giúp cho việc lập trình được dễ dàng và ít gặp lỗi khi sử dụng.

Hình 2.2 Thư viện nhận diện khn mặt

9


2.1.4 Kiến trúc của một hệ thống nhận dạng mặt người
Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý
sau:
Phát hiện khuôn mặt (Face Detection).
Phân đoạn khn mặt (Face Alignment hay Segmentation).
Trích chọn đặc trưng (Feature Extraction).
Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification).

Hình 2.3 Các bước chính trong hệ thống nhận dạng


2.1.5 Hạn chế, tồn tại của các phương pháp
Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những năm
70. Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt
được những kết quả mong muốn. Chính vì thế, vấn đề này vẫn đang được nhiều
nhóm trên thế giới quan tâm nghiên cứu. Khó khăn của bài tốn nhận dạng mặt
người có thể kể đến như sau:
• Tư thế chụp, góc chụp: Ảnh chụp khn mặt có thể thay đổi rất nhiều bởi vì
góc chụp giữa camera và khn mặt. Chẳng hạn như: chụp thẳng, chụp chéo
bên trái hay chụp chéo bên phải, chụp từ trên xuống, chụp từ dưới lên, v.v…
Với các tư thế khác nhau, các thành phần trên khn mặt như mắt, mũi,
miệng có thể bị khuất một phần hoặc thậm chí khuất hết.
• Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng
như: râu mép, râu hàm, mắt kính, v.v… có thể xuất hiện hoặc khơng. Vấn đề
này làm cho bài tốn càng trở nên khó hơn rất nhiều.
• Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt con người có thể làm
ảnh hưởng đáng kể lên các thơng số của khuôn mặt. Chẳng hạn, cùng một
khuôn mặt một người, nhưng có thể sẽ rất khác khi họ cười hoặc sợ hãi,
v.v…
• Sự che khuất: Khn mặt có thể bị che khuất bởi các đối tượng khác hoặc
các khuôn mặt khác.
• Hướng của ảnh (pose variations): Các ảnh khn mặt có thể biến đổi rất
nhiều với các góc quay khác nhau của trục camera. Chẳng hạn chụp với trục
máy ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh.

10


• Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về: chiếu
sáng, về tính chất camera (máy kỹ thuật số, máy hồng ngoại, v.v…), ảnh có

chất lượng thấp ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt. g. Aging
condition: Việc nhận dạng ảnh mặt thay đổi theo thời gian cịn là một vấn đề
khó khăn, ngay cả đối với khả năng nhận dạng của con người.

2.2 Áp dụng vào thực tế
Để xây dựng một hệ thống nhận dạng mặt, cũng không hề đơn giản, bước
đầu tiên cần thực hiện là face detection, tức là phát hiện phần ảnh mặt trong dữ liệu
input (CSDL ảnh, video …) và cắt lấy phần ảnh mặt để thực hiện nhận dạng (face
cropping), bước thứ hai là tiền xử lý ảnh (preprocessing) bao gồm các bước căn
chỉnh ảnh (face image alignment) và chuẩn hóa ánh sáng (illumination
normalization), tiếp đến là bước trích chọn đặc điểm (feature extraction), ở bước
này một phương pháp trích chọn đặc điểm nào đó (mẫu nhị phân cục bộ – Local
Binary Pattern – LBP, Gabor wavelets, …) sẽ được sử dụng với ảnh mặt để trích
xuất các thông tin đặc trưng cho ảnh, kết quả là mỗi ảnh sẽ được biểu diễn dưới
dạng một vector đặc điểm (feature vector), bước tiếp theo là 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.
Ở bước classification, thường thì phương pháp k-nearest neighbor (kNN) sẽ
được sử dụng, thực tế cho thấy việc dùng SVM (Support Vector Machine) không
mang lại hiệu quả cao hơn mà còn chậm hơn.
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện
(training set), tập tham chiếu (reference set hay gallery set) và tập để nhận dạng
(probe set hay query set, đơi khi cịn gọi là test set). Trong nhiều hệ thống, tập
training trùng với tập reference.
Tập training gồm các ảnh được dùng để huấn luyện (hay học-learning),
thông thường tập này được dùng để sinh ra một không gian con (projection
subspace) là một ma trận và phương pháp hay được sử dụng là PCA (Principal
Component Analysis), WPCA (Whitened PCA), LDA (Linear Discriminant
Analysis), KPCA (Kernel PCA). Tập reference gồm các ảnh đã biết danh tính được
chiếu (projected) vào không gian con ở bước training.

Bước training nhằm 2 mục đích: giảm số chiều (dimension reduction) của
các vector đặc điểm (feature vector) vì các vector này thường có độ dài khá lớn (vài
nghìn tới vài trăm nghìn) nên nếu để ngun thì việc tính tốn sẽ rất rất lâu, thứ hai
là làm tăng tính phân biệt (discriminative) giữa các ảnh khác lớp (định danh khác
nhau), ngoài ra có thể làm giảm tính phân biệt giữa các ảnh thuộc về một lớp (tùy
theo phương pháp, ví dụ như Linear Discriminant Analysis LDA- còn gọi là Fisher
Linear Discriminant Analysis-Fisherface là một phương pháp làm việc với tập
training mà mỗi đối tượng có nhiều ảnh mặt ở các điều kiện khác nhau).
Sau khi thực hiện chiếu tập reference vào không gian con, hệ thống lưu lại
kết quả là một ma trận với mỗi cột của ma trận là một vector tương ứng với ảnh
(định danh đã biết) để thực hiện nhận dạng (hay phân lớp). Nhận dạng (hay phân
11


lớp) được thực hiện với tập các ảnh probe, sau khi tiền xử lý xong, mỗi ảnh sẽ được
áp dụng phương pháp trích chọn đặc điểm (như với các ảnh thuộc tập training và
reference) và được chiếu vào không gian con. Tiếp đến việc phân lớp sẽ dựa trên
phương pháp k-NN, định danh của một ảnh cần xác định sẽ được gán là định danh
của ảnh có khoảng cách (distance) gần với nó nhất. Ở đây cần lưu ý là mỗi ảnh là
một vector nên có thể dùng khái niệm hàm khoảng cách giữa hai vector để đo sự
khác biệt giữa các ảnh.

12


Chương 3

Thuật tốn nhận dạng

3.1 Phát hiện khn mặt

Phát hiện khn mặt (Face Detection) là một kĩ thuật máy tính để xác định
được các vị trí và các kích thước của khuôn mặt người trong các ảnh bất kỳ. Kỹ
thuật này nhận biết các đặc trưng của khuôn mặt và bỏ qua những thứ khác
như: tòa nhà, cấy cối, cơ thể.
3.1.1 Vấn đề
Như ở não của con người chúng ta có những sợi thần kinh để làm tất cả
các việc đó một cách tự động và ngay lập tức. Trong thực tế, con người rất giỏi
trong việc nhận diện khuôn mặt và tưởng tượng ra các khuôn mặt trong các vật
thể hằng ngày
Máy tính thì lại khơng có khả năng bậc cao kiểu đó ít nhất là hiện tại
(trong tương lai có thể có). Nên chúng ta cần dạy cho chúng cách để làm từng
bước riêng biệt trong quá trình nhận dạng. Chúng ta cần xây dựng một quy
trình(hệ thống) nơi chúng ta giải quyết từng bước của nhận diện khuôn mặt một
cách riêng biệt, và chuyển kết quả hiện tại đó cho bước tiếp theo.
3.1.2 Tìm tất cả khn mặt có trong ảnh
Mục tiêu bước này là chúng ta sẽ tìm vị trí của khn mặt trong tấm hình
trước khi chúng ta phân biệc chúng và qua bước tiếp theo.
Nếu bạn đang sử dụng bất kì camera nào trong khoảng 5 năm trở lại đây thì
bạn có thể thấy nhận diện khn mặt được tích hợp sẵn trong thiết bị.Nhận diện
khn mặt là một tính năng tuyệt vời cho máy ảnh. Khi máy ảnh có thể tự động
chọn ra các khn mặt, chúng có thể chắc chắn rằng tất cả các khn mặt được là
nét trước khi nó ghi hình. Nhưng chúng ta lại sử dụng nó với mục đích khác, tìm
kiếm vị trí khn mặt trong tấm hình và gửi kết quả đó cho bước tiếp theo trong
quá trình
Nhận diện khn mặt đã trở thành xu hướng vào đầu những năm 2000 khi
Paul Viola và Michael Jones phát minh ra cách để nhận diện khuôn mặt với tốc
độ đủ để chạy trên con các dòng máy ảnh rẻ tiền. Tuy nhiên thì cịn có các
phương pháp đáng tin cậy cũng đã xuất hiện. Chúng ta sử dụng phương pháp
13



được phát minh năm 2005 được gọi là “Histogram of Oriented Gradients” (rút
gọn thành HOG)
Để tìm những khn mặt trong một tấm hình, chúng ta bắt đầu với việc biến
tấm ảnh của chúng ta thành tấm ảnh xảm, chỉ có đen và trắng vì chúng ta khơng
cần màu sắc để tìm khn mặt.
Sau đó chúng ta nhìn vào từng pixel trong tấm hình cùng một lúc. Với mỗi
pixel một, chúng ta lại nhìn vào những pixel lân cận nó.
Mục đích của chúng ta là tìm ra pixel hiện tại có màu tối như thế nào so
với các pixel lân cận nó. Khi đó chúng ta sẽ vẽ một mũi tên theo chiều mà màu
trở nên tối hơn
Nếu bạn lặp lại tiến trình đó với mỗi pixel một trong trong tấm ảnh, bạn sẽ
kết thúc với mỗi pixel được thay thế bởi một mũi tên. Những mũi tên đó được
gọi là “gradients”(vectơ độ dốc) và chúng chỉ ra dòng chảy(lưu lượng) từ những
pixel sáng đến những pixel tối trên toàn bộ hình ảnh.
Điều này có vẻ là một việc làm ngẫu nhiên, nhưng đó là một lí do tốt để thay
thế các pixel đó thành gradients. Nếu chúng ta phân tích trực tiếp các pixel tối và
các pixel sáng trong bức ảnh của cùng một người sẽ nhận được tổng các giá trị
hoàn toàn khác nhau. Nhưng nếu xem xét hướng sáng thay đổi, cả hai hình ảnh tối
và hình ảnh sáng sẽ cho kết quả với cùng một đại diện(con số) chính sác. Điều đó
làm cho vấn đề dễ giải quyết hơn.
Nhưng việc lưu gradient cho mỗi pixel đơn lẻ cho chúng ta quá nhiều chi tiết.
Sẽ tốt hơn nếu chúng ta có thể nhìn thấy dịng chảy sáng / tối cơ bản ở mức cao
hơn để chúng ta có thể thấy mơ hình cơ bản của hình ảnh.
Để làm điều này, chúng tơi sẽ chia hình ảnh thành các ô vuông nhỏ 16x16
pixel mỗi hình. Trong mỗi ô vuông, chúng tơi sẽ đếm xem có bao nhiêu độ dốc
theo từng hướng chính (có bao nhiêu điểm hướng lên, hướng lên phải, điểm phải,
v.v ...). Sau đó, chúng tơi sẽ thay thế hình vng đó trong hình ảnh bằng các
hướng mũi tên nổi bật nhất.
Kết quả cuối cùng là chúng ta biến hình ảnh gốc thành một hình đại diện rất

đơn giản, nắm bắt cấu trúc cơ bản của khuôn mặt một cách đơn giản hơn:

14


Hình 3.1 : Ảnh input bước 1


nh 3.2 Ảnh output bước 1

Để tìm các khn mặt trong hình ảnh HOG này, tất cả những gì chúng ta
phải làm là tìm phần hình ảnh của chúng ta trơng giống nhất với mẫu HOG đã
biết được trích xuất từ một loạt các khuôn mặt đào tạo khác:

15


Hình 3.3 Kết quả của thuật tốn HOG

3.2 Đổi góc độ và chiều cho khuôn mặt
Để làm cho điều này, chúng ta sẽ cố gắng làm cong từng bức ảnh để mắt và
mơi ln ở vị trí mẫu trong ảnh. Điều này sẽ giúp chúng ta dễ dàng hơn rất nhiều
để so sánh khuôn mặt trong các bước tiếp theo.
Để làm điều này, chúng ta sẽ sử dụng một thuật tốn gọi là ước lượng mốc
mặt. Có rất nhiều cách để làm điều này, nhưng chúng ta sẽ sử dụng phương pháp
được phát minh vào năm 2014 bởi Vahid Kazemi và Josephine Sullivan.
Ý tưởng cơ bản là chúng ta sẽ đưa ra 68 điểm cụ thể (được gọi là các mốc)
tồn tại trên mỗi khuôn mặt - đỉnh cằm, cạnh ngồi của mỗi mắt, cạnh trong của
mỗi lơng mày, v.v. Sau đó, chúng ta sẽ huấn luyện một máy học thuật tốn để có
thể tìm thấy 68 điểm cụ thể này trên mọi mặt:


16


Hình 3.4 68 điểm mốc trên khn mặt

Giờ thì chúng ta đã biết được vị trí của mắt và miệng, chúng ta sẽ dùng các phép
xoay đơn giản, chia cắt tỉ lệ hình ảnh sao cho mắt và miệng được căn giữa tốt nhất
được gọi là biến đổi “affine”

Hình 3.5 Ảnh kết quả sau bước 2

Bây giờ, bất kể khuôn mặt được xoay như thế nào, chúng ta có thể tập trung
vào mắt và miệng ở cùng một vị trí trong ảnh. Điều này sẽ làm cho bước tiếp theo
của chúng ta chính xác hơn rất nhiều.

17


3.3 Mã hóa khn mặt
Bây giờ chúng ta là phần cốt lõi của vấn đề - thực sự nói ra những khuôn mặt
khác biệt. Cách tiếp cận đơn giản nhất để nhận dạng khuôn mặt là so sánh trực tiếp
khuôn mặt chưa biết mà chúng tơi tìm thấy ở Bước 2 với tất cả các hình ảnh chúng
tơi có của những người đã được gắn thẻ. Khi chúng ta tìm thấy một khn mặt
được gắn thẻ trước đó trơng rất giống với khn mặt chưa biết của chúng ta, nó
phải là cùng một người. Có vẻ như là một ý tưởng khá tốt, phải khơng?
Có một vấn đề rất lớn với cách tiếp cận đó. Một trang web như Facebook với
hàng tỷ người dùng và hàng nghìn tỷ bức ảnh có thể vịng qua mọi khn mặt
được gắn thẻ trước đó để so sánh nó với mọi bức ảnh mới được tải lên. Điều đó sẽ
mất quá nhiều thời gian. Họ cần có khả năng nhận diện khn mặt tính bằng mili

giây chứ khơng phải hàng giờ.
Những gì chúng ta cần là một cách để trích xuất một vài phép đo cơ bản từ mỗi
khn mặt. Sau đó, chúng ta có thể đo khn mặt chưa biết của mình theo cùng
một cách và tìm ra khn mặt đã biết bằng các phép đo gần nhất. Ví dụ: chúng ta
có thể đo kích thước của mỗi tai, khoảng cách giữa hai mắt, chiều dài của mũi, v.v
Vậy cách đo khuôn mặt chính sác nhất là gì ? Kích thước tai? Mũi dài? Màu
mắt? Thứ gì khác?
Các nhà nghiên cứu đã phát hiện ra rằng phương pháp chính xác nhất là để
máy tính tìm ra các phép đo để thu thập chính nó. Deep learning thực hiện cơng
việc tốt hơn con người trong việc tìm ra phần nào của khn mặt là quan trọng để
đo.
Giải pháp là đào tạo một mạng lưới thần kinh.Nhưng thay vì đào tạo mạng để
nhận ra các đối tượng hình ảnh như chúng ta đã làm lần trước, chúng ta sẽ đào tạo
nó để tạo ra 128 phép đo cho mỗi khn mặt.Q trình đào tạo hoạt động bằng
cách nhìn vào 3 hình ảnh khn mặt cùng một lúc:
• Tải hình ảnh khn mặt đào tạo của một người đã biết (#1)
• Tải một hình ảnh khác của cùng một người được biết đến (#2
• Tải hình ảnh của một người hoàn toàn khác (#3)

18


Sau đó, thuật tốn xem xét các phép đo mà nó hiện đang tạo cho mỗi trong số
ba hình ảnh đó. Sau đó, nó tinh chỉnh mạng lưới thần kinh một chút để đảm bảo
các phép đo mà nó tạo ra cho # 1 và # 2 gần hơn một chút trong khi đảm bảo các
phép đo cho # 2 và # 3 cách xa nhau một chút:

19



Chương 4

Thiết kế và phân tích hệ thống

4.1 Thiết kế
4.1.1 Hệ thống

Hình 4.1 Sơ đồ lắp đặt hệ thống

Hệ thống bao gồm một camera được kết nối tới phòng bảo vệ. Camera được
đặt trong một khung đỡ và cách mặt đất 1,8m. Việc đặt camera cách mặt đất 1,8m sẽ
giúp tối ưu q trình nhận biết khn mặt, tăng độ chính xác và hạn chế gặp lỗi nhất
có thể.
Camera được sử dụng trong hệ thống là webcam Rapoo[1] với chất lượng
video chuẩn FHD 1080p, sử dụng cổng kết nối USB 3.0,2.0 giúp kết nối với máy
tính dễ dàng hơn.

20


Hình 4.2 Camera được sử dụng trong hệ thống

Và cuối cùng là máy tính được cài đặt hệ thống giám sát. Hệ thống chứa
chương trình sẽ được đặt trong phịng bảo vệ và nhân viên trong phịng bảo vệ có
nhiệm vụ quản lý, lưu dữ liệu trong quá trình nhận diện và gửi lên cấp trên.
4.1.2 Chương trình nhận diện và điểm danh

4.1.2.1 Chương trình chính (nhận diện và điểm danh)
Nhiệm vụ chính của chương trình là phát hiện khn mặt từ video thu được
thông qua camera, tách các khuôn mặt và so sánh với ảnh tĩnh được lưu trong thư

viện. Sau đó nhận diện khn mặt và hiển thị tên. Đồng thời lưu dữ liệu vào Excel
để trich xuất dữ liệu sau này.

Hình 4.3 Sơ đồ ngữ cảnh hệ thống

Như vậy các chức năng của hệ thống bao gồm:
• Lấy video từ camera và hiển thị lên màn hình.
• So sánh khn mặt với thư viện hình ảnh
• Nhận dạng ảnh khn mặt. Khi trùng khớp thì sẽ có tên hiện lên.
• Lưu dữ liệu vào excel.
Thơng qua các chức năng trên sẽ tạo ra được sơ đồ thực hiện như sau:

21


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

Hệ thống sau khi hoàn thành sẽ hoạt động như trên. Ngoài ra, để giúp việc
tạo thư viện một cách nhanh chóng và dễ dàng thì sẽ có một chương trình phụ đảm
nhiệu nhiệm vụ này.

4.1.2.2 Chương trình phụ (tạo thư viện hình ảnh)
Để cho chương chình trình hoạt động thì phải có một thư viện chứa các hình
ảnh của các đối tượng. Hình ảnh này có thể là ảnh màu hoặc trắng đen. Đối với yêu
cầu khi lưu ảnh vào thư viện: gương mặt phải nằm giữa khung ảnh, không bị chói
sáng hoặc mất đi một phần của gương mặt, ảnh phải được lưu dưới dạng “ .jpg”.
Có hai cách để lưu ảnh vào thư viện:
a) Cách 1: Hệ thống sẽ hổ trợ chụp ảnh bằng camera.
Đây là một chương trình phụ trong hệ thống giúp cho việc đăng kí hoặc
tạo lại ảnh của đối tượng cần nhận dạng một cách nhanh chóng và dễ

dàng.
Như vậy, chức năng của hệ thống phụ bao gồm:
22


• Lấy video từ camera và hiển thị lên màn hình.
• Phát hiện khn mặt.
• Lưu khn mặt vào thư viện.
Thông qua các chức năng của hệ thống sẽ lập ra được sơ đồ hoạt động
như sau:

Hình 4.5 Sơ đồ thực hiện chương trình phụ

b) Cách 2: Lấy hình ảnh được cung cấp copy trực tiếp vào thư viện
Hình ảnh này sẽ được cung cấp bởi đối tượng. Yêu cầu hình ảnh là gương
mặt phải nằm giữa khung hình, ảnh khơng bị mờ, chói sáng, mất một
phần gương mặt, và ảnh phải được lưu vào thư viện với định dạng “ .jpg”.

4.2 Phân tích chương trình
4.2.1 Cài đặt
Đầu tiên là phải cài đặt chương trình sử dụng cho việc viết code hệ thống.

23


Đồ án nhóm em sẽ sử dụng ngơn ngữ lập trình Python[2] được viết trên mơi trường
lập trình Visual Studio Code[3]. Ngoài ra cần phải cài đặt thư viện Opencv[4]. Sau
khi khởi tạo chương trình, chúng ta phải cài đặt thư viện vào Visual Studio Code
như bảng sau:


Bảng 4.1 Cài đặt thư viện

Cài đặt
thư viện
Opencv
Cài đặt
thư viện
Numpy
Cài đặt
thư viện
Image
Cài đặt
thư viện
nhận diện
khuôn
mặt

Pip install opencv-python
Pip install numpy
Pip install image

Pip install face_recognition

4.2.2 Viết mã nguồn
Do có hai chương trình nên mã nguồn sẽ được phân ra hai loại:
• Mã nguồn phụ tạo thư viện ảnh có tên “dataSet”.
• Mã nguồn chính dùng để nhận diện gương mặt và lưu dữ liệu.

4.2.2.1 Mã nguồn phụ
Bảng 4.2 Mã nguồn chương trình phụ


Đầu tiên phải xác nhận là
chương trình sử dụng bao nhiêu
thư viện và tiến hành gán vào
với câu lênh là “import”:
Theo các chuyên gia, việc
gán các thư viện ở đầu mã
nguồn giúp cho việc phát hiện
lỗi một cách dễ dàng và mạch
lạc hơn.

import cv2
import numpy as np
import os

24


face_cascade = cv2.CascadeClassifier
Đây là hàm dùng để truy cập
(cv2.data.haarcascades
vào thư viện opencv
+"haarcascade_frontalface_default.xml")
Đây là hàm dùng để nhập tên cap = cv2.VideoCapture(0)
cho hình ảnh được lưu giữ vào id = input("Nhap ID: ")
thư viện
name = input("Nhap Ten: ")
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame,

cv2.COLOR_BGR2GRAY)
Đây là hàm dùng để kẻ khung
faces =
cho khuôn mặt
face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(frame, (x,y), (x+w, y+h),
(0,255,0), 2)
Đây là hàm dùng để kiểm tra
xem có thư mục có tên
if not os.path.exists('dataSet'):
“dataSet” hay không. Nếu
os.makedirs('dataSet')
không sẽ tạo một thư mục có
tên “dataSet”
Đây là hàm dùng để lưu hình
cv2.imwrite("dataSet/" + str(name)+".jpg",
ảnh vào thư mục “dataSet” với
gray[y: y+h, x:x+w])
tên và định dạng .jpg
Sau khi hoàn thành mã nguồn, tiến hành chạy thử chương trình và thành quả
như sau:
Hình 4.6 Nhập tên và ID

Sau khi nhập tên, hệ thống sẽ bắt đầu truy cập camera và bắt đầu phát hiện
khuôn mặt. Hệ thống sẽ định hình khn mặt trong khoảng một giây.

25



×