Khóa luận Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh

Tài liệu Khóa luận Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh: LỜI CẢM ƠN Em xin chân thành cảm ơn các thầy, các cô khoa Công nghệ Thông tin Trường Đại học Dân lập Hải Phòng đã tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức quý báu. Em xin tỏ lòng biết ơn sâu sắc đến thầy Th.s Ngô Trường Giang, người đã tận tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn thành. Xin chân thành cảm ơn các bạn trong khoa Công Nghệ Thông Tin, Đại Học Dân Lập Hải Phòng đã giúp đỡ, động viên tôi rất nhiều trong quá trình thực hiện đề tài. Em xin trân trọng cảm ơn! Hải Phòng, tháng 07 năm 2007. Sinh viên Lê Hồng Chuyên MỤC LỤC MỞ ĐẦU Trong những năm gần đây, các ứng dụng về trí tuệ nhân tạo ngày càng phát triển và được đánh giá cao. Một lĩnh vực đang được quan tâm của trí tuệ nhân tạo nhằm tạo ra các ứng dụng thông minh, có tính người đó là nhận dạng. Đối tượng cho việc nghiên cứu nhận dạng cũng rất phong phú và đa dạng. Trong đề tài này tôi chọn đối tượng là khuôn mặt, và bước đầu tiên của việc nhận dạng đó là ...

doc70 trang | Chia sẻ: hunglv | Lượt xem: 1536 | Lượt tải: 1download
Bạn đang xem trước 20 trang mẫu tài liệu Khóa luận Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LỜI CẢM ƠN Em xin chân thành cảm ơn các thầy, các cô khoa Công nghệ Thông tin Trường Đại học Dân lập Hải Phòng đã tận tình dạy dỗ, truyền đạt cho chúng em nhiều kiến thức quý báu. Em xin tỏ lòng biết ơn sâu sắc đến thầy Th.s Ngô Trường Giang, người đã tận tình giúp đỡ và truyền đạt nhiều kinh nghiệm để đề tài có thể được thực hiện và hoàn thành. Xin chân thành cảm ơn các bạn trong khoa Công Nghệ Thông Tin, Đại Học Dân Lập Hải Phòng đã giúp đỡ, động viên tôi rất nhiều trong quá trình thực hiện đề tài. Em xin trân trọng cảm ơn! Hải Phòng, tháng 07 năm 2007. Sinh viên Lê Hồng Chuyên MỤC LỤC MỞ ĐẦU Trong những năm gần đây, các ứng dụng về trí tuệ nhân tạo ngày càng phát triển và được đánh giá cao. Một lĩnh vực đang được quan tâm của trí tuệ nhân tạo nhằm tạo ra các ứng dụng thông minh, có tính người đó là nhận dạng. Đối tượng cho việc nghiên cứu nhận dạng cũng rất phong phú và đa dạng. Trong đề tài này tôi chọn đối tượng là khuôn mặt, và bước đầu tiên của việc nhận dạng đó là phát hiện khuôn mặt. Khuôn mặt đóng vai trò quan trọng trong quá trình giao tiếp giữa người với người, và cũng mang một lượng thông tin giàu có, chẳng hạn có thể xác định giới tính, tuổi tác, trạng thái cảm xúc của người đó, ... hơn nữa khi khảo sát các đường nét trên khuôn mặt có thể biết được người đó muốn nói gì. Do đó, phát hiện là bước tiền đề quan trọng phục vụ công việc nhận dạng khuôn mặt sau này. Có rất nhiều phương pháp phát hiện khuôn mặt, AdaBoost và mạng Nơ-ron là một trong những phương pháp đó. Đồ án được chia ra 4 chương: Chương 1 sẽ trình bày tổng quan về một số phương pháp phát hiện khuôn mặt. Phương pháp Adaboost và mạng Nơ-ron dùng để phát hiện khuôn mặt được trình bày trong chương 2 và 3. Chương 4 là phần cài đặt ứng dụng, một số thử nghiệm dò tìm khuôn mặt trong ảnh, và cuối cùng là kết luận. TỔNG QUAN VỀ PHÁT HIỆN KHUÔN MẶT Giới thiệu. Hơn một thập kỷ qua có rất nhiều công trình nghiên cứu về bài toán xác định khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầu của thực tế. Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định các vị trí và các kích thước của các khuôn mặt người trong các ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này nhận biết các đặc trưng của khuôn mặt và bỏ qua những thứ khác, như: tòa nhà, cây cối, cơ thể, … Một số lĩnh vực ứng dụng phát hiện khuôn mặt. Phát hiện khuôn mặt đã được ứng dụng trong rất nhiều lĩnh vực: Hệ thống tương tác giữa người và máy: giúp những người bị tật hoặc khiếm khuyết có thể trao đổi. Những người dùng ngôn ngữ tay có thể giao tiếp với những người bình thường. Những người bị bại liệt thông qua một số ký hiệu nháy mắt có thể biểu lộ những gì họ muốn, …. Đó là các bài toán điệu bộ của bàn tay (hand gesture), điệu bộ khuôn mặt, … Nhận dạng người A có phải là tội phạm truy nã hay không? Giúp cơ quan an ninh quản lý tốt con người. Công việc nhận dạng có thể ở trong môi trường bình thường cũng như trong bóng tối (sử dụng camera hồng ngoại). Hệ thống quan sát, theo dõi và bảo vệ. Các hệ thống camera sẽ xác định đâu là con người và theo dõi con người đó xem họ có vi phạm gì không, ví dụ xâm phạm khu vực không được vào, …. Lưu trữ (rút tiền ATM, để biết ai rút tiền vào thời điểm đó), hiện nay có tình trạng những người bị người khác lấy mất thẻ ATM hay mất mã số PIN và những người ăn cắp này đi rút tiền, hoặc những người chủ thẻ đi rút tiền nhưng lại báo cho ngân hàng là mất thẻ và mất tiền. Các ngân hàng có nhu cầu khi có giao dịch tiền sẽ kiểm tra hay lưu trữ khuôn mặt người rút tiền để sau đó đối chứng và xử lý. Thẻ căn cước, chứng minh nhân dân (Face dentification). Điều khiển vào ra: văn phòng, công ty, trụ sở, máy tính,…. Kết hợp thêm vân tay và hốc mắt. Cho phép nhân viên được ra vào nơi cần thiết, hay mỗi người sẽ đăng nhập máy tính cá nhân của mình mà không cần nhớ tên đăng nhập cũng như mật khẩu mà chỉ cần xác định thông qua khuôn mặt. An ninh sân bay, xuất nhập cảnh (hiện nay cơ quan xuất nhập cảnh Mỹ đã áp dụng). Dùng để xác thực người xuất nhập cảnh và kiểm tra có phải là nhân vật khủng bố không. Tương lai sẽ phát triển các loại thẻ thông minh có tích hợp sẵn đặc trưng của người dùng trên đó, khi bất cứ người dùng khác dùng để truy cập hay xử lý tại các hệ thống sẽ được yêu cầu kiểm tra các đặc trưng khuôn mặt so với thẻ để biết nay có phải là chủ thẻ hay không. Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền hình, …. Ví dụ: tìm các đoạn video có tổng thống Bush phát biểu, tìm các phim có diễn viên Thành Long đóng, tìm các trận đá banh có Ronaldinho đá. Phân loại trong lưu trữ hình ảnh trong điện thoại di động. Thông qua bài toán xác định khuôn mặt người và trích đặc trưng, rồi dựa vào đặc trưng này để sắp xếp, lưu trữ, giúp người sử dụng dễ dàng truy tìm khi cần thiết. Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không, và hỗ trợ thông báo khi cần thiết. Phân tích cảm xúc trên khuôn mặt. Một số hãng sản xuất máy chụp ảnh đã ứng dụng bài toán xác định khuôn mặt người vào máy chụp ảnh thế hệ mới để cho kết quả hình ảnh đẹp hơn. Một số phương pháp xác định khuôn mặt người. Có nhiều nghiên cứu tìm phương pháp xác định khuôn mặt người, từ ảnh xám đến ngày nay là ảnh màu. Dựa vào tính chất của các phương pháp xác định khuôn mặt người trên ảnh, chúng ta có thể phân chia các phương pháp này thành bốn hướng tiếp cận chính: Hướng tiếp cận dựa trên tri thức: Mã hóa các hiểu biết của con người về các loại khuôn mặt người thành các luật. Thông thường các luật mô tả quan hệ của các đặc trưng. Hướng tiếp cận dựa trên đặc trưng không thay đổi: Mục tiêu các thuật toán đi tìm các đặc trưng mô tả cấu trúc khuôn mặt người mà các đặc trưng này sẽ không thay đổi khi tư thế khuôn mặt, vị trí đặt thiết bị thu hình hoặc điều kiện ánh sáng thay đổi. Hướng tiếp cận dựa trên so khớp mẫu: Dùng các mẫu chuẩn của khuôn mặt người (các mẫu này được chọn lựa và lưu trữ) để mô tả cho khuôn mặt người hay các đặc trưng khuôn mặt (các mẫu này phải chọn làm sao cho tách biệt nhau theo tiêu chuẩn mà các tác giả định ra để so sánh). Hướng tiếp cận dựa trên diện mạo: Trái ngược hẳn với so khớp mẫu, các mô hình học ở đây được học từ một tập ảnh huấn luyện cho trước. Sau đó hệ thống sẽ xác định khuôn mặt người. Một số tác giả còn gọi hướng tiếp cận này là hướng tiếp cận theo phương pháp học. Hướng tiếp cận dựa trên tri thức. Trong hướng tiếp cận này, các luật sẽ phụ thuộc rất lớn vào tri thức của những tác giả nghiên cứu về bài toán xác định khuôn mặt người. Đây là hướng tiếp cận dạng top-down. Dễ dàng xây dựng các luật cơ bản để mô tả các đặc trưng của khuôn mặt và các quan hệ tương ứng. Ví dụ, một khuôn mặt thường có hai mắt đối xứng nhau qua trục thẳng đứng ở giữa khuôn mặt và có một mũi, một miệng. Các quan hệ của các đặc trưng có thể được mô tả như quan hệ về khoảng cách và vị trí. Thông thường các tác giả sẽ trích đặc trưng của khuôn mặt trước tiên để có được các ứng viên, sau đó các ứng viên này sẽ được xác định thông qua các luật để biết ứng viên nào là khuôn mặt và ứng viên nào không phải khuôn mặt. Một vấn đề khá phức tạp khi dùng hướng tiếp cận này là làm sao chuyển từ tri thức con người sang các luật một cách hiệu quả. Nếu các luật này quá chi tiết (chặt chẽ) thì khi xác định có thể xác định thiếu các khuôn mặt có trong ảnh, vì những khuôn mặt này không thể thỏa mãn tất cả các luật đưa ra. Nhưng các luật tổng quát quá thì có thể chúng ta sẽ xác định lầm một vùng nào đó không phải là khuôn mặt mà lại xác định là khuôn mặt. Và cũng khó khăn khi cần mở rộng yêu cầu của bài toán để xác định các khuôn mặt có nhiều tư thế khác nhau. (a) Ảnh ban đầu có độ phân giải n = 1; (b), (c), và (d) Ảnh có độ phân giải n = 4, 8, 16. Yang và Huang dùng một phương thức theo hướng tiếp cận này để xác định các khuôn mặt. Hệ thống của hai tác giả này bao gồm ba mức luật. Ở mức cao nhất, dùng một khung cửa sổ quét trên ảnh và thông qua một tập luật để tìm các ứng viên có thể là khuôn mặt. Ở mức kế tiếp, hai ông dùng một tập luật để mô tả tổng quát hình dáng khuôn mặt. Còn ở mức cuối cùng lại dùng một tập luật khác để xem xét ở mức chi tiết các đặc trưng khuôn mặt. Một hệ thống đa độ phân giải có thứ tự được dùng để xác định, hình 1-1. Các luật ở mức cao nhất để tìm ứng viên như: “vùng trung tâm khuôn mặt (phần tối hơn trong hình 1-2) có bốn phần với một mức độ đều cơ bản”, “phần xung quanh bên trên của một khuôn mặt (phần sáng hơn trong hình 1-2) có một mức độ đều cơ bản”, và “mức độ khác nhau giữa các giá trị xám trung bình của phần trung tâm và phần bao bên trên là đáng kể”. Ở mức hai, xem xét biểu đồ của các ứng viên để loại bớt ứng viên nào không phải là khuôn mặt, đồng thời dò ra cạnh bao xung quanh ứng viên. Ở mức cuối cùng, những ứng viên nào còn lại sẽ được xem xét các đặc trưng của khuôn mặt về mắt và miệng. Hai ông đã dùng một chiến lược “từ thô đến mịn” hay “làm rõ dần” để giảm số lượng tính toán trong xử lý. Mặc dù tỷ lệ chính xác chưa cao, nhưng đây là tiền đề cho nhiều nghiên cứu sau này. Một loại tri trức của người nghiên cứu phân tích trên khuôn mặt. Kotropoulos và Pitas đưa một phương pháp dùng trên độ phân giải thấp. Hai ông dùng phương pháp chiếu để xác định các đặc trưng khuôn mặt. Kanade đã thành công với phương pháp chiếu để xác định biên của khuôn mặt. Với I(x,y) là giá trị xám của một điểm trong ảnh có kích thước m x n ở tại vị trí (x,y), các hàm để chiếu ảnh theo phương ngang và thẳng đứng được định nghĩa như sau: và (1.1) Phương pháp chiếu: (a) Ảnh chỉ có một khuôn mặt và hình nền đơn giản; (b) Ảnh chỉ có một khuôn mặt và hình nền phức tạp; (c) Ảnh có nhiều khuôn mặt Dựa trên biểu đồ hình chiếu ngang, có hai cực tiểu cục bộ khi hai ông xét quá trình thay đổi độ đốc của HI, đó chính là cạnh bên trái và phải của hai bên đầu. Tương tự với hình chiếu dọc VI, các cực tiểu cục bộ cũng cho ta biết vị trí miệng, đỉnh mũi, và hai mắt. Các đặc trưng này đủ để xác định khuôn mặt. Hình 1-3.a là một ví dụ về cách xác định như trên. Cách xác định này có tỷ lệ xác định chính xác là 86.5% cho trường hợp chỉ có một khuôn mặt thẳng trong ảnh và hình nền không phức tạp. Nếu hình nền phức tạp thì rất khó tìm, như là hình 1-3.b. Nếu ảnh có nhiều khuôn mặt thì sẽ không xác định được, hình 1-3.c. Chiếu từng phần ứng viên để xác định khuôn mặt. Mateos và Chicote dùng kết cấu để xác định ứng viên trong ảnh màu. Sau đó phân tích hình dáng, kích thước, thành phần khuôn mặt để xác định khuôn mặt. Khi tìm được ứng viên khuôn mặt, hai ông trích các ứng viên của từng thành phần khuôn mặt, sau đó chiếu từng phần này để xác thực đó có phải là thành phần khuôn mặt hay không, hình 1-4. Tỷ lệ chính xác là hơn 87%. Berbar kết hợp mô hình màu da người và xác định cạnh để tìm ứng viên khuôn mặt người. Sau đó kết hợp các đặc trưng và phương pháp chiếu các ứng viên khuôn mặt xuống hệ trục tọa độ để xác định ứng viên nào thật sự là khuôn mặt người. Hướng tiếp cận dựa trên đặc trưng không thay đổi. Đây là hướng tiếp cận theo kiểu bottom-up. Các tác giả cố gắng tìm các đặc trưng không thay đổi của khuôn mặt người để xác định khuôn mặt người. Dựa trên nhận xét thực tế: con người dễ dàng nhận biết các khuôn mặt trong các tư thế khác nhau và điều kiện ánh sáng khác nhau; do đó khuôn mặt phải có các thuộc tính hay đặc trưng không thay đổi. Theo nhiều nhiều nghiên thì ban đầu phải xác định các đặc trưng khuôn mặt rồi chỉ ra có khuôn mặt trong ảnh hay không. Các đặc trưng như: lông mày, mắt, mũi, miệng, và đường viền của tóc được trích bằng phương pháp xác định cạnh. Trên cơ sở các đặc trưng này, xây dựng một mô hình thống kê để mô tả quan hệ của các đặc trưng này và xác định sự tồn tại của khuôn mặt trong ảnh. Một vấn đề của các thuật toán theo hướng tiếp cận đặc trưng cần phải điều chỉnh cho phù hợp điều kiện ánh sáng, nhiễu, và bị che khuất. Đôi khi bóng của khuôn mặt sẽ tạo thêm cạnh mới, mà cạnh này lại rõ hơn cạnh thật sự của khuôn mặt, vì thế nếu dùng cạnh để xác định sẽ gặp khó khăn. Các đặc trưng khuôn mặt Sirohey đưa một phương pháp xác định khuôn mặt từ một ảnh có hình nền phức tạp. Đây là phương pháp dựa trên đường biên, dùng phương pháp Candy và heuristics để loại bỏ các cạnh để còn lại duy nhất một đường bao xung quanh khuôn mặt. Một hình ellipse dùng để bao khuôn mặt, tách biệt vùng đầu và hình nền. Tỷ lệ chính xác của thuật toán là 80%. Cũng dùng phương pháp cạnh như Sirohey, Chetverikov và Lerch dùng một phưong pháp dựa trên blob và streak (hình dạng giọt nước và sọc xen kẽ), để xác định theo hướng các cạnh. Hai ông dùng hai blob tối và ba blob sáng để mô tả hai mắt, hai bên gò má, và mũi. Mô hình này dùng các treak để mô tả hình dáng ngoài của khuôn mặt, lông mày, và môi. Dùng ảnh có độ phân giải thấp theo biến đổi laplace để xác định khuôn mặt thông qua blob. Graf đưa ra một phương pháp xác định đặc trưng rồi xác định khuôn mặt trong ảnh xám. Dùng bộ lọc để làm nổi các biên, các phép toán hình thái học được dùng để làm nổi bật các vùng có cường độ cao và hình dáng chắc chắn (như mắt). Thông qua biểu đồ để tìm các đỉnh nổi bật rồi xác định các ngưỡng để chuyển ảnh xám thành hai ảnh nhị phân. Các thành phần dính nhau đều xuất hiện trong hai ảnh nhị phân thì được xem là vùng của ứng viên khuôn mặt rồi phân loại xem có phải là khuôn mặt không. Phương pháp được kiểm tra trên các ảnh chỉ có đầu và vai của người. Tuy nhiên còn có một vấn đề ở đây là làm sao để sử dụng các phép toán hình thái và làm sao xác định khuôn mặt trên các vùng ứng viên. Đặc trưng kết cấu Khuôn mặt con người có những kết cấu riêng biệt mà có thể dùng để phân loại so với các đối tượng khác. Augusteijn và Skufca cho rằng hình dạng của khuôn mặt dùng làm kết cấu phân loại, gọi là kết cấu giống khuôn mặt (face-like texture). Có ba loại đặc trưng được xem xét: màu da, tóc, và những thứ khác. Hai ông dùng mạng nơ-ron về mối tương quan cascade cho phân loại có giám sát các kết cấu, và một ánh xạ đặc trưng tự tổ chức Kohonen để gom nhóm các lớp kết cấu khác nhau. Hai tác giả đề xuất dùng phương pháp bầu cử khi không quyết định được kết cấu đưa vào là kết cấu của da hay kết cấu của tóc. Dai và Nakano dùng mô hình SGLD để xác định khuôn mặt người. Thông tin màu sắc được kết hợp với mô hình kết cấu khuôn mặt. Hai tác giả xây dựng thuật giải xác định khuôn mặt trong không gian màu, với các phần tựa màu cam để xác định các vùng có thể là khuôn mặt người. Ưu điểm của phương pháp này là có thể xác định khuôn mặt không chỉ chụp thẳng và có thể có râu và có kính. Mark và Andrew dùng phân bố màu da và thuật toán DoG (Difference of Gauss) để tìm các ứng viên, rồi xác thực bằng một hệ thống học kết cấu của khuôn mặt. Manian và Ross dùng biến đổi wavelet để xây dựng tập dữ liệu kết cấu của khuôn mặt trong ảnh xám thông qua nhiều độ phân giải khác nhau, kết hợp xác suất thông kê để xác định khuôn mặt người. Tỷ lệ chính xác là 87%, tỷ lệ xác định sai là 18%. Đặc trưng sắc màu của da Thông thường các ảnh màu không xác định trực tiếp trên toàn bộ dữ liệu ảnh mà thường dùng tính chất sắc màu của da người (khuôn mặt người) để chọn ra được các ứng viên có thể là khuôn mặt người (lúc này dữ liệu đã thu hẹp đáng kể) để xác định khuôn mặt người. Đa đặc trưng Gần đây có nhiều nghiên cứu sử dụng các đặc trưng toàn cục như: màu da người, kích thước, và hình dáng để tìm các ứng viên khuôn mặt, rồi sau đó sẽ xác định ứng viên nào là khuôn mặt thông qua các đặc trưng cục bộ như: mắt, lông mày, mũi, miệng, và tóc. Tùy mỗi tác giả sẽ sử dụng tập đặc trưng khác nhau. Yachida đưa ra một phương pháp xác định khuôn mặt người trong ảnh màu bằng lý thuyết logic mờ. Ông dùng hai mô hình mờ để mô tả phân bố màu da người và màu tóc trong không gian màu CIE XYZ. Có năm mô dùng để mô tả hình dáng của mặt trong ảnh (một thẳng và bốn xoay xung quanh). Mỗi mô hình là một mẫu 2-chiều bao gồm các ô vuông có kích thước m x n, mỗi ô có thể chứa nhiều hơn một điểm ảnh. Hai thuộc tính được gán cho mỗi ô là: tỷ lệ màu da và tỷ lệ tóc, chỉ ra tỷ lệ diện tích vùng da trong ô so với diện tích của ô. Mỗi điểm ảnh sẽ được phân loại thành tóc, khuôn mặt, tóc/khuôn mặt, và tóc/nền trên cơ sở phân bố của mô hình, theo cách đó sẽ có được các vùng giống khuôn mặt và giống tóc. Mô hình hình dáng của đầu sẽ được so sánh với vùng giống khuôn mặt và giống tóc. Nếu tương tự, vùng đang xét sẽ trở thành ứng viên khuôn mặt, sau đó dùng các đặc trưng mắt-lông mày và mũi-miệng để xác định ứng viên nào sẽ là khuôn mặt thật sự. Sobottka và Pitas dùng các đặc trưng về hình dáng và màu sắc để xác định khuôn mặt người. Dùng một ngưỡng để phân đoạn trong không gian màu HSV để xác định các vùng có thể là màu da người. Các thành phần dính nhau sẽ được xác định bằng thuật toán tăng vùng ở độ phân giải thô. Xem xét tiền ứng viên nào vừa khớp hình dạng ellipse sẽ được chọn làm ứng viên của khuôn mặt. Sau đó dùng các đặc trưng bên trong như: mắt và miệng, được trích ra trên cơ sở các vùng mắt và miệng sẽ tối hơn các vùng khác của khuôn mặt, sau cùng phân loại dựa trên mạng nơ-ron để biết vùng ứng viên nào là khuôn mặt người và vùng nào không phải khuôn mặt người. Tỷ lệ chính xác là 85%. Hướng tiếp cận dựa trên so khớp mẫu. Trong so khớp mẫu, các mẫu chuẩn của khuôn mặt (thường là khuôn mặt được chụp thẳng) sẽ được xác định trước hoặc xác định các tham số thông qua một hàm. Từ một ảnh đưa vào, tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn mặt, mắt, mũi và miệng. Thông qua các giá trị tương quan này mà các tác giả quyết định có hay không có tồn tại khuôn mặt trong ảnh. Hướng tiếp cận này có lợi thế là rất dễ cài đặt, nhưng không hiệu quả khi có sự thay đổi về tỷ lệ, tư thế, và hình dáng. Xác định mẫu trước Sakai đã cố gắng thử xác định khuôn mặt người chụp thẳng trong ảnh. Ông dùng vài mẫu con về mắt, mũi, miệng, và đường viền khuôn mặt để mô hình hóa một khuôn mặt. Mỗi mẫu con được định nghĩa trong giới hạn của các đoạn thẳng. Các đường thẳng trong ảnh được trích bằng phương pháp xem xét thay đổi gradient nhiều nhất và so khớp các mẫu con. Đầu tiên tìm các ứng viên thông qua mối tương quan giữa các ảnh con và các mẫu về đường viền. Sau đó, so khớp với các mẫu con khác. Hay nói một cách khác, giai đoạn đầu xem như là giai đoạn sơ chế để tìm ứng viên, giai đoạn thứ hai là giai đoạn tinh chế để xác định có tồn tại hay không một khuôn mặt người. Ý tưởng này được duy trì cho đến các nghiên cứu sau này. Craw đưa ra một phương pháp xác định khuôn mặt người dựa vào các mẫu về hình dáng của các ảnh được chụp thẳng (dùng vẻ bề ngoài của hình dáng khuôn mặt). Đầu tiên dùng phép lọc Sobel để tìm các cạnh. Các cạnh này sẽ được nhóm lại theo một số ràng buộc. Sau đó, tìm đường viền của đầu, quá trình tương tự được lặp đi lặp lại với mỗi tỷ lệ khác nhau để xác định các đặc trưng khác như: mắt, lông mày, và môi. Sau đó Craw mô tả một phương thức xác định dùng một tập có 40 mẫu để tìm các đặc trưng khuôn mặt và điều khiển chiến lược dò tìm. Sinha dùng một tập nhỏ các bất biến ảnh trong không gian ảnh để mô tả không gian các mẫu ảnh. Tư tưởng chính của ông dựa vào sự thay đổi mức độ sáng của các vùng khác nhau của khuôn mặt (như hai mắt, hai má, và trán), quan hệ về mức độ sáng của các vùng còn lại thay đổi không đáng kể. Xác định các cặp tỷ số của mức độ sáng của một số vùng (một vùng tối hơn hay sáng hơn) cho ta một lượng bất biến khá hiệu quả. Các vùng có độ sáng đều được xem như một mẫu tỷ số mà là mẫu thô trong không gian ảnh của một khuôn mặt với độ thích hợp ít dùng để chọn như các đặc trưng chính của khuôn mặt như hai mắt, hai má, và trán. Lưu giữ thay đổi độ sáng của các vùng trên khuôn mặt trong một tập thích hợp với các cặp quan hệ sáng hơn – tối hơn giữa các vùng nhỏ. Một khuôn mặt được xác định khi một ảnh phù hợp tất cả các cặp sáng hơn – tối hơn. Ý tưởng này xuất phát từ sự khác biệt của cường độ giữa các vùng kề cục bộ, sau này được mở rộng trên cơ sở biến đổi wavelet để biểu diễn cho xác định người đi bộ, xác định xe hơi, xác định khuôn mặt. Ý tưởng của Sinha còn được áp dụng cho hệ thống thị giác của robot. Hình 1-5 cho thấy mẫu nổi bật trong 23 quan hệ được định nghĩa. Dùng các quan hệ này để phân loại, có 11 quan hệ thiết yếu (các mũi tên màu đen) và 12 quan hệ xác thực (các mũi tên xám). Mỗi mũi tên là một quan hệ. Một quan hệ thỏa mãn mẫu khuôn mặt khi tỷ lệ giữa hai vùng vượt qua một ngưỡng và 23 quan hệ này vượt ngưỡng thì xem như xác định được một khuôn mặt. Phương pháp so khớp mẫu theo thứ tự để xác định khuôn mặt người do Miao trình bày. Ở giai đoạn đầu tiên, ảnh sẽ được xoay từ -20o đến 20o với mỗi bước là 5o và theo thứ tự. Xây dựng ảnh đa độ phân giải, hình 1-1, rồi dùng phép toán Laplace để xác định các cạnh. Một mẫu khuôn mặt gồm các cạnh mô tả sáu thành phần: hai lông mày, hai mắt, một mũi, và một miệng. Sau đó áp dụng heuristic để xác định sự tồn tại của khuôn mặt trong ảnh, phương pháp này cho phép xác nhiều khuôn mặt, nhưng kết quả không tốt bằng xác định một khuôn mặt (chụp thẳng hoặc xoay) trong ảnh xám. mẫu khuôn mặt, có 16 vùng và 23 quan hệ (các mũi tên). Wei và Lai dùng bộ lọc để phân đoạn kết hợp thuật toán tìm láng giềng gần nhất xác định ứng viên khuôn mặt, từ ứng viên này sau đó so khớp với các mẫu đã xác định trước để biết ứng viên có phải là khuôn mặt hay không. Tỷ lệ chính xác là 80%. Darrell dùng phân đoạn đề tìm ứng viên, dùng ứng viên này để xác định khuôn mặt người dựa vào mẫu rồi theo vết chuyển động của người. Dowdall dùng phổ của màu da người để xác định ứng viên. Sau đó chiếu các ứng viên này để so sanh với các mẫu có trước để xác định ứng viên nào là khuôn mặt người. Phương pháp này chỉ xác định cho khuôn mặt chụp thẳng và gần thẳng, góc quay khoảng từ -10o đến 10o . Các mẫu bị biến dạng Yuille dùng các mẫu biến dạng để mô hình hóa các đặc trưng của khuôn mặt, mô hình này có khả năng linh hoạt cho các đặc trưng khuôn mặt. Trong hướng tiếp cận này, các đặc trưng khuôn mặt được mô tả bằng các mẫu được tham số hóa. Một hàm năng lượng (giá trị) được định nghĩa để liên kết các cạnh, đỉnh, và thung lũng trong ảnh để tương ứng với các tham số trong mẫu. Mô hình này cho kết quả tốt khi tối giản hàm năng lượng qua các tham số. Một hạn chế của hướng tiếp cận này là các mẫu biến dạng phải được khởi tạo trong phạm vi gần các đối tượng để xác định. Lanitis mô tả một phương pháp biểu diễn khuôn mặt người với cả hai thông tin: hình dáng và cường độ. Ban đầu, tập ảnh được huấn luyện với các đường viền mẫu như là đường bao mắt, mũi, cằm, má được gán nhãn. Dùng một vector để mô tả hình dáng, ở đây tác giả dùng một mô hình phân bố điểm (Point Distribution Model – PDM) để mô tả vector hình dáng qua toàn bộ các cá thể. Hướng tiếp cận dựa trên diện mạo. Trái ngược với các phương pháp so khớp mẫu với các mẫu đã được định nghĩa trước bởi những chuyên gia, các mẫu trong hướng tiếp cận này được học từ các ảnh mẫu. Một các tổng quát, các phương pháp theo hướng tiếp cận này áp dụng các kỹ thuật theo hướng xác suất thống kê và máy học để tìm những đặc tính liên quan của khuôn mặt và không phải là khuôn mặt. Các đặc tính đã được học ở trong hình thái các mô hình phân bố, hay các hàm biệt số có thể dùng các đặc tính này để xác định khuôn mặt người. Đồng thời, bài toán giảm số chiều thường được quan tâm để tăng hiệu quả tính toán cũng như hiệu quả xác định. Một ảnh hay một vector đặc trưng xuất phát từ một ảnh được xem như một biến ngẫu nhiên x, và biến ngẫu nhiên có đặc tính là khuôn mặt hay không phải khuôn mặt bởi công thức tính theo các hàm mật độ phân lớp theo điều kiện p(x | khuôn mặt) và p(x | không phải khuôn mặt) . Có thể dùng phân loại Bayes hoặc khả năng cực đại để phân loại một ứng viên là khuôn mặt hay không phải là khuôn mặt. Không thể cài đặt trực tiếp phân loại Bayes bởi vì số chiều của x khá cao, bởi vì p(x | khuôn mặt) và p(x | không phải khuôn mặt) là đa thức, và chưa thể hiểu nếu xây dựng các dạng tham số hóa một cách tự nhiên cho p(x | khuôn mặt) và p(x | không phải khuôn mặt) . Có khá nhiều nghiên cứu theo hướng tiếp cận này quan tâm xấp xỉ có tham số hay không có tham số cho p(x | khuôn mặt) và p(x | không phải khuôn mặt) . Các tiếp cận khác trong hướng tiếp cận dựa trên diện mạo là tìm một hàm biệt số (như: mặt phẳng quyết định, siêu phẳng để tách dữ liệu, hàm ngưỡng) để phân biệt hai lớp dữ liệu: khuôn mặt và không phải khuôn mặt. Bình thường, các mẫu ảnh được chiếu vào không gian có số chiều thấp hơn, rồi sau đó dùng một hàm biệt số (dựa trên các độ đo khoảng cách) để phân loại, hoặc xây dựng mặt quyết định phi tuyến bằng mạng nơ-ron đa tầng. Hoặc dùng SVM (Support Vector Machine) và các phương thức kernel, chiếu hoàn toàn các mẫu vào không gian có số chiều cao hơn để dữ liệu bị rời rạc hoàn toàn và ta có thể dùng một mặt phẳng quyết định, phân loại các mẫu khuôn mặt và không phải khuôn mặt. Eigenface. Kohonen đã đưa ra phương pháp dùng vector riêng để nhận dạng khuôn mặt, ông dùng một mạng nơ-ron đơn giản để chứng tỏ khả năng của phương pháp này trên các ảnh đã được chuẩn hóa. Mạng nơ-ron tính một mô tả của khuôn mặt bằng cách xấp xỉ các vector riêng của ma trận tương quan của ảnh. Các vector riêng sau này được biết đến với cái tên Eigenface. Kirby và Sirovich chứng tỏ các ảnh có các khuôn mặt có thể được mã hóa tuyến tính bằng một số lượng vừa phải các ảnh cơ sở. Tính chất này dựa trên biến đổi Karhunen-Lòeve, mà còn được gọi dưới một cái tên khác là PCA và biến đổi Hotelling. Ý tưởng này được xem là của Pearson trình bày đầu tiên vào năm 1901 và sau đó là Hotelling vào năm 1933. Cho một tập các ảnh huấn luyện có kích thước n x m được mô tả bởi các vector có kích thước m x m, các vector cở sở cho một không gian con tối ưu được xác định thông qua lỗi bình phương trung bình khi chiếu các ảnh huấn luyện vào không gian con này. Các tác giả gọi tập các vector cơ sở tối ưu này là ảnh riêng, sau đó gọi cho đơn giản là vector riêng của ma trận hiệp phương sai, được tính từ các ảnh khuôn mặt đã vector hóa trong tập huấn luyện. Nếu cho 100 ảnh, mà mỗi khuôn mặt có kích thước 91x50 thì có thể chỉ dùng 50 ảnh riêng, trong khi vẫn duy trì được một khả năng giống nhau hợp. Turk và Pentland áp dụng PCA để xác định và nhận dạng khuôn mặt. Tương tự, dùng PCA trên tập huấn luyện ảnh các khuôn mặt để sinh các ảnh riêng (còn gọi là eigenface) để tìm một không gian con (không gian khuôn mặt) trong không gian ảnh. Các ảnh khuôn mặt được chiếu vào không gian con này và được gom nhóm lại. Tương tự các ảnh không có khuôn mặt dùng để huấn luyện cũng được chiếu vào cùng không gian con và gom nhóm lại. Các ảnh khi chiếu vào không gian khuôn mặt thì không bị thay đổi tính chất cơ bản, trong khi chiếu các ảnh không có khuôn mặt thì xuất hiện nhiều sự khác nhau. Xác định sự có mặt của một khuôn mặt trong ảnh thông qua tất cả khoảng cách giữa các vị trí trong ảnh và không gian ảnh. Khoảng cách này dùng để xem xét có hay không có khuôn mặt người, kết quả khi tính toán các khoảng cách sẽ cho ta một bản đồ về khuôn mặt. Có thể xác định được từ cực tiểu cục bộ của bản đồ này. Có nhiều nghiên cứu về xác định khuôn mặt, nhận dạng, và trích đặc trưng từ ý tưởng vector riêng, phân rã, và gom nhóm. Mạng Neural. Mạng nơ-ron được áp dụng khá thành công trong các bài toán nhận dạng mẫu, như: nhận ký tự, đối tượng, robot tự động vận hành. Xác định khuôn mặt người có thể xem là bài toán nhận dạng hai loại mẫu, có nhiều kiến trúc mạng nơ-ron đã được trình bày. Một thuận lợi khi dùng mạng nơ-ron để xác định khuôn mặt là tính khả thi của hệ thống học khi có sự phức tạp trong lớp của các mẫu khuôn mặt. Tuy nhiên, một điều trở ngại là các kiến trúc mạng đều tổng quát, khi áp dụng thì phải xác định rõ ràng số lượng tầng, số lượng node, tỷ lệ học, …, cho từng trường hợp cụ thể Mô hình mạng Nơ-ron theo Rowley Agui trình bày mạng nơ-ron xử lý có thứ tự. Giai đoạn đầu, dùng hai mạng con song song mà dữ liệu vào là các giá trị cường độ của ảnh ban đầu và các giá trị cường độ của ảnh đã được lọc bằng thuật toán lọc Sobel với cửa sổ lọc 3x3. Đầu vào của mạng ở giai đoạn hai bao gồm dữ liệu đầu ra từ hai mạng con và các giá trị đặc trưng đã được trích ra, như: đặc trưng độ lệch chuẩn của các giá trị điểm ảnh trong mẫu đưa vào, một tỷ lệ của số điểm ảnh trắng trên tổng số điểm ảnh (đã chuyển sang ảnh nhị phân) trong một cửa sổ, và đặc trưng thiết yếu về hình học. Một giá trị xuất tại giai đoạn hai cho biết có tồn tại hay không khuôn mặt người trong vùng đưa vào. Qua kinh nghiệm, tác giả chỉ ra rằng nếu các ảnh cùng một kích thước thì mới dùng phương pháp này được. Propp và Samal phát triển mạng nơ-ron để xác định khuôn mặt người sớm nhất. Mạng nơ-ron của hai ông gồm bốn tầng với 1,024 đầu vào, 256 đầu kế tiếp trong tầng ẩn thứ nhất, tám đầu kế tiếp trong tầng ẩn thứ hai, và hai đầu ra. Tương tự như mạng nơ-ron xử lý theo thứ tự được đưa ra sau đó. Phương pháp của Soulie duyệt một ảnh đưa vào với mạng nơ-ron có thời gian trễ (kích thước cửa số là 20x25 điểm ảnh) để xác định khuôn mặt. Dùng biến đổi wavelet để phân rã ảnh các phần có kích thước khác nhau để xác định khuôn mặt. Vaillant dùng mạng nơ-ron dạng xoắn để xác định khuôn mặt người. Đầu tiên tạo các ảnh mẫu khuôn mặt và không phải khuôn mặt có kích thước 20x20. Dùng một mạng nơ-ron, mạng này đã được huấn luyện, để tìm các vị trí tương đối của các khuôn mặt ở các tỷ lệ khác nhau. Rồi dùng một mạng khác để xác định vị trí chính xác của các khuôn mặt. Mạng đầu tiên dùng để tìm các ứng viên khuôn mặt, rồi dùng mạng thứ hai để xác định ứng viên nào thật sự là khuôn mặt. Burel và Carel dùng mạng nơ-ron đa tầng có ít mẫu hơn với thuật toán Kohenen’s SOM để học các mẫu khuôn mặt và hình nền, mà các mẫu này đã được phân loại trước. Giai đoạn xác định khuôn mặt bao gồm duyệt trên mỗi ảnh đã được biến đổi từ ảnh bàn đầu ở các độ phân giải khác nhau. Ở tại mỗi vị trí và kích thước cửa sổ duyệt, điều chỉnh độ sáng. Mỗi cửa sổ đã được chuẩn hóa sẽ được phân loại bằng MLP. Theo đánh giá các phương pháp dùng mạng nơ-ron để xác định khuôn mặt người của nhiều tác giả, thì nghiên cứu của Rowley được xem là tốt nhất đối với ảnh xám. Một mạng đa tầng được dùng để học các mẫu khuôn mặt và không phải khuôn từ các ảnh tương ứng (dựa trên quan hệ cường độ, về mặt không gian của các điểm ảnh) trong khi Sung dùng mạng nơ-ron để xác định một hàm biệt số cho mục đích phân loại mẫu có phải là khuôn mặt hay không dựa vào độ đo khoảng cách. Hai ông cùng sử dụng nhiều mạng nơ-ron và một số phương thức quyết định để cải thiện kết quả, trong khi Burel và Carel dùng một mạng đơn, Vaillant dùng hai mạng để phân loại. Có hai thành phần chính để xử lý: nhiều mạng nơ-ron (xác định mẫu nào là khuôn mặt) và một mô đun để quyết định (đưa ra quyết định cuối cùng từ nhiều kết quả xác định). Đại diện của mỗi lớp khuôn mặt. Mỗi đại diện tương ứng tâm của một nhóm. Hình 1-7, thành phần đầu tiên của phương pháp này là một mạng nơ-ron nhận một vùng ảnh có kích thước 20x20 điểm ảnh và xuất ra một giá trị trong khoảng từ -1 đến 1. Khi đưa vào một ảnh, nếu kết quả gần -1 thì nghĩa là mẫu này không phải là khuôn mặt người, nhưng nếu kết quả gần 1 thì đây chính là khuôn mặt người. Để xác định khuôn mặt có kích thước lớn hơn 20x20 điểm ảnh, cứ chọn một tỷ lệ để duyệt, sau đó xác định, rồi lại thay đổi tỷ lệ (biến thiên tỷ lệ này do người xây dựng quyết định). Gần 1050 mẫu khuôn mặt có kích thước, hướng, vị trí, và cường độ khác nhau dùng để huấn luyện mạng. Sẽ gán nhãn cho mắt, đỉnh của mũi, góc cạnh, và tâm của miệng rồi dùng để chuẩn hóa khuôn mặt về cùng một tỷ lệ, hướng, và vị trí. Thành phần thứ hai là phương pháp trộn các xác định chồng chéo nhau và đưa ra quyết định. Phép toán logic (AND/OR) là một quyết định đơn giản nhất và phương pháp bầu cử được dùng để tăng tính hiệu quả. Rowley đưa nhiều cách giải quyết bài toán khác nhau với chi phí tính toán ít hơn Sung và Poggio nhưng tỷ lệ chính xác cao hơn. Một giới hạn của phương pháp của Rowley và Sung là có thể xác định khuôn mặt chụp thẳng và tựa thẳng (nghiêng đầu). Sau đó Rowley cải tiến để có thể xác định khuôn mặt bị xoay bằng mạng định hướng (Router Network), hình 1-8, sẽ thêm tiến trình xác định hướng khuôn mặt và xoay về lại tư thế chuẩn (chụp thẳng), tuy nhiên khi quay lại dữ liệu như trên thì tỷ lệ chính xác lại giảm đi, chỉ còn khoảng 76.9%. Một ví dụ cho dữ liệu vào và dữ liệu ra của mạng định hướng. Support Vector Machine (SVM). Support Vector Machine (SVM) là một kỹ thuật học được Vapnik đề xuất. Phương pháp này rất hiệu quả với tập dữ liệu lớn, nhưng lại gặp khó khăn khi cần phải mô tả lại chính xác các khuôn mặt ( vì tính biến thiên của khuôn mặt). Osuna áp dụng phương pháp này đầu tiên để xác định khuôn mặt người. SVM được xem như là một kiểu mới dùng huấn luyện để phân loại theo hàm đa thức. Trong khi hầu hết các phương pháp khác dùng huấn luyện để phân loại (Mạng Bayes, Nueral, RBF) đều dùng tiêu chí tối thiểu lỗi huấn luyện (rủi ro do kinh nghiệm), trong khi SVM dùng quy nạp (được gọi là tối thiểu rủi ro cấu trúc), mục tiêu là làm tối thiểu một bao bên trên trên lỗi tổng quát. Một phân loại SVM là một phân loại tuyến tính, dùng một mặt phẳng để tách dữ liệu. Dựa trên một kết hợp có các trọng số của một tập con nhỏ các vector huấn luyện, các vector này được gọi là support vector. Ước lượng mặt phẳng tương đương với việc giải một bài toán tuyến tính bậc hai. Osuna đã phát triển một phương pháp hiệu quả để huấn luyện một SVM với tỷ lệ lớn để áp dụng cho bài toán xác định khuôn mặt người. Ông dùng 10,000,000 mẫu có kích thước 19x19 điểm ảnh, hệ thống của ông có tỷ lệ lỗi ít hơn Sung và Poggio, nhưng nhanh hơn gần 30 lần. SVM cũng có thể dùng xác định khuôn mặt người và người đi bộ với phân tích Wavelet. Mạng lọc thưa (Sparse Network of Winnows - SNoW). Đây là phương pháp do Yang đề xuất, dùng để để xác định khuôn mặt người với các đặc trưng khác nhau và biểu diễn trong các tư thế khác nhau, dưới điều kiện ánh sáng khác nhau. SNoW là một mạng thưa dùng các hàm tuyến tính và dùng lọc để cập nhật luật. Phương pháp này thích hợp cho học trong miền khi các đặc trưng tiềm năng tạo các quyết định sai khác nhau mà không biết mức độ ưu tiên. Tỷ lệ lỗi là 5.9%, hiệu quả cũng như các phương pháp khác. AdaBoost AdaBoost là một phân loại mạnh phi tuyến phức HM(x), được xây dựng từ M phân loại yếu. Mục tiêu của Adaboost là học một dãy các phân loại yếu. Giả sử có một tập N mẫu huấn luyện đã được gán nhãn {(x1,y1), …, (xN,yN)}, với yi là nhãn tương ứng của mẫu xi Î Rn. Tính một phân bố của các mẫu huấn luyện [w1,…, wN] cập nhật trong suốt quá trình học. Sau bước lặp m, mẫu khó phân loại (xi,yi) có trọng số mới wi (m), đến bước lặp thứ (m+1), mẫu này sẽ có tầm quan trọng hơn. Viola và Jones dùng AdaBoost kết hợp cascade để xác định khuôn mặt người với các đặc trưng dạng Haar wavelet-like. Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80% trên ảnh xám. Học với FloatBoost Li và Zhang đưa ra một khái niệm mới đó là FloatBoost. Phương pháp này học dựa trên phân loại boosting để tỷ lệ lỗi cực tiểu. Nhưng phương pháp này cho phép quay lui sau khi tại mỗi bước khi học bằng AdaBoost đã cực tiểu được tỷ lệ lỗi trực tiếp, cực tiểu theo hàm mũ. Có hai vấn đề gặp khi dùng phương pháp AdaBoost: Thứ nhất: AdaBoost cực tiểu theo hàm mũ tại biên qua tập huấn luyện. Đây là tiện lợi, tuy nhiên mục tiêu cuối cùng trong các ứng dụng dùng phân loại mẫu thì thường là cực tiểu một giá trị trực tiếp (tuyến tính) kết hợp với tỷ lệ lỗi. Một phân loại mạnh được học bằng AdaBoost thì gần điểm tối ưu của ứng dụng trong điều kiện tỷ lệ lỗi. Thứ hai: AdaBoost để lại một thách thức nếu dùng phân loại yếu để học. Học để phân loại tối ưu khi dùng phân loại yếu cần ước lượng mật độ không gian đặc trưng, điều này là vấn đề khó, đặc biệt khi số chiều của không gian khá lớn. Một thuật toán học yếu có hiệu quả và dễ dùng thì rất cần thiết. FloatBoost xem như một cầu nối giữa mục tiêu của học boosting thông thường (cực đại biên) và nhiều ứng dụng dùng cực tiểu tỷ lệ lỗi thông qua việc kết hợp phương pháp tìm kiếm Floating và AdaBoost kết hợp kỹ thuật quay lui. Mô hình Markov ẩn (Hidden Markov Model – HMM). Samaria và Young dùng HMM 1-chiều (hình 1-9) và 2-chiều (hình 1-10) để trích đặc trưng khuôn mặt dùng để nhận dạng khuôn mặt. HMM khai thác cấu trúc của khuôn mặt tuân theo các chuyển tiếp trạng thái. Từ các cùng có đặc trưng quan trọng như: tóc, trán, mắt, mũi, và miệng, hai ông phân tích theo tự nhiên từ trên xuống dưới, mỗi vùng được thiết kế thành một trạng thái 1-chiều. Mỗi ảnh được phân đoạn chuẩn thành năm vùng theo thứ tự từ trên xuống dưới tạo thành năm trạng thái. Một giả thuyết quan trọng của mô hình Markov ẩn là các mẫu có thể được đặc tính hóa như các tiến trình ngẫu nhiên có tham số và các tham số này được ước lượng chính xác, đây là một trong những định nghĩa rõ ràng. Khi phát triển HMM để giải quyết bài toán nhận dạng mẫu, phải xác định rõ có bao nhiêu trạng thái ẩn đầu tiên cho hình thái mô hình. Sau đó, huấn luyện HMM học xác suất chuyển tiếp giữa các trạng thái từ các mẫu, mà mỗi mẫu được mô tả như một chuỗi các quan sát. Mục tiêu huấn luyện HMM là cực đại hóa xác suất của quan sát từ dữ liệu huấn luyện bằng cách điều chỉnh các tham số trong mô hình HMM thông qua phương pháp phân đoạn Viterbi chuẩn và các thuật toán Baum Welch. Một cách trực quan, có thể chia một mẫu khuôn mặt người thành nhiều vùng khác nhau như đầu, mắt, mũi, miệng, và cằm. Có thể nhận dạng một mẫu khuôn mặt người bằng một tiến trình xem xét các vùng quan sát theo một thứ tự thích hợp (từ trên xuống dưới, từ trái qua phải). Thay vì tin tưởng vào mức độ chính xác vị trí lề để dùng cho các phương pháp dựa trên so khớp hay dựa trên diện mạo (nơi xuất hiện các đặc trưng như mắt và mũi cần xác định vị trí lề tốt để lấy được toàn bộ chi tiết của đặc trưng). Mục tiêu của hướng tiếp cận này là kết hợp các vùng đặc trưng khuôn mặt với các trạng thái của mô hình. Thường các phương pháp dựa vào HMM sẽ xem xét một mẫu khuôn mặt như một chuỗi các vector quan sát, với mỗi vector là một dãy các điểm ảnh, hình 1-9a và hình 1-10. Trong quá trình huấn luyện và kiểm tra, mỗi ảnh được quét theo một thứ tự và một quan sát được xem như một khối các điểm ảnh, hình 1-9a và hình 1-10. Áp dụng một định hướng theo xác suất để chuyển từ trạng thái này sang trạng thái khác, hình 1-9b, dữ liệu ảnh được mô hình hóa bằng phân bố Gauss nhiều biến. Một chuỗi quan sát bao gồm tất cả giá trị cường độ từ mỗi khối. Kết quả xuất ra cho biết quan sát thuộc lớp nào. HMM được dùng để nhận dạng khuôn mặt người và xác định khuôn mặt người. Mô hình Markov ẩn: (a) các vector quan sát để huấn luyện cho HMM; (b) năm trạng thái ẩn. Xác định khuôn mặt bằng HMM các trạng thái, mỗi trạng thái lại có những trạng thái nhỏ bên trong: trạng thái trán có ba trạng thái nhỏ bên trong; trạng thái mắt có năm trạng thái nhỏ bên trong. Hướng tiếp cận tổng hợp Các các phương pháp được chia làm bốn phân loại chính theo bốn hướng tiếp cận. Tuy nhiên, có nhiều phương pháp không hoàn toàn rơi vào một trong bốn hướng tiếp cận này mà ở trong nhiều hướng tiếp cận khác nhau. Ví dụ, phương pháp so khớp mẫu dùng mô hình khuôn mặt người và các mẫu con để trích các đặc trưng khuôn mặt, và sau đó dùng các đặc trưng này để xác định khuôn mặt. Hơn nữa phương pháp dựa trên tri thức và phương pháp so khớp mẫu không thật sự tách biệt, từ đó có nhiều hướng giải quyết dùng tri thức của con người để định nghĩa các mẫu khuôn mặt người. Kim kết hợp các đặc trưng láng giềng của khuôn mặt để xây dựng các mẫu theo các hướng, sau đó dùng kỹ thuật xác định cạnh EBM (Edge-like Blob Map) theo cường độ. Ông xây dựng logic mờ kết hợp PCA để ước lượng tư thế các khuôn mặt. Taur và Tao xây dựng phân loại neurofuzzy (neuro-fuzzy classifier – NEFCAR) có độ đo tin cậy để biết ảnh nào là khuôn mặt người. Các ứng viên được chọn thông qua phân đoạn màu da. Khó khăn và thách thức trong bài toán xác định khuôn mặt. Việc xác định khuôn mặt người có những khó khăn nhất định: Hướng (pose) của khuôn mặt đối với máy ảnh, như: nhìn thẳng, nhìn nghiêng hay nhìn từ trên xuống. Cùng trong một ảnh có thể có nhiều khuôn mặt ở những tư thế khác nhau. Sự có mặt của các chi tiết không phải là đặc trưng riêng của khuôn mặt người, như: râu quai nón, mắt kính, …. Các nét mặt (facial expression) khác nhau trên khuôn mặt, như: vui, buồn, ngạc nhiên, …. Mặt người bị che khuất bởi các đối tượng khác có trong ảnh. Điều kiện ảnh, đặc biệt là về độ sáng và chất lượng ảnh, chất lượng thiết bị thu hình. Trục tọa độ của máy ảnh so với ảnh. Kích thước khác nhau của các khuôn mặt người, và đặc biệt là trong cùng một ảnh. Nhiều khuôn mặt có vùng da dính lẫn nhau. Các khó khăn trên chứng tỏ rằng bất cứ thuật toán nào dùng để xác định khuôn mặt người cũng sẽ không thể tránh khỏi một số khiếm khuyết nhất định. Để đánh giá và so sánh các phương pháp xác định mặt người, người ta thường dựa trên các tiêu chí sau: Tỷ lệ xác định chính xác là tỷ lệ số lượng các khuôn mặt người được xác định đúng từ hệ thống khi sử dụng một phương pháp để xây dựng so với số lượng khuôn mặt người thật sự có trong các ảnh (detection rate). Số lượng xác định nhầm là số lượng vùng trong ảnh không phải là khuôn mặt người mà hệ thống xác định nhầm là khuôn mặt người (false positives). Thời gian thực hiện là thời gian để máy tính xác định khuôn mặt người trong ảnh (running time). PHÁT HIỆN KHUÔN MẶT SỬ DỤNG ADABOOST. Giới thiệu Bài toán dò tìm khuôn mặt nhanh trên ảnh là bài toán quan trọng vì quá trình nhận dạng đối tượng sẽ thiếu chính xác nếu như thiếu bước dò tìm và định vị được đối tượng. Bài toán dò tìm khuôn mặt nhanh có ý nghĩa rất quan trọng trong việc nhận dạng, theo vết các đối tượng chuyển động trong các đoạn video hay camera. Các hướng tiếp cận dò tìm khuôn mặt nhanh Hướng dò tìm khuôn mặt trên ảnh màu dựa trên sự phân tích màu sắc của vùng da. Mặc dù việc xử lý khá nhanh nhưng hướng này có giới hạn chỉ xử lý trên ảnh màu và thường nhạy cảm với ánh sáng, thường chỉ sử dụng làm các bước tiền xử lý cho các hướng khác. Hướng dò tìm khuôn mặt dựa trên đặc trưng bất biến của khuôn mặt người. Thành công nhất trong dò tìm khuôn mặt người trong thời gian thực là phương pháp ASM (Active shape Models). Hướng dò tìm khuôn mặt dựa trên thông tin hình ảnh gồm mạng nơ-ron, các hướng thống kê (SVM, AdaBoost…). Phương pháp SVM và mạng nơ-ron cũng đạt được kết quả cao trong thời gian khá nhanh song cũng chỉ vài ảnh trong một giây nên khó có thể áp dụng trong việc nhận dạng thời gian thực. Riêng phương pháp AdaBoost cho kết quả khả quan vì có thể xử lý đến khoảng 15-20 khung hình trong một giây. Hướng tiếp cận theo AdaBoost Phương pháp dò tìm AdaBoost dựa trên ý tưởng xây dựng các bộ dò tìm yếu mặc dù độ chính xác không cao nhưng có thời gian xử lý rất nhanh. Tuy nhiên khi kết hợp các bộ dò tìm lại có thể đạt độ chính xác cao. Phương pháp AdaBoost sử dụng kết hợp các đặc trưng vốn dĩ tính toán rất nhanh, thích hợp cho việc dò tìm trong thời gian thực. Các bộ phân loại AdaBoost có thể xây dựng phân tầng với độ phức tạp xử lý từ thấp đến cao, nhằm loại nhanh các ứng viên xấu (không phải mặt người) vốn dĩ nhiều hơn nhiều các ứng viên là mặt nguời để cho bộ phân loại phức tạp hơn chỉ còn lại ít ứng viên chưa bị loại. Trích chọn đặc trưng cho AdaBoost Một phương pháp chọn đặc trưng thích hợp cho AdaBoost là phép biến đổi Haar-like. Phép biến đổi Haar-like dựa trên ý tưởng rất đơn giản, đặc trưng được tính bằng độ chênh lệch giữa tổng các miền hình học. Có 3 tập hợp miền hình học chính như sau: Các miền hình học đặc trưng Haar-like Giả sử miền đen là dương và miền trắng là âm thì đặc trưng Haar-let tính bằng tổng giá trị pixel các ô đen trừ cho tổng giá trị các pixel các ô trắng. Cách tính nhanh phương pháp Haar-like dựa trên đạo hàm ảnh bậc nhất ii(x,y) của ảnh i(x,y). Đạo hàm ii(x,y) của ảnh i(x,y) chính là tổng giá trị các pixel tính từ gốc trái trên đến (x,y) : (2.1) Ý nghĩa hình học của đạo hàm ảnh Việc tính toán đạo hàm ảnh được thực hiện rất nhanh bằng việc cộng lũy tích như sau: s(x,y) = s(x,y-1) + i(x,y) (2.2) ii(x,y) = ii(x-1,y) + s(x,y) (2.3) trong đó s(x,y) là tổng của cột x tính từ đầu dòng đến vị trí (x,y). Sau khi có được đạo hàm ảnh, ta chỉ việc tính giá trị một ô chữ nhật bằng cách như sau: chẳng hạn ô chữ nhật D ta có val(D) = val(ABCD) – val(AC) – val(AB) + val(A) , do đó nếu tính theo tọa độ (x,y) ta có phương trình sau: sr = (ii(x,y) + ii(x-W,y-L)) – (ii(x-W,y) + ii(x,y-L)) (2.4) Cách tính giá trị một ô đặc trưng Cuối cùng, việc tính các đặc trưng Haar-like chỉ còn là trừ giá trị tổng các ô chữ nhật được tính như trên. Thuật toán ADABOOST Xét bài toán hai lớp, mẫu huấn luyện bao gồm M bộ (xi,yi) đã được gán nhãn, với i {1,2,..,M} trong đó yi {+1,-1} là nhãn và xi Rn là các mẫu huấn luyện. Trong AdaBoost, một bộ phân loại mạnh hơn được xây dựng dựa trên sự kết hợp tuyến tính giữa M bộ phân loại yếu hơn: (2.5) Các bộ phân loại yếu hơn có thể mang các giá trị thực, hm(x) R. Phân loại của x được quyết định bằng hàm H(x) = sign[HM(x)], trong đó độ lớn |HM(x)| cho ta độ tin cậy. Mỗi mẫu được kết hợp với một trọng số. Trong quá trình học, các trọng số sẽ được cập nhật động nhấn mạnh các phân loại mạnh trước đó bị phân loại sai. Tuy nhiên, quá trình cập nhật trọng số chỉ cần thiết đối với thuật toán AdaBoost trước đây. Đối với các thuật toán AdaBoost cải tiến gần đây, quá trình này có thể được thay thế bằng một hàm tối ưu hóa. Lỗi xảy ra khi H (x) ≠ y hay yHM(x) < 0. Lề của mẫu (x, y) qua hàm h(x) R trên tập các mẫu huấn luyện được định nghĩa là yh(x). Lề có thể được xem là số đo độ tin cậy của giá trị đoán trước của h. Lỗi phân lớp của HM có biên trên là: (2.6) Thuật toán AdaBoost xây dựng hàm h(x) bằng cách giảm tối đa (2.6). Cho , (2.7) HM(x) tốt nhất cho phân loại mạnh HM(x) = HM - 1(x) + hm(x) Là hàm dẫn tới giá trị nhỏ nhất: Hm = arg min J(H (x) h (x)) (2.8) và hàm có giá trị nhỏ nhất được chứng minh là: (2.9) với ω(M-1) là trọng số tại thời điểm M. Dùng công thức P(y| x,ω) = P(x| y,ω) P(y) và cho (2.10) (2.11) chúng ta có được hM (x) = LM(x) – T. LM được học ra từ các mẫu của cả hai phân lớp. Ngưỡng T được xác định bằng tỉ lệ log của các xác suất trước đó. Ta có một phương pháp để tính phương trình (2.11), ứng dụng khi học các bộ phân lớp tối ưu. Vì rút ra một bộ phân loại yếu trong một miền không gian nhiều chiều là công việc quan trọng, sau đây một mô hình thống kê học theo từng giai đoạn dựa trên vài đặc điểm vô hướng. Một đặc điểm vô hướng j của x được tính bằng một phép biến đổi từ không gian dữ liệu n chiều thành đường thẳng thực zj(x) Z. Một đặc điểm có thể là hệ số, hay nói trong xử lý ảnh là phép biến đổi vi ba tín hiệu. Nếu phương pháp tìm kiếm ước lượng được sử dụng như phép biến đổi zj(x) đơn giản được xem là tọa độ thứ j của x. Một danh sách K đặc điểm ứng cử viên có thể được tạo: Z ={ zj(x), …, zK(x)}. Giả sử Z là một tập rất hoàn chỉnh, tập các phân lớp yếu có thể có cho bài toán phân lớp yếu tối ưu có thể được lập như sau: Trước tiên, tại giai đoạn M, khi M-1 đặc điểm của z(1), z(2), …, z(M-1) đã được chọn và trọng số cho là ωM-1, chúng ta có xấp xỉ p(x|y, ωM-1)) bằng cách dùng phân bố của M đặc điểm: p(x|y, ωM-1) ≈ p(z(1), z(2), …, z(M-1), zk, |y, ωM-1) (2.12) = p(z(1)|y, ωM-1) p(z(2) |y, z(1), ωM-1)… p(z(M-1)|y, z(1), z(2), …, z(M-2), ωM-1) p(zk, |y, z(1), z(2), …, z(M-1), ωM-1) (2.13) Bởi vì Z là tập rất hoàn chỉnh, phép xấp xỉ vẫn tốt đối với tập M đủ lớn khi M đặc điểm được chọn thích hợp. Ghi chú: p(zm|y, z(1), z(2), …, z(m-1)) thực ra là p(zm|y, ω(m-1)) bởi vì ω(m) chứa thông tin về toàn bộ quá trình tạo ω và bao gồm các thành phần lệ thuộc trên z(1), z(2), …, z(m-1). Vì vậy, chúng ra có: p(x|y, ωM-1) ≈ p(z(1)| y, ω(0)) p(z(2)| y, ω(1))… p(z(M-1)| y, ω(M-2)) p(zk| y, ω(M-1)) (2.14) Mật độ xác suất p(zk| y, ω(M-1)) cho phân lớp dương y = +1 và phân lớp âm y = -1 có thể phỏng đoán được từ histogram tính được qua đánh giá công nhận trọng số của các ví dụ huấn luyện sử dụng các trọng số ω(M-1). Cho : , và (2.15) chúng ta rút ra được tập hợp các phân lớp yếu hơn như sau: (2.16) Thuật toán AdaBoost Đầu vào Tập Z = { (x1, y1), (x2, y2),…, (xn, yn)} với: N = a + b; a là số mẫu thuộc phân lớp yi = +1 b là số mẫu thuộc phân lớp yi = -1 (2) Số lớp yếu tối đa Mmax được kết hợp Khởi tạo giá trị với mẫu thuộc phân lớp yi = +1 với mẫu thuộc phân lớp yi = -1 M = 0 Suy diễn tiến While M < Mmax Mß M + 1 Chọn hm theo biểu thức (4) Cập nhật và chuẩn hóa để Đầu ra Ví dụ minh họa cho thuật toán AdaBoost Bộ dò tìm phân tầng Adaboost Với một bộ dò tìm c do phương pháp AdaBoost huấn luyện được, ta có thể dò tìm với một độ chính xác nhất định và một tốc độ nhất định. Nếu như cần phải chính xác cao thì bộ dò tìm phải bao gồm nhiều đặc trưng, điều đó kéo theo tốc độ dò tìm sẽ giảm. Nếu sử dụng bộ dò tìm kết hợp F={ci} với nhiều bộ dò tìm cơ bản fi khác nhau cũng rơi vào tình trạng tương tự. Để có được độ chính xác cao, hoặc cần phải có số lượng lớn các bộ dò tìm, hoặc mỗi bộ dò tìm cần phải có nhiều đặc trưng, hoặc cả hai, thì đồng thời cũng sẽ làm cho tốc độ giảm đi. Một hướng khắc phục nhược điểm này là sử dụng bộ dò tìm phân tầng T={ti}. Bộ dò tìm phân tầng bao gồm nhiều tầng, mỗi tầng ti = {cj} là một bộ dò tìm kết hợp với số lượng các bộ dò tìm khác nhau nên có tốc độ và độ chính xác khác nhau. Khi dò tìm tất cả các khuôn mặt trong ảnh, tất cả các cửa sổ con W0={wi,j,s} với các kích thước s khác nhau tại các tọa độ (i,j) sẽ được kiểm tra xem có phải là mặt người hay không. Qua mỗi tầng ti, Wi = ti(Wi-1) trong đó |Wi|<<|Wi-1| do qua mỗi tầng, các cửa sổ không phải ứng viên sẽ bị loại sớm. Điều này cho phép chúng ta xây dựng các tầng sao cho: càng về sau độ phức tạp của các tầng càng lớn trong khi các tầng càng thấp thì độ phức tạp càng đơn giản và phải loại được nhiều ứng viên, nhưng tỷ lệ loại sai phải thấp. Minh hoạ bộ dò tìm phân tầng Xét mỗi tầng tk = {ci} ta có tỷ lệ loại sai của tk được tính như sau: (2.17) Trong đó fi chính là tỷ lệ loại sai ứng với bộ dò tìm ci và K chính là số bộ dò tìm của tầng tk. Tương tự, độ chính xác của tầng tk được tính như sau : (2.18) Trong đó di là độ chính xác của ứng với bộ dò tìm ci. Đồng thời cũng với cách tính này, ta có thể tính được độ chính xác của toàn bộ các tầng T={ti} là: (2.19) Vậy khi cho trước một tỷ lệ loại sai D và độ chính xác là F, ta có thể huấn luyện tầng bộ phân loại t sao cho t có tỷ lệ loại sai là D và đô chính xác là F. Và lặp lại quá trình huấn luyện tầng ta được bộ huấn luyện gồm nhiều tầng với độ chính xác G hoặc số tầng n như mong muốn. Dưới đây là thuật toán huấn luyện một tầng với tỷ lệ loại sai f và độ chính xác d cho trước: 0. Đầu vào: f (tỉ lệ nhận sai mẫu dương tối đa chấp nhận được) d (tỉ lệ nhận đúng tối thiểu trong lớp) Ftarget (tỉ lệ nhận sai mẫu dương) P=tập mẫu dương N=tập mẫu âm 1. Khởi tạo: F0=1.0 D0=1.0 i=0 2. Trong khi (Fi>Ftarget) i ß i + 1 ni = 0; Fi = Fi-1 Trong khi (Fi > f × Fi-1 ) ni = ni + 1 Sử dụng P và N để huấn luyện một phân loại H với ni đặc trưng, dùng Adaboost Thêm bộ phân loại hiện thời vào C Tính Fi và Di cho bộ phân loại C hiện thời trên tập hợp lệ Giảm ngưỡng cho lớp thứ i cho đến khi bộ phân loại C hiện thời đạt tỉ lệ dò tìm tối thiểu là d x Di-1 (điều này cũng ảnh hưởng Fi) N ß ∅ Nếu Fi > Ftarget thì định giá bộ dò tìm C hiện thời trên tập ảnh không phải mặt người và đưa các mẫu dò tìm bị lỗi vào tập N 3. Đầu ra: bộ dò tìm đa tầng C Huấn luyện dò tìm khuôn mặt Dữ liệu huấn luyện: Tập A gồm các ảnh là khuôn mặt, tập B gồm các ảnh không là khuôn mặt (B>>A). Trích chọn các đặc trưng của ảnh. Tiến hành xử lí tập ảnh huấn luyện bằng Histogram và nhận dạng biên CANNY Áp dụng bộ huấn luyện phân tầng. Dò tìm khuôn mặt Việc dò tìm khuôn mặt trong ảnh qua bộ phân tầng đã huấn luyện gặp một vấn đề là số sửa sổ với các kích thước khác nhau quá lớn. Để khắc phục vấn đề này, phương pháp dò theo kiến trúc tháp được áp dụng như sau: xét ảnh s kích thước (wxh) , step = 0 , hệ số co scale = 1.2 Ø Lặp trong khi kích thước (w x h) còn lớn hơn cửa sổ ảnh mặt người huấn luyện (w0 x h0): Duyệt toàn bộ các vị trí (x,y) cửa sổ với kích thước (w0 x h0) , với mỗi vị trí tiến hành: Áp dụng bộ dò tìm phân tầng để xác định có phải mặt người hay không Nếu là mặt người tại vị trí (x,y) thì thực tế mặt người tại vị trí (x*scalestep, y*scalestep) và kích thước cửa sổ là (w0*scalestep, h0*scalestep) Gán w1 = w / scale và h1 = h / scale Thu nhỏ ảnh từ kích thước (w x h) đến (w1 x h1) Gán w = w1 và h = h1 step = step + 1 Nhận xét : Hệ số co scale quyết định độ mịn của các cửa sồ dò tìm, nếu như scale càng nhỏ (≥1 ) thì càng có nhiều cửa sổ dò tìm nên càng chính xác hơn. Áp dụng thuật toán dò theo kiến trúc tháp như trên ta có thể dò tìm tất cả các khuôn mặt ở tất cả các vị trí, song kích thước dò tìm ở mỗi bước như sau : Bước 1 : kích thước từ (w0, h0) đến (w0*scale,h0*scale) Bước 2 : kích thước từ (w0*scale,h0*scale) đến (w0*scale2,h0*scale2) …………. Bước n : kích thước từ (w0*scalen-1,h0*scalen-1) đến (w0*scale,h0*scale) Nhận xét Ưu điểm Phương pháp cho độ chính xác tương đối cao (trên 90%), tốc độ dò tìm khuôn mặt khá nhanh, thích hợp để dò tìm khuôn mặt trong thời gian thực, trong video. Thích hợp với việc huấn luyện dữ liệu bị nhiễu. Phương pháp trích chọn đặc trưng thực hiện khá nhanh. Khuyết điểm Thuật toán huấn luyện khuôn mặt thực hiện chậm do có rất nhiều bộ phân loại yếu. Chỉ dò tìm được các khuôn mặt nhìn thẳng và góc quay nhỏ Không ít các tính chất của AdaBoost mang tính chất nhận định và chưa được chứng minh chặt chẽ. PHÁT HIỆN KHUÔN MẶT SỬ DỤNG MẠNG NƠRON. Tổng quan về mạng nơron nhân tạo Mạng nơron sinh học Sau đây là những thành phần chính trong cấu trúc của một nơ-ron: Mô hình nơ-ron sinh học Soma là thân của nơ-ron. Các dendrites là các dây mảnh, dài, gắn liền với soma, chúng truyền dữ liệu (dưới dạng xung điện thế) đến cho soma xử lý. Bên trong soma các dữ liệu đó được tổng hợp lại. Có thể xem gần đúng sự tổng hợp ấy như là một phép lấy tổng tất cả các dữ liệu mà nơ-ron nhận được. Một loại dây dẫn tín hiệu khác cũng gắn với soma là các axon. Khác với dendrites, axons có khả năng phát các xung điện thế, chúng là các dây dẫn tín hiệu từ nơ-ron đi các nơi khác. Chỉ khi nào điện thế trong soma vượt quá một giá trị ngưỡng nào đó (threshold) thì axon mới phát một xung điện thế, còn nếu không thì nó ở trạng thái nghỉ. Axon nối với các dendrites của các nơ-ron khác thông qua những mối nối đặc biệt gọi là synapse. Khi điện thế của synapse tăng lên do các xung phát ra từ axon thì synapse sẽ nhả ra một số chất hoá học (neurotransmitters); các chất này mở "cửa" trên dendrites để cho các ions truyền qua. Chính dòng ions này làm thay đổi điện thế trên dendrites, tạo ra các xung dữ liệu lan truyền tới các nơ-ron khác. Có thể tóm tắt hoạt động của một nơ-ron như sau: nơ-ron lấy tổng tất cả các điện thế vào mà nó nhận được, và phát ra một xung điện thế nếu tổng ấy lớn hơn một ngưỡng nào đó. Các nơ-ron nối với nhau ở các synapses. Synapse được gọi là mạnh khi nó cho phép truyền dẫn dễ dàng tín hiệu qua các nơ-ron khác. Ngược lại, một synapse yếu sẽ truyền dẫn tín hiệu rất khó khăn. Các synapses đóng vai trò rất quan trọng trong sự học tập. Khi chúng ta học tập thì hoạt động của các synapses được tăng cường, tạo nên nhiều liên kết mạnh giữa các nơ-ron. Có thể nói rằng người nào học càng giỏi thì càng có nhiều synapses và các synapses ấy càng mạnh mẽ, hay nói cách khác, thì liên kết giữa các nơ-ron càng nhiều, càng nhạy bén. Nơron nhân tạo: Là một đơn vị tính toán có nhiều đầu vào và một đầu ra, mỗi đầu vào đến từ một synapse. Đặc trưng của nơ-ron là một hàm kích hoạt phi tuyến chuyển đổi tổ hợp tuyến tính của tất cả các tín hiệu đầu vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho tính toán của mạng nơ-ron. Mô hình một nơ-ron nhân tạo Các thành phần của nơron nhân tạo: Synapse: Là một thành phần liên kết giữa các nơ-ron, nó nối đầu ra của nơ-ron lớp này với đầu vào của một nơ-ron trong lớp khác. Đặc trưng của synapse là một trọng số mà mỗi tín hiệu đi qua đều được nhân với trọng số này. Các trọng số synapse chính là các tham số tự do cơ bản của mạng nơ-ron, có thể thay đổi được nhằm thích nghi với môi trường xung quanh. Bộ cộng Bộ cộng để tính tổng các tín hiệu đầu vào của nơ-ron, đã được nhân với các trọng số synapse tương ứng, phép toán được mô tả ở đây tạo nên một bộ hợp tuyến tính. Hàm truyền (hàm kích hoạt): Hàm kích hoạt hay còn gọi hàm kích hoạt phi tuyến, chuyển đổi một tổ hợp tuyến tính của tất cả các tín hiệu đầu vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho tính toán mạng nơ-ron. Nó được xem như là một hàm giới hạn, nó giới hạn phạm vi biên độ cho phép tín hiệu đầu ra trong một khoảng giá trị hữu hạn. Một số hàm truyền (kích hoạt ) cơ bản trong mạng nơ-ron được trình bày ở bảng 3.1. Mạng nơ-ron nhân tạo : Là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là nơ-ron) tựa như nơ-ron thần kinh của não người, hoạt động song song và được nối với nhau bởi các liên kết nơ-ron. Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các nơ-ron. Có thể xem các trọng số là phương tiện để lưu trữ thông tin dài hạn trong mạng nơ-ron và nhiệm vụ của quá trình huấn luyện (học) của mạng là cập nhật các trọng số khi có thêm thông tin về mẫu học, hay nói một cách khác, các trọng số đều được điều chỉnh sao cho dáng điệu vào ra của mạng sẽ mô phỏng hoàn toàn phù hợp với môi trường đang xem xét. Bảng 3.1: Một số hàm kích hoạt. Tên hàm Công thức hardlim a = 0 với n < 0 a = 1 với n ³ 0 hardlims a = -1 với n < 0 a = 1 với n ³ 0 purelin a = n Satlin a = 0 với n < 0 a = n với 0 £ n £ 1 a = 1 với n > 1 satlins a = -1 với n < 0 a = n với 0 £ n £ 1 a = 1 với n > 1 tansig poslin a = 0 với n < 0 a = n với n ³ 0 compet a = 1 với nơ-ron có n lớn nhất a = 0 với các nơ-ron còn lại logsig Mô hình cơ bản của mạng nơron Sơ đồ đơn giản về một mạng nơ-ron nhân tạo Mô hình mạng nơ-ron ở trên gồm 3 lớp: lớp nhập (input), lớp ẩn và lớp xuất (output). Mỗi nút trong lớp nhập nhận giá trị của một biến độc lập và chuyển vào mạng. Dữ liệu từ tất cả các nút trong lớp nhập được tích hợp – ta gọi là tổng trọng hóa – và chuyển kết quả cho các nút trong lớp ẩn. Gọi là “ẩn” vì các nút trong lớp này chỉ liên lạc với các nút trong lớp nhập và lớp xuất, và chỉ có người thiết kế mạng mới biết lớp này (người sử dụng không biết lớp này). Các nút trong lớp xuất nhận các tín hiệu tổng trọng hóa từ các nút trong lớp ẩn. Mỗi nút trong lớp xuất tương ứng với một biến phụ thuộc. Xây dựng mạng nơron x h1 h2 h3 g2 g1 f Về cơ bản ta có thể hiểu mạng nơ-ron là một đồ thị có hướng. Trong đó các đỉnh của đồ thị là các nơ-ron và các cạnh của đồ thị là các liên kết giữa các nơ-ron. Vì vậy để xây dựng một mạng nơ-ron ta xây dựng một đồ thị có hướng: số đỉnh của đồ thị bằng số nơ-ron trong mạng, giá trị của các cạnh chính là trọng số liên kết nơ-ron. Giải thuật xây dựng mạng nơron đơn giản. Input: Cho : Mạng nơ-ron có num_layer lớp (với num_layer>1). Mỗi lớp có num_of_layer nơ-ron (num_of_layer>=1). Trọng số w liên kết nơ-ron ngẫu nhiên trong khoảng (-a,a). Output: Mạng nơ-ron nhân tạo. Kiểu dữ liệu: chọn lưu dữ kiểu mảng : int num_layer; int num_of_layer[num_layer]; float w[i][j][k]; với 2<=i<=num_layer, 1<=j,k<=num_of_layer[] , Thuật toán: Bước 1: Chọn lớp i=2 là lớp bắt đầu (ngay sau lớp input). Bước 2: Chọn lớp i là lớp hiện thời. Bước 3 : Tại lớp đang xét i , xét nơ-ron thứ j . Bước 4: Thực hiện khởi tạo ngẫu nhiên trọng số kết nối với nơ-ron k của lớp i-1 trong khoảng (-a,a). w(i,j,k)=random(-a,a) (trọng số kết nối của nơ-ron thứ j của layer[i] với nơ-ron thứ k của layer[i-1] ) Bước 5: Nếu k <= num_of_layer[i-1] quay lại “Bước 4”, ngược lại thực hiện “Bước 6”. Bước 6: Nếu j<=num_of_layer[i] quay lại “Bước 3”, ngược lại thực hiện “Bước 7”. Bước 7: Nếu i<=num_layer quay lại “Bước 3”. ngược lại kết thúc. Huấn luyện mạng nơron. Phương pháp học. Mạng nơ-ron nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Quá trình học hay còn gọi là quá trình huấn luyện là một quá trình mà trong các tham số tự do (các trọng số liên kết) được điều chỉnh nhằm mục đích thích nghi với môi trường. Đối với vấn đề học cho mạng mạng nơ-ron người ta thường quan tâm tới 3 yếu tố chính, đó là: Quy tắc học: phương thức nền tảng cho việc thay đổi trọng số liên kết. Mô hình học: cách thức mạng nơ-ron quan hệ với môi trường trong quá trình học. Thuật toán học: các bước tiến hành cụ thể cho một quá trình học. Có 3 kiểu học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có thể đáp ứng được yêu cầu của thực tế. Học có giám sát. Một thành phần không thể thiếu của phương pháp này là sự có mặt của một người thầy (ở bên ngoài hệ thống) như ta thấy ở hình 3-4 . Người thầy này có kiến thức về môi trường thể hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước. Hệ thống học (ở đây là mạng nơ-ron) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các trọng số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ các đầu vào thành các đầu ra mong muốn. Sự thay đổi này được tiến hành nhờ việc so sánh giữa đầu ra thực sự và đầu ra mong muốn. Học không giám sát. Đầu vào trạng thái của môi trường Đầu ra thực sự Đầu ra mong muốn Sai số Môi trường Thầy giáo Hệ thống học ∑ Trong học không có giám sát, ta được cho trước một số dữ liệu x và hàm chi phí cần được cực tiểu hóa có thể là một hàm bất kỳ của dữ liệu x và đầu ra của mạng, f – hàm chi phí được quyết định bởi phát biểu của bài toán. Phần lớn các ứng dụng nằm trong vùng của các bài toán ước lượng như mô hình hóa thống kê, nén, lọc (filtering), phân nhóm (clustering). Mô hình học có giám sát Học tăng cường. Dữ liệu x thường không được tạo trước mà được tạo ra trong quá trình một agent tương tác với môi trường. Tại mỗi thời điểm t, agent thực hiện hành động yt và môi trường tạo một quan sát xt với một chi phí tức thời Ct, theo một quy trình động nào đó (thường là không được biết). Mục tiêu là một sách lược lựa chọn hành động để cực tiểu hóa một chi phí dài hạn nào đó, nghĩa là chi phí tích lũy mong đợi. Quy trình hoạt động của môi trường và chi phí dài hạn cho mỗi sách lược thường không được biết, nhưng có thể ước lượng được. Mạng nơ-ron nhân tạo thường được dùng trong học tăng cường như một phần của thuật toán toàn cục. Các bài toán thường được giải quyết bằng học tăng cường là các bài toán điều khiển, trò chơi và các nhiệm vụ quyết định tuần tự (sequential decision making) khác. Thuật toán học. Thuật toán học của mạng nơ-ron một lớp( perceptron ). Xét trường hợp perceptron sử dụng hàm kích hoạt ngưỡng: (3.1) Nếu ta cho w0= -t và v0=1, ta có thể viết lại (3.2) Thuật toán: Thuật toán học của perceptron hay mạng nơ-ron một lớp gồm 3 bước chính: Bước 1: Khởi tạo: khởi tạo trọng số w (0 hoặc ngẫu nhiên). chọn tốc độ học µ. Bước 2 : Học Với mỗi mẫu (x,t) trong tập học. Tính y=f(x, w). Nếu y!=t thay đổi vectơ trọng số w với: w(mới (cũ)+ µ(t-y)x; Bước 3: lặp lại bước 2 cho tất cả các mẫu. Thuật toán học của mạng nơ-ron nhiều lớp (back-Propagation -- Lan truyền ngược ). Huấn luyện mạng nơ-ron nhiều chiều MLP : Là quá trình thay đổi giá trị của w để mạng biểu diễn được dữ liệu học. Là sự khác nhau giữa giá trị thật hàm mẫu và kết quả dự đoán của mạng gọi là lỗi (học có giám sát). Hàm lỗi là hàm n+1 biến. Nếu vẽ trong không gian n+1 chiều thì có một mặt là lỗi. Quá trình huấn luyệnsẽ tìm ra wi* để lỗi nhỏ nhất Thuật toán: Xét mạng nơ-ron 3 lớp : input, hiden và output. Hàm kích hoạt các nơ-ron : logistic (sigmoid). (3.3) Bước 1: Khởi tạo trọng số w ngẫu nhiên nhỏ. Bước 2 : Chọn lớp đầu vào x và đính nó vào lớp đầu vào . Bước 3 : Truyền sự kích hoạt qua trọng số đến khi kich hoạt các nơ-ron đầu ra. Bước 4: Tính đạo hàm riêng “δE” theo trọng số cho lớp xuất. sử dụng GRADIENT của hàm lỗi . Bước 5: Tính đạo hàm riêng “δE” theo trọng số cho lớp ẩn. Bước 6: Cập nhật tất cả trọng số theo Wi=W(i-1)-µ(δE/ δ Wi) Bước 7: Quay lai “Bước 2” cho đến “Bước 6” cho tất cả các mẫu. Trong đó: Gradient hàm lỗi: Z = g(v) y1 y2 yk b1 b2 bk I b0 Nơ-ron tầng output: (3.4) Giá trị thật của mẫu huấn luyện Hàm lỗi (3.5) Đạo hàm riêng của hàm lỗi theo trọng số b: (3.6) Ta có: (3.7) Đặt: (3.8) Ta được: (3.9) Nơ-ron tầng ẩn: x1 x2 xd a1 a2 ad I a0 y = g(u) (3.10) Đạo hàm riêng của hàm lỗi theo trọng số: (3.11) Ta có: (3.12) Đặt: (3.13) Ta được: (3.14) Sau khi tính được đạo hàm riêng của hàm lỗi theo từng trọng số. Trọng số sẽ được điều chỉnh bằng cách trừ bớt một lượng bằng tích của đạo hàm riêng và tốc độ học: (3.15) Chuẩn bị dữ liệu Giới thiệu Dùng tiếp cận khung nhìn để dò tìm khuôn mặt, bộ dò tìm khuôn mặt theo khung nhìn phải xác định xem một cửa sổ con của một ảnh có thuộc về tập ảnh khuôn mặt hay không. Các biến đổi trong ảnh khuôn mặt có thể làm tăng độ phức tạp của mẫu khuôn mặt, làm cho việc dò tìm khó khăn hơn. Phần này sẽ mô tả các kỹ thuật để làm giảm số biến đổi trong ảnh khuôn mặt. Gán nhãn và canh biên các đặc trưng khuôn mặt Bước đầu tiên trong việc giảm số các biến đổi trong ảnh khuôn mặt là canh biên các khuôn mặt này với khuôn mặt khác. Việc canh biên này sẽ làm giảm các biến đổi về vị trí, hướng, và tỷ lệ các khuôn mặt. Việc canh biên được tính trực tiếp từ các ảnh. Và nó tạo ra không gian ảnh khuôn mặt tối thiểu. Cường độ ảnh khuôn mặt có thể biến đổi nhiều, làm cho một số khuôn mặt khó canh biên với nhau. Ta dùng giải pháp gán nhãn thủ công các mẫu khuôn mặt. Cụ thể là vị trí hai mắt, đỉnh mũi, và trung tâm miệng của mỗi khuôn mặt. Bước tiếp theo là dùng thông tin này để canh biên các khuôn mặt với khuôn mặt khác. Trước hết định nghĩa canh biên giữa hai tập điểm đặc trưng. Đó là phép quay, biến đổi tỷ lệ, và dịch chuyển để làm cực tiểu hoá tổng bình phương khoảng cách giữa từng cặp đặc trưng tương ứng. Trong không gian hai chiều, một phép biến đổi tọa độ như vậy có thể được viết dưới dạng sau: (3.16) Nếu có nhiều tập tọa độ tương ứng, có thể viết như sau: ( (3.17) Khi có hai hay nhiều hơn cặp điểm đặc trưng phân biệt, hệ các phương trình tuyến tính có thể được giải bằng phương pháp đảo ngược giả. Gọi ma trận bên trái là A, vector (a, b, tx, ty)T là T, và bên phải là B, khi đó lời giải: T = (AT A)-1(AT B) (3.18) Lời giải đảo ngược giả đưa ra phép biến đổi T làm cực tiểu tổng bình phương khác biệt giữa tập tọa độ x’i, y’i và phiên bản đã biến đổi của xi, yi. Canh biên tập các điểm đặc trưng. Khởi tạo F, vector sẽ là vị trí trung bình của mỗi đặc trưng gán nhãn trên mọi khuôn mặt, với một số vị trí đặc trưng ban đầu. Trong trường hợp canh biên các khuôn mặt thẳng, các đặc trưng này là vị trí mong muốn của hai mắt, đỉnh mũi, và trung tâm miệng của mỗi khuôn mặt trong cửa sổ đầu vào. Với mỗi khuôn mặt i, dùng thủ tục canh biên để tính phép quay, dịch chuyển, và biến đổi tỷ lệ tốt nhất để canh biên các đặc trưng khuôn mặt Fi với các vị trí đặc trưng trung bình F . Gọi vị trí đặc trưng đã canh biên F’i. Cập nhật F bằng việc lấy trung bình các vị trí đặc trưng đã canh biên F’i cho mỗi khuôn mặt i. Tọa độ đặc trưng trong F được quay, dịch chuyển và biến đổi để phù hợp với một số tọa độ chuẩn. Ttọa độ chuẩn là tọa độ được dùng làm giá trị khởi tạo cho F . Sang bước 2. Trái: Mẫu khuôn mặt chuẩn. Phải: Các vị trí đặc trưng khuôn mặt chuẩn (tròn trắng), và phân phối của các vị trí đặc trưng thực (sau khi canh biên) từ mọi mẫu (các điểm đen). Ví dụ ảnh khuôn mặt thẳng được canh biên. Trong việc huấn luyện bộ dò tìm, việc thu thập số mẫu đủ lớn là vấn đề quan trọng. Một kỹ thuật thường dùng là khung nhìn ảo, trong đó các ảnh mẫu mới được tạo ra từ ảnh thực (quay, dịch chuyển, biến đổi tỷ lệ ngẫu nhiên ảnh mẫu). Tiền xử lý về độ sáng và độ tương phản trên tập mẫu học Sau khi canh biên các khuôn mặt, vẫn còn một nguồn biến đổi chính (không kể biến đổi về bản chất giữa các khuôn mặt). Biến đổi này gây ra do độ sáng và các đặc tính máy ảnh, dẫn đến các ảnh có độ sáng tươi hay kém, hoặc ảnh có độ tương phản kém. Ta xử lý vấn đề này bằng tiếp cận xử lý ảnh đơn giản. Kỹ thuật tiền xử lý trước hết cân bằng các giá trị mật độ trên toàn cửa sổ. Lập hàm biến đổi tuyến tính giá trị mật độ trong vùng tròn trong cửa sổ. Các điểm ảnh bên ngoài hình tròn có thể là nền. Nếu mật độ của pixel (x,y) là I(x,y), khi đó cách biến đổi tuyến tính này được tham số hoá bởi a, b, c với: (3.19) Việc chọn cách biến đổi này là tuỳ ý. Nó có thể biểu diễn các khác biệt về độ sáng trên toàn ảnh. Các biến đổi được giới hạn là tuyến tính để số tham số ít và việc tạo lập hàm nhanh chóng. Tập hợp với mọi pixel trên toàn cửa sổ hình tròn ta được phương trình ma trận ràng buộc, và được giải bằng phương pháp đảo ngược giả. Phương trình tuyến tính này sẽ xấp xỉ toàn bộ độ sáng của mỗi phần của cửa sổ, và bị trừ đi với cửa sổ để cân bằng biến đổi về độ sáng. Tiếp theo, cân bằng lược đồ, ánh xạ không tuyến tính các giá trị mật độ để mở rộng miền cường độ trong cửa sổ. Lược đồ được tính với các pixel trong vùng tròn trong cửa sổ. Việc này bù cho các khác biệt trong việc thu nhận đầu vào camera, và cũng cải thiện độ tương phản trong một số trường hợp. Các kết quả của mỗi bước được cho trong Hình 3-7. Các bước trong việc tiền xử lý cửa sổ. Đầu tiên, xây dựng hàm ánh xạ tuyến tính với các giá trị mật độ trong cửa sổ, và sau đó trừ đi nó, để hiệu chỉnh về độ sáng. Tiếp theo, áp dụng cân bằng lược đồ, để hiệu chỉnh đầu vào camera khác nhau và cải thiện độ tương phản. Trong mỗi bước, việc ánh xạ được tính với các pixel bên trong hình tròn, và được áp dụng với toàn cửa sổ. Huấn luyện dò tìm khuôn mặt Giới thiệu Phần này trình bày thuật toán dựa trên mạng nơ-ron để dò tìm ra các cửa sổ có chứa các khuôn mặt đứng, thẳng trong ảnh. Thuật toán thực hiện bằng cách áp dụng một hay nhiều mạng nơ-ron trực tiếp với các phần của ảnh đầu vào, và kiểm tra các kết quả của chúng. Mỗi mạng được huấn luyện để kết xuất một kết quả là có hay không có khuôn mặt. Huấn luyện mạng nơ-ron để dò tìm khuôn mặt là một công việc đầy thách thức, vì khó khăn trong việc biểu diễn các ảnh “không khuôn mặt”. Không như việc nhận dạng khuôn mặt, trong đó các lớp phân biệt là các khuôn mặt khác nhau. Hai lớp gọi là phân biệt trong dò tìm khuôn mặt là “ảnh có chứa khuôn mặt” và “ảnh không chứa khuôn mặt”. Dễ dàng lấy được mẫu ảnh chứa khuôn mặt điển hình, nhưng việc lấy mẫu ảnh không chứa khuôn mặt điển hình khó hơn rất nhiều. Ta tránh việc dùng tập huấn luyện có kích thước lớn để biểu diễn không khuôn mặt bằng việc chọn thêm ảnh vào tập huấn luyện khi tiến hành huấn luyện. Phương pháp “bootstrap” nhằm giảm kích thước của tập huấn luyện cần thiết. Việc dùng cách thức xử lý giữa đa mạng và các heuristic để làm rõ ràng các kết quả và cải thiện đáng kể độ chính xác của bộ dò tìm. Huấn luyện dò tìm khuôn mặt Hệ thống hoạt động theo hai giai đoạn: trước hết áp dụng tập bộ dò tìm dựa trên mạng nơ-ron vào ảnh, và sau đó dùng bộ kiểm tra để kết hợp các đầu ra. Các bộ dò tìm riêng lẻ khảo sát mỗi vị trí trong ảnh ở một vài tỷ lệ, tìm vị trí có thể chứa khuôn mặt. Sau đó bộ kiểm tra hợp các dò tìm từ các mạng riêng lẻ và loại trừ các dò tìm bị lặp. Thành phần đầu tiên của hệ thống là mạng nơ-ron nhận đầu vào là vùng 20x20 (pixels) của ảnh và tạo đầu ra trong khoảng 1 đến -1, biểu thị có hay không có khuôn mặt. Để dò tìm mọi khuôn mặt trong ảnh, mạng được áp dụng ở mọi vị trí trong ảnh. Để dò tìm các khuôn mặt lớn hơn kích thước cửa sổ, ảnh đầu vào được giảm kích thước nhiều lần, và áp dụng bộ dò tìm ở mỗi kích thước. Mạng có một số bất biến với vị trí và kích thước. Số bất biến xác định số tỷ lệ và vị trí nó được dùng. Với bài này, ta áp dụng bộ lọc ở mọi vị trí điểm ảnh, và giảm tỷ lệ xuống 1.2 ở mỗi bước phân tích ảnh tứ phân. Sau khi cửa sổ 20x20 pixel được trích ra từ một vị trí và tỷ lệ nào đó trong ảnh nhập, nó được tiền xử lý dùng các bước hiệu chỉnh độ sáng và cân bằng lược đồ. Cửa sổ sau khi tiền xử lý được truyền qua mạng nơ-ron. Cửa sổ đầu vào được chia thành các mảnh nhỏ, 4 vùng 10x10 (pixels), 16 vùng 5x5 (pixels), và 6 vùng chồng lấp 20x5 (pixels). Mỗi vùng có liên kết đầy đủ với một đơn vị ẩn. Với thử nghiệm sau, ta dùng mạng với hai và ba tập các đơn vị ẩn này. Hình dáng của các vùng con này được chọn để cho phép các đơn vị ẩn dò tìm các đặc trưng cho việc dò tìm khuôn mặt. Cụ thể, các sọc ngang cho phép các đơn vị ẩn dò tìm các đặc trưng như miệng, cặp mắt, trong khi các đơn vị ẩn với vùng tiếp thu hình vuông có thể dò tìm các đặc trưng như từng mắt, mũi, của miệng. Các thử nghiệm cho thấy rằng hình dạng chính xác của các vùng này không quan trọng, quan trọng là đầu vào được chia thành các vùng nhỏ thay vì dùng các kết nối hoàn toàn với toàn bộ đầu vào. Tương tự các mẫu liên kết đầu vào thường được dùng trong việc nhận dạng tiếng nói và ký tự. Mạng có một đầu ra giá trị thực, chỉ định cửa sổ có chứa khuôn mặt hay không. Ảnh huấn luyện khuôn mặt Để dùng mạng nơ-ron phân loại cửa sổ là khuôn mặt hay không, ta cần các mẫu huấn luyện cho mỗi tập. Với các mẫu khuôn mặt ta dùng kỹ thuật canh biên các ảnh khuôn mặt trong đó một số điểm đặc trưng đã gán nhãn bằng tay. Sau khi canh biên, các khuôn mặt được co về về một kích thước, vị trí và hướng đồng nhất trong cửa sổ 20x20 pixel. Ảnh được co về với một lượng ngẫu nhiên từ đến . Điều này cho phép bộ dò tìm được áp dụng ở mỗi vị trí pixel và ở mỗi tỷ lệ trong chóp ảnh, và vẫn dò tìm các khuôn mặt ở vị trí và tỷ lệ trung bình. Ngoài ra, để cho bộ dò tìm mạnh hơn với các biến đổi không đáng kể trong khuôn mặt, chúng được quay với một lượng ngẫu nhiên (tối đa 10o). Ảnh huấn luyện không phải khuôn mặt Ta cần nhiều ảnh không khuôn mặt để huấn luyện bộ dò tìm khuôn mặt, vì sự đa dạng của ảnh không khuôn mặt lớn hơn nhiều so với ảnh khuôn mặt. Một lớp ảnh không chứa khuôn mặt là các ảnh phong cảnh chẳng hạn cây, núi, và toà nhà. Thu thập tập không khuôn mặt “đặc trưng” là việc khó. Hầu như bất kỳ ảnh nào cũng có thể được xem như là mẫu không khuôn mặt; không gian ảnh không khuôn mặt lớn hơn không gian ảnh khuôn mặt. Tiếp cận thống kê máy học cho rằng ta nên huấn luyện mạng nơ-ron trên cùng phân bố ảnh mà mạng thấy khi chạy. Với bộ dò tìm khuôn mặt, số mẫu khuôn mặt là 15.000 là một số thích hợp. Tuy nhiên, tập đại diện ảnh phong cảnh chứa gần 150,000,000 cửa sổ, và việc huấn luyện trên một cơ sở dữ liệu khuôn mặt có kích thước lớn như vậy là rất khó. Phần tiếp theo mô tả việc huấn luyện trên một cơ sở dữ liệu khuôn mặt này. Phương pháp huấn luyện chủ động Tạo tập khởi tạo các ảnh không khuôn mặt bằng cách tạo 1000 ảnh ngẫu nhiên. Áp dụng các bước tiền xử lý cho mỗi ảnh này. Huấn luyện mạng nơ-ron nhân tạo để cho ra 1 với các mẫu khuôn mặt, và -1 với các mẫu không khuôn mặt. Trong lần lặp đầu tiên của vòng lặp, các trọng số mạng được khởi tạo ngẫu nhiên. Sau lần lặp đầu tiên này, ta dùng các trọng số được tính qua việc huấn luyện trong lần lặp trước. Chạy hệ thống trên ảnh phong cảnh không chứa khuôn mặt. Thu thập các ảnh con trong đó mạng nhận lầm là khuôn mặt (hoạt hoá đầu ra >0). Chọn ngẫu nhiên 250 ảnh con này, áp dụng các bước tiền xử lý, và sau đó thêm chúng vào tập mẫu âm. Sang Bước 2. Thuật toán huấn luyện dùng trong Bước là thuật toán hồi quy lỗi chuẩn. Các nơ-ron dùng hàm kích hoạt dạng tanh, cho đầu ra từ -1 đến 1, do đó ngưỡng 0 với dò tìm là khuôn mặt. Vì ta không huấn luyện với mọi mẫu âm, các đối số xác suất của phần trước không áp dụng cho việc thiết lập ngưỡng dò tìm. Vì số mẫu âm lớn hơn nhiều so với số mẫu dương, các bó mẫu huấn luyện chỉ chứa các mẫu âm, sẽ không thích hợp cho việc huấn luyện mạng nơ-ron. Thay vì mỗi bó gồm 100 mẫu dương và âm lấy ngẫu nhiên từ toàn bộ tập huấn luyện, và truyền qua thuật toán hồi quy ngược. Ta chọn các bó huấn luyện có 50% mẫu âm và 50% mẫu dương. Điều này đảm bảo rằng ban đầu, khi tập mẫu dương nhiều hơn tập mẫu âm, mạng sẽ học từ cả hai tập. Trong khi huấn luyện, hệ thống đã huấn luyện một phần được áp dụng với các ảnh phong cảnh không chứa khuôn mặt (như bên trái). Bất kỳ vùng nào trong ảnh được dò là khuôn mặt là lỗi, và được thêm vào tập mẫu huấn luyện âm. Quá trình dò tìm khuôn mặt Tập mẫu không phải khuôn mặt Tập mẫu khuôn mặt Ảnh thử nghiệm có khuôn mặt Canh biên mẫu khuôn mặt Tiền xử lí tập mẫu học Huấn luyện dò tìm khuôn mặt thẳng Lấy tất cả các cửa sổ cùng với vị trí trên ảnh Tiền xử lí các cửa sổ Xác minh cửa sổ có phải là khuôn mặt hay không Giữ lại vị trí các mẫu là khuôn mặt Kết hợp các khuôn mặt mà vị trí trùng lặp Loại bỏ cửa sổ vì không phải khuôn mặt Các khuôn mặt tại các vị trí khác nhau Sai Đúng Sơ đồ luồng xử lí các bước chính trong vấn đề dò tìm khuôn mặt Mô tả lưu đồ: Bước 1: Tiếp nhận ảnh đầu vào có chứa các khuôn mặt. Bước 2: Đánh dấu các vị trí có khả năng là các khuôn mặt trên ảnh. Đây là bước để loại đa số những vị trí không phải là khuôn mặt, chỉ giữ lại một số ít những vị trí có khả năng là khuôn mặt. Bước 3: Thực hiện chuẩn hóa dữ liệu tại những nơi đã đánh dấu ở bước 2 bằng các phương pháp: cân bằng lược đồ để cải thiện độ sáng và độ tương phản Bước 4: Kiểm tra những vị trí đã được chuẩn hóa ở bước 3 có thật sự là khuôn mặt hay không? Công việc này được thực hiện bởi mạng nơ-ron đã được huấn luyện với nhiều ảnh mẫu là khuôn mặt và không khuôn mặt. Bước 5: Đưa ra quyết định đâu là khuôn mặt. Việc làm này được thực hiện bằng việc kết hợp nhiều mạng và một số heuristic đơn giản. CÀI ĐẶT ỨNG DỤNG. Môi trường TEST Phần cứng : Một máy tính pentum IV. Card đồ họa 256 MB. Ram 512 MB . Phần mềm : Ngôn ngữ sử dụng: C# trong bộ visual studio 2005. Tập ảnh huấn luyện gồm 100 ảnh mặt người và 500 ảnh không là mặt người. Một số giao diện chính Giao diện chính của chương trình Quá trình dò tìm khuôn mặt Kết quả của quá trình dò tìm khuôn mặt Giao diện để hiệu chỉnh các thông số của mạng Nơ-ron Quá trình huấn luyện mạng Nơ-ron Kết quả Kết quả của chương trình sau khi dò tìm khuôn mặt (a) (b) (c) (d) (a) Ảnh với môi trường nền phức tạp; (b) và (c) là ảnh khuôn mặt với các tư thế khác nhau, (d) là ảnh khuôn mặt bị che khuất một phần. Kết quả của chương trình với ảnh có nhiều mặt người Chương trình cho kết quả tương đối tốt, dò tìm được hầu hết các khuôn mặt. Tuy nhiên vẫn còn những phát hiện thừa hoặc thiếu, điều này là do tập mẫu dùng để huấn luyện. Trong thực tế, tập các ảnh không là khuôn mặt có số lượng lớn và phong phú hơn rất nhiều so với tập ảnh là khuôn mặt. Vì vậy dùng tập ảnh này để huấn luyện cho máy là điều rất khó khăn. Nhận xét Bộ dò tìm khuôn mặt sử dụng mạng Nơ-ron thực hiện tương đối tốt, đạt kết quả khả quan khi dò tìm khuôn mặt. Bộ dò tìm khuôn mặt sử dụng mạng Nơ-ron nhận biết rất tốt những khuôn mặt với các tư thế khác nhau: thẳng đứng (hình 4-6), không thẳng đứng (hình 4-7 b,c) hoặc bị che khuất một phần (hình 4-7 d). Bộ dò tìm thử nghiệm thực hiện dò tìm không đạt được kết quả như mong muốn trong môi trường ảnh có nhiều mặt người. Như hình 4-8 thì bộ dò tìm phát hiện được 7/11 khuôn mặt, phát hiện nhầm lẫn 4 vùng có khuôn mặt. Xây dựng chương trình dò tìm khuôn mặt sử dụng mạng nơ-ron như trên chỉ mang tính chất thử nghiệm thuật toán, cần phải phát triển nhiều hơn nữa để có thể áp dụng vào trong thực tế. KẾT LUẬN Phát hiện khuôn mặt là bài toán cơ bản và quan trọng trong lĩnh vực thị giác máy tính. Công nghệ hiện nay còn đang rất non trẻ và có nhiều vấn đề cần phải tiếp tục nghiên cứu. Với đề tài “Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh”, khoá luận đã trình bày tổng quan một số phương pháp phát hiện khuôn mặt, tập trung trình bày hai phương pháp “phát hiện khuôn mặt sử dụng mạng Nơ-ron” và “phát hiện khuôn mặt sử dụng AdaBoost”. Khoá luận đã xây dựng được một hệ thống phát hiện khuôn mặt sử dụng mạng Nơ-ron cho kết quả phát hiện được khuôn trong ảnh. Việc cài đặt thử nghiệm thuật toán trên bằng ngôn ngữ C# đã được thực hiện, bước đầu cho kết quả tốt. Trong tương lai em sẽ tiếp tục nghiên cứu thêm để có thể hoàn thiện hơn nữa về độ chính xác và thời gian dò tìm, và cố gắng để ứng dụng được chương trình vào một số hệ thống phục vụ các lĩnh vực: giám sát, theo dõi, an ninh trí tuệ nhân tạo… Tuy nhiên do hạn chế về điều kiện và thời gian, khoá luận sẽ không thể tránh khỏi những thiếu xót. Kính mong được sự đóng góp ý kiến của thầy cô và các bạn, để em có thể hoàn thiện tốt hơn đề tài nghiên cứu của mình trong đợt khoá luận này. Trân trọng cảm ơn! TÀI LIỆU THAM KHẢO Nguyễn tuấn nghĩa (2005) – Sử dụng mô hình Entropy cực đại nhận dạng màu da trên ảnh màu – Luận văn tốt nghiệp Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Lu Buon Vinh, Hoàng Phương Anh (2004) - Nghiên cứu và xây dựng hệ thống nhận dạng mặt người dựa trên FSVM và Adaboost - Luận văn cử nhân tin học Khoa công nghệ thông tin, ĐH KHTN TP HCM. Trần Phước Long, Nguyễn Văn Lượng (2003) : Nhận dạng người dựa vào thông tin khuôn mặt xuất hiện trên ảnh. Luận văn tốt nghiệp, Khoa Công nghệ Thông tin, Đại học Khoa học Tự nhiên Tp. HCM. Phạm Thế Bảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn, Phan Phúc Doãn - Tổng quan các phương pháp xác định khuôn mặt người J. Meynet (2003) – Fast Face Detection Using AdaBoost - National Polytechnique Institute of Grenoble. H.A. Rowley (1999) – Neural network – Based Face Detection – School of Computer Science, Computer Science Department, Carnegie Mellon University Pittsburgh, PA 15123. CBCL Face Database, CMU and MIT, CMU Image database

Các file đính kèm theo tài liệu này:

  • docPhatHienKhuonMat.doc
  • docBC Tom tat.doc
  • pdfPhatHienKhuonMat.pdf
  • pptphathienkhuonmat.ppt
Tài liệu liên quan