You are on page 1of 22

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA KĨ THUẬT ĐIỆN TỬ I


**************

BÁO CÁO MÔN HỌC: Đồ án thiết kế hệ thống nhúng


Đề Tài : Nhận diện khuôn mặt dùng
Raspberry Pi
Giảng viên hướng dẫn : Nguyễn Ngọc Minh
Nhóm môn học : 03
Thành viên nhóm : Nguyễn Thành Đạt - B18DCDT048

Phạm Tiến Anh - B18DCDT012


Hà Phương Duy - B18DCDT032
Quách Tô Hiệu - B18DCDT080

Hà Nội, ngày tháng 5 năm 2022

LỜI MỞ ĐẦU
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,
và cũng mang một lượng thông tin giàu có, chẳng hạn có thể xác định giới tính, tuổi tác,
trạng thái cảm xúc của người đó,… hơn nữa khảo sát chuyển động của các đường nét trên
khuôn mặt có thể biết được người đó đang muốn nói gì.
Trong hệ thống nhận dạng người thì quá trình nhận dạng khuôn mặt được đánh giá
là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ thống. Do đó, nhận
dạng khuôn mặt là điều quan trọng và cần thiết.
Nhận dạng khuôn mặt người là một công nghệ được sử dụng rông rãi trong đờ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
người nổi tiếng,… 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ên, kích thước ảnh, hay ảnh hưởng của tham số môi trường.
Cùng với sự phát triển của xã hội, vấn đề an ninh, bảo mật đang được yêu cầu khắt
khe tại mọi quốc gia trên thế giới. Các hệ thống nhận dạng con người, đồ vật… được ra
đời và phát triển với độ tin cậy ngày càng cao. Với cách tiếp cận đối tượng nhận dạng
theo phương pháp này, chúng ta có thể thu nhập được nhiều thông tin từ đối tượng hơn,
mà không cần tác động nhiều đến đối tượng cũng vấn đảm bảo tính chính xác, an toàn,
thuận tiện.
Trong phạm vi báo cáo này chúng em xin trình bày thực hiện nhận dạng
khuôn mặt qua Raspberry Pi – là một máy tính bo mạch hơn (hay còn gọi là máy
tính nhúng).

1
Mục lục
LỜI MỞ ĐẦU.................................................................................................................................1
CHƯƠNG 1: RASPBERRRY PI VÀ HỆ ĐIỀU HÀNH RASPIAN............................................3
1. Raspberry Pi là gì.....................................................................................................................3
2. Raspberry Pi Zero W...............................................................................................................3
3. Hệ điều hành Raspbian...........................................................................................................5
CHƯƠNG 2: NHẬN DIỆN KHUÔN MẶT..................................................................................6
1. Tổng quan về nhận diện khuôn mặt.......................................................................................6
1.1 Phân tích bài toán....................................................................................................................6
1.2 Các công cụ...............................................................................................................................6
1.3 PyThon......................................................................................................................................6
1.4 Pycharm....................................................................................................................................7
1.5 OpenCV.....................................................................................................................................8
2. Giải quyết vấn đề......................................................................................................................9
2.1 Phát hiện khuôn mặt................................................................................................................9
2.2 Thuật toán.................................................................................................................................9
a, Thu nhận tín hiệu......................................................................................................................9
b, Phát hiện khuôn mặt trên khung hình..................................................................................10
c, Nhận dạng khuôn mặt............................................................................................................11
d, Code.........................................................................................................................................13
e, Demo.......................................................................................................................................16
CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.............................................................17
3.1 Thương mại điện tử và ngân hàng số...................................................................................17
3.2 Cá nhân hóa trải nghiệm.......................................................................................................17
3.3 An ninh sân bay và quản lý an ninh biên giới......................................................................17
3.4 Chăm sóc sức khỏe.................................................................................................................18
3.5 Thanh toán không dùng thẻ..................................................................................................18
3.6 Ngành du lịch.........................................................................................................................18
3.7 Công nghệ thông minh...........................................................................................................18
3.8 Quảng cáo digital...................................................................................................................19
LỜI CẢM ƠN...............................................................................................................................20
TÀI LIỆU THAM KHẢO.............................................................................................................21

2
CHƯƠNG 1: RASPBERRRY PI VÀ HỆ ĐIỀU HÀNH
RASPIAN

1. Raspberry Pi là gì
Raspberry Pi là một máy vi tính rất nhỏ gọn, kích thước hai cạnh chỉ cỡ một cái thẻ
ATM, trong đó đã tích hợp mọi thứ cần thiết để bạn sử dụng như một máy vi tính. Bộ xử
lý SoC Broadcom BCM2835 của nó bao gồm CPU, GPU, RAM, khe cắm thẻ microSD,
WiFi, Bluetooth và 4 cổng USB 2.0.

Nhiệm vụ ban đầu của dự án Raspberry Pi là tạo ra máy tính rẻ tiền có khả năng lập
trình cho những sinh viên , nhưng Pi đã được sự quan tầm từ nhiều đối tượng khác nhau .
Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lý SoC Broadcom BCM2835 ( là
chip xử lý mobile mạnh mẽ có kích thước nhỏ hay được dùng trong điện thoại di động ) b
ao gồm CPU , GPU , bộ xử lý âm thanh /video , và các tính năng khác … tất cả được tích
hợp bên trong chip có điện năng thấp này .
Raspberry Pi không hoàn toàn có thể thay thế được máy tính để bàn
hoặc laptop nhưng nó là một thiết bị đa năng có thể được sử dụng cho những hệ thống
điện tử, thiết lập hệ thống tính toán, những dự án DIY… với chi phí rẻ. Chỉ từ 5 USD thôi
là bạn đã mua được một thiết bị của hãng này (phiên bản rút gọn Raspberry Pi Zero).

2. Raspberry Pi Zero W

3
 Cấu hình
- 1GHz, single-core CPU
- 512MB RAM
- Mini-HDMI port
- Micro-USB On-The-Go port
- Micro-USB power
- HAT-compatible 40-pin header
- Composite video and reset headers
- CSI camera connector
- 802.11n wireless LAN
- Bluetooth 4.0
 Ứng dụng

Raspberry Pi Zero có thể là lựa chọn thích hợp cho những ứng dụng IoT quy mô nh
ỏ với server chi phí thấp nhưng có tính ổn định cao như trong các dự án nhà thông minh,
nông nghiệp,…
 Sử dụng
Do module chỉ có cổng HDMI mà không có cổng Ethernet như ở các phiên bản trướ
c đó người dùng cần lưu ý rằng việc boot hệ điều hành lần đầu với module có thể thực hiệ
n qua màn hình rời với HDMI hoặc SSH thông qua kết nối wifi.

4
3. Hệ điều hành Raspbian
Raspberry Pi được thiết kế cho hệ điều hành Linux, và nhiều bản phân phối Linux
hiện cũng có phiên bản tối ưu hóa Raspberry Pi.
Raspbian là một hệ điều hành máy tính dựa trên Debian cho Raspberry Pi. Có một
số phiên bản của Raspbian bao gồm Raspbian Stretch và Raspbian Jessie. Từ năm 2015,
nó đã được Raspberry Pi Foundation chính thức cung cấp như là hệ điều hành chính cho
gia đình máy tính bảng đơn Raspberry Pi. Raspbian được tạo ra bởi Mike Thompson và
Peter Green như một dự án độc lập. Bản dựng ban đầu được hoàn thành vào tháng 6 năm
2012. Hệ điều hành vẫn đang được phát triển tích cực. Raspbian được tối ưu hóa cao cho
các CPU ARM hiệu suất thấp của dòng Raspberry Pi.
Raspbian sử dụng PIXEL, Pi I đã xác nhận Lightweight là môi trường máy tính để
bàn chính của nó kể từ bản cập nhật mới nhất. Nó bao gồm một môi trường máy tính để
bàn LXDE được sửa đổi và trình quản lý cửa sổ xếp chồng Openbox với một chủ đề mới
và một vài thay đổi khác. Sự phân bố được xuất xưởng với một bản sao của chương trình
máy tính đại số Mathematica và một phiên bản của Minecraft gọi Minecraft Pi cũng như
một phiên bản nhẹ của Chromium như của phiên bản mới nhất.

5
CHƯƠNG 2: NHẬN DIỆN KHUÔN MẶT

1. Tổng quan về nhận diện khuôn mặt

Hơn một thập kỉ qua có rất nhiều công trình nghiên cíu về bài toán xác định khuôn
mặt người từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nhà nghiên cứu đi
từ bài toán đơn giản, mỗi ảnh chỉ có một mặt người nhìn thẳng vào thiết bị thu hình và
đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng
cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh.
Không những thế mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản
cho đến môi trường xung quanh rất phức tạp nhằm đáp ứng nhu cầu của con người.
Trong những năm gần đây các ứng dụng về trí tuệ nhân tạo ngày càng phát triển và
được đánh giá cao. Một lĩnh vực đang được quan tâm của trí tuệ nhân tạo nhằm tạo ra các
ứng dụng thông minh, có tính người đó là nhận dạng. Trong đề tài này em chọn đối
tượng là khuôn mặt.

1.1 Phân tích bài toán

Bài toán Nhận Diện Khuôn mặt (Face Recognition) bao gôm các bài toán khác
nhau như Phát hiện khuôn mặt (Face detection), đánh dấu (facial landmarking), trích
chọn(rút) đặc trưng (feature extration), gán nhãn, phân lớp (classification).

1.2. Các công cụ

Để giải quyết bài toán nhận dạng khuôn mặt trong đồ án này chúng em sử dụng thư
viện opencv và ngôn ngữ python trên phần mềm PYCHARM

1.3. PyThon
Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-
oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics).
Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và
tái sử dụng mã. Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng
nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do.
6
1.4. Pycharm

PyCharm là một môi trường phát triển tích hợp (IDE) được sử dụng trong lập trình
máy tính , đặc biệt cho ngôn ngữ lập trình Python . Nó được phát triển bởi công
ty JetBrains của Séc (trước đây gọi là IntelliJ). Nó cung cấp phân tích mã, trình gỡ lỗi đồ
họa, trình kiểm tra đơn vị tích hợp, tích hợp với hệ thống kiểm soát phiên bản (VCSes) và
hỗ trợ phát triển web với Django cũng như khoa học dữ liệu với Anaconda .

PyCharm là nền tảng đa nền tảng , với các phiên bản windows , macOs
và Linux .Phiên bản Cộng đồng được phát hành theo Giấy phép Apache và còn có Phiên
bản Chuyên nghiệp với các tính năng bổ sung - được phát hành theo giấy phép độc
quyền do đăng ký tài trợ và cũng là phiên bản giáo dục.

Tính năng của phần mềm :

- Hỗ trợ và phân tích mã hóa , với việc hoàn thành mã , đánh dấu cú pháp và
lỗi, tích hợp linter và các bản sửa lỗi nhanh chóng
- Điều hướng dự án và mã: chế độ xem dự án chuyên biệt, chế độ xem cấu trúc
tệp và chuyển nhanh giữa các tệp, lớp, phương thức và cách sử dụng
- Tái cấu trúc Python : bao gồm đổi tên, giải nén phương thức, giới thiệu biến,
giới thiệu hằng số, kéo lên, đẩy xuống và những thứ khác
- Hỗ trợ cho các khuôn khổ web: Django , web2py và Flask (chỉ dành cho phiên
bản chuyên nghiệp)
- Trình gỡ rối Python tích hợp
- Kiểm tra đơn vị tích hợp , với phạm vi bao phủ mã từng dòng
- Phát triển Python của Google App Engine (chỉ dành cho phiên bản chuyên
nghiệp)
- Tích hợp kiểm soát phiên bản: giao diện người dùng hợp nhất
cho Mercurial , Git , Subversion , Perforce và CVS với danh sách thay đổi và
hợp nhất

7
- Hỗ trợ các công cụ khoa học như matplotlib, numpy và scipy (chỉ dành cho
phiên bản chuyên nghiệp)

=> Nó cạnh tranh chủ yếu với một số IDE hướng Python khác, bao
gồm PyDev của Eclipse và IDE Komono tập trung rộng rãi hơn .

1.5 OpenCV

Opencv (Open Computer Vision library) do Intel phát triển, được giới thiệu năm
1999 và hoàn thiện thành phiên bản 1.0 năm 2006. Thư viện opencv – gồm khoảng 500
hàm – được viết bằng ngôn ngữ lập trình C và tương thích với các hệ điều hành
Windows, Linux, Mac OS… đóng vai trò xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho
lĩnh vực CV và tọa điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng.
Trước Opencv không có một công cụ chuẩn nào cho lĩnh vực xử lý ảnh. Các đoạn
code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định.
Các bộ công cụ thương mại như Matlab, Simulink,..v.v.. lại có giá cao chỉ thích hợp cho
các công ty phát triển các ứng dụng lớn. Ngoài ra còn có các giải pháp kèm theo thiết bị
phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho từng thiết bị, rất khó khan
cho việc mở rộng ứng dụng.
OpenCV là công cụ hữu ích cho những người bước đầu làm quen với xử lý ảnh số
vì các ưu điểm sau:
OpenCV là công cụ chuyên dụng: được Intel phát triển theo hướng tối ưu hóa cho
các ứng dụng xử lý và phân tích ảnh, với cấu trúc dữ liệu hợp lý, thư viện tạo giao diện,
truy xuất thiết bị phần cứng được tích hợp sẵn. OpenCV thích hợp để phát triển nhanh
ứng dụng.
OpenCV là công cụ mã nguồn mở: Không chỉ là công cụ miễn phí, việc được xây
dựng trên mã nguốn mở giúp OpenCV trở thành công cụ thích hợp cho nghiên cứu và
phát triển, với khả năng thay đổi và mở rộng các mô hình, thuật toán.
OpenCV đã được sử dụng rộng rãi: Từ năm 1999 đến nay, OpenCV đã thu hút được
một lượng lớn người dung, trong đó có các công ty lớn như Microsoft, IBM, Sony,
Siemens, Google và các nhóm .

8
2. Giải quyết vấn đề

2.1. Phát hiện khuôn mặt

Phát hiện khuôn 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ể.

2.2 Thuật toán

a, Thu nhận tín hiệu

Từ tín hiệu video đầu vào, bước xử lý đầu tiên sẽ tiến hành phân đoạn video thành c
ác khung hình (frame) riêng biệt. Việc phân đoạn video ở đây được tiên hành theo thời gi
an. Mỗi khung hình có thê không chứa, chứa một phần hoặc chứa toàn bộ khuôn mặt. Vì
vậy, trong bước xử lý đầu tiên, thuật toán sẽ tiên hành phát hiện (face detection) và xác đị
nh vị trí của các khuôn mặt (nếu có) trên ảnh. Các khuôn mặt phát hiện được sau đó sẽ tiế
p tục được tiền xừ lý nhằm tăng cường chất lượng hình ảnh (loại nhiễu, khử bóng/mờ), ch
uẩn hóa kích thước và độ phân giải ảnh, căn chỉnh khuôn mặt về hướng trực diện (nhìn t
hẳng). Các khuôn mặt sau khi đã tiền xử lý sẽ được sử dụng làm đầu vào cho một mô hìn
h mạng neral học sâu (DNN-Deep Neural Network). Mô hình này sẽ tự động học và trích
chọn ra các đặc trưng đê nhận dạng (phần lớp) khuôn mặt. Bước xử lý cuối cùa thuật toán
sẽ tiến hành phần lớp (nhận diện) các khuôn mặt. Bản chất của việc phân lớp khuôn mặt l

9
à tìm kiêm đôi tượng người có mẫu khuôn mặt giống với khuôn mặt cần nhận dạng nhất.
Để thực hiện được điều này, các mô hình phân lớp cần phải được huấn luyện với một tập
mẫu cho trước. Trong đó, mỗi mẫu khuôn mặt được thể hiện bằng tập đặc trưng thu được
từ các mô hình phát hiện đặc trưng DNN ờ bước trên.

b, Phát hiện khuôn mặt trên khung hình

Phương pháp phát hiện khuôn mặt ở đây được đê xuất sử dụng các đặc trưng HOG
(Histograms of Oriented Gradients) và bộ phân lóp tuyên tính SVM (Support Vector Mac
hines)

Ý tưởng chính của đặc trưng HOG là hình dạng và trạng thái của vật có thể được đặ
c trưng bởi sự phân bố về gradient và hướng của cạnh. Đặc trưng này được phát triền dựa
trên các đặc trưng SIFT (Scale-Invariant Feature Transform), đặc trưng HOG được tính tr
ên cả một vùng. Do sự biến thiên màu sắc trong các vùng khác nhau nên mỗi vùng sẽ cho
ta một vector đặc trưng của nó. Vì vậy để có được đặc trưng cửa toàn bộ cửa sổ (window)
ta phải kết hợp nhiều vùng liên tiếp lại với nhau. Các bước cơ bản trong quy trình phát hi
ện khuôn mặt người trên các khung hình được mô tả cụ thể trên.

Đầu vào của thuật toán là một frame ảnh bất kỳ thu được từ bước phân đoạn video.
Bước xử lý đầu tiên sẽ tiến hành chuyển đổi ảnh trong không gian RGB (ảnh màu) sang ả
nh đa cấp xám (gray scale), sau đó tiên hành cân bằng histogram trên ảnh gray scale đề gi
ảm sự nhạy cảm với nguồn sáng. Bước xử lý tiếp theo sẽ tính sự biến thiên màu sắc tại tất

10
−1
cả các pixel của ảnh gray scale theo chiều X[-l, 0, 1 ] và theo chiều Y [ 0 ¿, thu được 2 ả
1
nh gradient-x (đạo hàm theo trục x) và gradient-y (đạo hàm theo trục y) có kích thước bă
ng kích thước ảnh gray scale. Hai ảnh thu được cho thấy sự biến thiên màu sắc nói trên. T
iếp theo tiên hành tính góc và hướng biến thiên màu sắc từ 2 ảnh gradient-x và gradient-
y.
Việc lưu trữ chính xác từng giá tri góc (orientation) của từng điểm ảnh (x,y) trong n
hiều chi phí và không mang lại nhiều kết quả, do vậy ta sẽ chia không gian góc ra thành c
ác bin. Việc phân chia bin càng nhỏ sẽ càng làm tăng độ chính xác, các kết quả thực nghi
ệm cho thấy kích thước bin khoảng 200 cho kêt quả tốt nhât đôi với việc phát hiện khuôn
mặt người. Do đó, với không gian hướng biến thiên trong miền từ 0° - 180° se được chia t
hành 9 bin như sau: [0° - 20°], [21° - 40°] [41° -60°], [61° - 80°], [81° - 100°], [101°- 120
°], [121° - 140°], [141° - 160°], [161° - 180°]. Ứng với mỗi bin trên, tiến hành thống kê b
iên độ (magnitude) tại từng vị trí. Với mỗi bin, tại vị trí (x,y) nếu góc (orientation) thuộc
về bin đó thì giá trị của bin đó tại vị trí (x,y) băng giá trị biên độ, ngược lại giá trị bin tại
vị trí (x,y) băng 0. Bước tiếp theo tiên hành tính toán vector đặc trưng cho từng cell (mỗi
cell thường được chọn với kích thước 8x8 pixel). Vector đặc trưng của mỗi cell sẽ gồm 9
thành phần tương ứng với 9 bin và giá trị tại thành phần i bằng tổng giá trị của các điểm t
rong bin i mà có tọa độ năm trong cell đó. Tiếp theo, tính toán vector đặc trưng cho từng
khối (block), mỗi khối thường được chọn với kích thước 2*2 cells (16x16 pixel). Vector
đặc trưng của khối được tính bằng cách ghép vector dặc trưng của từng cell trong block lạ
i với nhau, số thành phần của vector đặc trưng tại mỗi khối được tính theo công thức:

c, Nhận dạng khuôn mặt


Công đoạn nhận dạng thường gồm 2 bước xử lý chính là trích chọn đặc trưng và ph
ân lớp khuôn mặt. Phương pháp trích chọn đặc trưng ở đây được đề xuất sử dụng các lớp

11
mạng neural học sâu FaceNet, được Florian Schroff và cộng sự đã đề xuất năm 2015. Đâ
y là mô hình có khả năng học từ một tập mẫu cho trước nhằm tự động phát hiện các đặc tr
ưng quan trọng nhất để nhận dạng đối tượng. Ý tưởng chính của hướng tiếp cận này dựa t
rên việc học một không gian Euclidean nhúng ứong mỗi ảnh sử dụng một cấu hình mạng
neural tích chập học sâu (deep convolutional network). Mạng được huấn luyện sao cho k
hoảng cách L2 bình phương trong không gian nhúng là tương ứng trực tiếp với độ tương t
ự cùa khuôn mặt. Cụ thể là các khuôn mặt của cùng một người sẽ có khoảng cách nhỏ và
các khuôn mặt cùa các người khác nhau sẽ có khoáng cách lớn.

Mạng được huấn một cách trực tiếp để đầu ra của nó trở thành một vector đặc trưng
128 chiều sử dụng hàm chi phí bộ ba (tripletbased loss function). Một bộ ba (triplet) được
định nghĩa bao gôm hai khuôn mặt của cùng một người - positive và một khuôn mặt của
người khác negative. Mục tiêu cùa hàm chi phí là phân tách cặp khuôn mặt positive ra k
hỏi khuôn mặt negative sử dụng một lệ khoảng cách - distance margin. Từ các độ đo thu
được, thuật toán sẽ ước lượng giá trị cùa hàm chi phi dựa trên việc so sánh khoáng cách g
iữa 2 tập dặc trung, được sinh ra từ 2 ảnh khuôn mặt khác nhau cua cùng một người (đượ
c gọi là người thứ nhât) và tập đặc trưng thứ 3 được sinh ra từ ảnh khuôn mặt của một ng
ười khác (được gọi là người thứ hai). Các giá trị ước lượng của hàm chi phí sau khi tính s

12
ẽ đuợc lan truyền ngược từ lớp cuối cùng đến lớp đau tiên cùa mạng để tinh chỉnh trọng
số (cập nhật lại trọng số) trên các lớp mạng. Quá trình tính toán, ước lượng và cập nhật tr
ọng số của mạng được lặp đi lặp lại liên tục cho đến khi giá trị của hàm chi phí thỏa mãn
điều kiện đã cho. Lặp lại các bước trên đôi với toàn bộ tập dữ liệu huấn luyện cho đến khi
thuật toán huân luyện mạng hội tụ. Mô hình nhận dạng khuôn mặt được mô tả cụ thể trên.

d, Code

import cv2
import face_recognition
import os
import numpy as np
# step 1 load ảnh từ kho ảnh nhận dạng
path="pic2"
images = []

13
classNames = []
myList =os.listdir(path)
print(myList)
for cl in myList:
print(cl)
curImg = cv2.imread(f"{path}/{cl}") # pic2/Donal Trump.jpg
images.append(curImg)
classNames.append(os.path.splitext(cl)[0])
# splitext sẽ tách path ra thành 2 phần, phần trước đuôi mở rộng và phần mở rộng
print(len(images))
print(classNames)
#step encoding
def Mahoa(images):
encodeList = []
for img in images:
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #BGR được chuyển đổi sang
RGB
encode = face_recognition.face_encodings(img)[0]
encodeList.append(encode)
return encodeList
encodeListKnow = Mahoa(images)
print("ma hoa thanh cong")
print(len(encodeListKnow))
#khởi dộng webcam
cap = cv2.VideoCapture("Media/Trump.mp4")
while True:
ret, frame= cap.read()
framS = cv2.resize(frame,(0,0),None,fx=0.5,fy=0.5)

14
framS = cv2.cvtColor(framS, cv2.COLOR_BGR2RGB)

# xác định vị trí khuôn mặt trên cam và encode hình ảnh trên cam
facecurFrame = face_recognition.face_locations(framS) # lấy từng khuôn mặt và vị
trí khuôn mặt hiện tại
encodecurFrame = face_recognition.face_encodings(framS)
for encodeFace, faceLoc in zip(encodecurFrame,facecurFrame): # lấy từng khuôn
mặt và vị trí khuôn mặt hiện tại theo cặp
matches = face_recognition.compare_faces(encodeListKnow,encodeFace)
faceDis = face_recognition.face_distance(encodeListKnow,encodeFace)
# print(faceDis)
matchIndex = np.argmin(faceDis) #đẩy về index của faceDis nhỏ nhất
if faceDis[matchIndex] <0.8 :
name = classNames[matchIndex].upper()
else:
name = "U.n"
#print tên lên frame
y1, x2, y2, x1 = faceLoc
y1, x2, y2, x1 = y1*2, x2*2, y2*2, x1*2
cv2.rectangle(frame,(x1,y1), (x2,y2),(0,255,0),2) cv2.putText(frame,name,
(x2,y2),cv2.FONT_HERSHEY_COMPLEX,0.8,(255,255,255),2)
cv2.imshow('DO AN NHUNG', frame)
if cv2.waitKey(1) == ord("q"): # độ trễ 1/1000s , nếu bấm q sẽ thoát
break
cap.release() # giải phóng camera
cv2.destroyAllWindows() # thoát tất cả các cửa sổ

15
e, Demo

CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN


Nhận diện khuôn mặt đang ngày càng phát triển và được ứng dụng nhiều trong các
lĩnh vực từ sản xuất đến đời sống hàng ngày. Khi bước vào một thập kỷ mới, việc áp dụng

16
nhận diện khuôn mặt dự kiến sẽ phổ biến hơn như việc mở khóa smartphone, nhận diện
xác định danh tính ở các cửa hàng giao dịch, …

Và dưới đây sẽ là 8 xu hướng phát triển của nhận diện khuôn mặt

3.1 Thương mại điện tử và ngân hàng số


Giao dịch trực tuyến thường đỏi hỏi độ bảo mật cao do tất cả các hoạt động đều thực
hiện online mà không cần có mặt trực tiếp tại điểm giao dịch. Những phương thức xác
minh truyển thống trước đây như mật khẩu, email rất dễ bị hack và thường khó ghi nhớ
hơn. Giải pháp nhận diện khuôn mặt sử dụng công nghệ sinh trắc học sẽ khắc phục được
những vấn đề trên. Khách hàng có thể sử dụng khuôn mặt của họ để truy cập vào mua hàng
và thanh toán online.

3.2 Cá nhân hóa trải nghiệm.


Chúng ta có thể kỳ vọng ngày càng nhiều hơn các doanh nghiệp áp dụng cá nhân hóa
trải nghiệm vào dịch vụ của họ. Công nghệ nhận diện khuôn mặt và trí tuệ nhân tạo sẽ giúp
điều này trở nên dễ dàng hơn bao giờ hết. Bằng việc thu thập và phân tích độ tuổi, giới
tính, sở thích, lịch sử mua sắm hệ thống sẽ tự động đưa ra những nội dung và dịch vụ phù
hợp với khác hàng giúp tăng trải nghiệm khách hàng tốt hơn.

3.3 An ninh sân bay và quản lý an ninh biên giới


Mới đây hãng hàng không Delta đã triển khai công nghệ xác thực khuôn mặt tại sân
bay Atlanta. Dự kiến vào cuối năm 2020 Delta sẽ triển khai nhận diện khuôn mặt ở hơn 20
sân bay để cải thiện hành trình của khách hàng.

Khách hàng sẽ có thể sử dụng khuôn mặt của mình để làm thủ tục, kiểm tra hành lý,
vào phòng chờ và lên máy bay. Mặc dù những lo ngại đã được đặt ra về việc sử dụng nhận
diện khuôn mặt để xác định danh tính tại sân bay, tuy nhiên, 73% khách hàng nói rằng họ
sẽ cảm thấy thoải mái khi sử dụng công nghệ này sau khi đi qua hệ thống nhận diện khuôn
mặt của Delta.

17
3.4 Chăm sóc sức khỏe
Lĩnh vực y tế đang đầu tư nhiều hơn vào công nghệ nhận diện khuôn mặt để cho phép
bảo mật và nâng cao trải nghiệm cho bệnh nhân. Xu hướng ứng dụng nhận diện khuôn mặt
dự kiến trong lĩnh vực chăm sóc sức khỏe vào năm 2020 sẽ bao gồm:

 Theo dõi lịch sử điều trị và dùng thuốc của bệnh nhân.
 Phát hiện sớm các bệnh di truyền.
 Ngăn chặn việc gian lận bảo hiểm y tế.

3.5 Thanh toán không dùng thẻ


Lĩnh vực thanh toán phi tiền mặt đang ngày càng phát triển đặc biệt ở ở Trung Quốc
với các hệ thống như AliPay, WePay. Nhiều hình thức thanh toán được sử dụng như:
quét QR code, quẹt thẻ…. tại các cửa hàng. Tuy nhiên những phương thức thanh toán này
đỏi hỏi bạn phải luôn mang theo thẻ ngân hàng hoặc smartphone.

Hệ thống thanh toán bằng nhận diện khuôn mặt sẽ liên kết thẻ tín dụng của bạn với
hồ sơ nhận diện khuôn mặt của bạn. Thanh toán sẽ được thực hiện đơn giản bằng việc sử
dụng camera quét khuôn mặt của bạn. Amazon và các công ty thương mại điện tử lớn khác
dự kiến sẽ tung ra phiên bản nhận diện khuôn mặt để thanh toán vào năm 2020 này.

3.6 Ngành du lịch


Khi đặt phòng khách sạn online hoặc trực tiếp, khách hàng có thể đăng ký thống qua
khuôn mặt của họ. Sử dụng công nghệ nhận diện khuôn mặt sẽ giúp thời gian nhận phòng
giảm xuống 40%. Dự kiến trong năm 2020 công nghệ nhận diện khuôn mặt sẽ được phát
triển khắp mọi nơi từ đặt vé máy bay đến làm thủ tục tại các khu nghỉ mát.

3.7 Công nghệ thông minh


Với việc Apple ra mắt FaceID, điện thoại thông minh đã trở thành một lĩnh vực lớn
mà công nghệ nhận diện khuôn mặt đang được triển khai. Giải pháp này cũng dần trở nên
phổ biến trong các hình thức công nghệ thông minh khác như TV thông minh và hệ thống
an ninh nhà thông minh

18
3.8 Quảng cáo digital
Các cửa hàng bán lẻ đang tìm cách để cá nhân hóa trải nghiệm tại cửa hàng cho người
mua hàng, Nhận diện khuôn mặt được sử dụng để xác định các cá nhân và nhân khẩu học
của khách hàng (giới tính, tuổi, v.v.) và sau đó đưa ra các chương trình khuyến mãi và nội
dung phù hợp với thông tin được phân tích. Điều này cũng có thể bao gồm các đề xuất mua
hàng và ưu đãi đặc biệt, cung cấp trải nghiệm cá nhân hóa cho người mua hàng.

LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn chân thành nhất đến Học Viện Công nghệ Bưu
chính Viễn thông đã đưa môn học “Đồ án thiết kế hệ thống nhúng” vào trong chương

19
trình giảng dạy của nhà trường. Đặc biệt, em xin gửi lời cảm ơn đến thầy Nguyễn Ngọc
Minh là giảng viên bộ môn “Đồ án thiết kế hệ thống nhúng”, giảng dạy và truyền cho bọn
em những kiến thức đáng quý trong suốt quá trình học vừa qua. Trong thời gian tham dự
lớp học của thầy em đã tiếp thu được những kiến thức quý báu, bổ ích, học tập và làm
việc theo tác phong nghiêm túc, có hiệu quả trong học tập. Đây thực là một điều đáng
quý trong suốt quá trình học tập và sau này khi đi làm của em.

Bộ môn “Đồ án thiết kế hệ thống nhúng” là môn học rất thú vị, vô cùng tốt và gắn
liền với nhu cầu thực tiễn của mỗi sinh viên. Do thời gian học tập và tìm hiểu còn có hạn,
vì vậy bài báo cáo của chúng em khó tránh khỏi những thiếu sót và nhiều chỗ chưa chuẩn
xác, kính mong thầy và các bạn xem xét và góp ý giúp bài báo cáo của chúng em được
hoàn thiện hơn.

TÀI LIỆU THAM KHẢO


1. http://arduino.vn/bai-viet/1501-gioi-thieu-raspberry-pi-zero-w
2. https://quantrimang.com/raspberry-pi-la-gi-va-duoc-su-dung-nhu-the-nao-145399
3. https://vi.wikipedia.org/wiki/Raspberry_Pi_OS

20
4. http://arduino.vn/bai-viet/1088-raspberry-pi-thien-ly-nhan-phan-2-nhan-dien-
khuon-mat-voi-opencv
5. https://viblo.asia/p/huong-dan-cai-dat-raspberry-pi-zero-w-khong-can-man-hinh-
6J3Zg3gEZmB
6. https://dientuviet.com/cach-viet-va-chay-chuong-trinh-python-tren-raspberry/
7. https://linuxhint.com/install-pycharm-raspberry-pi/

21

You might also like