Professional Documents
Culture Documents
Thiết kế đồ án
Thiết kế đồ án
i
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
LỜI CẢM ƠN
Em xin chân thành gửi lời cám ơn đến quý thầy cô trường Đại Học Giao
Thông Vận Tải nói chung và các thầy cô bộ môn trong khoa Điện - Điện Tử nói
riêng đã tạo điều kiện cho chúng em cơ hội thực hành, tiếp xúc để chúng em có thể
tránh được những vướng mắc và bỡ ngỡ trong môi trường công việc thời gian tới.
Em xin chân thành cảm ơn TS Đào Thanh Toản. Nhờ sự giúp đỡ tận tình và
những chỉ bảo của Thầy từ lúc bắt đầu cho tới lúc kết thúc đồ án mà em đã hoàn
thành đúng thời hạn quy định và tích lũy được cho mình một lượng nền tảng kiến
thức quý báu.
Mặc dù đã cố gắng hoàn thành đề tài tốt nhất nhưng do thời gian và kiến thức
còn có hạn nên em sẽ không thể tránh khỏi những thiếu sót nhất định, rất mong nhận
được sự cảm thông, chia sẻ và tận tình đóng góp chỉ bảo của quý thầy cô cũng như
các bạn
Long
Vũ Đức Long
ii
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
iii
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT.............................................................................................................3
KẾT LUẬN...................................................................................................................................................30
iv
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
PHỤ LỤC.....................................................................................................................................................31
CV Computer Vision
CONV Convolution
vi
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hệ thống camera giám sát ngày nay đã trở nên phổ biến và đang được sử dụng
rộng rãi trong nhiều lĩnh vực với nhiều mục đích hỗ trợ khác nhau. Nhưng
camera chỉ có khả năng lưu trữ dữ liệu hình ảnh hoặc video và chúng ta cần
thêm nhân lực để giám sát hoặc xử lý thông tin. Phương pháp này đã dần trở
nên không hiệu quả, tốn kém chi phí, thời gian và phụ thuộc nhiều vào yếu tố
con người, khó khăn trong việc tìm kiếm dữ liệu. Cùng thuộc vấn đề này là
việc điểm danh hay chấm công, ở trong các trường học hiện nay chủ yếu vẫn
điểm danh theo phương pháp thủ công rất mất thời gian và công sức. Cải tiến
hơn một chút, ở các công ty, trụ sở sử dụng phương pháp sinh trắc bằng vân
tay, tuy nhiên việc này gây một số bất tiện cho người sử dụng, ví dụ như khi
họ phải sử dụng tay để cầm nắm một món đồ, hoặc khi không may ngón tay
họ bị thương hoặc dính bẩn sẽ ảnh hưởng tới việc nhận dạng vân tay.
Với mong muốn cải thiện những nhược điểm của các hệ thống trước kia,
trong đề tài cuối kỳ này em xin phép được nghiên cứu, xây dựng và mô phỏng
hệ thống điểm danh sử dụng Học Sâu và Trí tuệ nhân tạo.
1
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Tìm hiểu phương pháp nhận diện khuôn mặt người và áp dụng xây dựng
hệ thống điểm danh
Để hoàn thành mục tiêu cần thực hiện các nhiệm vụ sau:
● Tìm hiểu phương pháp xác định vị trí khuôn mặt người
● Xây dựng hệ thống giao diện người dùng cho mục đích điểm danh
● Tìm kiếm và nghiên cứu các tài liệu về nhận dạng khuôn mặt
2
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Các đối tượng cần nghiên cứu và phạm vi nghiên cứu có thể giải quyết được
đề tài:
- Đối tượng nghiên cứu: Trí tuệ nhân tạo, lập trình python.
- Phạm vi nghiên cứu: Mạng CNN, các module trong python: opencv,
numpy, os, face-recognition,cmake, image.
Nội dung trình này giới thiệu về OpenCV,face_recognition, các thuật toán.
So sánh giữa các thuật toán chỉ thuần sử dụng học máy và các thuật toán có sử
dụng đến các mô hình học sâu, từ đó đưa ra đề xuất lựa chọn phương án để xử lý
bài toán mà em đề ra
Sản phẩm được em hoàn thành cho báo cáo lần này có bao gồm phần giao
diện người dùng đã được em thiết kế và kết hợp với phần nhận diện khuôn mặt
để cho ra một sản phẩm mô phỏng hoàn chỉnh. Vậy nên trong chương này em
trình bày về các thức hoạt động của giao diện người dùng này.
3
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Chương cuối đề cập kết quả mà em đã đạt được trong quá trình chạy thử
nghiệm phần mềm
CHƯƠNG 2:
4
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU MẠNG CNN
Trình bày một kiến trúc mạng CNN, các lớp cơ bản trong một mạng CNN
bao gồm: lớp tích chập (Convolutional); lớp kích hoạt phi tuyến ReLU (Rectified
Linear Unit); lớp lấy mẫu (Pooling); lớp kết nối đầy đủ (Fully connected) được
thay đổi về số lượng và cách sắp xếp để tạo ra các mô hình huấn luyện phù hợp
cho từng bài toán khác nhau. Các lớp tích chập (Convolutional), kích hoạt phi
tuyến ReLU và lấy mẫu (Pooling) Các lớp kết nối đầy đủ (Fully connected) Phân
loại Hình 1. Kiến trúc cơ bản của một mạng CNN.
Lớp tích chập: đây là thành phần quan trọng nhất trong mạng CNN, thể hiện
sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh. Các liên kết cục bộ được
tính toán bằng phép tích chập giữa các giá trị điểm ảnh trong một vùng ảnh cục
bộ với các bộ lọc filters có kích thước nhỏ. (hình 2.1)
5
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hình 2.2 Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh
Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh. Trong hình 2.2, bộ lọc
được sử dụng là một ma trận có kích thước 3x3, bộ lọc này dịch chuyển lần lượt
qua từng vùng ảnh đến khi hoàn thành quét toàn bộ bức ảnh, tạo ra một bức ảnh
mới có kích thước nhỏ hơn hoặc bằng với kích thước ảnh đầu vào. Kích thước
này được quyết định tùy theo kích thước các khoảng trắng được thêm ở viền bức
ảnh gốc và được tính theo công thức sau:
i+2∗p−k
O= +1(2.1)
s
Trong đó: O: kích thước ảnh đầu ra; i: kích thước ảnh đầu vào; p: kích thước
khoảng trắng phía ngoài viền của ảnh gốc; k: kích thước bộ lọc; s: bước trượt của
bộ lọc. Như vậy, sau khi đưa một bức ảnh đầu vào cho lớp tích chập nhận được
kết quả đầu ra là một loạt ảnh tương ứng với các bộ lọc đã được sử dụng để thực
hiện phép tích chập. Các trọng số của các bộ lọc này được khởi tạo ngẫu nhiên
trong lần đầu tiên và sẽ được cập nhật trong quá trình huấn luyện. - Lớp kích hoạt
phi tuyến ReLU: được xây dựng để đảm bảo tính phi tuyến của mô hình huấn
luyện sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp tích
chập. Lớp kích hoạt phi tuyến sử dụng các hàm kích hoạt phi tuyến như ReLU
hoặc sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu ra.
6
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Trong số các hàm kích hoạt này, hàm ReLU được chọn do cài đặt đơn giản, tốc
độ xử lý nhanh mà vẫn đảm bảo được tính toán hiệu quả. Phép tính toán của hàm
ReLU chỉ đơn giản là chuyển tất cả các giá trị âm thành giá trị 0. Lớp ReLU
được áp dụng ngay phía sau lớp tích chập, với đầu ra là một ảnh mới có kích
thước giống với ảnh đầu vào, các giá trị điểm ảnh cũng hoàn toàn tương tự, trừ
các giá trị âm đã bị loại bỏ.
𝑓(𝑥) = 𝑚𝑎𝑥(0, 𝑥) (2.2)
Lớp lấy mẫu: được đặt sau lớp tích chập và lớp ReLU để làm giảm kích
thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu
vào. Việc giảm kích thước dữ liệu có tác dụng làm giảm được số lượng tham số
cũng như tăng hiệu quả tính toán. Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để
quét toàn bộ các vùng trong ảnh như lớp tích chập, và thực hiện phép lấy mẫu
thay vì phép tích chập, sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ
thông tin của vùng ảnh đó.
Hình 3 thể hiện các phương thức lấy mẫu thường được sử dụng nhất hiện
nay, đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy
giá trị trung bình của các điểm ảnh trong vùng ảnh cục bộ).
7
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu sẽ thu được một ảnh
đầu ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các
đặc trưng cần thiết cho quá trình tính toán và nhận dạng.
Lớp kết nối đầy đủ: được thiết kế tương tự như trong mạng nơ ron truyền
thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo.
So với mạng nơ ron truyền thống, các ảnh đầu vào của lớp này đã có kích
thước được giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng
của ảnh cho việc nhận dạng. Do vậy, việc tính toán nhận dạng sử dụng mô hình
truyền thẳng đã không còn phức tạp và tốn nhiều thời gian như trong mạng nơ
ron truyền thống.
2.2HÀM OPENCV
OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay
phát triển về thị giác máy tính.
Tối ưu hóa và xử lý ứng dụng trong thời gian thực.
Giúp cho việc xây dựng các ứng dụng xử lý ảnh, thị giác máy tính ... một
cách nhanhhơn.
OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ
các công việc như: xử lý ảnh, an ninh, camera quan sát, nhận diện, robot...
Thư viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều
hành Linux, Window và MacOsX. OpenCV được thiết kế để nâng cao hiệu suất
tính toán và nhấn mạnh đến hệ thống thời gian thực. OpenCV đưa ra một hệ
thống đơn giẩn, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng
trong thị giác máy, kể cả các hệ thống kiểm tra trong nhà máy, bức ảnh trong lĩnh
vực y học, bảo mật, robot học... Nó chứa các lập trình xử lý ảnh đơn giản, kể cả
thực thi các hàm bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng
khuôn mặt...OpenCV được giới thiệu vào tháng 1/1999, OpenCV đã được sử
dụng trong rất nhiều ứng dụng, các sản phẩm và các nghiên cứu như: trong lĩnh
8
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
vực hàng không, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh,
hệ thống dò tìm, theo dõi tự động và hệ thống bảo mật...., ngoài ra nó còn được
sử dụng trong nhận dạng âm thanh. OpenCV còn là một chìa khóa quan trọng
trong các robot sử dụng thị giác như Stanford, Asimo.
Cấu trúc của opencv được chia làm 5 phần chính, 4 trong số đó được chia ra
như trong hình sau:
Từ các phương pháp được đưa ra ở phần trước, bài toán phát hiện khuôn mặt
được thực hiện theo các bước:
9
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Tiền xử lí
Dò tìm khuôn mặt
Hậu xử lí
2.3HÀM FACE-RECOGNITION
Thuật toán nhận dạng khuôn mặt được sử dụng để tìm các tính năng được mô
tả duy nhất trong hình ảnh. Hình ảnh khuôn mặt đã được trích xuất, cắt xén, thay
đổi kích thước và thường được chuyển đổi trong thang độ xám.
Hình 2.5 Trong thư mục của “face-recognition” đã có các bộ huấn luyện có sẵn
10
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
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 được 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 đặc trưng (feature extraction) ở mỗi
lĩnh vực. Trong khi nhận dạng vân tay và nhận dạng 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
11
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
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 đầu tiên thường được áp 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 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 gặp nhiều khó khăn do tác động từ các yếu tố bên ngoài như ánh sáng,
hướng nghiêng, kích thước ả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
● 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
12
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
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.
● Trích chọn đặ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 chọn 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. Mục đích của bộ mô tả là có khả năng phân biệt giữa
những khuôn mặt khác nhau.
● 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.
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ôn mặ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:
● 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
● Nhận dạng dựa trên xét tổng thể toàn khuôn mặt (Appearance Based
Face Recognition)
2.4.1. Nhận dạng dựa trên các đặc trưng khuôn mặt
Đây là phương pháp nhận dạng khuôn mặt dựa trên việc xác định các
đặc trưng hình học của các chi tiết trên khuôn mặt như vị trí, diện tích,
13
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
khoảng cách của mắt, mũi, miệng, ….và mỗi quan hệ giữa chúng ví dụ như
khoảng cách giữa hai mắt.
Ưu điểm của phương pháp này là nó gần với cách mà con người sử
dụng để nhận biết khuôn mặt. Hơn nữa với việc xác định đặc tính và các
mối quan hệ, phương pháp này cho kết quả tốt trong các điều kiện không có
kiểm soát.
Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc
xác định mối quan hệ giữa các đặc tính, đòi hỏi các thuật toán phức tạp và
phương pháp này sẽ hoạt động không hiệu quả khi kích thước hình ảnh nhỏ
vì rất khó phân biệt được các đặc tính.
Trong đề tài đồ án lần này, em xin phép được lựa chọn phương pháp
thứ nhất, tức là nhận dạng khuôn mặt dựa trên các đặc trưng của khuôn mặt.
Đây cũng là một thách thức rất lớn bởi phát hiện khuôn mặt dựa vào các
đặc trưng của nó sẽ phụ thuộc vào nhiều yếu tố như tỷ lệ, vị trí, hướng nhìn
(từ trên xuống, quay,…), kiểu chụp (chụp đối diện, chụp ngang,…). Ngoài
ra những cảm xúc của khuôn mặt, một số phần bị che, hoặc hướng ánh sáng
cũng ảnh hưởng đến bài toán phát hiện khuôn mặt
14
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
2.5. Những khó khăn và thách thức trong bài toán nhận diện khuôn mặt
Bài toàn nhận diện mặt người đã được nghiên cứu từ những năm 70, người
đầu tiên là Kanade. 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. Có thể kể đến những
thách thức sau:
● Tư thế, góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì
góc chụp giữa camera và khuôn mặt. Chẳng hạn như chụp thẳng, chụp
chéo bên trái 45 độ, hay chéo bên phải 45 độ, chup từ trên xuống, chup
từ dưới lên,…. Với các tư thế khác nhau, các thành phần trên khuôn
mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc 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ư ria mép, râu hàm, mắt kính… có thể xuất hiện hoặc không.
Vấn đề này làm cho bài toán càng trở nên khó hơn nhiều.
● Cảm xúc biểu hiện trên khuôn mặt: Cảm xúc 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 sẽ rất khác khi họ cười hoặc sợ hãi.
● Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác,
● Hướng của ảnh: Các ảnh của khuôn 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
15
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
● Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về:
chiếu sang, tính chất camera (máy ảnh kỹ thuật số, máy ảnh hồng
ngoại,…) ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt.
2.6. Ứng dụng của bài toán nhận diện khuôn mặt
Ứng dụng của bài toán nhận diện khuôn mặt có rất nhiều và đã được triển
khai tương đối hiệu quả trong thực tế. Có thể kể đến một số ứng dụng điển
hình sau:
Dựa vảo ảnh của một người nhận dạng xem người ấy có phải tội phạm
hay không bằng cách so sánh với các ảnh tội phạm đang được lưu trữ. Hoặc
có thể sử dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này
giúp cơ quan an ninh quản lý con người tốt hơn.
Các hệ thống camera sẽ xác định đâu là người không thuộc bộ dữ liệu nó
đã được cung cấp và theo dõi xem người lạ đó có làm gì phạm pháp không ví
dụ như lấy trộm đồ hoặc xâm nhập bất hợp pháp vào một khu vực nào đó để
đưa ra cảnh báo tới người giám sát.
Bảo mật:
Các ứng dụng về bảo mật rất đa dạng, một trong số đó là hệ thống
FaceID của các dòng điện thoại smartphone, cho phép chủ nhân có thể mở
máy chỉ thông qua việc đưa máy lên trước mặt mình. Để sử dụng công nghệ
này, người dùng phải cho máy điện thoại chụp hình khuôn mặt bản thân để
16
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
làm dữ liệu cho nó “học” các đặc điểm nhận diện giúp cho quá trình đăng
nhập sau này.
Lưu trữ khuôn mặt:
Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự
động (ATM) để lưu trử khuôn mặt của người rút tiền. Hiện nay có một số
người bị người khác lợi dụng lấy trộm thẻ ATM và mã PIN dẫn đến việc mất
tiền trong thẻ, hoặc có những chủ tài khoản đi rút tiền nhưng lại báo với
ngân hàng là bị mất thẻ hoặc bị rút trộm tiền. Nếu lưu trữ được khuôn mặt
của người rút tiền, ngân hàng có thể đối chứng và xử lý dễ dàng hơn.
Việc điểm danh một cách thủ công sẽ rất mất thời gian và công sức,
bằng các công nghệ sinh trắc sẽ gặp một số bất tiện về điều kiện người dùng.
Với nhận diện khuôn mặt, người dùng chỉ việc đứng trước một camera, nó sẽ
phát hiện và định danh người đó là ai để chấm công, điểm danh mà không
cần phải làm thêm một tác vụ gì khác.
● Điều khiển mở cửa ra vào tại các công ty, trụ sở. Cho phép nhân viên
được ra vào những nơi thuộc thẩm quyền họ được cho phép
● An ninh sân bay, xuất nhập cảnh. Dùng camera quan sát để xác thực
người nhập cảnh và kiểm tra xem người đó có phải là tội phạm đang
bị truy nã hay các phần tử khủng bố có trong cơ sở dữ liệu hay không
● Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua
khuôn mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn như
17
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
internet, các hãng truyền hình,… Ví dụ tìm các đoạn video có Tổng
Bí Thư Nguyễn Phú Trọng phát biểu, tìm các trận bóng có Messi
đá, ...
● Kiểm tra tình trạng người lái xe có ngủ gật hay mất tập trung không,
● Tương lai sẽ phát triển các loại thẻ thông minh có tích hợp sẵn đặc
trưng của người dùng trên đó, khi bất cứ người dùng khác dùng để
truy cập hay xử lý tại các hệ thống sẽ được yêu cầu kiểm tra các đặc
trưng khuôn mặt so với thẻ để biết người này có phải là chủ thẻ hay
không
18
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Mô hình nhận dạng được chia thành 3 bước chính (Hình 3.1), bao gồm:
Bước 1: Tạo tập dữ liệu.
Bước 2: Huấn luyện dữ liệu đưa vào và trích chọn các đặc trưng.
Bước 3: Phân loại ảnh khuôn mặt dựa trên đặc trưng được trích chọn và đưa
ra kết quả.
Hình 3.5 Sơ đồ quy trình của mô hình nhận dạng khuôn mặt
3.2 CÁC BƯỚC THỰC HIỆN
Các dữ liệu dùng để huấn luyện có thể lấy từ ảnh có sẵn hoặc lấy từ webcam.
Các bước phát hiện khuôn mặt và lấy dữ liệu là giống nhau.
Bước 1: Tiền xử lý
- Phương pháp thực hiện trên ảnh xám (gray image). Mỗi điểm ảnh (pixel) sẽ
có giá trị mức xám từ 0 đến 255(không gian màu 8 bit). Như vậy phương pháp sẽ
không khai thác những đặc điểm về màu sắc khuôn mặt để nhận dạng song vẫn
rất hiệu quả. Ảnh màu sẽ được chuyển về ảnh xám để nhận dạng, việc chuyển đổi
này khá đơn giản, thực hiện bằng một hàm chuyển đổi và sử dụng chỉ với một
19
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
câu lệnh trong OpenCV nên báo cáo chưa đề cập tới. Sau khi chuyển thành ảnh
xám, ảnh lại tiếp tục được chuyển thành “ảnh tích hợp” và trong bước đầu tiên
của quá trình nhận dạng.
20
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hàm detectMultiScale là phần tìm kiếm khuôn mặt, hàm (hay phương thức)
này thuộc lớp CascadeClassifier (lớp phục vụ tìm kiếm đối tượng của OpenCV)
Hàm detectMultiScale sau khi tìm kiếm xong sẽ trả về bộ giá trị gồm tọa độ
gốc của khung chứa khuôn mặt x, y; chiều dài, rộng của khung w, h. Các giá trị
này nằm trong mảng faces. Cấu trúc for...sẽ duyệt qua toàn bộ các bộ giá trị
này,với mỗi bộ giá trị ta dùng hàm rectangle để vẽ một hình chữ nhật lên ảnh ban
đầu với tọa độ 2 điểm trái trên và phải dưới: (x,y),(x+w,y+h). (0,0,255) là màu sẽ
vẽ hình chữ nhật.
21
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hình 3.5 Đưa bức ảnh cần nhận diện vào chương trình
Mô hình CNN được thiết kế gồm hai phần chức năng là trích chọn đặc trưng
của ảnh khuôn mặt và phân lớp đối tượng dựa trên đặc trưng đã chọn. Mô hình
CNN bao gồm nhiều lớp, số lớp nơron và độ lớn (số nơron) của mỗi lớp ảnh
hưởng đến chất lượng cũng như độ phức tạp trong tính toán của mạng nơron. Các
nghiên cứu thường điều chỉnh hai yếu tố này tuỳ theo bài toán ứng dụng để đạt
22
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
được chất lượng mong muốn và đồng thời đảm bảo sự phức tạp tính toán .
23
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
• Khối B1 là ảnh đầu vào có kích thước H×W×1 (cao × rộng × sâu). Để giảm
bớt không gian và bộ nhớ của quá trình tính toán mạng nơron nên chúng tôi sử
dụng ảnh đầu vào đa cấp xám (số chiều thứ 3 (độ sâu) trong kích thước ảnh bằng
1). Hình vẽ sau minh hoạ cho một ảnh đầu vào:
Hình 3.8 Một ảnh đầu vào kích thước 100x100x1 (đa cấp xám)
• Khối B2, B3 là lớp nơron tích chập có 2 bộ lọc đặc trưng với kích thước
cửa sổ hàm nhân là 3×3. Hàm kích hoạt ReLu được sử dụng trong lớp nơron này.
Hiệu ứng này nhằm cải thiện các đặc trưng thưa của toàn mạng và tránh sự phụ
thuộc vào việc truyền tham số giữa các nơron.
• Khối B4 là lớp Maxpooling, cửa sổ xử lý có kích thước 2×2 được sử dụng.
Lớp giảm không gian mẫu (downsampling) này sử dụng phương pháp
MaxPooling với việc có thể giữ lại thông tin hữu ích và cắt giảm lượng dữ liệu
cần xử lý ở bước tiếp theo.
Hình 3.8 minh hoạ kết quả xử lý của lớp nơron tích chập CONV ở khối B2
và lớp MaxPooling ở khối B3.
Khối B5 tương tự khối B3 nhưng số các bộ lọc (filter) tăng lên 4, sau đó khối
này kết nối ngay theo sau khối tích chập CONV để thực hiện cắt giảm không
gian mẫu.
Thông thường, chúng ta càng có nhiều bước sử dụng phép tích chập thì cơ
hội trích chọn càng nhiều đặc trưng phức tạp hơn, qua đó kỳ vọng mô hình đề
xuất có thể học để nhận biết đối tượng ở mức tốt hơn. Chẳng hạn, trong phân loại
hình ảnh, mô hình CNN có thể học để phát hiện các đặc trưng cạnh từ các pixel
thô trong lớp CONV đầu tiên, sau đó sử dụng các đặc trưng cạnh này để phát
24
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
hiện các đặc trưng hình dạng đơn giản trong lớp CONV thứ hai, sau đó sử dụng
các đặc trưng hình dạng này để phát hiện các đặc trưng ở mức cao hơn, chẳng
hạn như hình dạng khuôn mặt ở các lớp cao hơn.
25
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
•Khối B7 là lớp nơron kết nối đầy đủ (fully connected layers). Lớp này cùng
với lớp trong khối B8 nhằm mục tiêu phân lớp các đặc trưng được trích chọn ở
các lớp trước, do đó chúng tôi thiết kế số nơron đủ lớn. Hàm kích hoạt ReLu
cũng được áp dụng. Dữ liệu sau đây là đầu ra của 512 nơron đầu tiên trong khối
B7, các giá trị ở đây được xem như biểu diễn dạng số của các đặc trưng khuôn
mặt tương ứng với ảnh đầu vào.
• Khối B8 là lớp nơron đầu ra cuối cùng, đây chính là một phân bố cho phân
loại của các lớp đối tượng khác nhau với tính năng của hàm kích hoạt Softmax.
Áp dụng phương pháp hồi quy Softmax ở lớp đầu ra của mạng CNN nhằm thẩm
định cho quá trình huấn luyện mạng. Cơ chế thẩm định này đảm bảo mô hình
CNN không bị quá khớp (overfiting) dữ liệu học và có khả năng dự đoán tốt hơn.
Cơ chế này được thực hiện thông qua việc chia dữ liệu học thành hai phần, một
phần để tính toán cập nhật và điều chỉnh trọng số mạng, một phần để tính toán
sai số và cũng đưa vào pha cập nhật thay đổi trọng số mạng. Đầu ra phân lớp
cuối cùng của mô hình được xác định dựa trên giá trị cực đại hàm Softmax của
nơron tương ứng, với mô hình CNN có lớp (tức là có nơron ở lớp ra) thì ta có
công thức xác định như sau:
outputclassified = argmaxCk{Ok: k = 1, …, |Ok|} (3.1)
Trong đó, Ok là đầu ra của nơron thứ ở lớp nơron cuối cùng và tương ứng với
nó là lớp đối tượng Ck.
Bảng 3.1 minh hoạ dữ liệu gồm 5 giá trị sau là kết quả đầu ra của lớp nơron
cuối cùng (khối B8), tương ứng với kết quả phân lớp của ảnh đầu vào. Kết quả
đầu ra của mô hình CNN tương ứng với mỗi ảnh đầu vào gồm 5 giá trị (ở đây chỉ
minh hoạ với 5 lớp). Giá trị cao nhất ở vị trí nào (tính theo chỉ số từ 0 và từ trái
sang phải) trong bộ 5 giá trị đầu ra chính là định danh cá nhân (vị trí tương ứng
giá trị và số in đậm) của dữ liệu ảnh đầu vào.
26
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
27
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Sau khi mô hình được huấn luyên, lưu module vào file “ImagesAttendance”,
sau đó dùng file này để nhận diện và dự đoán khuôn mặt của hình ảnh đưa vào.
Từ dữ liệu đầu ra của module, đặt tên cho khuôn mặt được nhận diện riêng
biệt. Từ đó sử dụng hàm có sẵn trong OpenCV để hiển thị chữ phía dưới hình
vuông nhận diện khuôn mặt. Cách đặt tên tương ứng với hình ảnh như hình 3.13.
28
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
- So sánh kết quả trước và sau khi nhận diện 1 một khuôn mặt:
29
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hình 4.3 Hình ảnh sau khi nhận diện (Vũ Long)
30
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Hình 4.6 : Kết quả so sánh phát hiện 2 người khác nhau
31
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
-Đối với so sánh 2 gương mặt, kết quả cho ra tương tự như nhận diện một
khuôn mặt và có độ chính xác cao.
32
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
KẾT LUẬN
1.Kết quả
-Nhận diện được real time camera và phát hiện tên người
-Hiểu thêm về khái quát xử lý ảnh
-Hiểu thêm về bài toán xử lý nhận dạng khuôn mặt con người
-Học hỏi thêm về ngôn ngữ lập trình Python và thư viện Opencv
Hoàn thiện về phần giao diện. Tối ưu hóa việc sử dụng của người dùng và
ứng dụng. Sử dụng các phương pháp học dữ liệu nhận diện khuôn mặt này để áp
dụng vào điểm danh ở các nơi công sở, trường học để thuận lợi cho việc quản lý
nhân sự.
[1] PGS. TS Trương Ngọc Sơn, Trí tuệ nhân tạo cơ sở và ứng dụng,
Đại học quốc gia TPHCM, 2020.
[2] Tài liệu online.
[3] Q. Zhang, M. Zhang, T. Chen, Z. Sun, Y. Ma, and B. Yu, “Recent
advances in convolutional neural network acceleration,” Neurocomputing, vol.
323, pp. 0–38, 2019, doi: 10.1016/j.neucom.2018.09.038.
33
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
Phụ Lục
Chương trình được thực hiện trên môi trường pycharms với 2 chương trình như
sau:
1.1 Xây dựng dữ liệu
34
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
35
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
36
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
37
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1