lOMoARcPSD|17343589
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 KHUÔN MẶT BẰNG
THUẬT TOÁ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
Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM
Lớp
: CNPM3
Khóa
: D13
Hà Nội, tháng 2 năm 2022
lOMoARcPSD|17343589
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ú
lOMoARcPSD|17343589
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/khuôn 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 KHUÔN MẶT BẰNG THUẬT TOÁ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 khuôn 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
lOMoARcPSD|17343589
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 ?
lOMoARcPSD|17343589
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.
lOMoARcPSD|17343589
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ự
đoá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.
lOMoARcPSD|17343589
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. Ngoà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
lOMoARcPSD|17343589
Machine learning là giải pháp được ứng dụng thông qua các loại thuật toán để phân
tích và dự đoá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ự đoá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 toá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,
…
lOMoARcPSD|17343589
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 hoàn
thành một quy trình gồm nhiều bước.
5. Ứng dụng của Machine learning
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
5.1.
Nhận diện hình ảnh/khuôn 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ọ. Ngoà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 soát an ninh, tự động hóa
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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 toá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 toá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. Ngoà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.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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. Ngoà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ự đoán sự bùng phát dịch bệnh.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
CHƯƠNG II: MÔ HÌNH NHẬN DẠNG KHUÔN MẶT BẰẰNG THUẬT
TOÁN PCA & SVM.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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 khuôn mặt.
Trước tiên, hãy để chúng ta hiểu PCA và SVM là gì:
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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ự đoá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:
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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ị quá
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.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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
Khuôn 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.
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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).
Downloaded by v? ngoc (
[email protected])
lOMoARcPSD|17343589
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.
Downloaded by v? ngoc (
[email protected])