Phát hiện khuôn mặt với thuật toán ADABOOST

28 2.9K 23
Phát hiện khuôn mặt với thuật toán ADABOOST

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phát hiện khuôn mặt với thuật toán ADABOOST

ĐỒ ÁN MÔN HỌC I PHÁT HIỆN KHUÔN MẶT VỚI THUẬT TOÁN ADABOOST Lớp: DD12BK02 - ĐTVT Giáo viên hướng dẫn: TS Chế Viết Nhật Anh MỞ ĐẦU Với phát triển vượt bậc công nghệ máy móc ứng dụng rộng rãi nhiều lĩnh vực đời sống, hệ thống máy tính cho phép làm nhiều việc, tiết kiệm thời gian công sức Điển việc nhận dạng khuôn mặt người Nhiều năm trước, việc nhận dạng nghi phạm sân bay, siêu thị, khu công cộng thường gặp nhiều khó khăn nhân viên an ninh phải tìm kiếm hình camera theo dõi Ngày nay, công việc thực tự động nhờ hệ thống nhận diện mặt người Phát mặt người ảnh phần quan trọng hệ thống nhận dạng mặt người đó, giải tốt việc phát mặt người giúp tiết kiệm thời gian nâng cao xác việc nhận dạng khuôn mặt Trong nhận diện khuôn mặt, ta phải lấy khuôn mặt cách thủ công, đem nhận dạng xem Để việc nhận dạng khuôn mặt cách tự động, tức đưa vào ảnh phải xác định xem ảnh có ai, rõ ràng điều kiện cần thực trước phát mặt người Việc phát khuôn mặt ứng dụng đếm số người Bao nhiêu khuôn mặt có nhiêu người Việc đếm số người có vai trò quan giao thông (đếm số lưu lượng người tham gia giao thông ngày), thương mại ( đếm số khách hàng vào siêu thị ) hay giáo dục ( thầy giáo điểm danh số sinh viên lớp học ) Chính mà việc phát khuôn mặt người cần thiết Phát mặt người toán đơ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 mặt người Ở mức độ cao hơn, khuôn mặt sau phát đem so sánh với khuôn mặt có liệu để nhận dạng xem khuôn mặt ( thường nhận dạng tội phạm ) Với mục tiêu tìm hiểu thuật toán Adaboost (Adaptive Boost), đặc trưng haar-like, mô hình Cascade of Classifiers, áp dụng đồng thời vào toán phát khuôn mặt người ảnh, đồ án trình bày chương cụ thể sau: Chương I: Cơ sở lý thuyết: tìm hiểu thuật toán Adaboost Giới thiệu đặc trưng haar-like cách tính thông số đặc trưng Sử dụng mô hình Cascade of classifiers cách áp dụng vào toán đề Chương II: Ứng dụng thực nghiệm: Dựa vào sở thư viện mã nguồn mở OpenCV, xây dựng chương trình phát khuôn mặt người ảnh video kết hợp với phân tích chương trình Chương III: Tổng kết hướng phát triển: đánh giá kết hướng nghiên cứu phát triển Chương IV: Tài liệu tham khảo Chương I: CƠ SỞ LÝ THUYẾT Mở đầu phương pháp phát khuôn mặt Haar-like Adapboost: Phát mặt người toán xây dựng từ nhiều năm nay, có nhiều phương pháp đưa sử dụng template matching, neuron network Cho tới toán giải dựa phương pháp sử dụng phương pháp Haar-like- Adapboost (HA) hai tác giả Paul Viola Micheal J.Jones xác định mặt người dựa theo hướng tiếp cận diện mạo Phương pháp cho đơn giản kết phát tương đối cao, lên tới 98%, Các hãng sản xuất máy ảnh Canon, Samsung tích hợp vào sản phẩm 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) 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 toá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ó khuôn mặt hay không - Ảnh tích hợp (Integral Image): thực công cụ giúp việc tính toán giá trị đặc trưng Haar-like diễn 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 tính để 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 toán phân loại ảnh thành hai lớp: có mặt mặt 2) Tiền xử lí: Phương pháp HA thực ảnh xám (gray image) Mỗi điểm ảnh (pixel) có giá trị từ 0-255 (không gian màu bit) Ả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 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 3) Đặc trưng Haar-like: a) Đối tượng nhận dạng: Đặc trưng Haar-like Đối Trên tượng ảnh, nhậnvùng dạ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 khuôn 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 khuôn 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 khuôn 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 toá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 b) 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: + Đặc trưng cạnh: + Đặc trưng đường: + Đặc trưng xung quanh tâm (centured-surrounded features) Để tính giá trị đặc trưng haar-like, ta tính chênh lệch tổng pixel vùng đen vùng trắng công thức sau: f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel) Vậy đặt lên vùng ảnh, đặc trưng Haar-like tính toán đưa giá trị đặc trưng h(x) vùng ảnh c) Cách áp dụng đặc trưng haar-like để phát khuôn mặt ảnh: Cách áp dụng đặc trưng khuôn Haar-like mặt để phát ảnh Để phát khuôn mặt, hệ thống cho cửa sổ (sub-window) có kích thước cố định quét lên toàn ảnh đầu vào Như có nhiều ảnh ứng với cửa sổ con, đặc trưng Haar-like đặt 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 khuôn mặt hay không Hình ví dụ: khung màu xanh cửa sổ con, đặc trưng Haar-like với kích thước vị trí đặt hình sau: Ứng với đặc trưng trên, phân lớp yếu (weak classifier) định nghĩa sau: Trong đó: X : cửa sổ cần xét : ngưỡng : giá trị đặc trưng Haar-like : 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 : cửa sổ x vượt qua ngưỡng phân lớp kết luận cửa sổ x khuôn mặt (=1), 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ị lớn (vì mức xám vùng mắt lớn nhiều vùng má ) Giá trị lớn nhiều với hầu hết giá trị khác ta di chuyển cửa sổ x sang vị trí khác (quét toàn ảnh đầu vào), với ngưỡng phù hợp, kết phân lớp ) cho cửa sổ vị trí khuôn mặt vị trí khác không Đương nhiên có vị trí khác ảnh đầu vào vô tình cho vượt ngưỡng phân lớp yếu) 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 Như ta thấy rằng, để tính giá trị đặc trưng Haar-like, ta phải tính tổng vùng pixel ảnh Nhưng để tính toán giá trị đặc trưng Haar-like cho tất vị trí ảnh đòi hỏi chi phí tính toán lớn, không đáp ứng cho ứng dụng đòi hỏi tính run-time ( theo tác giả Viola Jones tính toán với cửa sổ kích thước 24 x 24 pixel số lượng đầy đủ đặc trưng haar-like 160000) Do Viola Jones đưa khái niệm gọi Integral Image mục để tính toán nhanh cho khác feature 4) Intergral Image: (Ảnh tích hợp) Viola Jones đưa khái niệm gọi Integral Image để tính toán nhanh cho khác feature Sau này, Lienhart kế thừa gọi Integral Image SAT – Summed Area Table đưa thêm khái niệm RSAT – Rotated Summed Area Table dùng để tính toán nhanh cho đặc trưng xoay góc 45 o Integral Image mảng chiều với kích thước với kích ảnh cần tính đặc trưng Haar-like, với phần tử mảng tính cách tính tổng điểm ảnh phía (dòng-1) bên trái (cột-1) Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, phải ảnh, việc tính toán đơn đựa phép cộng số nguyên đơn giản, tốc độ thực nhanh P(x,y) Hình 1: Cách tính Integral Image ảnh Sau tính Integral Image, việc tính tổng điểm ảnh vùng ảnh thực đơn giản theo cách sau: (Giả sử ta cần tính tổng điểm ảnh vùng D hình 2): D = A + B + C + D – (A+B) – (A+C) + A Với A + B + C + D giá trị điểm P4 Integral Image, tương tự A+B giá trị điểm P2, A+C giá trị điểm P3, A giá trị điểm P1 Vậy ta viết lại biểu thức tính D sau: A P1 C B P2 D P4 P3 Hình 2: Ví dụ cách tính nhanh tổng điểm ảnh vùng D ảnh B RSAT(x,y) A D C (b) (a) Hình 3: Ví dụ cách tính nhanh tổng điểm ảnh vùng D ảnh với đặc trưng xoay 45o Với đặc trưng Haar-like xoay 45o Integral Image điểm (x, y) tính theo công thức: Tổng pixel vùng ảnh tính theo cách sau: D = A + B + C + D – (A+B) – (A+C) + A Như tổng điểm ảnh hình chữ nhật (kể trường hợp xoay 45º) tính nhanh dựa integral image đỉnh : Sum (D ) = - – + 5) Thuật toán Adaboost: a) Khái quát Adaboost: Kỹ thuật Boosting: nguyên tắc Boosting kết hợp phân lớn 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 kỹ thuật phát khuôn mặt b) Thuật toán: Điểm cải tiếng Adaboost ta gán mẫu trọng số Ý nghĩa sau: Cho tập gồm n mẫu có đánh dấu (x 1,y1), (x2,y2),… (xn,yn) với xk ∈ (xk1, xk2, … , xkm) vector đặc trưng yk ∈ (-1, 1) nhãn mẫu (1 ứng với object, -1 ứng với background) Khởi tạo trọng số ban đầu cho tất mẫu: với m số mẫu (ứng với object y = 1) l số mẫu sai (ứng với background y = -1) Xây dựng T weak classifiers Lặp t = 1, …, T • Với đặc trưng vector đặc trưng, xây dựng weak classifier hj với ngưỡng θj lỗi εj • Chọn hj với εj nhỏ nhất, ta ht: • Cập nhật lại trọng số: • Trong đó: : Hệ số dùng để đưa đoạn [0,1] (normalization factor) Strong classifier xây dựng : c)Sơ đồ khối: 10 Gọi: F giá trị false alarm d độ xác weak classifier stage Ftarget: Giá trị max false alarm P, N số lượng mẫu positive negative Pi, Ni tập positive negative cho phân lớp tầng thứ i Fi, Di: Giá trị false alarm độ xác cascade trước đến tầng thứ i Khởi tạo i=0; F0=1.0; D0 = 1.0 Lặp: while Fi>Ftarget • i = i+1; • Huấn luyện phân loại hi từ tập Pi Ni với detection rate d max false alarm f Thêm hi vào phân lớp • Dùng phân lớp có để tính Fi: Duyệt qua N mẫu negative tìm đủ n mẫu mà phân lớp có phân loại sai ( • N := • Nếu Fi >Ftarget N = { số mẫu sai stage phân loại sai } P = { số mẫu positive mà stage phân loại dúng } Minh họa thuật toán Cascade training: stage …… futher processing T F N N-1 T F F T F Reject Sub-window Hình 4: cascade of classifiers Hình minh họa huấn luyện cascade gồm N stages 14 c) Cascade of boosting classifiers: Là mô hình cascade of classifiers với classifier xây dựng Adaboost sử dụng haar-like NON-CLASS N N Y N Y N C L A S S Y I Hình 5: Cascade of boosting classifiers Viola Jones sử dụng thành công cascade of boosting classifiers cho toán nhận dạng mặt người Với tập huấn luyện gồm 4196 hình mặt người đưa ảnh grayscale kích thước 24 x 24 9500 hình background, hai ông xây dựng cấu trúc cascade tree gồm 38 stage với tổng cộng 6060 đặc trưng haar-like Thực nghiệm cho thấy classifier stage sử dụng đặc trưng loại khoảng 50% mẫu background (không phải mặt người) có độ xác d = 100% Classifier stage thứ sử dụng 10 đặc trưng loại 80% mẫu background với độ xác d= 100% Hệ thống so sánh với hệ thống Rowley-Baluja-Kanade (sử dụng mạng neural), Schneiderman-Kanade (sử dụng phương pháp thống kê), cho thấy tỉ lệ nhận dạng ngang nhau, 15 hệ thống Viola Jones chạy nhanh đến 15 lần so với hệ thống Rowley-Baluja-Kanade nhanh 600 lần hệ thống Schneiderman-Kanade Lý mà cấu trúc cascade đạt tốc độ nhận dạng nhanh nhờ sớm loại bỏ mẫu background đơn giản (thường có số lượng lớn nhiều so với mẫu chứa object – mẫu chưa khuôn mặt cần tiến hành nhận dạng) Bên cạnh đó, hệ thống Viola Jones đạt độ xác cao nhờ vào thuật toán cascade training, nhận dạng huấn luyện AdaBoost với đặc trưng Haar-like mô tả tốt thông tin đối tượng, với cách Integral Image tính nhanh đặc trưng, không làm giảm tốc độ nhận dạng hệ thống Như vậy, mô hình Cascade of Boosted Classifiers thật cách tiếp cận tốt tốc độ lẫn khả nhận dạng, phù hợp với nhận dạng mặt người Chương II: ỨNG DỤNG THỰC NGHIỆM Sử dụng Opencv chương trình đơn giản phát khuôn mặt python a) 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 detect MultiScale 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 toán Khi quét 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 khuôn mặt có ảnh ( tất nhiên phụ thuộc vào độ xác phương pháp) Chi tiết cách thức trình bày mục sau 16 b) Chương trình đơn giản phát khuôn mặt python: *Đây chương trình phát khuôn mặt đơn giản với đối tượng ảnh ABC.jpg: import numpy as np import cv2 3.face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_ default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') img = cv2.imread('ABC.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) 10 roi_gray = gray[y:y+h, x:x+w] 11 roi_color = img[y:y+h, x:x+w] 12 eyes = eye_cascade.detectMultiScale(roi_gray, 1.3, 5) 13 for (ex,ey,ew,eh) in eyes: 14 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2) 15 cv2.imshow('ABC',img) 16 cv2.waitKey(0) 17 cv2.destroyAllWindows() Trước phân tích chương trình ta tìm hiểu hàm detectMultiScale phần tìm kiếm khuôn mặt, hàm (hay phương thức) thuộc lớp CascadeClassifier (lớp phục vụ tìm kiếm đối tượng Opencv), hàm có nguyên mẫu với tham số sau: cvHaarDetectObjects ( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double scale_factor CV_DEFAULT(1.1), int min_neighbors CV_DEFAULT(3), int flags 17 CV_DEFAULT(0), CvSize min_size CV_DEFAULT(cvSize (0,0))); 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: Tên Xây Kích dựng cỡ ảnh cho sử phận dụng haarcascade-eye.xml Mắt 25x15 haarcascade_frontalface_default.xm l frontalEyes35x16.xml Mặt 20x20 Mắt 35x16 ojol.xml ojoD.xml Mắt Mắt 18x12 18x12 Mouth.xml Miệng 25x15 Nariz.xml Mũi 25x15 Xây Thông dựng tin khác lượng positive sample Trực diện Trực diện Trực diện 7000 Mắt trái 7000 Mắt phải 7000 Trực diện 7000 Trực diện 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… 18 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 kích 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 để lớn tốc độ chương trình tăng lên số lần quét 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 lớn Nếu để thấp ta không bỏ sót khuôn 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 Trong trình tìm kiếm khuôn mặt chương trình tìm nhiều khung hình chữ nhật chứa khuôn mặt cho dù khuôn mặt có trường hợp nhận diện nhầm Nếu ta để tham số min_neighbors=0 cho hàm tìm khuôn mặt tức để nguyên tìm sau quét kết quả: 19 Như tham số gộp lại hình chữ nhật chứa khuôn mặt hình chữ nhật cho khuôn mặt Đồng thời loại bỏ bớt kết sai kết sai cho khung hình chữ nhật kết có nhiều khung hình lân cận bao lấy Ví dụ hình chữ nhật nhỏ tường hình Việc phát khuôn mặt video hay camera tương tự ảnh, video chuỗi liên tiếp hình ảnh hiển thị (frame hình) Ta làm vòng lặp để thực phát khuôn mặt frame hình liên tiếp đưa kết liên tiếp 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, khuôn mặt có diện tích vượt qua kích thướckhung không phát Những tham số tham số quan trọng hàm *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 20 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 file xml cho đối tượng Dòng đọc ảnh cần tìm khuôn 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 khuôn 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 8,9 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  Chúng ta xác định xong khuôn mặt có ảnh Dòng 10,11 ta tạo roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] biến ảnh màu ảnh xám khuôn mặt tìm thấy Và việc tìm kiếm mắt thực khuôn mặt tìm thấy quét toàn ảnh ban đầu tìm kiếm mặt Dòng 12,13,14 tương tự tìm kiếm vẽ khung hình chữ nhật chứa mắt với màu khác Dòng 15 dùng hàm hiển thị ảnh vẽ xong lên cửa sổ window có tên ABC Dòng 16,17 đợi ấn nút để thoát chương trình, xóa cửa sổ hiển thị Kết hiển thị: 21 *Dưới chương trình phát khuôn mặt lấy đối tượng hình ảnh từ camera máy tính hiển thị: import numpy as np import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') video_capture = cv2.VideoCapture(0) while True: ret, frame = video_capture.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 22 faces =face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: cv2.rectangle(frame, (x,y),(x+w,y+h),(255,0,0),2) cv2.imshow('video',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break video_capture.release() cv2.destroyAllWindows() Trong chương trình này, lớp video_capture = cv2.VideoCapture(0) lớp xử lý frame hình lấy từ webcam mặc định máy tính Trong vòng lặp, thực lấy ảnh đầu vào frame hình từ webcam hàm frame = video_capture.read() Sau việc phát khuôn mặt frame hình thực tương tự ảnh bình thường chương trình Sau kết hiển thị, chương trình tiếp tục nhận frame hình tiếp theo, phát hiển thị.Vòng lặp thực liên tục cho video với khuôn mặt phát Chương III: TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN 1) Tổng kết: *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 toán phát mặt người ảnh 23 *Kết đạt chưa cao, khung hình có xuất hai khuôn mặt trở lên khó khăn việc lựa chọn thông số kích thước khung cửa sổ tăng lên để phát khuôn mặt cách xác Hơn nữa, nhận diện khuôn mặt webcam, đối tượng di chuyển, góc nghiêng khuôn mặt 20 độ điều kiện ánh sáng yếu việc nhận dạng trở nên khó Tuy tồn hạn chế bước để đến xây dựng toán “Phát khuôn mặt người” tương lai *Liện hệ thực tế so sánh với phương pháp khác: Học theo adaboost cách hướng tiếp cận dựa diện mạo, Viola Jones dùng AdaBoost kết hợp cascade để xác định khuôn mặt người với đặc trưng dạng Haar wavelet-like Tốc độ xử lý nhanh tỷ lệ xác 80% ảnh xám Ngoài có số phương pháp khác nhận dạng hướng tiếp cận dựa diện mạo sau: a) Mạng Neural: Về mạng Neural mạng phần tử (gọi neuron) kết nối với thông qua liên kết (các liên kết gọi trọng số liên kết) để thực công việc cụ thể Khả xử lý mạng neuron hình thành thông qua trình hiệu chỉnh trọng số liên kết neuron, nói cách khác học từ tập hợp mẫu huấn luyện Mạng Neural hay sử dụng toán nhận dạng mẫu, nhận dạng mặt người xem toán nhận dạng với hai loại mẫu (mặt người mặt người) sử dụng mạng Neural hiệu kể mẫu khuôn mặt có độ phức tạp cao Tuy nhiên, điều trở ngại kiến trúc mạng có tính tổng quát cao, đó, áp dụng ta phải tính toán rõ số lượng tầng, số lượng node, tỷ lệ học … cho trường hợp cụ thể b) Support Vector Machine: Support Vector Machine ( SVM ) Vladimir Vapnik đưa vào năm 1995 để giải vấn đề nhận dạng mẫu hai lớp sử dụng nguyên tắc cực tiểu hóa rủi ro cấu trúc (Structural Risk Minimization) Đây phương pháp tiếp cận phân loại 24 văn hiệu Ưu điểm SVM giải thuật xây dựng ý tưởng cực tiểu rủi ro cấu trúc Nguồn gốc SVM dựa chắn lỗi xác, phân loại ngẫu nhiên mẫu đối tượng chọn mà lỗi giữ cho nhỏ Vì vậy, giải thuật SVM giúp giảm thiểu biên lỗi xác làm cho hệ thống tin cậy Cho trước tập huấn luyện, ảnh biểu diễn dạng vector Trong không gian vector, vertor biểu diễn điểm Phương pháp SVM tìm siêu phẳng định để phân chia không gian vector thành hai lớp (khuôn mặt khuôn mặt) Chất lượng siêu phẳng phụ thuộc vào khoảng cách vector, tức phụ thuộc vào đặc trưng ảnh Support Vector Machine Osuna áp dụng (để xác định khuôn mặt người) SVM xem kiểu phân loại hầu hết phương pháp phân loại khác dùng tiêu chí tối thiểu lỗi huấn luyện (rủi ro kinh nghiệm), SVM dùng quy nạp (được gọi tối thiểu rủi ro cấu trúc) Phân loại SVM phân loại tuyến tính, dùng siêu phẳng để tách liệu Dựa số kết hợp có trọng số tập nhỏ vector huấn luyện, vector gọi support vector Ước lượng siêu phẳng SVM tương đương giải toán tuyến tính bậc hai Osuna phát triển phương pháp SVM cách hiệu cho toán xác định khuôn mặt người Ông dùng 10,000,000 mẫu có kích thước 19 x19 pixel, hệ thống ông có tỷ lệ lỗi nhanh nhiều c) Phân loại Bayes: Bayes phân loại tuyến tính dựa xác xuất Tư tưởng dựa vào xác xuất đặc trưng xuất khuôn mặt Đây phương pháp đơn giản, cài đặt không phức tạp, tốc độ nhanh, với tập huấn luyện lớn cho kết tương đối xác Một nghiên cứu điển hình dùng phân loại Bayes vào xác định mặt người hướng tiếp cận dựa diện mạo nghiên cứu Schneiderman Kanade Hai ông mô tả phân loại Naïve Bayes để ước lượng xác xuất 25 chung diện mạo cục vị trí mẫu (các vùng khuôn mặt) nhiều độ phân giải khác Ứng với độ phân giải, khuôn mặt người chia thành bốn vùng chữ nhật, vùng chiếu xuống không gian có số chiều bé lượng tử hóa thành tập mẫu có giới hạn Sau thống kê vùng chiếu để mã hóa diện mạo cục Nếu xác xuất đạt lớn xác xuất tiền nghiện kết luận có khuôn mặt người Hướng tiếp cận cho phép xác định khuôn mặt bị xoay góc nhìn nghiêng 2) Hướng phát triển: Có nhiều hướng phát triển cho chương trình này, phát triển mặt ứng dụng mặt thuật toán (để cải thiện hiệu phát mặt người) Có thể xây dựng ứng dụng cần đến phát mặt người mà không cần nhận dạng Ví dụ trường hợp Thầy giáo muốn kiểm tra sỉ số học sinh có mặt lớp (vì lớp đông) hệ thống tự động gán khuôn mặt người sử dụng cho khuôn mặt phát mà bỏ qua bước nhận dạng khuôn mặt Ngoài phát triển chương trình theo hướng nhận dạng khuôn mặt, xây dựng hệ thống để học đặc trưng người cần nhận dạng (có thể trị gia, ca sĩ, diễn viên tiếng tội phạm điển hình) Khi thực hiện, ta đưa ảnh qua chương trình phát mặt người để phát nhanh khuôn mặt có ảnh, sau so sánh khuôn mặt với khuôn mặt mà chương trình “học” từ trước, so sánh đặc trưng hai khuôn mặt, trùng đưa thông tin khuôn mặt nhận dạng Hướng mang đến thành quan trọng lĩnh vực an ninh cần thiết lĩnh vực báo chí thường xuyên săn lùng tin tức người tiếng 26 CHƯƠNG IV: TÀI LIỆU THAM KHẢO -Phát mặt người ảnh ứng dụng – Lê Mạnh Tuấn -Wikipedia : thuật toán Adaboost – giải thuật Haar-like – mô hình Cascade of Classifier -Báo cáo đồ án phát khuôn mặt người - Nguyễn Tri Thành LỜI CÁM ƠN Em xin chân thành cám ơn Thầy Chế Viết Nhật Anh nhiệt tình giúp đỡ, hướng dẫn kiến thức hỗ trợ thiết bị em có điều kiện hoàn thành đồ án môn học I suốt thời gian qua Được hướng dẫn thầy niềm vinh dự không nhỏ riêng cá nhân em 27 28 [...]... 2) Hướng phát triển: Có nhiều hướng phát triển cho chương trình này, có thể phát triển cả về mặt ứng dụng và mặt thuật toán (để cải thiện hiệu quả phát hiện mặt người) Có thể xây dựng một ứng dụng chỉ cần đến phát hiện mặt người mà không cần nhận dạng Ví dụ như trong trường hợp Thầy giáo chỉ muốn kiểm tra sỉ số học sinh đang có mặt tại lớp (vì lớp quá đông) thì hệ thống sẽ tự động gán khuôn mặt người... các khuôn mặt phát hiện được mà bỏ qua bước nhận dạng những khuôn mặt đó Ngoài ra có thể phát triển chương trình theo hướng nhận dạng khuôn mặt, xây dựng một hệ thống để học các đặc trưng của những người cần nhận dạng (có thể là chính trị gia, ca sĩ, diễn viên nổi tiếng hoặc tội phạm điển hình) Khi thực hiện, đầu tiên ta đưa bức ảnh qua chương trình phát hiện mặt người để phát hiện nhanh các khuôn mặt. .. trên Việc phát hiện khuôn mặt trên video hay camera cũng tương tự như trên một bức ảnh, vì video là chuỗi liên tiếp những hình ảnh được hiển thị (frame hình) Ta làm một vòng lặp để thực hiện phát hiện khuôn mặt trên những frame hình liên tiếp và cũng đưa kết quả ra liên tiếp min_size là kích thước nhỏ nhất của khung cửa sổ phát hiện khuôn mặt, khung sẽ bắt đầu quét từ kích thước này, mọi khuôn mặt có... III: TỔNG KẾT VÀ HƯỚNG PHÁT TRIỂN 1) Tổng kết: *Trên cơ sở nghiên cứu về bài toán phát hiện mặt người trong ảnh Đặc biệt là thuật toán Adaboost, các đặc trưng haar-like và mô hình Cascade of Classifier, áp dụng thành công mô hình Cascade of Classfier vào bài toán phát hiện mặt người trong ảnh 23 *Kết quả đạt được chưa cao, trong một khung hình nếu có sự xuất hiện của hai khuôn mặt trở lên thì sẽ khó... lặp, thực hiện lấy ảnh đầu vào là frame hình từ webcam bằng hàm frame = video_capture.read() Sau đó mọi việc phát hiện khuôn mặt trên frame hình này thực hiện tương tự như trên một ảnh bình thường ở chương trình đầu tiên Sau khi kết quả được hiển thị, chương trình tiếp tục nhận frame hình tiếp theo, phát hiện rồi hiển thị.Vòng lặp được thực hiện liên tục cho ra một video với khuôn mặt được phát hiện Chương... có thể phát hiện được khuôn mặt một cách chính xác Hơn nữa, khi nhận diện khuôn mặt bằng webcam, nếu đối tượng di chuyển, góc nghiêng khuôn mặt quá 20 độ hoặc trong điều kiện ánh sáng quá yếu thì việc nhận dạng trở nên khó hơn Tuy tồn tại những hạn chế trên nhưng đây là từng bước đi đầu tiên để đi đến xây dựng bài toán Phát hiện khuôn mặt người” trong tương lai *Liện hệ thực tế và so sánh với các... DỤNG THỰC NGHIỆM 1 Sử dụng Opencv và chương trình đơn giản phát hiện khuôn mặt bằng python a) Phương pháp Haar like -Adaboost trong 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 cài sẵn trong bộ thư viện Opencv Để sử dụng phương pháp này trong Opencv ta sử dụng hàm detect MultiScale Phát hiện khuôn mặt trong một bức ảnh, cách thức là chương trình sẽ tạo một... sánh các khuôn mặt đó với các khuôn mặt mà chương trình đã được “học” từ trước, so sánh các đặc trưng của hai khuôn mặt, nếu trùng thì đưa ra thông tin về khuôn mặt được nhận dạng Hướng đi này sẽ mang đến những thành quả quan trọng trong lĩnh vực an ninh hoặc khá cần thiết trong lĩnh vực báo chí khi thường xuyên săn lùng những tin tức về người nổi tiếng 26 CHƯƠNG IV: TÀI LIỆU THAM KHẢO -Phát hiện mặt người... nhiều những khung hình chữ nhật chứa khuôn mặt cho dù đó chỉ là một khuôn mặt và có những trường hợp nhận diện nhầm Nếu ta để tham số min_neighbors=0 cho hàm tìm khuôn mặt tức là để nguyên những gì tìm được sau khi quét thì sẽ được kết quả: 19 Như vậy tham số này sẽ gộp lại những hình chữ nhật chứa cùng một khuôn mặt để chỉ cho ra một hình chữ nhật cho 1 khuôn mặt Đồng thời nó sẽ loại bỏ bớt đi những... có trong bức ảnh ( tất nhiên còn phụ thuộc vào độ chính xác của phương pháp) Chi tiết cách thức này được trình bày trong mục sau 16 b) Chương trình đơn giản phát hiện khuôn mặt bằng python: *Đây là một chương trình phát hiện khuôn mặt đơn giản với đối tượng là một ảnh ABC.jpg: 1 import numpy as np 2 import cv2 3.face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_ default.xml') 4 eye_cascade ... 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 kỹ thuật phát khuôn mặt b) Thuật toán: Điểm cải tiếng Adaboost ta gán... việc phát khuôn mặt người cần thiết Phát mặt người toán đơ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 mặt người Ở mức độ cao hơn, khuôn mặt sau phát đem so sánh với khuôn. .. Khi thực hiện, ta đưa ảnh qua chương trình phát mặt người để phát nhanh khuôn mặt có ảnh, sau so sánh khuôn mặt với khuôn mặt mà chương trình “học” từ trước, so sánh đặc trưng hai khuôn mặt, trùng

Ngày đăng: 03/04/2016, 22:03

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan