Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
737 KB
Nội dung
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỠ ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG NHẬN DẠNG KHUÔN MẶT Sinh viên thực : Võ Đăng Lâm Giảng viên hướng dẫn : ThS Nguyễn Văn Bình Lớp : 17IT2 Đà nẵng, tháng năm 2020 MỞ ĐẦU Ngày với phát triển khơng ngừng cơng nghệ cụm từ trí tuệ nhân tạo khơng cịn xa lạ với học viên chun nghành cơng nghệ thơng tin chúng ta, mà ngày phát triển mạnh mẽ có xu hướng phát triển rộng giới Với lĩnh vực nhỏ người quan tâm trí tuệ nhân tạo nhận dạng khn mặt.Trong lĩnh vực này, cần dựa vào khuôn mặt người ta biết nhiều thơng tin người đó, giới tình, tuổi tác, cảm xúc người đó… Ngày , với phát triển nhanh chóng khu thị khu du lịch, quản lý người khó Nhưng với nhận diện khn mặt giúp hệ thống an ninh xác định người dựa vào khuôn mặt, hay hổ trợ cảnh sát tìm tội phạm… Vì em chọn đề tài “ Nhận diện khn mặt” với mục đích nghiên cứu , tìm hiểu cách thực hoạt động hệ thống nhận diện khuôn mặt xây dựng ứng dụng nhận diện khuôn mặt người dựa vào liệu ta đưa vào LỜI CẢM ƠN Trong thời gian làm đồ án tốt nghiệp, em nhận nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy bạn bè Em xin gửi lời cảm ơn chân thành đến ThS Nguyễn Văn Bình, người tận tình hướng dẫn, trực tiếp bảo tạo điều kiện giúp đỡ em suốt trình làm đồ án Em xin chân thành cảm ơn thầy cô khoa Công Nghệ Thông Tin Và Truyền Thông, người dạy dỗ trang bị cho em khiến thức đễ hoàn thành đề tài đồ án Mặc dù trinh nghiên cứu đề tài , thân em có cố gắng định song trình độ thời gian có hạn nên đề tài khơng tránh khỏi thiếu sót.vậy kinh mong thầy bạn đóng góp ý kiến để em hồn thiện NHẬN XÉT (Của giảng viên hướng dẫn) ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… MỤC LỤC Chương Giới thiệu 1.1 Tổng quan 1.2 Phương pháp, kết 1.3 Cấu trúc đồ án Chương Nghiên cứu tổng quan .10 2.1 Python ? 10 2.2 Tìm hiểu OpenCV ? 10 2.2.1 OpenCV gì? 10 2.2.2 Ứng dụng OpenCV .11 2.2.3 Chức OpenCV 11 2.3 Các thuật toán sữ dụng 12 2.3.1 Thuật toán phân loại Harr 12 2.3.2 Thuật toán phân loại xếp tầng 13 Chương Triển khai xây dựng 15 3.1 Xây dựng tổng quan 15 3.2 Xây dựng chi tiết 15 3.2.1 Chuyển đổi ảnh màu thành xám xác định khuôn mặt 15 3.2.2 Cắt hình gắn nhãn khn măt 16 3.2.3 Đào tạo liệu lưu lại 16 3.3.4 Thực nhận dạng khuôn mặt video .16 Chương Kết luận hướng phát triển .18 4.1 Kết luận 18 4.2 Hướng phát triển 18 DANH MỤC HÌNH Hình 1: Ứng dụng đơn giản OpenCV 11 Hình 2: Một vài tính Harr 12 Hình 3: Mẫu ví dụ 13 Hình 4: Cách hoạt động LBP .14 Hình 5: Biểu đồ mổi hình ảnh 14 Hình 6: Mơ hình tổng quan 15 Hình :Hàm phát khuôn mặt .15 Hình 8: Hàm gắn nhãn cắt lấy khn mặt tronh hình 16 Hình 9: Hàm tạo liệu ảnh .16 Hình 10: Lưu liệu thành file yml 16 Hình 11: Vẽ khung ghi tên lên ảnh 17 Hình 12: Nhận diện khuôn mặt video 17 DANH MỤC CỤM TỪ VIẾT TẮT STT Cụm từ Viết tắt Graphics Processing Unit Berkeley Software Distribution GPU BSD Compute Unified Device Architecture Local binary patterns CUDA LBP Chương Giới thiệu 1.1 Tổng quan Vơi phát triển nhanh chóng ngành cơng nghệ thơng tin khả quay thiết bị camera ngày tốt, kể điều kiện thiếu ánh sáng Thì việc áp dụng hệ thống nhận dạng vào thiết bị dễ dàng Hiện nay, nước giời xây dựng hệ thống nhận dạng khn mặt có tỉ lệ sai lệch nhỏ Và nước dẫn đầu Trung quốc đứng thứ hai Nhật Bản Áp dụng kiến thức học để phát triển ứng dụng cần thiết Bởi điều cho phép học thêm cơng nghệ mới, rèn luyện kỹ lập trình, đồng thời nâng cao kinh ngiệm học thêm kỹ quan trọng khác Chính thế, em chọn đề tài xây dựng ứng dụng nhận dạng khuôn mặt Xây dựng ứng dụng nhận dạng khuôn mặt làm cho người xây dựng phát biết tên tuổi người nhận dạng dựa vào kiệu ta đưa vào 1.2 Phương pháp, kết Phương pháp xây dựng ứng dụng bao gồm bước sau: - Tìm hiểu cơng nghệ ứng dụng để giải - toán Nghiên cứu ứng dụng nhận dạng khuôn mặt có thực tế Nghiên cứu mã nguồn mở có hỗ trợ để giải vấn đề nhận dạng - khn mặt có ảnh Ứng dụng thư viện OpenCV để xây dựng ứng dụng 1.3 Cấu trúc đồ án Phần báo cáo bao gồm: Chương 2: Nghiên cứu tổng quan Trong chương này, em giới thiệu tổng quát OpenCV Python bao gồm : • Python ? • Tìm hiểu OpenCV ? • Các thuật tốn sữ dụng Chương 3: Triển khai xây dựng Ở phần em trình mơ hình tổng quan ứng dụng cách thức triển khai Chương 4: Kết luận hướng phát triển Trong chương này, em chia thành phần Phần kết luận giới thiệu đạt hạn chế Phần hướng phát triển đưa hướng ứng dụng Chương 2.1 Nghiên cứu tổng quan Python ? Python ngơn ngữ lập trình bậc cao cho mục đích lập trình đa năng, Guido van Rossu tạo lần đầu mắt vào năm 1991 Python thiết kế với ưu điểm mạnh dễ đọc, dễ học dễ nhớ Python ngơn ngữ có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người học lập trình Cấu trúc Python cịn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu Python hoàn toàn tạo kiểu động dùng chế cấp phát nhớ tự động; tương tự Perk, Ruby Tcl Python phát triển dự án mã mở, tổ chức phi lợi nhuận Python Software Foundation quản lý Ban đầu, Python phát triển để chạy Unix Nhưng theo thời gian, Python dần mở rộng sang hệ điều hành từ MS-DOC đến Mac-Os, OS/2, Windown, Linux hệ điều hành khác thuộc họ Unix 2.2 Tìm hiểu OpenCV ? 2.2.1 OpenCV gì? OpenCV thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh máy học, tính tăng tốc GPU hoạt động thời gian thực OpenCV phát hành theo giấy phép BSD, hồn tồn miễn phí cho học thuật thương mại Nó có giao diện C++, C, Python, Java hỗ trợ Windows, Linux, Mac OS, iOS Android OpenCV thiết kế để tính tốn hiệu với tập trung nhiều vào ứng dụng thời gian thực Được viết tối ưu hóa C/C++, thư viện tận dụng lợi xử lý đa lõi Được sử dụng khắp giới, OpenCV có cộng đồng 47 nghìn người dùng số lượng download vượt triệu lần Phạm vi sử dụng từ nghệ thuật tương tác, lĩnh vực khai thác mỏ, đồ web công nghệ robot 2.2.2 Ứng dụng OpenCV OpenCV sử dụng rộng rãi ứng dụng bao gồm: • Hình ảnh street view • Kiểm tra giám sát tự động • Robot xe tự lái • Phân tích hình ảnh y tế • Tìm kiếm phục hồi hình ảnh/video • Phim - cấu trúc 3D từ chuyển động • Nghệ thuật đặt tương tác Hình 1: Ứng dụng đơn giản OpenCV 2.2.3 Chức OpenCV • Image/video I/O, xử lý, hiển thị (core, imgproc, highgui) • Phát vật thể (objdetect, features2d, nonfree) • Geometry-based monocular or stereo computer vision (calib3d, stitching, videostab) • Chụp ảnh tính tốn (photo, video, superres) • Học máy & phân cụm (ml, flann) • Tăng tốc CUDA (gpu) 2.3 Các thuật toán sữ dụng 2.3.1 Thuật toán phân loại Harr Các Haar Classifier cỗ máy tìm hiểu cách tiếp cận dựa thuật toán tạo Paul Viola Michael Jones; mà (như đề cập trước đó) đào tạo từ nhiều hình ảnh tích cực (có khn mặt) hình ảnh tiêu cực (khơng có khn mặt) Hình 2: Một vài tính Harr Mỗi cửa sổ đặt hình để tính tốn tính Tính giá trị thu cách trừ tổng số pixel phần màu trắng cửa sổ khỏi tổng số pixel phần màu đen cửa sổ Bây giờ, tất kích thước có cửa sổ đặt tất vị trí có hình ảnh để tính tốn nhiều tính AdaBoost quy trình đào tạo để nhận diện khn mặt, chọn tính biết để cải thiện độ xác phân loại (khn mặt / khơng phải khn mặt) trình phân loại chúng tơi Cuối cùng, thuật tốn xem xét thực tế nói chung: hầu hết khu vực hình ảnh khu vực đối mặt Xem xét điều này, tốt hết bạn nên có phương pháp đơn giản để kiểm tra xem cửa sổ có phải khu vực khơng có mặt hay khơng, khơng, loại bỏ khơng xử lý lại Vì vậy, tập trung chủ yếu vào khu vực có khn mặt 2.3.2 Thuật toán phân loại xếp tầng LBP mơ tả hình ảnh / kết cấu, may mắn thay, khuôn mặt bao gồm mơ hình hình ảnh vi mơ Vì vậy, tính LBP trích xuất để tạo thành vectơ đặc trưng phân loại khuôn mặt từ mặt khơng Hình 3: Mẫu ví dụ Đối với khối, LBP nhìn vào pixel (cửa sổ × 3) thời điểm với mối quan tâm cụ thể pixel nằm trung tâm cửa sổ Sau đó, so sánh giá trị pixel trung tâm với giá trị pixel hàng xóm cửa sổ × Đối với pixel lân cận lớn pixel trung tâm, đặt giá trị thành pixel khác, đặt chúng thành Sau đó, đọc giá trị pixel cập nhật (có thể 1) theo thứ tự theo chiều kim đồng hồ tạo thành số nhị phân Tiếp theo, chuyển đổi số nhị phân thành số thập phân số thập phân giá trị pixel trung tâm Chúng làm điều cho pixel khối Hình 4: Cách hoạt động LBP Sau đó, chuyển đổi giá trị khối thành biểu đồ , nhận biểu đồ cho khối hình ảnh Hình 5: Biểu đồ mổi hình ảnh Cuối cùng, ghép biểu đồ khối để tạo thành vectơ đặc trưng cho hình ảnh, có tất tính mà quan tâm Vì vậy, cách trích xuất tính LBP từ hình ảnh Chương Triển khai xây dựng 3.1 Xây dựng tổng quan Các bước tổng quan: • Chuyển ảnh màu đưa vào thành ảnh xám • Dựa vào thuật tốn phân loại Harr để phát khn mặt ảnh • Cắt khn mặt hình gắn nhãn • Dựa vào thuật tốn phân loại xếp tầng LBP đưa ảnh đả xữ lý thành biểu đồ Sau tập hợp biểu đồ thành vector đặc trưng • Dựa vao liệu đả đào tạo Xác định khuôn mặt hình Hình 6: Mơ hình tổng quan 3.2 Xây dựng chi tiết 3.2.1 Chuyển đổi ảnh màu thành xám xác định khuôn mặt Dựa vào hàm cv2.Color chuyển ảnh màu thành ảnh xám Sau ta dựa vào tệp liệu có sẵn “ haarcascade-fonrtalface-default.xml ” hàm CascadeClassifier để lấy khuôn mặt ảnh Hàm detectMultiSacle cho ta hình chữ nhật bao quanh khn mặt Hình :Hàm phát khn mặt 3.2.2 Cắt hình gắn nhãn khn măt Hình 8: Hàm gắn nhãn cắt lấy khn mặt tronh hình 3.2.3 Đào tạo liệu lưu lại Ta lấy liệu vào bao gồm : • Hình ảnh đả qua xữ lý nằm mảng faces • Id ảnh nằm tong mảng facesID nằm đối xứng với ảnh mảng faces Dựa vào thuật toán phân loại xếp tằng LBP (cục nhị phân) để đào tạo liệu Sau dó viết liệu đả đào tạo vào file yml Hình 9: Hàm tạo liệu ảnh Hình 10: Lưu liệu thành file yml 3.3.4 Thực nhận dạng khuôn mặt video Ban đầu ta đọc liệu đả đào tạo từ trước file “ trainingData.yml ” Tiếp theo ta tạo mảng gọi name chứa nhãn đối ứng tên nhãn Sữ dụng hàm OpenCV để mở bật máy quay lên Sau bật máy quay lên, ta sữ dụng hàm faceDetect hình để phát khn mặt khung hình máy quay Ta sữ dụng hàm dự đoán Opencv để so sánh với liệu có sẵn để đốn nhãn cho hình ảnh Ta kiểm tra độ tin cậy dự đốn hồn thành Nếu độ tin cậy mức ta xác định tên đối tượng trả kết Hình 11: Vẽ khung ghi tên lên ảnh Hình 12: Nhận diện khuôn mặt video Chương Kết luận hướng phát triển 4.1 Kết luận Nhìn chung, sau kết thúc đề tài chúng em đạt điều sau đây: Tìm hiểu Python OpenCV Sữ dụng python opencv Bước đầu thành công ứng dụng “nhận diện khuôn mặt” đáp ứng số yêu cầu sau: • Chuyển video thành ảnh • Xữ lý đào tạo ứng dụng từ liệu ảnh đưa vào Bên cạnh đó, cịn số hạn chế sau: - Thời gian đào tạo liệu lâu phải đào tạo lại từ đầu cần thêm liệu - Chưa hoàn toàn tự động - Khả sai lệch cao 4.2 Hướng phát triển Các hướng phát triển mà em hướng đến : • Phát triển thành phần mềm điểm danh • Phần mềm quản lý người diện trung tâm…