HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN TIỂU LUẬN MÔN XỬ LÍ ẢNH ĐỀ TÀI PCA TRONG NHẬN DIỆN KHUÔN MẶT 1 Nhận dạng khuôn mặt là gì? Nhận dạng khuôn mặt là m[.]
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TP.HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN MÔN XỬ LÍ ẢNH
ĐỀ TÀI: PCA TRONG NHẬN DIỆN KHUÔN MẶT
Trang 2
1 Nhận dạng khuôn mặt là gì?
Nhận dạng khuôn mặt là một cách xác định hoặc xác nhận danh tính của một cá nhân bằng khuôn mặt của họ Hệ thống nhận dạng khuôn mặt có thể được sử dụng để xác định mọi người trong ảnh, video hoặc trong thời gian thực
Nhận dạng khuôn mặt là một loại bảo mật sinh trắc học Các dạng phần mềm sinh trắc học khác bao gồm nhận dạng giọng nói, nhận dạng vân tay và nhận dạng võng mạc mắt hoặc mống mắt Công nghệ này chủ yếu được sử dụng cho bảo mật và thực thi pháp luật, mặc dù ngày càng có nhiều sự quan tâm trong các lĩnh vực sử dụng khác
2 Nhận dạng khuôn mặt hoạt động như thế nào?
Nhiều người đã quen thuộc với công nghệ nhận dạng khuôn mặt thông qua FaceID được sử dụng
để mở khóa iPhone (tuy nhiên, đây chỉ là một ứng dụng nhận dạng khuôn mặt) Thông thường, tính năng nhận dạng khuôn mặt không dựa vào cơ sở dữ liệu ảnh khổng lồ để xác định danh tính của một cá nhân - nó chỉ xác định và công nhận một người là chủ sở hữu duy nhất của thiết bị, đồng thời hạn chế quyền truy cập của những người khác
Ngoài mở khóa điện thoại, tính năng nhận dạng khuôn mặt hoạt động bằng cách so trùng khuôn mặt của những người đi ngang qua máy ảnh đặc biệt với hình ảnh của những người trong danh sách theo dõi Danh sách theo dõi có thể chứa hình ảnh của bất kỳ ai, kể cả những người không bị nghi ngờ có hành vi sai trái nào và hình ảnh có thể đến từ bất kỳ đâu - ngay cả từ các tài khoản mạng xã hội của chúng tôi Các hệ thống công nghệ trên khuôn mặt có thể khác nhau, nhưng nhìn chung, chúng có xu hướng hoạt động như sau:
Bước 1: Nhận diện khuôn mặt Máy ảnh phát hiện và định vị hình ảnh của một khuôn mặt, một mình hoặc trong một đám đông Hình ảnh có thể cho thấy người đó đang nhìn thẳng về phía trước hoặc trong hồ sơ
Bước 2: Phân tích khuôn mặt Tiếp theo, một hình ảnh của khuôn mặt được chụp và phân tích Hầu hết công nghệ nhận dạng khuôn mặt dựa trên hình ảnh 2D thay vì 3D vì nó có thể khớp hình ảnh 2D với ảnh công khai hoặc ảnh trong cơ sở dữ liệu thuận tiện hơn Phần mềm đọc hình dạng khuôn mặt của bạn Các yếu tố chính bao gồm khoảng cách giữa hai mắt, độ sâu của hốc mắt, khoảng cách từ trán đến cằm, hình dạng của gò má và đường viền của môi, tai và cằm Mục đích là để xác định các điểm mốc trên khuôn mặt là chìa khóa để phân biệt khuôn mặt của bạn
Bước 3: Chuyển đổi hình ảnh thành dữ liệu Quá trình chụp khuôn mặt chuyển đổi thông tin tương
tự (khuôn mặt) thành một tập hợp thông tin kỹ thuật số (dữ liệu) dựa trên các đặc điểm trên khuôn mặt của người đó Phân tích khuôn mặt của bạn về cơ bản được biến thành một công thức toán học Mã số được gọi là khuôn mặt Giống như cách mà dấu vân tay là duy nhất, mỗi người có khuôn mặt của riêng họ Bước 4: Tìm một kết quả phù hợp Sau đó, khuôn mặt của bạn được so sánh với cơ sở dữ liệu của các khuôn mặt đã biết khác Ví dụ, FBI có quyền truy cập tới 650 triệu bức ảnh, được lấy từ nhiều cơ sở dữ liệu của tiểu bang Trên Facebook, bất kỳ ảnh nào được gắn thẻ tên người đều trở thành một phần trong cơ sở dữ liệu của Facebook, cơ sở dữ liệu này cũng có thể được sử dụng để nhận dạng khuôn mặt Nếu khuôn mặt của bạn khớp với một hình ảnh trong
cơ sở dữ liệu nhận dạng khuôn mặt thì việc xác định sẽ được thực hiện
3 Công dụng của nhận dạng khuôn mặt trong cuộc sống hàng ngày:
+ Mở khóa điện thoại
+ Thực thi pháp luật
+ Kiểm soát sân bay và biên giới
Trang 3+ Tìm người thất lạc
+ Giảm tội phạm
+ Ngân hàng: Ngân hàng trực tuyến sinh trắc học là một lợi ích khác của nhận dạng khuôn mặt Thay vì sử dụng mật khẩu một lần, khách hàng có thể ủy quyền giao dịch bằng cách nhìn vào điện thoại thông minh hoặc máy tính của họ Với tính năng nhận dạng khuôn mặt, không có mật khẩu nào để tin tặc xâm phạm Nếu tin tặc đánh cắp cơ sở dữ liệu ảnh của bạn, thì tính năng phát hiện 'không sống động' - một kỹ thuật được sử dụng để xác định xem nguồn mẫu sinh trắc học là người sống hay là hình ảnh đại diện giả - nên (về lý
thuyết) sẽ ngăn họ sử dụng nó cho mục đích mạo danh Nhận dạng khuôn mặt có thể biến thẻ ghi nợ và chữ ký trở thành dĩ vãng
+ Chăm sóc sức khỏe: Các bệnh viện sử dụng nhận dạng khuôn mặt để giúp chăm sóc bệnh nhân Các nhà cung cấp dịch vụ chăm sóc sức khỏe đang thử nghiệm việc sử dụng nhận dạng khuôn mặt để truy cập hồ sơ bệnh nhân, hợp lý hóa việc đăng ký bệnh nhân, phát hiện cảm xúc và nỗi đau của bệnh nhân, và thậm chí giúp xác định các bệnh di truyền cụ thể AiCure đã phát triển một ứng dụng sử dụng nhận dạng khuôn mặt để đảm bảo rằng mọi người uống thuốc theo đúng quy định Khi công nghệ sinh trắc học trở nên ít tốn kém hơn, việc áp dụng trong lĩnh vực chăm sóc sức khỏe dự kiến sẽ tăng lên
4 Hệ thống nhận diện khuôn mặt: Là một công nghệ có khả năng xác thực con người từ
những hình ảnh kĩ thuật số hoặc các khung video từ các nguồn video Có nhiều phương pháp để hệ thống nhận diện khuôn mặt hoạt động, nhưng tổng quan bằng cách chọn lựa có so sánh các đặc trưng của khuôn mặt từ những hình ảnh cho trước với những hình ảnh từ cơ sở dữ liệu Hệ thống nhận diện khuôn mặt cơ bản bao gồm những cụm sau:
1 Đầu vào của hình ảnh
2 Xác định khuôn mặt
3 Xử lí hình ảnh
4 Rút trích các đặc trưng khuôn mặt
5 Xác thực, đánh giá
1 Đầu vào hình ảnh
Một tấm ảnh vật lí hoặc các mẫu hành vi được chụp từ bất kì loại thiết bị ghi hình nào
2 Xác định khuôn mặt
Cơ bản là định vị khuôn mặt trong tấm ảnh
3 Xử lí hình ảnh
Hình ảnh được cắt chừa lại phần khuôn mặt và hình ảnh được chuyển đổi thành trắng đen sau đó là xám
4 Nhận dạng khuôn mặt
Rút trích đặc trưng của khuôn mặt (mắt, mũi, …) và tạo ra bản mẫu
5.1 Xác thực
Hệ thống nhận ra cá nhân cụ thể đưa ra quyết định
5.2 Sự cho phép
Hệ thống so sánh khuôn mặt cá nhân cụ thể với ảnh trong cơ sở dữ liệu để xác nhận
Trang 4Hình ảnh sẽ được quét bởi máy quét và lưu trữ vào cơ sở dữ liệu Nếu cơ sở dữ liệu đã có ảnh của người đó rồi thì nó vẫn lưu tiếp Bây giờ CSDL có hai hình ảnh của cùng một người Bước đầu tiên là chọn một tấm hình mong muốn từ CSDL sau đó so sánh để phát hiện khuôn mặt từ mỗi bức ảnh Bước cuối cùng là nhận diện tấm ảnh đó có cùng một người hay không
5 Kĩ thuật nhận diện khuôn mặt
Thuật toán nhận diện khuôn mặt có thể được phân thành 2 loại chính dựa theo các kiểu trích xuất đặc trưng cho sự thể hiện khuôn mặt:
+ Phương pháp dựa trên đặc trưng
+ Phương pháp dựa trên ngoại hình
Các thuộc tính và mối quan hệ hình học như là vùng khuôn mặt, khoảng cách, góc cạnh giữa các điểm đặc trưng trên khuôn mặt được sử dụng như mô tả cho nhận diện khuôn mặt Mặt khác, phương pháp dựa trên ngoại hình cân nhắc các thuộc tính tổng quan của mẫu cường độ hình ảnh khuôn mặt
Thuật toán nhận diện khuôn mặt dựa trên ngoại hình điển hình được xử lý bởi việc tính toán các vector cơ bản để thể hiện dữ liệu khuôn mặt hiệu quả Bước tiếp theo, những khuôn mặt được ước tính dựa trên những vector này và hệ số ước tính có thể được sử dụng đại diện cho những hình ảnh khuôn mặt Thuật toán phổ biến như là PCA, LDA, ICA, LFA, bộ lọc tương quan, đa tạp,
Tensorfaces đều dựa trên hình dạng của khuôn mặt Những cách tiếp cận toàn diện gặp vấn đề với việc giải quyết các hình dáng khác nhau
6 Principal Component Analysis (PCA)
6.1 Tại sao PCA được sử dụng và sử dụng ở đâu?
+ PCA được sáng chế vào năm 1901 bởi Karl Pearson Bây giờ nó được sử dụng rộng rãi như là một công cụ trong lĩnh vực phân tích dữ liệu khám phá và cho việc tạo ra các mô hình có thể dự đoán được (VD: nhận diện khuôn mặt)
+ PCA là phép phân tích đơn giản nhất dựa trên vector riêng đa biến Thông thường, sự vận hành của PCA có thể được nghĩ như là tiết lộ cấu trúc bên trong của dữ liệu theo cái cách mà giải thích tốt nhất các biến (được trưng chính/ hướng) trong dữ liệu
+ Nếu có bộ dữ liệu đa biến (ví dụ: bộ hình ảnh) được trực quan hóa như là một bộ các tọa độ trong không gian dữ liệu nhiều chiều (1 trục mỗi biến)
+ PCA có thể cung cấp cho người dùng với bức ảnh có số chiều ít hơn, một “bóng” của khuôn mặt không hoàn thiện khi được xem từ góc nhìn có thể thấy nhiều thông tin nhất
Trang 56.2 PCA là cái gì và mối quan hệ của nó với nhận dạng khuôn mặt:
+ PCA là một thủ tục toán học sử dụng sự biến đổi trực giao để chuyển 1 bộ giá trị liên quan đến nhau của M hình ảnh khuôn mặt thành một bộ K giá trị các biến không liên quan được gọi là thành phần chính (PC) hay Eigenfaces
+ Số PC/Eigenface thì luôn luôn nhỏ hơn hoặc bằng số hình ảnh khuôn mặt ban đầu (K < M) + Sự biến đổi này được định nghĩa theo cái cách đó là thành phần chính đầu tiền chỉ ra miền quan trọng nhất(hướng/đặc trừng) của bộ dữ liệu và mỗi thành phần chính kế tiếp chỉ ra đặc
trưng/hướng quan trọng kế tiếp, dưới sự ràng ruộc rằng nó không liên quan các đến các thành phần trước đó
+ Để giảm việc tính toán cần thiết cho việc tìm ra những thành phần chính, số chiều của bộ dữ liệu ban đầu được làm giải trước khi tính toán
Nếu chúng ta không giảm số chiều thì eigeifaces sẽ là N*N, nhiều hơn rất nhiều số hình ảnh mà chúng ra có thể còn thấy và nhận diện được.Chỉ có vài thành phần chính (PC) (K phần tử được chọn) trong khi phần còn lại được loại bỏ vì những thành phần chính đầu chỉ ra “hướng” của dữ liệu và mỗi thành phần được xử lý kế tiếp chỉ ra ít hướng hơn và dày đặc hơn Chúng ta có thể yên tâm những K thành phần chính (PC) này có thể đại diện toàn bộ bộ dữ liệu ban đầu bởi vì nó miêu
tả những đặc trưng chính/ hướng quan trọng nhất
=> Vì vậy, mỗi biến của bộ dữ liệu ban đầu có thể được biểu diễn dưới dạng của K thành phần chính này
Trang 6Biểu diễn các điểm dữ liệu như thế này(là sự kết hợp của K thành phần chính) làm giảm số giá trị (từ M đến K) cần phải tính toán để có thể nhận ra khuôn mặt này
w1, w2, …, wk là tổng số tuyến tính của những eigenfaces này, ta có thể nói mỗi hình ảnh góp một vài đặc tính cấu tạo thành bộ dữ liệu huấn luyện này Nói cách khác tấm ảnh gốc là sản phẩm của các eigeifaces hợp lại với nhau Đây là mấu chốt của PCA
→ Làm cho quá trình nhận dạng diễn ra nhanh hơn và chính xác hơn bởi vì không có sự xuất hiện của những hình ảnh không cần thiết
6.3 Tìm hiểu về PCA:
Curse of dimensionality: Lời nguyền của chiều hướng
- Khi bạn nhìn vào một bộ dữ liệu bạn có xu hướng nhìn vào bề mặt của nó và bạn thực sự không biết cái gì là thuộc tính đại diện và cho đến khi bạn biết các thuộc tính thì bạn lại không biết số chiều, bạn có một dữ liệu mới bạn có thể hoàn toàn có một chiều dư thừa
Ví dụ:
Các điểm dữ liệu trong suốt thời gian từ các địa điểm địa lý khác nhau
x1: các tai nạn trơn trượt,
x2: các vụ bể đường ống nước,
x3: chi phí cào tuyết
x4: việc đóng cửa trường học
x5: bệnh nhận say nắng
Đây dường như là các thuộc tính không liên quan và nói lên các vấn đề khác nhau, nếu bạn nhìn nó một cách cẩn thận, bạn sẽ nhận ra có một yếu tố có thể giải thích hầu hết những thứ này và đó là
nhiệt độ từ những nơi mà các dữ liệu này được gửi đến.
Bạn sẽ không bị trơn trượt nếu không có băng, mà băng có được khi nhiệt độ trở nên rất thấp và khi nhiệt độ dưới nhiệt độ đóng băng các đường ống sẽ bị vỡ, bạn sẽ dành nhiều thời gian
để cào tuyết và con người dường như kh thể mắc được bệnh say nắng và các trường học sẽ đóng cửa Vậy chúng ta có một yếu tố chính đóng vai trò quan trọng cho những quan sát trên Vậy tất cả các thuộc tính bạn có trong dữ liệu tất cả đều phụ thuộc vào một số đại lượng mà bạn không quan sát một cách trực tiếp chúng
- Các bộ dữ liệu có số chiều lớn
+tầm nhìn: 10^4 pixels, text: 10^6 words
.Cách mà chúng ta quan sát/ ghi chép chúng
- số chiều thực tế thường thấp hơn rất nhiều
Ví dụ: một chữ số được biểu diễn trên máy tính
- 20*20 bitmap: {0, 1}^400 các sự kiện có thể
bạn sẽ không bao giờ thấy được hầu hết các sự kiện này
các bitmap cần để tạo thành một con số là một con số rất nhỏ so với 20*20 bitmap
Trang 7→ Sử dụng số chiều ban đầu mà bạn có là lãng phí thuật toán về học máy.
Ví dụ:
1d: 3 vùng,
2d: 9 vùng,
1000d - không có hi vọng
→ Khi mà số chiều tăng lên làm cho tính dày đặc thấp đi đồng nghĩa với việc không gian trạng thái tăng rất nhanh nhưng số mẫu thì không tăng
6.3.1 Làm giảm số chiều:
Mục tiêu: Thể hiện đối tượng với ít biến hơn
- Cố gắng giữ gìn cấu trúc ban đầu của dữ liệu càng nhiều càng tốt
- Làm nổi bật điểm khác biệt với độ chính xác cao, những cấu trúc ảnh hưởng tới việc phân lớp
Sự lựa chọn đặc trưng:
Chọn ra một bộ khác có số chiều ít hơn so với số chiều ban đầu
Chọn ra những lớp “dự đoán” tốt nhất
Rút trích đặc trưng:
Xây dựng một tập chiều mới E1E2 … Em
Ei = f(X1 Xd)
- Sự kết hợp tuyến tính của các chiều ban đầu X1X2X3 … Xd
6.3.2 Hướng của phương sai lớn nhất:
Định nghĩa một tập các thành phần chính (principal components) (PC)
- 1st: chiều của sự thay đổi có giá trị cao nhất trong dữ liệu
- 2nd: vuông góc với đường thẳng 1st, có chiều của sự thay đổi cao nhất trong số các chiều còn lại
- … và làm cho đến khi d (d là số chiều ban đầu)
First m<<d thành phần trở thành m chiều mới
- Thay đổi tọa độ của mỗi điểm dữ liệu theo các hướng này
Tại sao lại chọn hướng có phương sai lớn nhất ?
Ví dụ: Giảm dữ liệu 2 chiều thành 1 chiều
Ta có: {x1, x2} → e’
+ Chọn 1 đường thẳng e có phương sai lớn nhất
+ Giảm số trường hợp khi mà 2 điểm gần nhau trong không gian e này nhưng rất xa trong không gian hệ tọa độ Oxy → Để bảo toàn cấu trúc ban đầu giữa các điểm
Trang 8+ Khoảng cách từ các điểm ban đầu (màu xanh lá) đến điểm được ướm lên đường thẳng (nét đứt màu đỏ) là nhỏ nhất → để làm lớn nhất phương sai (đúng với ý đầu tiên)
- Theo định lý Pytago: a2 = b2+c2
Trong đó a không thay đổi, b tăng thì c giảm và ngược lại
Để làm lớn nhất phương sai đó là cạnh c thì cần làm nhỏ nhất cạnh b → Đồng nghĩa khoảng cách từ điểm ban đầu đến cạnh
c càng gần càng tốt
6.3.3 Principal Components = Eigenvectors
Thành phần chính = Vector riêng
Từ giá trị biến(variable) của các mẫu(sample) ta tính được điểm trung tâm
+Dịch điểm trung tâm về gốc tọa độ (0, 0) và giữ khoảng cách tương đối giữa các điểm khác bằng cách:
→ Lấy tọa độ mỗi điểm trừ cho điểm trung tâm
+ Tính toán ma trận hiệp phương sai Σ
Ma trận hiệp phương sai của tập hợp m biến ngẫu nhiên là một ma trận vuông hạng (m × m), trong
đó các phần tử nằm trên đường chéo chính lần lượt là phương sai tương ứng của các biến này (Var(X) = Cov(X,X)), trong khi các phần tử còn lại (không nằm trên đường chéo) là các hiệp phương sai của đôi một hai biến ngẫu nhiên khác nhau trong tập hợp
- Hiệp phương sai của 2 hướng x1 và x2:
+ Chỉ ra x1 và x2 có cùng tăng hay cùng giảm?
+ Hoặc x1 tăng và x2 giảm và ngược lại
Var(X) = 1/n-1Σn
i=1X2 ia
Cov(b, a) = 1/n-1Σn
i=1XibXia
Các phần tử trên đường chéo chính của ma trận hiệp phương sai lần lượt là các phương sai của các mẫu dữ liệu theo từng chiều trong không gian m chiều
•Ma trận hiệp phương sai có tính chất đối xứng qua đường chéo chính
Trang 9+ Nhân một vector a với ma trận hiệp phương sai Σ:
Ta sẽ nhận được 1 vector chuyển hướng dần về một hướng cụ thể, nếu chúng ta nhân vector a này
với kết quả trước đó thì ta sẽ được 1 vector càng ngày càng lớn dần, nhưng hướng của sẽ vector
sẽ hội tụ dần về một điểm Độ dốc tiến dần về một con số không thay đổi Hướng đó chính là
hướng mà dữ liệu trải rộng nhất Ta sẽ tìm ra được PC và nhận thấy nó chính bằng vector riêng với giá trị riêng lớn nhất → PC = eigenvectors w largest eigenvalues
Giá trị riêng (eigenvalues) = Tổng bình phương của của các điểm được ướm lên best fit line
(đường thẳng tốt nhất) đến gốc tọa độ
Ví dụ: d12+d22+ d32 +d42 + d52 +d62
1 Tìm trị riêng bằng cách giải: det(Σ – λl) = 0
2 Tìm vector riêng thứ i tương ứng với giá trị riêng thứ i bằng cách giải: Σ ei =λiei
Trang 10Sau khi tìm được vector riêng ta chia mỗi phần tử của vector cho 1 một số bằng căn bậc hai tổng bình phương của 2 phần tử này → Đổi về một đơn vị chiều dài
→ Độ dốc = phần tử nhỏ hơn / phần tử lớn hơn.
- Ta chọn ra những PC nào có Eigenvalue lớn nhất để chiếu theo hướng của PC đó
Ví dụ: Chọn PC1 và PC2
Xoay PC1 và PC2 sao cho trùng với hệ tọa độ Oxy, bỏ hệ tọa cũ và chiếu các điểm mới lên hệ tọa
độ PC1PC2
PCA example: Eigen Faces