Phát hiện khuôn mặt người trên ảnh số

20 11 0
  • Loading ...
1/20 trang

Thông tin tài liệu

Ngày đăng: 02/04/2019, 23:04

Đề tài: “ Phát hiện khuôn mặt người trên ảnh số” tập trung tìm hiểu về thuật toán Adaboost và các đặc trưng Haarlike, một trong những thuật toán điển hình trong ứng dụng phát hiển khuôn mặt người. Phát hiện mặt người cũng là một bài toán nhận dạng đơn giản, hệ thống chỉ cần phân loại đối tượng đưa vào có phải mặt người hay không phải mặt người. Ở mức độ cao hơn, sau khi đã phát hiện được khuôn mặt, các khuôn mặt đó sẽ được so sánh với các khuôn mặt có trong dữ liệu để nhận dạng xem khuôn mặt đấy là của ai BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN  BÀI TẬP LỚN MÔN: NHẬP MÔN LÝ THUYẾT NHẬN DẠNG Đề tài: PHÁT HIỆN KHUÔN MẶT NGƯỜI TRÊN ẢNH SỐ Lớp : Giáo viên hướng dẫn: Sinh viên thực hiện: Hà Nội, tháng 12/2018 Mục lục MỞ ĐẦU Vài năm trở lại đây, nhận diện khuôn mặt ngày trọng phát triển mạnh mẽ, ứng dụng hứa hẹn lĩnh vực xử lý ảnh Phát khuôn mặt ( face detection) bước cần thiết để tiến hành nhận diện khuôn mặt, giải tốt việc phát hiên mặt người giúp tiết kiệm thời gian nâng cao độ xác việc nhận dạng khn mặt Phát mặt người toán nhận dạng đơn giản, hệ thống cần phân loại đối tượng đưa vào có phải mặt người hay khơng phải mặt người Ở mức độ cao hơn, sau phát khn mặt, khn mặt so sánh với khn mặt có liệu để nhận dạng xem khuôn mặt Đề tài: “ Phát khuôn mặt người ảnh số” chúng em tập trung tìm hiểu thuật toán Adaboost đặc trưng Haar-like, thuật tốn điển hình ứng dụng phát hiển khuôn mặt người Chúng em xin chân thành cảm ơn! CHƯƠNG I: CƠ SỞ LÝ THUYẾT I Mở đầu phương pháp phát khuôn mặt Haar-like – Adaboost Tổng quan Có nhiều phương pháp để giải tốn xác định khn mặt người ảnh 2D dựa hướng tiếp cận khác Phương pháp Haar-like – Adaboost(viết tắt HA) hai tác giả Paul Viola Michael J.Jones phương pháp xác định mặt người dựa theo hướng tiếp cận diện mạo Hướng tiếp cận diện mạo tức hệ thống nhận dạng khuôn mặt học mẫu khuôn mặt từ tập ảnh mẫu Sau trình học hay trình huấn luyện (training) thực xong, hệ thống rút tham số để phục vụ cho trình nhận dạng.Vì tiếp cận diện mạo biết đến với tên gọi tiếp cận theo phương pháp học máy Bài báo cáo tập trung chủ yếu vào trình nhận dạng(sau thực trình học)  Tổng quan hệ thống phét khuôn mặt người sử dụng đặc Adaboost: Về tổng quan, phương pháp HA xây dựng dựa kết hợp, lắp ghép thành phần, là: - - Các đặc trưng Haar-like: đặc trưng đặt vào vùng ảnh để tính tốn giá trị đặc trưng, từ giá trị đặc trưng đưa vào phân loại Adaboost ta xác định ảnh có khn mặt hay khơng Ảnh tích hợp(Integral Image): thực cơng cụ giúp việc tính tốn giá trị đặc trưng Haar-like nhanh - - Adaboost(Adaptive Boost): phân loại (bộ lọc) hoạt động dựa nguyên tắc kết hợp phân loại yếu để tạo lên phân loại mạnh Adaboost sử dụng giá trị đặc trưng Haar-like để phân loại ảnh mặt hay mặt Cascade of Classifiers: phân loại tầng với tâng phân loại Adaboost, có tác dụng tăng tốc độ phân loại Như toán xác định mặt người ảnh tốn phân loại ảnh thành hai lớp mặt mặt Tiền xử lý Một lưu ý nhỏ phương pháp HA thực ảnh xám (gray image) Mỗi điểm ảnh(pixel) có giá trị mức xám từ đến 255(không gian màu bit) Như phương pháp HA không khai thác đặc điểm màu sắc khuôn mặt để nhận dạng song hiệu Ảnh màu chuyển ảnh xám để nhận dạng, việc chuyển đổi đơn giản, thực hàm chuyển đổi sử dụng với câu lệnh Opencv nên báo cáo chưa đề cập tới Sau chuyển thành ảnh xám, ảnh lại tiếp tục chuyển thành “ảnh tích hợp” (sẽ trình bày phần sau) bước trình nhận dạng, đặc trưng Haar-like làm việc trực tiếp ảnh tích hợp II Đặc trưng Haar-like Đối tượng nhận dạng Trên ảnh, vùng khuôn mặt tập hợp điểm ảnh có mối quan hệ khác biệt so với vùng ảnh khác, mối quan hệ tạo lên đặc trưng riêng khuôn mặt Tất khn mặt người có chung đặc điểm sau chuyển qua ảnh xám, ví dụ như: - Vùng hai mắt tối vùng má vùng chán, tức mức xám vùng cao vượt trội so với hai vùng lại Vùng sống mũi tối vùng hai bên mũi Và nhiều đặc điểm khác khuôn mặt đặc trưng Haar like dựa vào đặc điểm để nhận dạng Về tổng quát, đặc trưng Haar like không sử dụng để nhận dạng khn mặt mà dùng để nhận dạng đối tượng ảnh( thân người, tay, chân, tơ, đồ vật,….) Bởi giống khn mặt, đối tượng có đặc điểm riêng biệt đặc trưng vùng điểm ảnh, cơng việc đặc trưng Haar-like tính tốn giá trị tương quan vùng ảnh Đây bước ban đầu cách áp dụng đặc trưng để phân loại cửa sổ con, chi tiết cách phân loại Adaboost Cascade of Classifiers trình bày mục sau Các đặc trưng Haar-like Mỗi đặc trưng Haar-like miền hình chữ nhật chia thành 2,3 hình chữ nhật nhỏ phân biệt quy ước màu trắng đen Như hình vẽ loại đặc trưng Haar-like gồm 2,3 hình chữ nhật hợp thành Từ đặc trưng mở rộng thành tập đặc trưng: Giá trị đặc trưng Haar-like khác biệt tổng giá trị xám pixel vùng “đen” với tổng giá trị xám pixel vùng “trắng”: f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel) (1) Vậy đặt lên vùng ảnh, đặc trưng Haar-like tính tốn đưa giá trị đặc trưng h(x) vùng ảnh Cách áp dụng đặc trưng Haar-like để phát khuôn mặt ảnh Như trình bày báo cáo 1, để phát khuôn mặt, hệ thống cho cửa sổ con(sub-window) có kích thước cố định qt lên tồn ảnh đầu vào Như có nhiều ảnh ứng với cửa sổ con, đặc trưng Haar-like đặc lên cửa sổ để từ tính giá trị đặc trưng Sau giá trị phân loại xác nhận xem khung hình có phải khn mặt hay khơng Hình ví dụ: khung màu xanh cửa sổ con, đặc trưng Haarlike với kích thước vị trí đặt hình vẽ Ứng với đặc trưng trên, phân lớp yếu(weak classifier) hk(x) định nghĩa sau: (2) Trong đó: X : cửa sổ cần xét : ngưỡng fk: giá trị đặc trưng Haar-like pk: hệ số định chiều bất phương trình Ta hiểu công thức đơn giản sau: giá trị đặc trưng Haar-like k:fk cửa sổ x vượt qua ngưỡng phân lớp hk(x) kết luận cửa sổ x khuôn mặt(hk(x)=1), fk khơng vượt qua ngưỡng khơng khuôn mặt Ngưỡng giá trị rút sau qua trình huấn luyện phân lớp, trình bày sau Như phần đối tượng nhận dạng, ta thấy đặc trưng Haar-like k có kích thước vị trí đặt cửa sổ x hình có giá trị fk lớn(vì mức xám vùng mắt lớn nhiều vùng má ) Giá trị fk lớn nhiều với hầu hết giá trị fk khác ta di chuyển cửa sổ x sang vị trí khác(qt tồn ảnh đầu vào), với nhưỡng phù hợp, kết phân lớp hk(x) cho cửa sổ vị trí khn mặt vị trí khác khơng Đương nhiên có vị trí khác ảnh đầu vào vơ tình cho f k vượt ngưỡng phân lớp yếu hk(x) kết luận khuôn mặt, ta không dùng đặc trưng Haar-like mà dùng nhiều đặc trưng vị trí kích thước khác cửa sổ làm giảm trùng hợp ngẫu nhiên Số lượng đặc trưng Haar-like Việc xác định cửa sổ có phải mặt hay khơng phải sử dụng nhiều đặc trưng Haar-like Ứng với kích thước, kiểu đặc trưng vị trí đặt cửa sổ cho ta đặc trưng ứng với phân lớp yếu x Vì tập hợp đầy đủ số lượng đặc trưng cửa sổ lớn Theo tính toán hai tác giả, với cửa sổ kích thước 2424 pixel số lượng đầy đủ đặc trưng Haar-like 160000.Có hai vấn đề đặt đây: Thứ giá trị đặc trưng Haar-like tính tổng giá trị điểm ảnh vùng đen trừ tổng điểm ảnh vùng trắng, với số lượng lớn đặc trưng tạo khối lượng tính tốn khổng lồ Điều khơng phù hợp để đáp ứng thời gian thực thời gian xử lý lâu Thứ hai số hàng trăm nghìn đặc trưng khơng phải đặc trưng có ích cho cơng việc phân loại Nếu khơng tìm cách loại bổ đặc trưng khơng có ích để tập trung vào đặc trưng có hiệu cao thời gian xử lý cách vơ ích Những phần sau tìm cách giải vấn đề III Ảnh tích hợp Định nghĩa ảnh tích hợp( Integral image) Như trình bày phần trên, số lượng đặc trưng Haar-like nhiều khối lượng tính tốn giá trị đặc trưng lớn Vì ảnh tích hợp đưa nhằm tính tốn nhanh chóng đặc trưng, giảm thời gian xử lý Ảnh tích hợp định nghĩa theo công thức: ii ( x, y ) = ∑ i ( x' , y ' ) x '≤ x , y '≤ y (3) Giá trị ảnh tích hợp vị trí (x,y) tổng điểm ảnh thuộc hình chữ nhật xác định góc trái (0,0) góc phải (x,y) Ví dụ chuyển ảnh 33 có giá trị xám bên thành ảnh tích hợp: Sau chuyển ảnh cần nhận dạng thành ảnh tích hợp, viêc tính tốn giá trị đặc trưng Haar-like đơn giản Áp dụng tính tốn đặc trưng Haar-like Để tính giá trị đặc trưng Haar-like,ta phải tính tổng giá trị điểm ảnh vùng hình chữ nhật ảnh Ví dụ vùng D hình vẽ: Với :A,B,C,D tổng giá trị điểm ảnh vùng P1,P2,P3,P4 giá trị ảnh tích hợp đỉnh D Nếu ảnh xám bình thường để tính D ta phải tính tổng tất giá trị điểm ảnh D, miền D lớn số phép cộng nhiều Nhưng với ảnh tích hợp dù miền D có kích thước D cần tính thơng qua giá trị đỉnh Ta có: P1 = A, P2 = A + B, P3 = A + C, P4 = A + B + C + D Suy ra: P1+ P4–P2–P3= A + (A + B + C + D) – (A + B) – (A + C) = D 10 Vậy ta có: D = P1 + P4 – P2 – P3 Khi áp dụng vào tính tốn giá trị đặc trưng ta thấy: Đặc trưng hai hình chữ nhật(đặc trưng cạnh) tính thơng qua giá trị điểm ảnh tích hợp Đặc trưng ba hình chữ nhật(đặc trưng đường) đặc trưng tâm-xung quanh tính thơng qua giá trị điểm ảnh tích hợp Đặc trưng hình chữ nhật(đặc trưng chéo) tính thơng qua giá trị điểm ảnh tích hợp Trong tính định nghĩa giá trị cần tính tốn lên tới hàng trăm Điều làm tăng tốc độ xử lý cách đáng kể IV Adaboost Khái quát Adaboost Kỹ thuật Boosting: nguyên tắc Boosting kết hợp phân lớp yếu (hay phân lớp sở) để tạo nên phân lớp mạnh Các phân lớp yếu chí cần nhỉnh phương pháp random chút Bằng cách này, ta nói phân lớp “boost.” Adaboost thuật toán sử dụng kỹ thuật Boosting đưa Freund Schapire vào 1996 Thuật toán sử dụng phổ biến cho toán phát khuôn mặt Điểm cải tiến Adaboost ta gán cho mẫu trọng số Ý nghĩa việc gán trọng số sau: Ở vòng lặp q trình huấn luyện, phân lớp yếu y i xây dựng, ta tiến hành cập nhật trọng số cho mẫu Việc cập nhật tiến hành sau: ta tăng trọng số mẫu bị phân lớp sai phân lớp yếu y i giảm trọng số mẫu phân lớp y i Bằng cách này, vòng lặp kế, ta xây 11 dựng phân lớp yếu y i+1 theo hướng: tập trung vào mẫu bị phân lớp sai phân lớp yếu trước Cuối cùng, để có phân lớp mạnh, ta kết hợp tuyến tính phân lớp yếu tìm lại với Mỗi phân lớp yếu đánh trọng số tương ứng với độ tốt phân lớp yếu Chi tiết thuật toán Cho tập ảnh huấn luyện (x1, t1), …, (xn, tn) với ti { 0, 1} Khởi tạo hệ số trọng cho mẫu huấn luyện: với n = 1, 2, …, N For m = 1, …, M: (a)Xây dựng phân lớp yếu hm: + Với đặc trưng j, xây dựng phân lớp hjvới độ lỗi: (1.0) với = ngược lại + Chọn phân lớp hj với độ lỗi nhỏ ta hm (b) Cập nhật trọng số: + Tính: (1.1) và: (1.2) + Cập nhật trọng số: (1.3) Bộ phân lớp mạnh cuối cùng: (1.4) Thuật toán bắt đầu việc khởi tạo trọng số cho mẫu huấn luyện Các trọng số khởi tạo Các trọng số cho thuật toán biết độ quan trọng mẫu Để trực quan, ta quan sát thuật tốn thơng qua chuỗi hình vẽ đây: • Khởi tạo trọng số cho mẫu: 12 • Vòng lặp thứ 1: • Vòng lặp thứ 2: • Vòng lặp thứ 3: 13 • Kết hợp phân lớp yếu lại: Cuối cùng, kết hợp tuyến tính phân lớp yếu lại ta phân lớp mạnh: Nhận thấy mức độ đóng góp phân lớp yếu vào phân lớp mạnh định : Dễ thấy tỉ lệ nghịch với mà thể độ lỗi ứng với phân lớp hm Như vậy, độ lỗi thấp, tức phân lớp tốt mức độ đóng góp vào phân lớp mạnh cuối nhiều V Cascade of classifier Đặt vấn đề Sau hiểu thuật toán Adaboost, suy nghĩ ta dùng thuật toán Adaboost để huấn luyện phân lớp mạnh Sau đó, ta rải cửa sổ (sub window), chứa phân lớp mạnh này, khắp ảnh đưa vào để phát khuôn mặt 14 Tuy nhiên, cách làm tốn chi phí Giả sử, Adaboost ta có phân lớp mạnh gồm 10 phân lớp yếu Nếu làm trên, tất cửa sổ ảnh ta phải dùng 10 phân lớp yếu Trong đó, ta thấy: cửa sổ thật khn mặt cửa sổ khơng phải khn mặt ta loại bỏ mà cần dùng phân lớp mạnh gồm 10 phân lớp yếu Người ta giải vấn đề chuỗi phân lớp (Cascade of classifier) Khái quát Cascade of classifier Ta có chuỗi phân lớp, phân lớp xây dựng thuật toán Adaboost Bây giờ, ta đưa tất cửa sổ qua chuỗi phân lớp này: Bộ phân lớp loại bỏ phần lớn cửa sổ khuôn mặt (nagative sub window) cho qua cửa sổ cho khuôn mặt (positive sub window) Ở đây, phân lớp đơn giản đó, độ phức tạp tính tốn thấp Tất nhiên, đơn giản nên số cửa sổ nhận dạng khuôn mặtsố lượng lớn cửa sổ bị nhận dạng sai (khơng phải khn mặt.) • Những cửa chỗ cho qua phân lớp đầu xem xét phân lớp sau đó: phân lớp cho khơng phải khn mặt ta loại bỏ; phân lớp cho khn mặt ta lại cho qua chuyển đến phân lớp phía sau • Những phân lớp sau phức tạp hơn, đòi hỏi tính tốn nhiều Người ta gọi cửa sổ (mẫu) mà phân lớp không loại bỏ mẫu khó nhận dạng Những mẫu sâu vào chuỗi phân lớp khó nhận dạng Chỉ cửa sổ qua tất phân lớp ta định khn mặt • 15 Tóm lại, chuỗi phân lớp xử lý mẫu (cửa sổ con) vào theo nguyên tắc sau: phân lớp cho khơng phải mặt người ta loại bỏ ngay; phân lớp cho khn mặt ta chuyển đến phân lớp sau Nếu mẫu trót lọt hết tất phân lớp ta định khn mặt CHƯƠNG II: ỨNG DỤNG THỰC NGHIỆM I Sử dụng Opencv chương trình đơn giản phát khuôn mặt python 1.Phương pháp Haar like- Adaboost Opencv Phương pháp nhận diện khuôn mặt dựa vào đặc trưng Haar like kết hợp Adaboost cài sẵn thư viện Opencv Để sử dụng phương pháp Opencv ta sử dụng hàm detectMultiScale Phát khuôn mặt ảnh, cách thức chương trình tạo khung cửa sổ có kích thước xác định chứa phần ảnh, khung cửa sổ “ảnh đầu vào” mà phương pháp Haar like dùng để tính tốn Khi qt khung cửa sổ toàn ảnh ta nhận vô số “ảnh đầu vào”, với ảnh đầu vào chương trình xác nhận xem có phải mặt người hay khơng với bước phần I Bằng cách thay đổi tỉ lệ vị trí khung cửa sổ phát tất khn mặt có ảnh( tất nhiên phụ thuộc vào độ xác phương pháp) Minh họa cho cách thức phát mặt người Opencv qua video: https://vimeo.com/12774628 Chi tiết cách thức trinh bày mục sau 16 Chương trình đơn giản phát khn mặt python *Đây chương trình phát khuôn mặt đơn giản với đối tượng ảnh 2.jpg: Trước phân tích chương trình ta tìm hiểu hàm detectMultiScale phần tìm kiếm khn mặt, hàm(hay phương thức) thuộc lớp CascadeClassifier(lớp phụ vụ tìm kiếm đối tượng Opencv) Tham số cascade phân lớp đề cập phần I, phân lớp lưu vào file xml xây dựng sẵn sở liệu chuẩn Dưới số phân loại thư viện Opencv 17 Như bảng cần phát đối tượng khác ta sử dụng phân lớp khác nhau, tức load file xml tương ứng vào chương trình Opencv hỗ trợ tự xây dựng phân lớp riêng cho đối tượng khác hàm cvCreateHidHaarClassifierCascade, xây dưng phân loại để phát đối tượng khác ơtơ, chó, mèo… Quay lại hàm detectMultiScale, tham số image ảnh cần phát khuôn mặt scale_factor tỉ lệ tăng kích thước khung cửa sổ tìm kiếm Ví dụ scale_factor=1.1 sau quét hết ảnh lần, khung cửa sổ tăng kich thước lên 10% thực lần quét Tham số ảnh hưởng đến tốc độ xử lý độ tin cậy chương trình Nếu để q lớn tốc độ chương trình tăng lên số lần qt giảm đi, nhiên chương trình bỏ qua không phát số khuôn mặt có kích thước nằm khung cửa sổ liên tiếp độ tăng kích thước khung q lớn Nếu để q thấp ta khơng bỏ sót khn mặt chương trình tốn thời gian tăng số lần quét lên min_neighbors giá trị tối thiểu số hình chữ nhật lân cận gộp lại sau trình quét xong, tham số giải thích rõ phần sau min_size kích thước nhỏ khung cửa sổ phát khuôn mặt, khung bắt đầu quét từ kích thước này, khn mặt có diện tích vượt qua kích thước khung khơng phát Đó tham số quan trọng hàm Chuyển sang phân tích chương trình: Dòng 1,2 phần khai báo chương trình sử dụng thư viện Numpy Opencv 2.x Dòng 3,4 ta tạo đối tượng thuộc lớp CascadeClassifier face_cascade eye_cascade để tìm kiếm mặt mắt, đồng thời load flie xml cho đối tượng Dòng đọc ảnh cần tìm khn mặt vào biến img Dòng tạo biến ảnh gray ảnh vào chuyển sang dạng xám để thực tìm kiếm Dòng sử dụng hàm detectMultiScale để tìm kiếm khn mặt ảnh xám gray với tham số scale_factor=1.3 min_neighbors=5 phân lớp face_cascade Dòng 10,11 hàm detectMultiScale sau tìm kiếm xong trả giá trị gồm tọa độ gốc khung chứa khuôn mặt x,y ; chiều dài, rộng khung w,h Các giá trị nằm mảng faces Cấu trúc for….in duyệt qua toàn giá trị này, với giá trị ta dùng hàm rectangle để vẽ hình chữ nhật lên ảnh ban đầu img với tọa độ điểm trái phải dưới: (x,y),(x+w,y+h) (0,255,0) màu vẽ hình chữ nhật Như xác định xong khn mặtảnh Dòng 13 dùng hàm hiển thị ảnh vẽ xong lên cửa sổ window có tên ABC 18 Dòng 14,15 đợi ấn nút để chương trình, xóa cửa sổ hiển thị Kết chương trình: Hàm detecMultiScale có tham số scale_factor=1.3 min_neighbors=5 – scale_factor tỉ lệ tăng kích thước khung cửa sổ tìm kiếm min_neighbors giá trị tối thiểu số hình chữ nhật lân cận gộp lại sau trình quét xong Nếu min_neighbors =0 để nguyên tìm Sau quét ta có kết quả: – – 19 –  Kết luận: Trên sở nghiên cứu toán phát mặt người ảnh Đặc biệt thuật toán Adaboost, đặc trưng haar-like mơ hình Cascade of Classifier, áp dụng thành cơng mơ hình Cascade of Classfier vào tốn phát mặt người ảnh Tuy kết đạt chưa cao, bước đầu để phát triển toán nhận dạng mặt (face recognition) người sau 20 ... dạng khn mặt Phát mặt người toán nhận dạng đơn giản, hệ thống cần phân loại đối tượng đưa vào có phải mặt người hay khơng phải mặt người Ở mức độ cao hơn, sau phát khuôn mặt, khuôn mặt so sánh... diện khuôn mặt ngày trọng phát triển mạnh mẽ, ứng dụng hứa hẹn lĩnh vực xử lý ảnh Phát khuôn mặt ( face detection) bước cần thiết để tiến hành nhận diện khuôn mặt, giải tốt việc phát hiên mặt người. .. khn mặt có liệu để nhận dạng xem khuôn mặt Đề tài: “ Phát khuôn mặt người ảnh số chúng em tập trung tìm hiểu thuật tốn Adaboost đặc trưng Haar-like, thuật tốn điển hình ứng dụng phát hiển khuôn
- Xem thêm -

Xem thêm: Phát hiện khuôn mặt người trên ảnh số, Phát hiện khuôn mặt người trên ảnh số, I. Mở đầu về phương pháp phát hiện khuôn mặt Haar-like – Adaboost., I. Sử dụng Opencv và chương trình đơn giản phát hiện khuôn mặt bằng python

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay