Tải bản đầy đủ (.pdf) (32 trang)

Xây dựng mô hình nhận dạng khuôn mặt bằng thuật toán pca và svm

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

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN

TÊN HỌC PHẦN

HỌC MÁY NÂNG CAO

Đ TI:

XÂY DỰNG MƠ HÌNH NHẬN DẠNG KHN MẶT BẰNG
THUẬT TỐN PCA & SVM.
Sinh viên thực hiện

: NGUYỄN CÔNG TUỆ

Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG
Ngành

: CƠNG NGHỆ THƠNG TIN

Chun ngành

: CƠNG NGHỆ PHẦN MM

Lớp

: CNPM3

Khóa

: D13



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

PHIẾU CHẤM ĐIỂM


Họ và tên giảng
viên
Giảng viên chấm
1:

Giảng viên chấm
2:

Chữ ký

Ghi chú


MỤC LỤC

CHƯƠNG I: MACHINE LEARNING L GÌ?..........................................................................5
1.

Khái niệm machine learning..............................................................................................5

2.

Lịch sử hình thành Machine learning...............................................................................6


3.

Vì sao Machine learning lại quan trọng?..........................................................................7

4.

Một số giải pháp của Machine learning............................................................................7

5.

Ứng dụng của Machine learning.......................................................................................9

6.

5.1.

Nhận diện hình ảnh/khn mặt...............................................................................10

5.2.

Tự động nhận diện giọng nói....................................................................................10

5.3.

Lĩnh vực tài chính......................................................................................................11

5.4.

Tiếp thị bán hàng.......................................................................................................11


5.5.

Chăm sóc sức khỏe.....................................................................................................12

Những câu hỏi thường gặp về machine learning...........................................................13
6.1.

Machine learning được dùng để làm gì?.................................................................13

6.2.

Các bước hoạt động của machine learning là gì?...................................................13

6.3.

Machine learning phù hợp với ngơn ngữ nào?.......................................................13

CHƯƠNG II: MƠ HÌNH NHẬN DẠNG KHN MẶT BẰNG THUẬT TỐN PCA &
SVM..............................................................................................................................................14
Phân tích thành phần chính:......................................................................................................15
Máy hỗ trợ vector........................................................................................................................17
Nhận dạng khn mặt.................................................................................................................18
Nhập các thư viện và mơ-đun có liên quan...........................................................................18
Hình ảnh Numpy Arrays.........................................................................................................19
Mục tiêu & Tên mục tiêu - Nhãn............................................................................................21
Tách thành Train / Test...........................................................................................................24
Giảm kích thước bằng PCA....................................................................................................25
Đào tạo Bộ phân loại SVM......................................................................................................26
Phỏng đoán...............................................................................................................................28
Âm mưu....................................................................................................................................28

Phần kết luận................................................................................................................................31


MỞ ĐẦU
Machine learning là một chủ đề được nhắc đến rất nhiều trong thời gian trở
lại đây bên cạnh trí tuệ nhân tạo, nó được ứng dụng cực kỳ nhiều ở thời điểm hiện
tại trong hầu hết tất cả các lĩnh vực. Trong báo cáo này,chúng ta sẽ cùng tìm hiểu
xem machine learning là gì, các khái niệm cơ bản và cuối cùng là 1 ví dụ đơn giản
cho thấy vì sao nó lại được ứng dụng rộng rãi như vậy ?


CHƯƠNG I: MACHINE LEARNING LÀ GÌ?

1. Khái niệm machine learning
Machine learning (tạm dịch: học máy) có khởi nguồn từ lĩnh vực trí tuệ nhân
tạo (AI). Đây là giải pháp có khả năng khiến các ứng dụng, phần mềm trở nên
thông minh hơn mà không cần thực hiện bất kỳ mã hóa nào. Thơng qua dữ liệu đầu
vào, Machine learning có thể dự đoán các giá trị đầu ra mới.


Nhiệm vụ của học máy là tập trung phát triển chương trình máy tính truy cập
dữ liệu và sử dụng chúng để tự học. Mục tiêu chính của hoạt động này là giúp máy
tính tự hoạt động mà khơng cần sự hỗ trợ của con người.
Machine learning được xem là một phần quan trọng thuộc lĩnh vực khoa học
dữ liệu. Chúng sử dụng các phương pháp thống kê, thuật toán để phân loại, dự
đốn và khám phá những thơng tin quan trọng của dữ liệu. Nhờ những chuỗi thông
tin này, người dùng nhanh chóng đưa ra các quyết định trong các hoạt động kinh
doanh của mình. Vì vậy, Machine learning chính là giải pháp lý tưởng giúp doanh
nghiệp tác động đến chỉ số tăng trưởng doanh thu.
2. Lịch sử hình thành Machine learning

Machine learning là thuật ngữ được đặt bởi Arthur Samuel vào năm 1959.
Samuel là một IBMer người Mỹ kiêm nhà tiên phong trong lĩnh vực trí tuệ nhân
tạo và máy tính chơi game. Năm 1960, thuật ngữ học máy phổ biến hơn thông qua
cuốn sách của Nilsson, nội dung đề cập đến việc phân loại máy học.


Machine learning hiện đại bao gồm hai mục tiêu chính: phân loại dữ liệu thơng
qua mơ hình đã được phát triển và đưa ra dự đoán về kết quả trong tương lai dựa
trên mơ hình này.
3. Vì sao Machine learning lại quan trọng?
Machine learning mang lại cái nhìn trực quan về hành vi của khách hàng và các
mơ hình hoạt động kinh doanh. Chúng giúp doanh nghiệp xác định những xu
hướng trong tương lai và đưa ra quyết định nhanh chóng hơn. Ngồi ra, Machine
learning cịn hỗ trợ sự phát triển của các sản phẩm mới.

Hiện nay, các nền tảng lớn như: Google, Facebook, Uber,…, đã ứng dụng
học máy làm trọng tâm trong hoạt động chính của họ. Đối với các doanh nghiệp,
Machine learning chính là nhân tố thúc đẩy tính cạnh tranh hiệu quả.
4. Một số giải pháp của Machine learning


Machine learning là giải pháp được ứng dụng thông qua các loại thuật tốn để phân
tích và dự đốn. Dựa trên những thuật toán này, Machine learning được chia làm
bốn loại: Machine learning được giám sát, Machine learning không được giám sát,
Machine learning bán giám sát và Machine learning tăng cường.
4.1.

Machine learning được giám sát

Machine learning được giám sát sử dụng tập dữ liệu được gắn nhãn để phân loại

dữ liệu hoặc dự đốn kết quả chính xác nhất. Phương pháp này có thể điều chỉnh
trọng lượng khi dữ liệu mới được đưa vào mơ hình cho đến khi chúng được lắp
một cách thích hợp.
Giải pháp Machine learning có giám sát giúp doanh nghiệp xử lý các vấn đề
thực trên quy mô lớn, như việc phân loại thư rác trong thư mục riêng. Những thuật
toán được sử dụng trong học máy được giám sát là: mạng nơ-ron, hồi quy tuyến
tính, hồi quy logistic, máy vectơ hỗ trợ,…
4.2.

Machine learning không được giám sát

Phương pháp này sử dụng các thuật toán Machine learning để phân tích các tập
dữ liệu khơng được gắn nhãn. Những thuật tốn này có khả năng phát hiện nhóm
dữ liệu ẩn mà khơng cần sự hỗ trợ của con người. Đây là giải pháp lý tưởng để:
phân tích dữ liệu, phân khúc khách hàng, nhận dạng hình ảnh, chiến lược bán chéo,



Bên cạnh đó, Machine learning khơng giám sát cịn giảm số lượng tính năng
trong một mơ hình dựa trên việc giảm kích thước. Chúng có hai cách tiếp cận phổ
biến là: phân tích thành phần chính và phân tích giá trị đơn lẻ. Một số thuật toán
khác trong phương pháp nay là: phân cụm k-mean, phân cụm xác suất, mạng nơron,…
4.3.

Machine learning bán giám sát

Đây là sự kết hợp hài hịa giữa học máy được giám sát và khơng giám sát.
Machine learning bán giám sát sử dụng các dữ liệu gắn nhãn và không gắn nhãn để
đào tạo. Phương pháp này giúp giải quyết các vấn đề khơng có đủ dữ liệu được gắn
nhãn để đào tạo thuật toán học máy được giám sát.

4.4.

Machine learning tăng cường

Machine learning tăng cường là phương pháp học tập dựa trên sự tương tác với
mơi trường. Chúng có khả năng thực hiện một mục tiêu nhất định như lái xe hoặc
chơi trò chơi với đối thủ. Phương pháp này được sử dụng để đào tạo máy tính hồn
thành một quy trình gồm nhiều bước.
5. Ứng dụng của Machine learning


5.1.

Nhận diện hình ảnh/khn mặt

Đây được xem là ứng dụng phổ biến nhất của Machine learning. Hiện nay, có
rất nhiều trường hợp cần sử dụng nhận diện khuôn mặt, chủ yếu phục vụ cho nhu
cầu bảo mật như: điều tra, xác định tội phạm, hỗ trợ pháp y, mở khóa điện thoại,…

5.2.

Tự động nhận diện giọng nói

Tự động nhận diện giọng nói được ứng dụng để chuyển giọng nói thành văn
bản kỹ thuật số. Machine learning hỗ trợ việc xác định danh tính của người dùng
dựa trên giọng nói của họ. Ngồi ra, chúng cịn giúp người dùng thực hiện các thao
tác đơn giản thơng qua giọng nói.
Những mẫu giọng nói và từ vựng được đưa vào hệ thống để đào tạo mơ hình
hoạt động. Hiện tại, hệ thống nhận diện giọng nói được ứng dụng trong các lĩnh
vực sau:

 Robot cơng nghiệp
 Quốc phịng và hàng khơng
 Cơng nghiệp viễn thông
 Công nghệ Thông tin và Điện tử Tiêu dùng
 Kiểm sốt an ninh, tự động hóa


5.3.

Lĩnh vực tài chính

Trong lĩnh vực tài chính – ngân hàng, giải pháp học máy được ứng dụng phổ
biến. Những thuật tốn Machine learning có khả năng giám sát và đánh giá hành vi
của người dùng. Việc này giúp quá trình phát hiện vấn đề gian lận hoặc khơng
minh bạch dễ dàng hơn. Bên cạnh đó, người ta cịn ứng dụng học máy để kiểm tra
hoạt động rửa tiền phi pháp.
Thơng qua sự hỗ trợ của thuật tốn, học máy giúp đưa ra quyết định giao dịch
tốt hơn bằng cách phân tích hàng nghìn dữ liệu cùng lúc. Ngồi ra, giải pháp này
rất hiệu quả trong việc tính điểm tín dụng và bảo lãnh phát hành.

5.4.

Tiếp thị bán hàng

Machine learning sở hữu các thuật toán xác định khách hàng tiềm năng dựa
trên: lượt truy cập trang web, lượt nhấp chuột, lượt tải xuống, email đã mở,…
Thông qua dữ liệu thu thập được, doanh nghiệp sẽ định hình được các chiến lược
tiếp thị hiệu quả hơn.



Khơng những thế, học máy cịn hỗ trợ việc phân tích cảm xúc của người tiêu
dùng để đánh giá phản ứng của họ đối với sản phẩm. Ngoài ra, chatbots cũng ngày
càng được cải tiến khi có sự trợ giúp của học máy.
Chăm sóc sức khỏe
Một trong những ứng dụng phổ biến của Machine learning là chẩn đoán
bệnh lý, thậm chí là những căn bệnh nguy hiểm. Giải pháp này cũng được sử dụng
trong quá trình xạ trị cho các bệnh nhân ung thư.
Machine learning xuất hiện trong lĩnh vực y học, bào chế thuốc. Những dự
đoán dựa trên học máy giúp các thử nghiệm lâm sàng hiệu quả hơn. Ngồi ra,
Machine learning có khả năng đưa ra các dự đoán bùng phát. Nhiều nhà khoa học
trên thế giới đang sử dụng cơng nghệ này để dự đốn sự bùng phát dịch bệnh.


Qua bài viết trên, bạn có thể thấy khơng phải ngẫu nhiên mà Machine
learning lại nhận được sự quan tâm trong những năm gần đây như vậy. Giải pháp
công nghệ này mang lại những tính năng tuyệt vời, hỗ trợ con người bước đến một
tương lai hiện đại và tiến bộ hơn.
6. Những câu hỏi thường gặp về machine learning
6.1.

Machine learning được dùng để làm gì?

Machine learning góp mặt trong cuộc sống hằng ngày của con người. Một số
lĩnh vực đã ứng dụng học máy như:
– Trợ lý ảo
– Đưa ra những dự đoán về lưu lượng truy cập
– Phát hiện gian lận trực tuyến
– Lọc thư rác
– Đề xuất sản phẩm
– Phương tiện không người lái

6.2.

Các bước hoạt động của machine learning là gì?

Thơng thường, cơng nghệ học máy bao gồm ba bước hoạt động: đào tạo, xác
thực và kiểm tra. Trong đó, giai đoạn kiểm tra liên quan đến việc quản lý tiếng ồn
và kiểm tra các thông số. Đây chính là ba bước hoạt động cơ bản của phương pháp
học máy.
6.3.

Machine learning phù hợp với ngôn ngữ nào?

Ngơn ngữ lập trình tốt nhất đối với cơng nghệ hiện đại machine learning là:
JavaScript, Python, Julia, R, Java. Trong đó, Python chính là ngơn ngữ lập trình
được sử dụng phổ biến nhất khi thiết lập giải pháp học máy. Lượng người dùng sử
dụng ngôn ngữ này ngày càng tăng.


CHƯƠNG II: MƠ HÌNH NH Ậ
ND Ạ
NG KHN M Ặ
T BẰẰNG THUẬT
TOÁN PCA & SVM.


Trong bài này, chúng ta sẽ học cách sử dụng Máy Véc tơ hỗ trợ và phân
tích thành phần chính để xây dựng mơ hình nhận dạng khn mặt.
Trước tiên, hãy để chúng ta hiểu PCA và SVM là gì:



Phân tích thành phần chính:
Phân tích thành phần chính (PCA) là một thuật toán học máy được sử
dụng rộng rãi trong phân tích dữ liệu khám phá và để tạo mơ hình dự đốn. Nó
thường được sử dụng để giảm kích thước bằng cách chiếu mỗi điểm dữ liệu lên
chỉ một vài thành phần chính đầu tiên để thu được dữ liệu có chiều thấp hơn trong
khi vẫn giữ được càng nhiều biến thể của dữ liệu càng tốt.

PCA của một phân phối Gaussian đa biến (Hình ảnh từ Wikipedia)
Bây giờ, hãy để chúng ta hiểu thuật toán theo cách dễ hiểu hơn:


Giả sử chúng ta đang gặp vấn đề mà chúng ta đang thu thập dữ liệu. Tập dữ
liệu của chúng ta dẫn đến một số biến, nhiều tính năng, tất cả đều ảnh hưởng đến
kết quả theo các khía cạnh khác nhau. Chúng ta có thể chọn loại bỏ một số tính
năng nhất định, nhưng điều đó có nghĩa là mất thơng tin và chúng ta khơng muốn
điều đó, phải khơng?
Vì vậy, một phương pháp khác để giảm số lượng tính năng (giảm kích
thước dữ liệu) là tạo ra các tính năng mới bằng cách trích xuất thơng tin quan trọng
và loại bỏ những thơng tin ít quan trọng nhất. Bằng cách này, thông tin của chúng
ta sẽ không bị mất và chúng ta sẽ giảm các tính năng và sẽ có ít cơ hội trang bị q
mức cho mơ hình của chúng ta.

Máy hỗ trợ vector
Hỗ trợ Vector Machine ( SVM ) là một mơ hình học máy có giám sát được
sử dụng cho các bài toán phân loại hai nhóm. Sau khi cung cấp mơ hình SVM tập
hợp dữ liệu đào tạo được gắn nhãn cho từng danh mục, họ có thể phân loại dữ liệu
thử nghiệm mới.


Phân loại SVM (Hình ảnh từ Wikipedia)

SVM phân loại dữ liệu dựa trên mặt phẳng tối đa hóa lề. Ranh giới quyết
định SVM là thẳng. SVM là một thuật toán thực sự tốt để phân loại hình ảnh. Kết
quả thử nghiệm cho thấy SVM đạt được độ chính xác tìm kiếm cao hơn đáng kể so
với các lược đồ sàng lọc truy vấn truyền thống chỉ sau ba đến bốn vòng phản hồi
về mức độ liên quan. Điều này cũng đúng đối với các hệ thống phân đoạn hình
ảnh, bao gồm cả những hệ thống sử dụng SVM phiên bản sửa đổi sử dụng cách
tiếp cận đặc quyền.

Nhận dạng khuôn mặt
Khn mặt là dữ liệu có kích thước cao bao gồm một số pixel. Dữ liệu ở độ
lớn nhiều chiều khó xử lý và khơng thể trực quan hóa bằng các kỹ thuật đơn giản
như phân tán cho dữ liệu 2 chiều.


Những gì chúng ta sẽ làm là sử dụng PCA để giảm kích thước cao của dữ
liệu và sau đó đưa nó vào bộ phân loại SVM để phân loại ảnh.
Hãy để chúng ta chuyển sang phân đoạn mã hóa!
Ví dụ mã sau đây được lấy từ tài liệu sklearn về eigenfaces. Chúng ta sẽ đi
qua từng bước mã để hiểu được sự phức tạp và kết quả của nó.

Nhập các thư viện và mơ-đun có liên quan
Trước hết, chúng ta sẽ nhập các thư viện và mô-đun cần thiết. Một cuộc thảo
luận sâu về lý do tại sao chúng ta nhập khẩu chúng sẽ theo sau khi nhu cầu của
chúng phát sinh.
import pylab as pl
import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_lfw_people
from sklearn.model_selection import GridSearchCV

from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import PCA as RandomizedPCA
from sklearn.svm import SVC
Tiếp theo, chúng ta sẽ tải dữ liệu vào đĩa và tải nó dưới dạng mảng NumPy
bằng cách sử dụng fetch_lfw_people từ sklearn.datasets :
lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4)
Hình ảnh có thang độ xám (giá trị pixel = 0 - 255).


Tập dữ liệu được tải trong Từ điển
Hình ảnh Numpy Arrays
Tiếp theo, chúng ta sẽ xem xét bên trong các mảng hình ảnh để tìm hình
dạng của các hình ảnh. Chúng ta sẽ sử dụng thuộc tính NumPy shape trả về một bộ
giá trị với mỗi chỉ mục có số phần tử tương ứng.


H
ình ảnh Numpy Arrays
n_samples, h, w = lfw_people.images.shape
np.random.seed(42)


Chúng ta sẽ sử dụng các mảng dữ liệu trong lfw_people utils.Bunch trực
tiếp và lưu trữ nó trong X. Chúng ta sẽ sử dụng dữ liệu này trong quá trình xử lý
tiếp theo.
X = lfw_people.data
n_features = X.shape[1]

Mục tiêu & Tên mục tiêu - Nhãn

Tiếp theo, chúng ta sẽ xác định các nhãn là id của người có ảnh.
y = lfw_people.target
target_names = lfw_people.target_names
n_classes = target_names.shape[0]


đích là một mảng NumPy 1288x1 chứa các giá trị 0–6 của tên mà 1288 hình
ảnh tương ứng. Vì vậy, nếu id 0 có giá trị đích là 5, nó sẽ tham chiếu đến "Hugo
Chavez", như được mô tả trong target_names :


Do đó, y là đích ở dạng số, target_names là bất kỳ mục tiêu / nhãn nào theo tên
và n_classes là biến lưu trữ số lớp mà chúng ta có, trong trường hợp của chúng ta,
chúng ta có 7 :
1.
2.
3.
4.
5.
6.
7.

Ariel Sharon
Colin Powell
Donald Rumsfeld
Ơng George W. Bush
Gerhard Schrưder
Hugo Chavez
Tony Blair



Tên đích từ Tập dữ liệu (Hình ảnh từ Wikipedia - Soure [1], [2], [3], [4], [5], [6],
[7])
print("Total dataset size:")
print("n_samples: %d", n_samples)
print("n_features: %d", n_features)
print("n_classes: %d", n_classes)

Tách thành Train / Test
Tiếp theo, chúng ta sẽ sử dụng mô-đun train_test_split từ
sklearn.model_selection và tách dữ liệu ( X -features và y -labels) thành dữ liệu
đào tạo và dữ liệu thử nghiệm, với 25% dữ liệu được sử dụng để kiểm tra và 75%
còn lại để đào tạo mơ hình .


×