Biểu diễn tập huấn luyện vào không gian vector riêng

Một phần của tài liệu Nghiên cứu xây dựng phần mềm nhận dạng mặt người theo thời gian thực (Trang 34)

2.2 Phát hiện và nhận dạng đối tượng

2.2.5 Biểu diễn tập huấn luyện vào không gian vector riêng

Mỗi khn mặt ti trong tập huấn luyện có thể được biểu diễn lại là 1 tổ hợp tuyến tính của K vector riêng lớn nhất:

∑ 𝑊𝑗𝑈𝑗

𝐾

𝑗=1

Trong đó:

𝑊𝑗 = 𝑈𝑗𝑇𝑡𝑖

Gọi các “vector riêng ui” là các “EIGENFACES” (khuôn mặt riêng). Như vậy, bây giờ, mỗi khuôn mặt huấn luyện ri sẽ được biểu diễn trong không gian mới là 1 vector như sau:

(7)

(8)

20 Ω𝑖 = [ 𝑊1𝑖 𝑊2𝑖 … 𝑊𝐾𝑖] , i = 1,2,…,M Ω𝑖 = [ 𝑈1𝑇𝑡𝑖 𝑈2𝑇𝑡𝑖 … 𝑈𝐾𝑇𝑡𝑖]

Hình 2.3 Minh họa các Eigenfaces 2.2.6 Nhận dạng khuôn mặt bằng các Eigenfaces 2.2.6 Nhận dạng khuôn mặt bằng các Eigenfaces

Cho 1 ảnh khuôn mặt chưa biết là ai (khn mặt giống tập mẫu – chính diện và cùng kích thước). Giai đoạn nhận dạng này giống hệt giai đoạn biểu diễn ảnh khuôn mặt trong tập mẫu. Ta thực hiện lần lượt các bước sau:

Bước 1: Chuẩn hóa r:

𝑡 = 𝑟𝑖 − 𝑟

Các Eigenface (vector cơ sở ui của không

gian khuôn mặt) Khuôn mặt ri có

thể biểu diễn là tổ hợp tuyến tính của

các vector cơ sở

Các wj của vector i (đây chính là tọa độ trong khơng gian khn mặt )

(10)

(11)

21

Bước 2: Biểu diễn t thành  như sau:

Ω𝑖 = [ 𝑈1𝑇𝑡𝑖 𝑈2𝑇𝑡𝑖 … 𝑈𝐾𝑇𝑡𝑖]

Bước 3: Tìm khn mặt thứ l trong tập mẫu có khoảng cách gần nhất với khuôn mặt

cần nhận dạng.

𝑒𝑟 = 𝑚𝑖𝑛𝑙|Ω − Ω𝑙|

Bước 4: Phân loại và nhận dạng

Sau khi trích chọn được vector đặc tính, chúng ta cần đối chiếu vector này với cơ sở dữ liệu, từ đó đưa ra kết quả nhận dạng. Trong bài toán, kết quả nhận dạng sẽ là nhận biết được hoặc chưa nhận biết được.

Để thực hiện phân loại có rất nhiều phương pháp như khoảng cách Euclides, mạng Noron, SVM,… trong đó khoảng cách Euclides là phương pháp đơn giản nhất. Nó cho kết quả tốt đối với trường hợp đối tượng đã được tạo thành các nhóm cách xa nhau. Vector đặc tính của đối tượng cần nhận dạng sẽ được so sánh lần lượt với vector đặc tính của từng ảnh mẫu trong tập các ảnh học. Các khoảng cách ngắn nhất sẽ được lưu lại.

Nếu er < Tr (Tr là 1 ngưỡng chấp nhận được nào đó):

Tức ảnh khuôn mặt cần xác định “đủ gần” với ảnh của người thứ l trong tập mẫu. Khi đó, ta kết luận đó chính là khn mặt của người thứ l.

Ta có thể sử dụng khoảng cách Euclid để tính er. Tuy nhiên, người ta chứng mình được rằng, kết quả sẽ tốt hơn nếu dùng khoảng cách “Mahalanobis”:

(13)

(14)

22

2.3 Thư viện thị giác máy tính mã nguồn mở OpenCV.

Để hỗ trợ cho việc xây dựng và thiết kế ứng dụng thực nghiệm trong đề tài này, chúng ta sẽ tìm hiểu về thư viện hỗ trợ trong việc xử lý ảnh OpenCV của Intel.

OpenCV là viết tắt của Open Source Computer Vision Library [4].Nó chứa hơn 500 hàm sử dụng trong thị giác máy (computer vision). OpenCV là một thư viện mã nguồn mở (open source) http://sourceforge.net/. 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à Mac OS X. OpenCV được thiết kế để nâng cao hiệu suất tính tốn và nhấn mạnh đến hệ thống thời gian thực. Một điều tuyệt vời của OpenCV là nó đư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, rơ bốt học v..v. Nó chứa các lệnh lập trình xử lý ảnh rất đơn giản, kể cả thực thi các hàm bậc cao như dị tìm khn mặt, theo dõi khuôn mặt, nhận dạng khuôn mặt.

Kể từ khi được giới thiệu vào tháng 1 năm 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. Ví dụ trong lĩnh vực hàng không vũ trụ, bản đồ web, 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, quản lý hệ thống sản xuất, xử lý camera, ứng dụng trong quân sự, hệ thống hàng không không người lái, trên mặt đất, các tàu ngầm.

Hình 2.4 Quá trình phát triển của OpenCV.

Cấu trúc của OpenCV được chia thành các phần sau:

 CV (computervision): là cung cấp các hàm liên quan trực tiếp đến Computer Vision, trong đó tập trung ở các thao tác cấp thấp trên ảnh và camera cụ thể là các thao tác trong xử lý ảnh như lọc ảnh, trích biên, phân vùng, tìm contour, biến đổi Fourier.

23

 MLL(machine learning library):là thư viện máy học, cái này bao gồm rất nhiều lớp thống kê và gộp các công cụ xử lý.

 HighGUI: là thành phần chứa các thao tác lên những file ảnh và file video như đọc ảnh, hiển thị ảnh, chuyển đổi định dạng.

 CXCore:chứa đựng rất nhiều các thành phần cơ bản cấu thành nên toàn bộ OpenCV. CxCore bao gồm các cấu trúc dữ liệu cơ bản, các thao tác lên array, các cấu trúc động, các hàm vẽ, các hàm tác động lên dữ liệu, các hàm quản lý lỗi và sự kiện và một số hàm cần thiết khác. Số lượng hàm chứa đựng trong CxCore là rất lớn.

 IPP (Integrated Performance Primitives): là một thư viện của Intel gồm các hàm tối ưu mức thấp trong các lĩnh vực khác nhau, đây chỉ là một option của OpenCV, OpenCV tự động gọi các hàm trong IPP nếu nó được cài đặt.

Hình 2.5 Cấu trúc cơ sở của OpenCV. IPP IPP

Mã nguồn đã được tối ưu trên kiến trúc của Intel.

CVCORE

Cấu trúc cơ sở và các thuật toán, hỗ trợ XML, các hàm vẽ.

CV Xử lý ảnh và thuật toán về thị giác máy MLL Thống kế và tập hợp các công cụ xử lý HighGUI

Giao diện, truy xuất ảnh và video Các mã nguồn ví dụ và ứng dụng thực nghiệm

24

Chương 3

THIẾT KẾ VÀ THỰC HIỆN CHƯƠNG TRÌNH XỬ LÝ

3.1 Yêu cầu thiết kế.

Mục tiêu của đề tài là thiết kế một phần mềm nhận ảnh trực tiếp từ camera sau đó tiến hành phát hiện và nhận dạng người xuất hiện trong ảnh. Quá trình phát hiện, nhận dạng được xử lý theo thời gian thực từ video lấy từ camera. Nếu người đó là người đã được huấn luyện sẽ đóng khung và hiện tên, nếu là người lạ sẽ đóng khung và hiện chữ “Unknow”.

Trong đề tài này tơi sẽ xây dựng một chương trình phát hiện mặt người gồm một số yêu cầu đặt ra như sau :

- Chương trình được xây dựng trên máy tính, sử dụng phần mềm Visual Studio, ngơn ngữ C++, và thư viện thị giác máy tính OpenCV của Intel để lập trình

- Tạo tập mẫu gương mặt để huấn luyện đặc trưng

- Thu nhận hình ảnh từ camera trên máy tính và tiến hành nhận dạng so với tập mẫu đã huấn luyện.

- Dị tìm phát hiện và nhận dạng khn mặt từ dữ liệu hình ảnh camera đưa về

- Khoanh vùng tất cả gương mặt được phát hiện, hiện chỉ số khoảng cách giữa vector khuôn mặt phát hiện và khuôn mặt huận luyện, hiện tên nếu là người được huấn luyện, hiện ‘Unknow’ nếu không phải người đã huấn luyện.

3.2 Tạo cơ sở dữ liệu khuôn mặt huấn luyện

Cơ sở dữ liệu được sử dụng cho đề tài bao gồm ảnh của tác giả chụp trực tiếp từ camera, ảnh của nghệ sỹ Hoài Linh lấy từ internet, và diễn viên Leonardo Decaprio lấy từ internet.

Một số thông số về cơ sở dữ liệu:  Giới tính: nam.

 Nguồn gốc: Tự chụp và lấy từ internet  Mặt nghiêng : có

 Mặt cười: có.  Râu: có.

 Định dạng ảnh: 24bit JPEG, kích thước là 200x200 pixels.

25

Bộ dữ liệu được chọn sẽ bao gồm 3 phân lớp. Phân lớp thứ nhất gồm 5 ảnh khn mặt của nghệ sỹ Hồi Linh, phân lớp thứ 2 gồm 8 ảnh khuôn mặt của diễn viên Leonardo Decaprio, phân lớp thứ 3 gồm 9 ảnh khuôn mặt của tác giả. Tất cả các khuôn mặt được lấy mẫu trong điều kiện ánh sáng đầy đủ, và các mặt nghiên đã được xoay về mặt chính diện. Kích thước mỗi ảnh đều bằng nhau.

Hình 3. 1 Tập mẫu nghệ sĩ Hồi Linh - Phân lớp 1

26

Hình 3. 3 Tập mẫu tác giả - Phân lớp 3

- Chương trình lấy mẫu khn mặt: Phụ lục 1

3.3 Tạo file đường dẫn đến cơ sở dữ liệu khuôn mặt (CSV-file)

Mỗi ảnh trong một phân lớp sẽ được đặt ở một thư mục khác nhau và sẽ được gán một trọng số để tiến hành nhận dạng sau này

Chương trình tạo file CSV: Phụ lục 2

27

Hình 3. 5 Nội dung file CSV 3.4 Lưu đồ giải thuật tổng quát 3.4 Lưu đồ giải thuật tổng quát

Yêu cầu của đề tài là xây dựng một hệ thống chạy trên thời gian thực, hoạt động 24/24, có thể nhận dạng được một hoặc nhiều người cùng lúc.

Trong đề tài này sử dụng 2 cơ sở dữ liệu về đặc trưng gương mặt người được huấn luyện theo thuật toán AdaBoost được OpenCV cung cấp là:

 Haarcascade_frontalface_alt2.xml: Đặc trưng gương mặt theo hướng nhiền chính diện.

 Haarcascade_profileface.xml: Đặc trưng gương mặt theo hướng nhìn từ cạnh bên.

Để tăng độ chính xác của việc nhận diện gương mặt, ta có thể thu thập thêm các mẫu ảnh về gương mặt người ở các góc nhìn khác nhau. Sau đó huấn luyện các mẫu ảnh đó để được các tập tin dữ liệu *.xml của các đặc trưng gương mặt từ nhiều góc nhìn.

Việc tạo được đữ liệu chính xác cần số lượng mẫu huấn luyện phải nhiều và ở các điều kiện môi trường ngoại cảnh khác nhau. Và để huấn luyện được số lượng lớn mẫu đó thì cần một máy tính có cấu hình mạnh để việc huấn luyện có thể hồn thành nhanh chóng.

28 Chuẩn hóa khn mặt

Load file CSV

Huấn luyện đặc trưng khuôn mặt Load đặc trưng khn

mặt

Chuyển sang ảnh xám

Dị tìm đặc trưng khn mặt

Chuyển về kich thước khuôn mặt huấn luyện Nhận ảnh từ camera Phát hiện khn mặt Tính Eigenvalue và EigenVector Tính khoảng cách so với tập mẫu So sánh khoảng cách với ngưỡng Đóng khung và hiển thị tên Đóng khung và hiển thị “Unknow” N Y Nhỏ hơn Lớn hơn

29

3.5 Chương trình thực hiện

30

Chương 4

KẾT QUẢ THỰC HIỆN

Chương trình được ứng dụng chạy thử nghiệm trong nhiều điều kiện ánh sáng khác nhau, từ mơi trường có ánh sáng yếu cho đến môi trường đủ sáng ở các khoảng cách khác nhau, nhận dạng một hoặc nhiều người xuất hiện cùng lúc, và đạt được các kết quả như sau:

4.1 Kết quả nhận dạng một người

Trong môi trường ánh sáng phù hợp với môi trường ánh sáng khi lấy mẫu khn mặt thì chương trình có tỷ lệ nhận dạng chính xác cao. Khi thay đổi mơi trường sáng thì chỉ có phân lớp thứ 3 (ảnh lấy mẫu trực tiếp từ camera), cho tỷ lệ nhận dạng cao, còn phân lớp 1, 2 (ảnh lấy mẫu từ internet) khi thay đổi mơi trường sáng thì hầu như khơng nhận dạng được.

31

Hình 4. 2 Ảnh nhận dạng diễn viên Leonardo Decapiro - phân lớp thứ 2

32

4.2 Kết quả nhận dạng hai người

Trong môi trường ánh sáng phù hợp với môi trường ánh sáng tạo tập mẫu huấn luyện thì chương trình cho kết quả nhận dạng tốt. Khi có ánh sáng chói hoặc khơng đủ sáng thì chương trình chỉ cho kết quả nhận dạng đúng ở phân lớp 3.

Hình 4. 4 Nhận dạng khi xuất hiện mặt người ở phân lớp 1,3

33

4.3 Kết quả nhận dạng khi có người lạ xuất hiện

Trong mơi trường ánh sáng phù hợp với môi trường ánh sáng tạo tập mẫu huấn luyện thì chương trình cho kết quả nhận dạng tốt ở phân lớp 3. Ở phân lớp 1,2 chương trình cho kết quả nhận dạng thấp.

Hình 4. 6 Phân loại được khi có người lạ xuất hiện

34

35

Chương 5

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

5.1 Kết luận.

- Trên cơ sở nghiên cứu lý thuyết tổng quan về các phương pháp nhận dạng mặt người trong thời gian thực. Đặc biệt là thuật toán PCA, các đặc trưng Eigenfaces và Eigenvector kết hợp với kỹ thuật lập trình C++. Tơi đã áp dụng thành cơng thuật tốn nhận dạng phân tích thành phần chính PCA vào bài tốn nhận dạng mặt người trong thời gian thực. Xây dựng thành công phần mềm nhận dạng được một hoặc nhiều người xuất hiện trong khung ảnh. Đặc biệt chương trình xử lý ảnh động, lấy trực tiếp từ camera. Bên cạnh đó, trong q trình xây dựng chương trình ,tơi đã tìm hiểu về thư viện mã nguồn mở OpenCV, qua đó biết cách sử dụng các hàm trong thư viện OpenCV để xây dựng chương trình nhận dạng mặt người trên kit nhúng sau này.

- Về chương trình demo, chương trình được chạy thử nghiệm trên máy tính có bộ xử lý Core i7, thế hệ 4, tốc độ 2,4GHz; RAM 8GB. Tốc độ xử lý của chương trình khoảng 5 khung hình/s, khi ép xung lên 3,2Ghz thì có thể xử lý được khoảng 8 khung hình/s. Hiệu xuất của chương trình cịn tùy theo chất lượng của loại webcam được sử dụng, tập cơ sở dữ liệu lấy mẫu, và điều kiện ánh sáng khi lấy mẫu. Trong điều kiện ánh sáng phù hợp với mơi trường ánh sáng khi lấy mẫu thì chương trình cho kết quả nhận dạng tốt, nhưng khi điều kiện ánh sáng thay đổi thì chương trình hay cho kết quả lẫn lộn giữa các phân lớp. Điều này cho thấy thuật toán PCA rất dễ bị ảnh hưởng của nhiễu do gương mặt bị nghiêng, hay mặt có râu, mặt cười, và đặc biệt là nhiễu do ánh sáng.

5.2 Hướng phát triển.

- Về cơ bản đã hoàn thành các yêu cầu mà ban đầu đề tài đề ra. Tuy nhiên, để ứng dụng vào thực tế thì thuật tốn PCA vẫn cịn nhiều điểm hạn chế, mà cụ thể đó là ảnh hưởng từ nhiễu. Do đó, hướng phát triển tiếp theo của đề tài sẽ tập trung vào phần xử lý nhiễu, hoặc kết hợp với các thuật toán nhận dạng khác để xây dựng một hệ thống nhận dạng chính xác hơn ở những mơi trường khác nhau, ở các góc nhìn gương mặt khác nhau...Từ đó áp dụng vào thực tế như hệ thống giám sát, kiểm tra an ninh, điểm danh học sinh tự động, kiểm tra một người có phải là cán bộ, giảng viên, cơng nhân viên của trường hay không….

- Kết nối với hệ thống Camera IP để có thể xây dựng 1 trung tâm giám sát an ninh cho công ty, chung cư…

36

- Tăng khả năng phát hiện của camera bằng cách sử dụng camera hồng ngoại hoặc sử dụng loại camera có độ phân giải cao

37

TÀI LIỆU THAM KHẢO

TIẾNG VIỆT

[1]. PGS.TS Nguyễn Quang Hoan, Xử Lý Ảnh, Học Viện Cơng Nghệ Bưu Chính

Viễn Thơng, 2006.

[2]. Trương Công Lợi, Nhận dạng khuôn mặt sử dung phương pháp biến đổi

Eigenfaces và mạng Nowrron, Đại học Đà Nẵng, 2013

[3]. Nguyễn Thành Thái, Nhận dạng mặt người dùng SVM và mạng nơron, Đại học CNTT Tp.HCM, 2006

[4]. Mạch Thị Kim Hạnh, Xác thực sinh trắc học khuôn mặt trên thiết bị di động, Đại học Lạc Hồng, 2013

[5]. PGS.TS. Nguyễn Thị Hồng Lan – Hệ thống an ninh thơng tin dựa trên sinh trắc học - PKI (Bio-PKI Based Information Security System), 2009

TIẾNG NƯỚC NGOÀI

[6]. M. A. Turk và A. P. Pentland - Face Recognition Using Eigenfaces, Proc. of IEEE Conf. on Computer Vision and Pattern Recognition, 1991.

Một phần của tài liệu Nghiên cứu xây dựng phần mềm nhận dạng mặt người theo thời gian thực (Trang 34)

Tải bản đầy đủ (PDF)

(57 trang)