Professional Documents
Culture Documents
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
KẾT LUẬN........................................................................................................................................... 34
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
PHỤ LỤC…………………………………………………………………………………………………..36
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
v
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
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
● Tìm hiểu phương pháp nhận diện 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
● Tìm hiểu các công cụ để xây dựng hệ thống
● Thu thập dữ liệu thực tế
● Thiết kế hệ thống và triển khai xây dựng chương trình
● Kiểm thử và đánh giá kết quả
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.
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
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 1.1)
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
Hình 1.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 1.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:
𝑖+2∗𝑝−𝑘
𝑂= +1 (1.1)
𝑠
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
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. 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, 𝑥) (1.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ộ).
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
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.
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
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 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:
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
1.8.3. Phát hiện khuôn mặt với các hàm trong OpenCV
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:
Tiền xử lí
Dò tìm khuôn mặt
Hậu xử lí
1.9.HÀ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.
diện cho khuôn mặt đó. Mỗi khuôn mặt sẽ được mã hóa thành một vectơ số học
dựa trên các đặc trưng như hình dạng, kích thước và vị trí của các thành phần
khuôn mặt.
Mã hóa khuôn mặt này cho phép so sánh và nhận dạng khuôn mặt dễ dàng.
Bằng cách so sánh các vectơ mã hóa, bạn có thể xác định xem hai khuôn mặt có
giống nhau hay không, và từ đó xây dựng các ứng dụng như nhận dạng khuôn
mặt trong ảnh, nhận dạng khuôn mặt trong video, hoặc xây dựng hệ thống nhận
dạng khuôn mặt trong thời gian thực.
Hình 1.5 Trong thư mục của “face-recognition” đã có các bộ huấn luyện có sẵn
Ngày nay cùng với sự bùng nổ thông tin, sự phát triển công nghệ cao, sự
giao tiếp giữa con người và máy tính đang phát triển rất nhanh, giờ đây giao
tiếp này không còn đơn thuần dùng các thiết bị cơ học như chuột, bàn phím…
mà có thể thông qua các biểu hiện của khuôn mặt. Bên cạnh đó công nghệ
càng phát triển thì giá cả ngày càng giảm. Thêm vào đó tốc độ xử lý máy tính
ngày càng cao, do đó hệ thống xử lý khuôn mặt được phát triển rất nhiều.
Trong số đó có thể nói đến hệ thống phát hiện khuôn mặt, hệ thống này có thể
giúp con người và máy tính giao tiếp với nhau tốt hơn. Những nghiên cứu
trong hệ thống này chủ yếu dựa trên những thông tin trong ảnh để phát hiện vị
trí khuôn mặt, tạo tiền đề cho các ứng dụng tiếp theo. Rất nhiều nghiên cứu và
ứng dụng được phát triển dựa trên hệ thống này. Đó là nhiệm vụ đầu tiên của
bất kỳ hệ thống xử lý khuôn mặt nào. Công nghệ nhận diện khuôn mặt là công
nghệ sinh trắc học ít tác động đến người dùng nhất và là công nghệ sinh trắc
học nhanh nhất. Nhà quản lý có thể chủ động hơn trong việc kiểm soát con
người thông qua camera giám sát. Công nghệ này không cần sự tương tác và
không có sự chậm trễ. Trong nhiều trường hợp đối tượng hoàn toàn không biết
gì về quá trình này.
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
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
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
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
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
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ẽ
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
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
(Feature Base Face Recognition)
● Nhận dạng dựa trên xét tổng thể toàn khuôn mặt (Appearance Based
Face Recognition)
1.10.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, 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.
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
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
1.10.3. 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,
khuôn mặt khác.
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
● 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
● Đ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.
1.10.4 Ứ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:
Xác minh tội phạm:
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.
Camera chống trộm:
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 để 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.
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
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
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 2.1 Sơ đồ quy trình của mô hình nhận dạng khuôn mặt
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 câu lệnh
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
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.
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
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.
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
Hình 2.5 Đưa bức ảnh cần nhận diện vào chương trình
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
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 được chất
lượng mong muốn và đồng thời đảm bảo sự phức tạp tính toán .
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
tắc xếp chồng các lớp nơron và giảm không gian mẫu (downsampling) tại các kết
quả đầu ra của chúng, CNN thực hiện trích xuất các đặc trưng ngày càng trừu tượng
và phức tạp hơn, đồng thời, là bất biến đối với các phép biến dạng và chuyển đổi.
Mạng tích chập CNN trong mô hình này được chia thành 8 khối (Hình 2.7).
• 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 2.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 2.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.
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
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 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.
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
Bảng 2.11 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
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
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.
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 2.13.
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
- So sánh kết quả trước và sau khi nhận diện 1 một khuôn mặt:
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
Hình 3.3 Hình ảnh sau khi nhận diện (Vũ Long)
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
Hình 3.6 : Kết quả so sánh phát hiện 2 người khác nhau
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
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
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
Phần mềm sẽ cho ta các giá trị và nó sẽ tìm ra giá trị thấp nhất đó chính là người
mà chúng ta đang cần nhận diện khuôn mặt
* Nhận xét:
- Đối với nhận diện một khuôn mặt, kết quả cho ra là chính xác đồng thời phát
hiện được khuôn mặt cần nhận diệ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.
4.3 Hiển thị thời gian quét mặt
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ự.
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
Tiếng Việt:
[1] https://nerophung.github.io/2019/06/15/ssd-single-shot-detector
[2] https://machinelearningcoban.com/math
[3] https://viblo.asia/p/haar-cascade-la-gi-luan-ve-mot-ky-thuat-chuyen-
dung-de-nhan-biet-cac-khuon-mat-trong-anh-E375zamdlGW
Tiếng Anh:
[1] Wei Liu , Dragomir Anguelov , Dumitru Erhan , Christian Szegedy ,
Scott Reed , Cheng-Yang Fu , Alexander C Berg. SSD: Single Shot MultiBox
Detector. 2016
[2] https://github.com/weiliu89/caffe/tree/ssd .
[3] https://cv-tricks.com/keras/understand-implement-resnets
[4]
https://www.tensorflow.org/addons/tutorials/losses_triplet?fbclid=IwAR2JGGd
hNuhoMUSTBuID0RBHuIAm3H8qCF9MqSbMClDNF6kYs_K96MnW0
bQ
[5] Florian Schroff, Dmitry Kalenichenko, James Philbin . FaceNet: A Unified
Embedding for Face Recognition and Clustering. 2015
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
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:
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
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản
38
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1