You are on page 1of 30

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ

TRUYỀN THÔNG VIỆT - HÀN

ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐIỂM DANH BẰNG CÔNG NGHỆ NHẬN
DẠNG KHUÔN MẶT

Sinh viên thực hiện : Trần Dương Quang


Lớp : 18IT3
Giảng viên hướng dẫn : TS Lê Thị Thu Nga

Đà nẵng, tháng 5 năm 2020


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT - HÀN

ĐỒ ÁN CƠ SỞ 5

ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG ĐIỂM DANH BẰNG CÔNG NGHỆ NHẬN
DẠNG KHUÔN MẶT

Sinh viên thực hiện : Trần Dương Quang


Lớp : 18IT3
Giảng viên hướng dẫn : TS Lê Thị Thu Nga

Đà nẵng, tháng 5 năm 2020


NHẬN XÉT
(Của giảng viên hướng dẫn)

1
LỜI CẢM ƠN

Nhóm đồ án chúng em xin gửi lời cảm ơn đến cô Lê Thị Thu Nga– giảng viên
hướng dẫn đồ án cơ sở 5, và các thầy cô giảng dạy các bộ môn chuyên ngành khác đã dạy
và hướng dẫn nhiệt tình trong quá trình em thực hiện đồ án.
Tuy đã cố gắng nhưng không thể tránh khỏi những sai sót khi viết bài, em rất mong
nhận được sự chỉ bảo của thầy cô và các bạn. Cuối cùng, em xin chân thành cảm ơn cô và
bạn bè, đã luôn tạo điều kiện, quan tâm, giúp đỡ, động viên em trong suốt quá trình làm
đồ án.
Em xin chân thành cảm ơn !

2
MỤC LỤC

DANH MỤC CỤM TỪ VIẾT TẮT................................................................................5


DANH MỤC HÌNH VẼ...................................................................................................6
MỞ ĐẦU........................................................................................................................... 7
I. Lý do chọn đề tài....................................................................................................8
II. Công nghệ nhận diện khuôn mặt và thư viện sử dụng trong Python.............8
1. Công nghệ nhận diện khuôn mặt...................................................................8
2. Python và thư viện OpenCV.........................................................................13
CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG......................................................................15
I. Phân tích thiết kế hệ thống..................................................................................15
1. Nhiệm vụ và chức năng.................................................................................15
2. Lưu đồ thuật toán..........................................................................................15
3. Phân tích thiết kế...........................................................................................16
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH............................................................19
I. Triển khai cài đặt và xây dựng chương trình....................................................19
1. Cài đặt python và OpenCV...........................................................................19
2. Cài đặt thư viện numpy.................................................................................20
3. Cài đặt thư viện pilow...................................................................................21
4. Lấy dữ liệu sinh viên từ bàn phím và webcam............................................21
5. Kết nối với cơ sở dữ liệu mysql.....................................................................21
6. Khai báo camera............................................................................................21
7. Thiết kế giao diện..........................................................................................21
8. Kiểm tra đăng nhập giáo viên.......................................................................21
9. Update dữ liệu khi có sinh viên điểm danh..................................................22
10. Hàm tạo và thêm sinh viên vào hệ thống.....................................................23
11. Hàm huấn luyện tập dữ liệu.........................................................................23
KẾT LUẬN.....................................................................................................................27
I. Kết quả đạt được..................................................................................................27
II. Ưu điểm và nhược điểm...................................................................................27
1. Ưu điểm..........................................................................................................27
2. Nhược điểm....................................................................................................27

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

4
DANH MỤC CỤM TỪ VIẾT TẮT

STT Cụm từ Viết tắt


1 Cơ Sở Dữ Liệu CSDL
2 Viện Tiêu chuẩn và Công nghệ Quốc NIST
gia
3 Cơ quan Dự án Nghiên cứu Tiên tiến DARPA
Quốc phòng
4 Công nghệ nhận dạng khuôn mặt FERET
5 Nhà cung cấp nhận dạng khuôn mặt FRVT
6 Thử thách nhận dạng khuôn mặt FRGC

5
DANH MỤC HÌNH VẼ

Hình 1. Giao diện đăng nhập.......................................................................................28


Hình 2. Giao diện trang chủ hệ thống..........................................................................29
Hình 3. Nhập thông tin tạo tập mới.............................................................................30
Hình 4. Huấn luyện tập dữ liệu ảnh.............................................................................30
Hình 5. Tiến hành nhận diện.......................................................................................31

6
MỞ ĐẦU

Cùng với sự phát triển dữ dội của ngành công nghệ thông tin thì trí tuệ nhân tạo cũng
đóng một vai trò rất quan trong. Trí tuệ nhân tạo rất được cách ngành dịch vụ, du lịch,
giáo duc chào đón và quan tâm. Bên cạnh đó trí tuệ nhân tạo cũng được áp dụng khá phổ
biến trong đời sống hiện đại ngày nay. Và một trong những công nghệ trí tuệ nhân tạo
được áp dụng phổ biến nhất là nhận diện khuôn mặt.

Công nghệ nhận diện khuôn mặt là gì?


Công nghệ nhận diện khuôn mặt là chỉ một ứng dụng máy tính tự động xác định hoặc
nhận diện một người nào đó từ một hình ảnh kỹ thuật số hoặc một khung hình video từ
một nguồn video.Một trong những công nghệ lâu đời nhất để thực hiện điều này là so
sánh các đặc điểm của khuôn mặt chọn trước từ hình ảnh và một cơ sở dữ liệu về khuôn
mặt.

7
I. Lý do chọn đề tài
Cùng với sự phát triển và hội nhập của xã hội, kinh tế Việt Nam trong những năm gần
đây. Trí tuệ nhân tạo ngày càng được phát triển và đánh giá cao. Một trong những lĩnh
vực đang được nhiều người quan tâm của trí tuệnhân tạo đó là nhận dạng khuôn mặt
(Face Recognition). Như chúng ta đã biết, khuôn mặt đóng vai trò quan trọng trong quá
trình giao tiếp giữa người với người, nó mang một lượng thông tin giàu có, chẳng hạn
như từ khuôn mặt chúng ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm
xúc, đặc biệt là xác định mối quan hệ với đối tượng (có quen biết hay không).
Do đó, bài toán nhận dạng khuôn mặt đóng vai trò quan trọng trong nhiều lĩnh vực
đời sống hằng ngày của con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm
thông tin một người nổi tiếng,…đặc biệt là an ninh, bảo mật. Và đây cũng là lý do chúng
em chọn đề tài đồ án này.

II. Công nghệ nhận diện khuôn mặt và thư viện sử dụng trong Python
1. Công nghệ nhận diện khuôn mặt
1.1 Lịch sử phát triển
- Những ngày đầu của nhận dạng khuôn mặt – những năm 1960
Những người tiên phong sớm nhất về nhận dạng khuôn mặt là Woody Bledsoe,
Helen Chan Wolf và Charles Bisson. Năm 1964 và 1965, Bledsoe, cùng với Wolf và
Bisson bắt đầu làm việc bằng cách sử dụng máy tính để nhận ra khuôn mặt con người.
Do kinh phí của dự án có nguồn gốc từ một cơ quan tình báo giấu tên, phần lớn
công việc của họ không bao giờ được công bố. Tuy nhiên sau đó nó đã được tiết lộ rằng
công việc ban đầu của họ liên quan đến việc đánh dấu thủ công các "mốc" khác nhau trên
khuôn mặt như trung tâm mắt, miệng, v.v. Chúng sau đó được xoay toán học bởi một
máy tính để bù đắp cho sự thay đổi tư thế. Khoảng cách giữa các mốc cũng được tự động
tính toán và so sánh giữa các hình ảnh để xác định danh tính[1].
- Nâng cao độ chính xác của nhận dạng khuôn mặt - những năm 1970
Tiếp tục công việc ban đầu của Bledsoe, cây dùi cui được goldstein, Harmon và
Lesk nhặt được trong những năm 1970, người đã mở rộng công việc bao gồm 21 dấu hiệu
chủ quan cụ thể bao gồm màu tóc và độ dày môi để tự động nhận dạng.
Trong khi độ chính xác tiên tiến, các phép đo và địa điểm vẫn cần phải được tính
toán bằng tay được chứng minh là cực kỳ tốn nhiều công sức nhưng vẫn đại diện cho một
sự tiến bộ trên công nghệ RAND Tablet của Bledsoe.
- Sử dụng đại số tuyến tính để nhận dạng khuôn mặt - những năm 1980 / 90
Phải đến cuối những năm 1980, chúng tôi mới thấy sự tiến bộ hơn nữa với sự phát
triển của Nhận dạng khuôn mặt như một sinh trắc học khả thi cho các doanh nghiệp. Năm
1988, Sirovich và Kirby bắt đầu áp dụng đại số tuyến tính cho vấn đề nhận dạng khuôn
mặt
Một hệ thống được gọi là Eigenface cho thấy rằng phân tích tính năng trên một bộ
sưu tập các hình ảnh trên khuôn mặt có thể tạo thành một tập hợp các tính năng cơ bản.
Họ cũng có thể cho thấy rằng ít hơn một trăm giá trị được yêu cầu để mã hóa chính xác
một hình ảnh khuôn mặt được chuẩn hóa.

8
Năm 1991, Turk và Pentland tiếp tục công việc của Sirovich và Kirby bằng cách
khám phá cách phát hiện khuôn mặt trong một hình ảnh dẫn đến các trường hợp nhận
dạng khuôn mặt tự động sớm nhất. Bước đột phá quan trọng này đã bị cản trở bởi các yếu
tố công nghệ và môi trường, tuy nhiên nó mở đường cho sự phát triển trong tương lai
trong công nghệ Nhận dạng khuôn mặt
- Chương trình FERET – 1990s/2000s
Cơ quan Dự án Nghiên cứu Tiên tiến Quốc phòng (DARPA) và Viện Tiêu chuẩn
và Công nghệ Quốc gia (NIST) đã triển khai chương trình Công nghệ Nhận dạng Khuôn
mặt (FERET) vào đầu những năm 1990 để khuyến khích thị trường nhận dạng khuôn mặt
thương mại. Dự án liên quan đến việc tạo ra một cơ sở dữ liệu hình ảnh khuôn mặt.
Trong bộ thử nghiệm có 2.413 hình ảnh khuôn mặt tĩnh đại diện cho 856 người. Hy vọng
rằng một cơ sở dữ liệu lớn các hình ảnh thử nghiệm để nhận dạng khuôn mặt sẽ truyền
cảm hứng cho sự đổi mới và có thể dẫn đến công nghệ nhận dạng khuôn mặt mạnh mẽ
hơn.
- Kiểm tra nhà cung cấp nhận dạng khuôn mặt - những năm 2000
Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST) bắt đầu thử nghiệm nhà cung cấp
nhận dạng khuôn mặt (FRVT) vào đầu những năm 2000. Dựa trên FERET, FRVTs được
thiết kế để cung cấp các đánh giá độc lập của chính phủ về các hệ thống nhận dạng khuôn
mặt có sẵn trên thị trường, cũng như các công nghệ nguyên mẫu. Những đánh giá này
được thiết kế để cung cấp cho các cơ quan thực thi pháp luật và chính phủ Hoa Kỳ thông
tin cần thiết để xác định những cách tốt nhất để triển khai công nghệ nhận dạng khuôn
mặt
- Nhận dạng khuôn mặt Grand Challenge – 2006
Ra mắt vào năm 2006, mục tiêu chính của Thử thách lớn về nhận dạng khuôn mặt
(FRGC) là thúc đẩy và thúc đẩy công nghệ nhận dạng khuôn mặt được thiết kế để hỗ trợ
các nỗ lực nhận dạng khuôn mặt hiện có trong Chính phủ Hoa Kỳ[2].
FRGC đã đánh giá các thuật toán nhận dạng khuôn mặt mới nhất hiện có. Hình ảnh
khuôn mặt có độ phân giải cao, quét khuôn mặt 3D và hình ảnh mống mắt đã được sử
dụng trong các thử nghiệm. Kết quả chỉ ra rằng các thuật toán mới chính xác gấp 10 lần
so với các thuật toán nhận dạng khuôn mặt năm 2002 và chính xác hơn 100 lần so với
năm 1995, cho thấy những tiến bộ của công nghệ nhận dạng khuôn mặt trong thập kỷ
qua.
- Truyền thông xã hội - 2010-Hiện tại
Trở lại năm 2010, Facebook bắt đầu triển khai chức năng nhận dạng khuôn mặt
giúp xác định những người có khuôn mặt có thể xuất hiện trong các bức ảnh mà người
dùng Facebook cập nhật hàng ngày. Tính năng này ngay lập tức gây tranh cãi với các
phương tiện truyền thông, gây ra một loạt các bài viết liên quan đến quyền riêng tư. Tuy
nhiên, người dùng Facebook bởi và lớn dường như không nhớ. Không có tác động tiêu
cực rõ ràng đến việc sử dụng hoặc phổ biến của trang web, hơn 350 triệu ảnh được tải lên
và gắn thẻ bằng nhận dạng khuôn mặt mỗi ngày.
1.2. Nhận diện khuôn mặt là gì?
- Nhận diện khuôn mặt là một loại phần mềm sinh trắc học ánh xạ các đặc điểm
khuôn mặt của một cá nhân về mặt toán học và lưu trữ dữ liệu dưới dạng faceprint (dấu
9
khuôn mặt). Phần mềm sử dụng các thuật toán Deep Learning để so sánh ảnh chụp trực
tiếp hoặc hình ảnh kỹ thuật số với faceprint được lưu trữ để xác minh danh tính của một
cá nhân.
- Hệ thống này thường được sử dụng trong các hệ thống an ninh và có thể được so
sánh với các dạng sinh trắc học khác như các hệ thống nhận dạng vân tay hay tròng mắt
(theo wikipedia).
1.3. Ứng dụng nhận diện khuôn mặt hoạt động như thế nào?
Quá trình mà sinh trắc học nhận diện khuôn mặt hoạt động bao gồm:
- Lấy mẫu: Trước hết, để có thể phân tích khuôn mặt và nhận diện, cần phải tách
khuôn mặt ra khỏi khung cảnh còn lại trước đã
- Phân tích: Chúng ta nhận diện gương mặt mọi người qua các đặc điểm, hệ thống
nhận diện cũng vậy, nhưng nó thực hiện đánh giá các đặc điểm ở 1 level cao hơn
- So sánh: Mỗi khuôn mặt đều có nhiều điểm mốc, những phần lồi lõm tạo nên các
đặc điểm của khuôn mặt. Các hệ thống nhận diện gương mặt định nghĩa những điểm này
là những điểm nút:
- Kết quả: Hệ thống sau đó sẽ quyết định kết quả so sánh có phù hợp hay không.

- Mặc dù hệ thống nhận dạng khuôn mặt chỉ sử dụng 80 điểm nút, nhưng nó có thể
xác định nhanh chóng và chính xác mục tiêu khi điều kiện thuận lợi. Tuy nhiên, nếu
khuôn mặt của chủ thể bị che khuất một phần, loại phần mềm này trở nên ít đáng tin cậy
hơn. Theo Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST), tỷ lệ phát hiện không chính
xác trong các hệ thống nhận dạng khuôn mặt đã giảm một nửa cứ sau 2 năm, kể từ năm
1993.

1.4. Các ví dụ về nhận dạng khuôn mặt


- Camera chất lượng cao trong thiết bị di động đã làm cho tính năng nhận dạng
khuôn mặt trở thành một lựa chọn khả thi để xác thực cũng như nhận dạng. Chẳng hạn,
iPhone X và Xs của Apple, bao gồm công nghệ Face ID, cho phép người dùng mở khóa
điện thoại với một faceprint được ánh xạ bởi camera của điện thoại.
- Phần mềm điện thoại, được thiết kế với tính năng tạo hình 3D để chống lại việc bị
giả mạo bởi ảnh hoặc mặt nạ, sẽ chụp và so sánh hơn 30.000 biến. Face ID có thể được
sử dụng để xác thực mua hàng với Apple Pay và trong iTunes Store, App Store và iBooks

10
Store. Apple mã hóa và lưu trữ dữ liệu faceprint trên đám mây, nhưng việc xác thực diễn
ra trực tiếp trên thiết bị
- Các ví dụ khác về nhận dạng khuôn mặt bao gồm Amazon, MasterCard và
Alibaba, những bên đã triển khai các phương thức thanh toán bằng cách nhận dạng khuôn
mặt, thường được gọi là Selfie Pay.
- Các nhà phát triển có thể sử dụng Amazon Rekognition, một dịch vụ phân tích
hình ảnh, để thêm các tính năng nhận dạng và phân tích khuôn mặt vào một ứng dụng.
Google cung cấp khả năng tương tự với API Google Cloud Vision.
1.5. Ứng dụng của công nghệ nhận dạng khuôn mặt trong các ngành nghề
Nhận dạng khuôn mặt có thể được sử dụng cho vô số ứng dụng, từ bảo mật đến quảng
cáo. Một số trường hợp sử dụng bao gồm:
- Các nhà sản xuất điện thoại di động, như Apple, để bảo mật.
- Mạng xã hội, chẳng hạn như Facebook, để gắn thẻ các cá nhân trong ảnh.
- Bảo mật doanh nghiệp, vì các doanh nghiệp có thể sử dụng nhận dạng khuôn mặt
để vào tòa nhà.
- Tiếp thị. Các nhà tiếp thị có thể sử dụng nhận dạng khuôn mặt để xác định độ tuổi,
giới tính và dân tộc để nhắm mục tiêu tới đối tượng cụ thể
1.6. Lợi ích của việc nhận dạng khuôn mặt
Với việc sử dụng nhận dạng khuôn mặt mang đến một loạt các lợi ích tiềm năng, bao
gồm:
- Không cần phải trực tiếp tiếp xúc với thiết bị để xác thực (các kỹ thuật xác thực
sinh trắc học dựa trên tiếp xúc khác như máy quét dấu vân tay, có thể không hoạt động
chính xác nếu có vết bẩn trên tay của một người).
- 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 xác thực sinh trắc học khác.
- Dễ dàng tích hợp với các tính năng bảo mật hiện có.
- Độ chính xác được cải thiện theo thời gian.
- Có thể được sử dụng để giúp tự động hóa việc xác thực.
1.7. Nhược điểm của nhận dạng khuôn mặt
- Nhận dạng khuôn mặt không phải là hoàn hảo và khó khăn để thực hiện trong các
điều kiện nhất định. Ralph Gross, một nhà nghiên cứu tại Viện Mellon Robotics
Carnegie, mô tả một trở ngại liên quan đến các góc nhìn của khuôn mặt: "Nhận dạng
khuôn mặt đã thực hiện được khá tốt ở phía mặt trước và phía chênh lệch 20 độ, nhưng
ngay sau khi bạn đi về phía góc khuất, thì nó có vấn đề."
- Các điều kiện khác mà nhận dạng khuôn mặt không làm việc tốt bao gồm thiếu
ánh sáng, đeo kính mát, tóc dài, hoặc các đối tượng khác mà một phần khuôn mặt bị che,
và các hình ảnh độ phân giải thấp.
- Một bất lợi nghiêm trọng là nhiều hệ thống sẽ kém hiệu quả nếu biểu hiện khuôn
mặt khác nhau. Ngay cả một nụ cười lớn, cũng có thể làm cho hệ thống giảm tính hiệu

11
quả. Ví dụ: Canada hiện nay cho phép biểu lộ nét mặt trung tính trong ảnh chụp hộ chiếu.
[19]

- Ngoài ra còn có sự không thống nhất trong các dữ liệu được sử dụng bởi các nhà
nghiên cứu. Các nhà nghiên cứu có thể sử dụng bất cứ nơi nào từ nhiều đối tượng khác
nhau cho đến điểm số của các đối tượng, và một vài trăm bức hình cho tới hàng ngàn bức
hình. Điều quan trọng là các nhà nghiên cứu cho phép những bộ dữ liệu mà họ sử dụng
cũng có thể được sử dụng bởi người khác, hoặc có ít nhất một bộ dữ liệu chuẩn.
- Ngày 18/1/2013 các nhà nghiên cứu Nhật Bản đã tạo ra một tấm che mặt riêng tư
sử dụng ánh sáng gần dãi hồng ngoại làm cho bộ mặt bên dưới không thể nhận ra bởi
phần mềm nhận dạng khuôn mặt

12
2. Python và thư viện OpenCV
II.1 Python là gì?
- Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do
Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu
điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất sáng sủa,
cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho
phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu.
- Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy
nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một
dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.
- Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian,
Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows,
Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của Python có sự
đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ
yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của
Python.

II.2 OpenCV là gì?


OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác
máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA, và các vấn đề
liên quan tới thị giác máy. OpenCv được thiết kế một cách tối ưu, sử dụng tối đa mạnh
của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là
tốc độ đáp ứng của nó thể đủ nhanh cho các ứng dụng thông thường. 
OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau (cross-
platform),nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS… Việc sử
dụng thư viện OpenCv tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD
do đó bạn có thể sử dụng thư viện này một cách miễn phí cho các mục đích phi thương
mại lẫn thương mại. 
Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó được giới
thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy
nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008
bản 1.1 (prerelease) mới được ra đời. Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra
đời (thường gọi là phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên
bản trước có giao diện của C) và có nhiều điểm khác biệt so với phiên bản thứ nhất. 
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởi Willow
Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot. Cho đến nay,

13
OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none-profit
foundation) và được sự hưởng ứng rất lớn của cộng đồng

14
CHƯƠNG 2. PHÂN TÍCH HỆ THỐNG
I. Phân tích thiết kế hệ thống
1. Nhiệm vụ và chức nă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.

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

- Như vậy, các chức năng của chương trình bao gồm:
o Lấy một ảnh từ kết nối đến webcam hiển thị lên
o Thực hiện tách các khuôn mặt
o Thực hiện lưu khuôn mặt phát hiện được vào CSDL
o 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”
2. Lưu đồ thuật toán
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.
 Phát hiện khuôn mặt.
 Xử lí khuôn mặt
 Xử lý đầu ra
 Lưu điểm danh

15
3. Phân tích thiết kế
 Biểu đồ usecase tổng quát

 Biểu đồ hoạt động của giáo viên

16
 Biểu đồ hoạt động của sinh viên

 Biểu đồ trạng thái điểm danh

17
 Biểu đồ trạng thái quản lý dành cho giáo viên

18
CHƯƠNG 3. XÂY DỰNG CHƯƠNG TRÌNH
I. Triển khai cài đặt và xây dựng chương trình
1. Cài đặt python và OpenCV

Download Python tại https://www.python.org/downloads/, sau đó hoàn thành các bước


cài đặt và chuẩn bị cho khởi động

Pip là hệ thống quản lý các package của Python. Mình có thể tìm kiếm các package mà
pip hỗ trợ thông qua lệnh pip search.
pip search "opencv"
Như hình trên mình thấy, pip hiện tại hỗ trợ package opencv-python (phiên bản
4.3.0.36), nên mình có thể cài đặt OpenCV cho Python thông qua pip. Sử dụng lệnh pip
install để cài đặt OpenCV.
pip install opencv-python==4.3.0.36
Kiểm tra lại, nếu có thể import được OpenCV mà không báo lỗi thì việc cài đặt thành
công.
import cv2

19
2. Cài đặt thư viện numpy

Numpy là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc
tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu áp dụng
lên các mảng nhiều chiều đó. Numpy đặc biệt hữu ích khi thực hiện các hàm liên quan tới
Đại Số Tuyến Tính.

20
3. Cài đặt thư viện pilow

4. Lấy dữ liệu sinh viên từ bàn phím và webcam


5. Kết nối với cơ sở dữ liệu mysql

6. Khai báo camera

7. Thiết kế giao diện

8. Kiểm tra đăng nhập giáo viên

21
9. Update dữ liệu khi có sinh viên điểm danh

22
10. Hàm tạo và thêm sinh viên vào hệ thống

11. Hàm huấn luyện tập dữ liệu

23
II. Giao diện chương trình

Hình 1. Giao diện đăng nhập

Hình 2. Giao diện trang chủ hệ thống

24
Hình 3. Nhập thông tin tạo tập mới

Hình 4. Huấn luyện tập dữ liệu ảnh

25
Hình 5. Tiến hành nhận diện

26
KẾT LUẬN
I. Kết quả đạt được
Báo cáo đồ án đã trình bày được kiến thức cơ bản để giải quyết bài toán nhận dạng
khuôn mặt người. Riêng phương pháp nhận dạng mặt người bằng thư viện OpenCV được
trình bày ở chương 1 và chương 2. Từ kết quả cho thấy, độ chính xác của chương trình
chỉ đạt ở 70% nhận dạng đúng. Tuy nhiên, do thời gian hạn chế nên chương trình còn
nhiều khuyết điểm và nhiều ý tưởng chưa được thực hiện.
Để chương trình có thể sử dụng trong thực tế cần rất nhiều thời gian nghiên cứu và giải
quyết các vấn đề gặp phải, thực hiện các ý tưởng mới để nâng cao tốc độ, hiệu suất và độ
chính xác của chương trình.
II. Ưu điểm và nhược điểm
1. Ưu điểm
Trong số các kỹ thuật sinh trắc học, nhận dạng khuôn mặt có thể không đáng tin cậy và
hiệu quả nhất. Tuy nhiên, một trong những lợi thế quan trọng là nó không đòi hỏi sự hợp
tác của các đối tượng thử nghiệm. Các hệ thống thiết kế được lắp đặt tại các sân bay, khu
chung cư, và những nơi công cộng khác có thể xác định các cá nhân giữa đám đông, mà
không bỏ sót một ai. Sinh trắc học khác như dấu vân tay, quét mống mắt, và nhận dạng
giọng nói không thể thực hiện được như vậy. Tuy nhiên, câu hỏi đã được đặt ra về hiệu
quả của phần mềm nhận dạng khuôn mặt trong trường hợp của an ninh đường sắt và sân
bay.
2. Nhược điểm
Mặc dù nhận dạng khuôn mặt đã thực hiện được khá tốt ở phía mặt trước và phía
chênh lệch 20 độ, nhưng ngay sau khi bạn đi về phía góc khuất, thì nó có vấn đề.
Một số điều kiện có thể ảnh hưởng tới tính chính xác của phương pháp như:
 Thiếu ánh sáng, đeo kính mát, tóc dài, hoặc một phần khuôn mặt bị che
 Hình ảnh độ phân giải thấp
 Hệ thống sẽ kém hiệu quả nếu biểu hiện khuôn mặt khác nhau, ví dụ như khi cười
lớn cũng có ảnh hưởng. Vì vậy nên chụp ảnh hộ chiếu, chứng minh thư, hay khi đi 1 qua
cửa hộ chiếu chụp ảnh hộ

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

[1] Paul Viola and Michael Jones (2001). Rapid Object Detection using a Boosted
Cascade of Simple Features. Computer Vision and pattern Recognition.
[2] Shengcai Liao, Xiangxin Zhu, Zhen Lei, Lun Zhang, and Stan Z Li (2007).
Learning multi-scale block local binary patterns for face recognition. In Advances in
Biometrics, Springer, pages 828– 837.
[3] OpenCV 3.2.0 documentation - Cascade Classifier Training. [Online].
http://docs.opencv.org/3.2.0/dc/d88/tutorial_traincascade.html
[4] Abhijeet Tayde, A. S. Deshpande. Face Recognition with Local Binary Patterns,
Spatial Pyramid Histograms and Naive Bayes Nearest Neighbor classification
[5] OpenCV 2.4.13.0 documentation - Miscellaneous Image Transformations.
[Online].
http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html#cvt
color.
[6] Yann Rodriguez and S´ebastien Marcel, Face Authentication Using Adapted Local
Binary Pattern Histograms
[7] Trần Như Ý, Nguyễn Văn Tùng, Ngô Dương Hà, PHƯƠNG PHÁP PHÁT HIỆN
NGƯỜI DỰA TRÊN VÙNG CHUYỂN ĐỘNG
[8] T. Ojala, M Pietikäinen, and D Harwood (1996). A Comparative Study of Texture
Measures with Classification Based on Feature Distributions. Pattern Recognition 29(1).

28

You might also like