Giới thiệu về bài toán nhận diện mặt người Nhận diện mặt người là bài toán mới chỉ xuất hiện cách đây không lâu , chỉ khoảng vài thập niên , nhưng đã có rất nhiều nghiên cứu về nó . Các nghiên cứu ban đầu rất đơn giản , ảnh là đen trắng và chỉ có một khuôn mặt chụp thẳng , sau này mở rộng ra cho ảnh màu , ảnh có nhiều khuôn mặt với nhiều góc , môi trường xung quanh cũng đi từ đơn giản đến rất phức tạp …
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN BÀI THỰC HÀNH MÔN PHÂN TÍCH XỬ LÝ ẢNH Nhận diện mặt người I.Giới thiệu về bài toán nhận diện mặt người Nhận diện mặt người là bài toán mới chỉ xuất hiện cách đây không lâu , chỉ khoảng vài thập niên , nhưng đã có rất nhiều nghiên cứu về nó . Các nghiên cứu ban đầu rất đơn giản , ảnh là đen trắng và chỉ có một khuôn mặt chụp thẳng , sau này mở rộng ra cho ảnh màu , ảnh có nhiều khuôn mặt với nhiều góc , môi trường xung quanh cũng đi từ đơn giản đến rất phức tạp … Bài toán nhận diện mặt người có rất nhiều hướng nghiên cứu , nhưng có thể kể ra hai hướng chính sau : - Thứ nhất là nhận diện ( face recognition ) một khuôn mặt , tức là giả sử ta có bức ảnh một khuôn mặt , ta sẽ tìm một bức ảnh có khuôn mặt giống với khuôn mặt trong ảnh . Ứng dụng của nó là truy tìm tội phạm , các hệ thống an ninh xác đinh dựa vào khuôn mặt … - Thứ hai là xác định vị trí những khuôn mặt trong một bức ảnh ( face detection ) , các bức ảnh có thể có nhiều khuôn mặt , có kích thước và góc khác nhau . Ứng dụng của nó như trong các máy chụp hình có khả năng nhận dạng mặt người để chỉnh độ sáng nơi đó … II.Nhận dạng ảnh dựa trên PCA 1.Thuật toán Khuôn mặt con người có rất nhiều nét để nhận biết , nếu như ta gặp lại một người bạn sau một thời gian dài , ta có thể nhận ra ngay người đó dù những chi tiết cụ thể trên mặt có thể thay đổi như da , mái tóc . Ta nhận ra không phải vì nhớ đôi mắt , hay mũi hay môi hay tóc , lông mày người đó mà ta nhận ra vì nhớ diện mạo của người đó . Tức là trên khuôn mặt tồn tại một nét tổng thể nào đó để có thể nhận diện , thuật toán của ta bắt đầu từ ý tưởng này . Phân tích thành phần chính (Principal Component Analysis ) gọi tắt là PCA là thuật toán nhận dạng ảnh dựa trên những nét tổng thể của khuôn mặt , ta sẽ áp dụng thuật toán này để thực hiện hai công việc sau : - Thứ nhất là tìm một khuôn mặt giống với khuôn mặt cho trước - Thứ hai là xác định vị trí những khuôn mặt người trong một bức ảnh . Ban đầu ta có một tập ảnh khuôn mặt gọi là tập ảnh huấn luyện (training set) . Giả sử mỗi ảnh có kích thước M×N , ta coi mỗi bức ảnh này là một vector trong không gian M*N chiều . Bây giờ mỗi khuôn mặt là một vector , ta thấy những vector này không phân bố ngẫu nhiên trong không gian ảnh mà phân bố theo một quy luật tương đối nào đó , ta có thể nói những vector này nằm trong một không gian con gọi là không gian khuôn mặt . Từ những vector trong tập huấn luyện , ta sẽ tìm một cơ sở trực chuẩn cho không gian khuôn mặt . Những vector thuộc cơ sở này có thể coi là những vector mang những nét tổng thể đặc trưng về khuôn mặt . Giả sử tập huấn luyện có P ảnh , khi đó ta sẽ có P vector : , , … , . Tính vector ảnh trung bình : m = . Sự khác biệt giữa những khuôn mặt với ảnh trung bình là những vector : , i=1…P Ý tưởng của việc phân tích thành phần chính là tìm một tập những vector trực chuẩn sao cho những vector này mô tả tốt nhất sự phân bố những vector khuôn mặt trong không gian . Những vector được chọn sao cho : lớn nhất . Những vector và giá trị vô hướng chính là những vector riêng và trị riêng tương ứng của ma trận . là tích vô hướng giữa hai vector u , v . A=[] Ta thấy ma trận A có kích thước M*N × P , còn ma trận có kích thước M*N×M*N , do kích thước ma trận này quá lớn nên ta không thể tìm được những vector riêng và những trị riêng trực tiếp được , thay vào đó ta sẽ tìm những vector riêng của ma trận có kích thước P×P . Nếu v là một vector riêng của và λ là trị riêng tương ứng , khi đó ta có : v = λv v = λAv , tức là Av là một trị riêng của ma trận . Thông thường ta chỉ lấy một số Q vector riêng ứng với Q trị riêng có giá trị lớn nhất . Sau khi có các vector riêng của ma trận , ta sẽ chuẩn hóa chúng để thu được một cơ sở trực chuẩn của không gian khuôn mặt . Đặt L= , tìm V là tập hợp các vector riêng của L , D là tập hợp các trị riêng tương ứng . V bao gồm Q vector riêng ứng với những trị riêng lớn hơn một giá trị nào đó hoặc ứng với Q trị riêng lớn nhất trong D . E = AV là tập các vector riêng của . Do đây là những vector riêng , mà nó lại có dạng khuôn mặt nên còn đuợc gọi là Eigenfaces . E là ma trận M*N×Q , mỗi cột là một vector riêng . Chuẩn hóa các vector cột trong E ( chia mỗi vector cho độ dài của vector đó ) . Bây giờ , ta có thể coi E là một cơ sở trực chuẩn của không gian khuôn mặt . Với H là bức ảnh có cùng kích thước với những bức ảnh trong tập huấn luyện . Ta sẽ xét nó có phải là bức ảnh khuôn mặt hay không , cũng như tìm bức ảnh giống với nó nhất trong tập huấn luyện . H được xem là một vector trong không gian M*N chiều . Đặt K=H-m với m là vector ảnh trung bình . Cho V là một không gian có tích vô hướng hữu hạn chiều và W là một không gian con của V . Giả sử W có một cơ sở trực chuần là {, … , . Khi đó hình chiếu trực giao của vector u bất kỳ lên W được xác định như sau : = Độ dài được gọi là khoảng cách từ u đến W . Tập hợp , i=1,… , Q được gọi là tọa độ của trong không gian W . Tìm C=K là tọa độ của hình chiếu của K lên không gian khuôn mặt . C là vector cột Q×1 = với = C( i , 1) ; = E( : , i ) . Với là một cột trong ma trận A ( tương ứng với bức ảnh trong tập huấn luyện ) . Ta tính = là tọa độ của hình chiếu của lên không gian khuôn mặt . Ta tính hai đại lượng sau : - s = xem như khoảng cách từ bức ảnh H đến không gian mặt - = xem như khoảng cách từ H đến bức ảnh trong tập huấn luyện Xét α và β là hai ngưỡng nào đó . - s < α thì H là bức ảnh khuôn mặt ( do H đủ gần với không gian mặt ) - β thì là bức ảnh của cùng một người với H . ( H đủ gần với ) Vậy là ta đã có thể tìm bức ảnh trong tập huấn luyện giống với bức ảnh H hay xác định đó có phải là bức ảnh khuôn mặt hay không . Tuy nhiên ảnh H phải có cùng kích thước với những bức ảnh trong tập huấn luyện . Bây giờ trong một bức ảnh lớn H có nhiều khuôn mặt , ta sẽ xác định vị trí những khuôn mặt trong bức ảnh . Tại mỗi vị trí (x,y) trong H , đặt H(x,y) là một vùng trong ảnh H có kích thước M×N tại (x,y) , ta xem ảnh con H(x,y) là một vector M*N chiều . K(x,y) = H(x,y) – m ; Tìm (x,y) là hình chiếu của K(x,y) lên không gian khuôn mặt . Tính s(x,y)= . Tập hợp các giá trị s(x,y) tạo thành một bản đồ khuôn mặt (face map) của H , từ đó ta có thể xác định vị trí những khuôn mặt trong ảnh . 2.Hình ảnh minh họa Trong ví dụ này ta có một tập huấn luyện gồm những bức ảnh khuôn mặt kích thước 180x200 pixel , dưới đây là một số hình ảnh của những eigenfaces thu được ( lưu ý là đây chỉ là các vector trực giao , những eigenfaces thực sự chính là những vector này được chuẩn hóa ) . Bây giờ ta chiếu hai bức ảnh lên không gian khuôn mặt này : bức ảnh kiểm tra và hình chiếu của nó bức ảnh kiểm tra và hình chiếu của nó Như ta thấy nếu bức ảnh là khuôn mặt người thì hình chiếu sẽ khá giống với ảnh gốc , còn khi bức ảnh không phải là khuôn mặt thì hình chiếu sẽ khác ảnh gốc rất nhiều , do đó khoảng cách từ bức ảnh mặt người tới không gian mặt sẽ nhỏ hơn rất nhiều so với khoảng cách từ bức ảnh không phải mặt người tới không gian mặt . Dưới đây là một ví dụ khác , ta có một tập huấn luyện gồm những bức ảnh kích thước 18x27 pixel , ta cũng tìm các Eigenface và sau đó tìm face map của một bức ảnh kiểm tra . Trong ví dụ này thì ảnh con H(x,y) vùng hình chữ nhật có tâm tại (x,y) trên bức ảnh và có kích thước 18x27 pixel . Hình trên là face map của bức ảnh ban đầu . Ta thấy vị trí của mổi khuôn mặt chính là những vùng cực tiểu địa phương trên bức ảnh ( là những đốm đen trong những vùng trắng hình chữ nhật ) . Bây giờ nếu ta có một cơ sở dữ liệu những ảnh không phải khuôn mặt ( ta thường tập trung vào những hình ảnh xung quanh khuôn mặt như cổ áo , một phần của khuôn mặt …) . Tìm face map của bức ảnh ban đầu với không gian không phải khuôn mặt này , ta thu được kết quả sau : Hình trên cũng khá giống với face map ứng với không gian khuôn mặt nhưng tại mỗi vùng sáng hình chữ nhật thì không hề có tâm ở giữa . Thực ra từ face map ứng với không gian khuôn mặt , nếu ta có một thuật toán tốt để tìm những vị trí cực tiểu địa phương thì đã có thể xác định vị trí các khuôn mặt . Face map ứng với không gian không phải khuôn mặt chỉ là một cách đơn giản để giúp ta tìm chính xác hơn thôi . Tất cả những điều thu được ở trên chỉ là kết quả hoàn toàn dựa trên lý thuyết , trong thực tế những thuật toán nhận dạng mặt người đã phát triển lên rất nhiều từ ý tưởng của PCA mới có được độ chính xác yêu cầu . 3.Nhận xét PCA là phương pháp dùng để xây dựng đặc trưng khuôn mặt , nó là một nền tảng để phát triển những thuật toán khác . Thực tế có rất nhiều tác giả áp dụng PCA , kết hợp với những phương pháp như mạng neural , xác suất thống kê để xây dựng những thuật toán có độ chính xác cao . Ưu điểm của PCA là nó dễ cài đặt , nếu ta xét bài toán tìm khuôn mặt giống nhau thì chỉ cần áp dụng hoàn toàn theo lý thuyết là đã có độ chính xác khá cao , nếu áp dụng cho bài toán tìm vị trí khuôn mặt thì cần phải có một thuật toán nữa để sử dụng face map thu được theo lý thuyết . Khuyết điểm của PCA là các mẫu khuôn mặt hoàn toàn phụ thuộc vào tập huấn luyện , có nghĩa là các khuôn mặt trong ảnh kiểm tra phải giống với các ảnh huấn luyện về kích thước , tư thế , độ sáng . Thực tế trong tập huấn luyện thường gồm nhiều nhóm hình , mỗi nhóm là hình của một người với tư thế , độ sáng khác nhau . Có rất nhiều thuật toán nhận dạng mặt người dựa trên những chi tiết của khuôn mặt như đôi mắt , lông mày , cấu trúc của khuôn mặt , hay màu da …Khác hoàn toàn với những thuật toán trên , PCA nhận dạng dựa trên những nét tổng thể của khuôn mặt . Còn hơn một thuật toán , PCA đã cung cấp một cơ sở rất rõ ràng cho việc mô tả đặc trưng của khuôn mặt , để từ đó có thể phát triển những thuật toán nhận dạng khác . Vì vậy có thể PCA không là thuật toán tốt nhất , nhưng là thuật toán phổ biến nhất được áp dụng trong bài toán nhận diện mặt người . Hết !