BÁO CÁO ĐỒ ÁN CƠ CỞ 5 ĐỀ TÀI : NHẬN DIỆN KHUÔN MẶT SỬ DỤNG OPENCV. Giảng viên hướng dẫn: NGUYỄN ANH TUẤN

35 8 0
BÁO CÁO ĐỒ ÁN CƠ CỞ 5 ĐỀ TÀI : NHẬN DIỆN KHUÔN MẶT SỬ DỤNG OPENCV. Giảng viên hướng dẫn: NGUYỄN ANH TUẤN

Đ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

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN BÁO CÁO ĐỒ ÁN CƠ CỞ ĐỀ TÀI : NHẬN DIỆN KHUÔN MẶT SỬ DỤNG OPENCV Sinh viên thực hiện: Đinh Văn Thảo – 18IT037 Đào Đức Thiện – 18IT038 Giảng viên hướng dẫn: NGUYỄN ANH TUẤN Lớp: 18IT1 Đà nẵng, tháng năm 2021 MỞ ĐẦU Lý chọn đề tài Một toán nhiều người quan tâm lĩnh vực xử lý ảnh nhận dạng khn mặt (Face Recognition) Như biết, khn mặt đóng vai trị quan trọng q trình giao tiếp người với người, mang lượng thơng tin giàu có, chẳng hạn từ khn mặt xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt xác định mối quan hệ với đối tượng (có quen biết hay khơng) Do đó, tốn nhận dạng khn mặt đóng vai trị quan trọng nhiều lĩnh vực đời sống ngày người hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin người tiếng,…đặc biệt an ninh, bảo mật Có nhiều phương pháp nhận dạng khuôn mặt để nâng cao hiệu suất nhiên dù hay nhiều phương pháp vấp phải thử thách độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng tham số mơi trường Bài tốn Nhận diện khn mặt (Face Recognition) bao gồm nhiều toán khác như: phát mặt người (face detection), đánh dấu (facial landmarking), trích chọn (rút) đặc trưng (feature extration), gán nhãn, phân lớp (classification) Trong thực tế, nhận dạng khuôn mặt người (Face Recognition) hướng nghiên cứu nhiều nhà khoa học quan tâm, nghiên cứu để ứng dụng thực tiễn Ở trường đại học hàng đầu Công Nghệ Thông Tin Massachusetts Institute of Technology (MIT), Carnegie Mellon University (CMU), Standford, Berkeley công ty lớn Microsoft, Apple, Google, Facebook có trung tâm sinh trắc học (Biometrics Center) nghiên cứu nhận dạng khn mặt người trở thành lĩnh vực nghiên cứu Gần đây, công ty Hitachi Kokusai Electric Nhật cho đời camera giám sát, chụp ảnh tìm 36 triệu khn mặt khác có nét tương tự sở liệu vịng giây Có hai phương pháp nhận dạng phổ biến nhận dạng dựa đặc trưng phần tử khuôn mặt biến đổi Gabor Wavelet mạng Neural, SVM,…và nhận dạng dựa xét tổng thể tồn khn mặt phương pháp PCA, LDA, LFA Trong đó, PCA phương pháp trích rút đặc trưng nhằm giảm số chiều ảnh đơn giản mang lại hiệu tốt Hệ thống hoạt động ổn định có tính thích nghi cao liệu đầu vào thay đổi nhiều 1.1 Mục đích đề tài - Xây dựng dự án phần mềm ứng dụng nhận diện khn mặt - Tìm hiểu thư viện OpenCv, phần mềm EmguCV - Nghiên cứu phương pháp xác định khuôn mặt (Face Detection) - Nghiên cứu phương pháp phân tích thành phần (Principal Component Analysic- PCA) Đối tượng phạm vi nghiên cứu a) Đối tượng: - Các phương pháp, thuật toán phục vụ cho việc phát nhận dạng khuôn mặt người ảnh - Bộ thư viện xử lý ảnh OpenCv công cụ hỗ trợ EmguCv - Bộ CSDL chuẩn Yalefaces, ngồi có thêm CSDL sinh viên tự thu thập b) Phạm vi nghiên cứu: - Tập trung tìm hiểu nhận dạng khn mặt (Face Recognition) khơng trọng tìm hiểu phát khn mặt (Face Detection) - Việc xử lý ảnh, nhận dạng khuôn mặt thỏa mãn điều kiện: Ánh sáng bình thường, ngược sáng, ánh sáng đèn điện (Với CSDL tự thu thập) Góc ảnh: Trực diện (frontal) góc nghiêng khơng q 10o Khơng bị che khuất (no occulusion) Ảnh có chất lượng cao (high quality images) LỜI CẢM ƠN Để thực hoàn thành tốt đồ án này, em nhận giúp đỡ hướng dẫn tận tình thầy thuộc Đại học Công Nghệ Thông Tin Và Truyền Thông Việt Hàn Em xin cảm ơn thầy cô thuộc môn chuyên ngành cung cấp cho chúng em thông tin, kiến thức vô quý báu cần thiết suốt thời gian để em thực hồn thành đồ án Đặc biệt em xin chân thành cảm ơn thầy Trần Thế Sơn người trực tiếp hướng dẫn chúng em thời gian thực đồ án Cuối cùng, xin chân thành cảm ơn bạn ngành công nghệ thông tin ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm tài liệu có giúp chúng tơi trình nghiên cứu thực đề tài Vì lí giới hạn mặt thời gian kiến thức kinh nghiệm thực tiễn nên đề tài khơng tránh khỏi sai xót Em mong nhận thông cảm quý thầy cô mong đón nhận góp ý thầy bạn Em xin chân thành cảm ơn! NHẬN XÉT (Của giảng viên hướng dẫn) ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… Chữ ký giảng viên hướng dẫn (Ký ghi rõ họ tên) MỤC LỤC Trang Mục đích đề tài Lý chọn đề tài Đối tượng phạm vi nghiên cứu Chương GIỚI THIỆU 1.1 Bài toán nhận dạng mặt người khó khăn 1.1.1 Bài toán nhận dạng mặt người 1.1.2 Những khăn hệ thống nhận dạng khuôn mặt 1.2 Tổng quan kiến trúc hệ thống nhận dạng mặt người 1.2.1 Ngơn ngữ lập trình Chương Tổng quan xử lý ảnh 2.1 Xử lý ảnh, vấn đề xử lý ảnh 2.1.1 Xử lý ảnh ? 2.1.2 Các vấn đề xử lý ảnh Chương Làm quen với thư viện Open CV 10 3.1 Giới thiệu OpenCV 10 3.1.1 OpenCV ? 10 3.1.2 Cấu trúc tổng quan 10 3.2 Hướng dẫn sử dụng thư viện OpenCV 11 Chương :Ứng dụng thực nghiệm .18 4.1 Sử dụng OpenCV chương trình đơn giản phát khn mặt python 18 4.1.1 Phương pháp Haar like-Adaboost Opencv 18 4.1.2 Chương trình đơn giản phát khuôn mặt python .18 Chương Xây dựng chương trình Mơ Phỏng 23 5.1 Xây dựng chương trình 23 5.1.1 Phân tích 23 5.2 Thiết kế hệ thống 23 5.2.1 Xử lý ảnh đầu vào 24 5.2.2 Phát khuôn mặt ảnh .26 5.2.3 Xử lý đầu 28 5.2.4 Thiết kế sở liệu 28 5.2.5 Thiết kế giao diện chương trình 28 Chương Kết luận 30 Chương GIỚI THIỆU 2.1 Bài toán nhận dạng mặt người khó khăn 2.1.1 Bài tốn nhận dạng mặt người Hệ thống nhận dạng mặt người hệ thống nhận vào ảnh đoạn video (một dòng hình ảnh liên tục) Qua xử lý, tính tốn hệ thống xác định vị trí mặt người (nếu có) ảnh xác định người số người mà hệ thống biết (qua trình học) người lạ Hình Hệ thống nhận dạng mặt người 2.1.2 Những khăn hệ thống nhận dạng khn mặt Bài tốn nhận dạng mặt người toán nghiên cứu từ năm 70 Tuy nhiên, tốn khó nên nghiên cứu chưa đạt kết mong muốn Chính thế, vấn đề nhiều nhóm giới quan tâm nghiên cứu Khó khăn tốn nhận dạng mặt người kể đến sau: a.Tư chụp, góc chụp: Ảnh chụp khn mặt thay đổi nhiều góc chụp camera khuôn mặt Chẳng hạn : chụp thẳng, chụp chéo bên trái 45 độ hay chụp chéo bên phải 45 độ, chụp từ xuống, chụp từ lên,V.v… Với tư khác nhau, thành phần khn mặt mắt, mũi, miệng, bị khuất phần chí khuất hết b Sự xuất thiếu số thành phần khuôn mặt: đặc trưng : râu mép, râu hàm, mắt kính,v.v… xuất khơng Vấn đề làm cho tốn trở nên khó nhiều c.Sự biểu cảm khuôn mặt: Biểu cảm khn mặt người làm ảnh hưởng đáng kể lên thông số khuôn mặt Chẳng hạn, khn mặt người, khác họ cười sợ hãi, v.v… d Sự che khuất: Khn mặt bị che khuất đối tượng khác khuôn mặt khác e Hướng ảnh (pose variations): Các ảnh khuôn mặt biến đổi nhiều với góc quay khác trục camera Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục ảnh f Điều kiện ảnh: Ảnh chụp điều kiện khác về: chiếu sáng, tính chất camera (máy kỹ thuật số, máy hồng ngoại, v.v…), ảnh có chất lượng thấp ảnh hưởng nhiều đến chất lượng ảnh khuôn mặt g Aging condition: Việc nhận dạng ảnh mặt thay đổi theo thời gian cịn vấn đề khó khăn, khả nhận dạng người h Các hệ thống cực lớn (very large scale systems): Các CSDL ảnh mặt test nhà nghiên cứu cịn nhỏ (vài trăm tới vài chục nghìn ảnh mặt), nhiên thực tế CSDL lớn, ví dụ CSDL ảnh mặt cảnh sát đất nước chứa từ hàng triệu tới tỉ ảnh… 2.2 Tổng quan kiến trúc hệ thống nhận dạng mặt người Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý sau: Phát khuôn mặt (Face Detection) Phân đoạn khuôn mặt (Face Alignment hay Segmentation) Trích chọn đặc trưng (Feature Extraction) Nhận dạng (Recognition) hay Phân lớp khn mặt (Face Clasaification) Hình Các bước hệ thống nhận dạng khn mặt Phát khn mặt dị tìm, định vị vùng (vị trí) khn mặt xuất ảnh frame video Các vùng tách riêng để xử lý Phân đoạn khuôn mặt xác định vị trí mắt mũi, miệng thành phần khác khuôn mặt chuyển kết cho bước trích chọn đặc trưng Ở bước trích chọn đặc trưng, phương pháp trích chọn đặc điểm (mẫu nhị phân cục bộ-Local Binary Pattern-LBP, Gabor wavelets…) sử dụng với ảnh mặt để trích xuất thơng tin đặc trưng cho ảnh từ thông tin thành phần khuôn mặt, kết ảnh biểu diễn dạng vector đặc trưng (feature vector) Những vecto đặc trưng liệu đầu vào cho mơ hình huấn luyện trước để nhận dạng khuôn mặt (Face Recognition) hay phân lớp khuôn mặt (Face Classifition), tức xác định danh tính (identity) hay nhãn ảnh-đó ảnh Ở bước nhận dạng khn mặt (Face Recognition), thường phương pháp k-láng giềng gần (k-nearest neighbor:kNN) sử dụng Bên cạnh bước nêu trên, cịn áp dụng thêm số bước khác tiền xử lý, hậu xử lý nhằm làm tăng độ xác cho hệ thống Ví dụ, sau bước phát khn mặt, ta thực bước tiền xử lý (Preprocessing) bao gồm bước chỉnh ảnh (face image alignment) chuẩn hóa ánh sáng (illumination normalization) Do số thông số như: tư khuôn mặt, độ sáng, điều kiện ánh sáng, v.v… phát khuôn mặt đánh giá bước khó khăn quan trọng so với bước lại hệ thống Tuy nhiên, phạm vi đồ án này, không tập trung tìm hiểu bước phát khn mặt mà tập trung chủ yếu vào bước nhận dạng khuôn mặt Dữ liệu cho hệ thống nhận dạng mặt chia làm tập: tập huấn luyện (training set), tập tham chiếu (reference set haygallery set) tập để nhận dạng (probe set hay query set, đơi cịn gọi test set) Trong nhiều hệ thống, tập training trùng với tập reference Tập training gồm ảnh dùng để huấn luyện (hay học-learning), thông thường tập dùng để sinh không gian (projection subspace) ma trận phương pháp hay sử dụng PCA (Principal Component Analysis), WPCA (Whitened PCA), LDA (Linear Discriminant Analysis), KPCA (Kernel PCA) Tập reference gồm ảnh biết danh tính chiếu (projected) vào khơng gian bước training Bước training nhằm mục đích: giảm số chiều (dimension reduction) vector đặc điểm (feature vector) vector thườngcó độ dài lớn (vài nghìn tới vài trăm nghìn) nên để ngun việc tính tốn rất lâu, thứ hai làm tăng tính phân biệt (discriminative) ảnh khác lớp (định danh khác nhau), ngồi làm giảm tính phân biệt ảnh thuộc lớp (tùy theo phương pháp, ví dụ Linear Discriminant Analysis LDAcòn gọi Fisher Linear Discriminant Analysis-Fisherface phương pháp làm việc với tập training mà đối tượng có nhiều ảnh mặt điều kiện khác nhau) Sau thực chiếu tập reference vào không gian con, hệ thống lưu lại kết ma trận với cột ma trận vector tương ứng với ảnh (định danh biết) để thực nhận dạng (hay phân lớp) Nhận dạng (hay phân lớp) thực với tập ảnh probe, sau tiền xử lý xong, ảnh áp dụng phương pháp trích chọn đặc điểm (như với ảnh thuộc tập training reference) chiếu vào không gian Tiếp đến việc phân lớp dựa phương pháp k-NN, định danh ảnh cần xác định gán định danh ảnh có khoảng cách (distance) gần với Ở cần lưu ý ảnh vector nên dùng khái niệm hàm khoảng cách hai vector để đo khác biệt ảnh 2.2.1 Ngơn ngữ lập trình Để giải tốn nhận dạng khn mặt sử dụng thư viện OpenCV, sử dụng ngơn ngữ lập trình như: NET C#, VB, IronPython, Java, C++… Trong đồ án ngơn ngữ lập trình sử dụng NET C#, viết phần mềm Visual Studio 2013 C Một số ví dụ - Khai báo biến chứa ảnh : Private Image MyImage; Image lớp ảnh thư viện OpenCV, Color hệ màu, Depth độ sâu màu Dòng bên nghĩa khai báo đối tượng MyImage, đối tượng thuộc lớp ảnh, có hệ màu RGN (red, green, blue) độ sâu màu Byte, tức giá trị pixel nằm đoạn [0, 255] Đối với ảnh xám (grayscale), ta khai báo sau: private Image MyImage; Trong giá trị Pixel độ sáng pixel đó, với tối (đen), 255 sáng (trắng) - Viết code cho kiện bấm nút hiển thị hộp thoại ảnh, sau hiển thị ảnh vừa chọn lên ImageBox: 15 - Nội dung chương bao gồm nội dung : Giới thiệu thư viện xử lý ảnh OpenCV Giới thiệu, hướng dẫn cài đặt, sử dụng phần mềm EmguCv phần mềm hỗ trợ giúp người dùng sử dụng thự viện OpenCV cách dễ dàng Hướng dẫn cách sử dụng thư viện OpenCv Visual Studio(Với hình minh họa Visual Studio 2010) Hướng dẫn cách lấy Control thư viện OpenCV thêm vào ToolBox Một số đoạn code ví dụ, sử dụng thư viện OpenCV chương trình Chương :Ứng dụng thực nghiệm 16 5.1 Sử dụng OpenCV chương trình đơn giản phát khuôn mặt python 5.1.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 5.1.2 Chương trình đơn giản phát khn mặt python  Đây chương trình phát khn mặt đơn giản với đối tượng ảnh ABC.jpg: import numpy as np import cv2 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() 17 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), hàm có nguyên mẫu với tham số sau: 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 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 khn 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 quét giảm đi, nhiên chương trình bỏ qua khơng phát số khn 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 để 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 18 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 qt 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 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 Như xác định xong khn 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 khn mặt tìm thấy khơng phải qt tồ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 để chương trình, xóa cửa sổ hiển thị Kết chương trình: 19 Quay lại với tham số 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 khn mặt chương trình tìm nhiều khung hình chữ nhật chứa khn mặt cho dù khn 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 khn mặt tức để ngun tìm sau quét kết quả: Như tham số gộp lại hình chữ nhật chứa khuôn mặt hình chữ nhật cho khn mặt Đồng thời loại bỏ bớt kết sai kết sai cho khung hình chữ nhật cịn 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 20 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 khn mặt frame hình liên tiếp đưa kết liên tiếp Dưới chương trình phát khn 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) 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 khn 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 21 Chương Xây dựng chương trình Mơ Phỏng 6.1 Xây dựng chương trình 6.1.1 Phân tích Nhiệm vụ chương trình nhận dạng khn mặt người xem khn mặt có biết đến hay chưa Ngồi ra, chương trình cịn thực cơng việc phát hiện, tách khn mặt người (nếu có) từ ảnh tĩnh, từ frame ảnh thu từ camera Sau đó, lưu vào CSDL làm tập mẫu     Sơ đồ ngữ cảnh hệ thống Như vậy, chức chương trình bao gồm : Lấy ảnh từ máy tính, kết nối đến webcam hiển thị lên ImageBox Thực tách khn mặt ImageBox (nếu có) Thực lưu khuôn mặt phát vào CSDL Thực xóa, đổi tên… Nhận dạng ảnh khn mặt Nếu “biết” người (có lưu thơng tin CSDL) hiển thị tên ảnh người Nếu “khơng biết” (khơng có thơng tin người CSDL) hiển thị màu đen lên hình tên người là: “Unknow” 6.2 Thiết kế hệ thống Với chức nêu trên, chương trình chia thành phần chính: 1.Xử lý ảnh đầu vào Phát khuôn mặt Xử lý đầu ( Ảnh đầu dùng để nhận dạng, hay lưu vafo CSDL, hay hai) 22 Hình sơ đồ khối thực chương trình 6.2.1 Xử lý ảnh đầu vào Đầu vào hệ thống ảnh chứa khuôn mặt cần xử lý, ảnh ảnh tĩnh, lấy từ nhớ máy tính frame ảnh bắt từ dịng hình ảnh camera Sau có ảnh đầu vào bắt đầu tiến hành tìm kiếm, phát khn mặt ảnh 23 Hình : Lưu đồ giải thuật chọn ảnh đầu vào  Code thực chức 24 6.2.2 Phát khuôn mặt ảnh Sau nhận ảnh đầu vào, hệ thống thực chức phát khn mặt có ảnh Như nói phần Giới Thiệu, toán phát mặt người ảnh tốn khó, nên ta khơng sâu tìm hiểu cách giải tốn Ở đây, ta sử dụng phương pháp tiếp cận dựa diện mạo (appearance-based) thực nhanh thuật tốn adaboost thơng qua hàm cvHaarObjects() thư viện OpenCV Hàm thực việc phát đối tượng dựa đặc trưng haar-like, cụ thể nhờ vào Cascade truyền vào cho hàm Bộ Cascade xây dựng theo dạng (tree-node) huấn luyện từ trước Việc huấn luyện Cascade thực từ liệu thu thập để phục vụ cho q trình nhận dạng Ví dụ, muốn nhận dạng người A, ta thu thập ảnh khuôn mặt người A với nhiều tư thế, góc chụp điều kiện chụp khác nhau, sau cho nhận dạng học theo thuật tốn Cascade training Kết thu ta có mơ hình nhận diện, sử dụng để nhận dạng đối tượng  Code thực chức năng: 25  Hàm thực chức phát mặt người dịng hình ảnh camera 26 6.2.3 Xử lý đầu Các khuôn mặt sau phát tách khỏi tranh, hiển thị lên picturebox Người dùng xem, di chuyển qua lại khuôn mặt phát ( Kể ảnh bị nhận nhầm khuôn mặt) Các khuôn mặt trước hiển thị lên picturebox chỉnh lại kích thước chuẩn hóa ( tăng chỉnh độ sáng, đưa kênh màu: ảnh xám) Ảnh sau chuẩn hóa kiểm tra nhận dạng luuw vào CSDL dạng nhị phân 6.2.4 Thiết kế sở liệu CSDL trái tim hệ thống, việc thiết kế, tổ chức CSDL ảnh hưởng lớn đến hoạt động chương trình, liệu cần lưu trữ ảnh Dù kích thước ảnh khơng lớn, số lượng ảnh cần lưu trữ lại lớn Ảnh hưởng lớn đến tốc độ truy xuất liệu Do cần thiết kế, tổ chức CSDL cách hợp lý, việc lựa chọn Hệ quản trị CSDL quan trọng Ở đây, Hệ quản trị SQL server lựa chọn để xây dựng, quản lý CSDL Đây hệ quản trị CSDL mạnh, đáp ứng nhiều yêu cầu quản lý CSDL lớn Ta cần xác đinh thông tin cần lưu trữ: Ảnh khn mặt Tên người có khn mặt phát ID xác định đối tượng Ảnh (FaceImage) Ảnh đầu vào a.Kiểu liệu : Image b Is null: true Tên người( FaceName) c Kiểu liệu : nvarchar(200); d Is null: true; Id(FaceID) e kiểu liệu : Int f Khóa g Mã tự tăng h Is null: false 6.2.5 Thiết kế giao diện chương trình Giao diện chương trình thiết kế đơn giản, dễ nhìn Bố cục giao diện chia làm phần Phần 1, dành cho người dùng chọn đầu vào, ảnh tĩnh từ máy tính, mở webcam để lấy hình ảnh Phần bao gồm phần điều chỉnh thông số phát khuôn mặt, thông số nhận dạng khuôn mặt Và cuối phần nhận dạng khuôn mặt Phần 2: Điều chỉnh thông số phát khuôn mặt - Scale Increase Rate 27 - Min Neighbors - Min Detection Scale (Window Size) Điều chỉnh thông số nhận dạng khuôn mặt - Eigen Distance Threshold: Khoảng cách ngưỡng 28 Chương Kết luận A 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 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 B 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ụ hệ thống ghép hình, ghép khn mặt phát vào ảnh khác (chẳng hạn ghép khuôn mặt người sử dụng cho khuôn mặt người tiếng) Ngồi phát triển chương trình theo hướng nhận dạng khn mặt, xây dựng hệ thống để học đặc trưng người cần nhận dạng Khi thực hiện, ta đưa qua ảnh qua chương trình phát mặt người để phát nhanh khn mặt có ảnh, sau so sách khn mặt với khn 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 khn mặt nhận dạng 29

Ngày đăng: 26/12/2021, 23:40

Mục lục

    Lý do chọn đề tài

    1.1 Mục đích đề tài

    Đối tượng và phạm vi nghiên cứu

    2.1 Bài toán nhận dạng mặt người và những khó khăn

    2.1.1 Bài toán nhận dạng mặt người

    2.2 Tổng quan kiến trúc của một hệ thống nhận dạng mặt người

    2.2.1 Ngôn ngữ lập trình

    Chương 3 Tổng quan về xử lý ảnh

    3.1 Xử lý ảnh, các vấn đề cơ bản trong xử lý ảnh

    3.1.1 Xử lý ảnh là gì ?

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

Tài liệu liên quan