1. Trang chủ
  2. » Tất cả

(Tiểu luận) đồ án ngành điện tử đề tài nhận diện khuôn mặt bằng python opencv

29 26 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 1,33 MB

Nội dung

TRƯỜNG ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ ĐỒ ÁN NGÀNH ĐIỆN TỬ ĐỀ TÀI NHẬN DIỆN KHUÔN MẶT BẰNG PYTHON-OPENCV GVHD: Nguyễn Phan Hải Phú SINH VIÊN THỰC HIỆN MSSV HỌ VÀ TÊN 1812981 Trần Xn Lộc 1812700 Hồng Trung Kiên TP HỒ CHÍ MINH, NĂM 2022 0 Tieu luan LỜI CẢM ƠN Để thực đề tài này, chúng em xin gửi lời cảm ơn sâu sắc đến thầy Hải Phú đ( giúp đỡ, truyền đ愃฀t cho chúng em như฀ng kiến thư฀c c3n thiết, tư฀ đ漃Ā mà chúng em c漃Ā thể thực tốt đề tài Do thời gian kiến thư฀c nhiều h愃฀n chế, đề tài em không tránh khỏi như฀ng sai s漃Āt, em mong th3y g漃Āp ý, chỉnh sửa để c漃Ā thể hoàn thiện Xin chân thành cảm ơn! Tp Hồ Chí Minh, tháng năm 2022 Nhóm sinh viên thực Tr3n Xuân Lộc Hoàng Trung Kiên 0 Tieu luan MỤC LỤC: CHƯƠNG GIỚI THIỆU 1.1 TỔNG QUAN 1.2 GIỚI THIỆU ĐỀ TÀI 1.3) Phân chia công việc CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Ngơn ngư฀ lập trình, thư viện công cụ hỗ trợ 2.1.1 Python 2.1.2 OpenCV 2.1.3 Các thư viện sử dụng 2.2.1 Tiền xử lý 2.2.2 Đối tượng nhận d愃฀ng 2.2.3 Các đặc trưng Haar-like 2.2.4 Cách áp dụng đặc trưng Haar-like để phát khuôn mặt ảnh 2.2.5 Số lượng đặc trưng Haar-like 2.3 Nhận diện khuôn mặt opencv 2.3.1 Trích xuất tính 2.3.2 So sánh khuôn mặt CHƯƠNG 3: QUY TRÌNH THỰC HIỆN 3.1 Phát khuôn mặt sử dụng phân t3ng Haar 3.1.1 Cài đặt phụ thuộc 3.1.2 Áp dụng t3ng Haar 3.1.3 Kết 3.2 Lấy dư฀ liệu khuôn mặt tư฀ webcam 3.2.1 Cài đặt phụ thuộc 3.2.2 chụp ảnh tư฀ webcam lưu vào dataset 3.3 Huấn luyện tập dư฀ liệu 3.3.1 đọc dư฀ liệu tư฀ id 3.3.2 Huấn luyện tập dư฀ liệu sử dụng hàm training recognizer 3.4 Nhận diện khuôn mặt luồng video 3.4.1 Lấy dư฀ liệu tư฀ tập dư฀ liệu đ( training 3.4.2 Đọc camera nhận diện khuôn mặt luồng video CHƯƠNG 4: KẾT QUẢ THỰC HIỆN CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 T漃Ām tắt kết luận 5.2 Hướng phát triển TÀI LIỆU THAM KHẢO PHỤ LỤC 0 Tieu luan CHƯƠNG GIỚI THIỆU 1.1 TỔNG QUAN Hiện nay, với phát triển x( hội, vấn đề an ninh bảo mật yêu c3u khắt khe t愃฀i quốc gia giới Các hệ thống nhận d愃฀ng người đời với độ tin cậy ngày cao Một toán nhận d愃฀ng người quan tâm nhận d愃฀ng khn mặt Bài tốn nhận d愃฀ng khn mặt phục vụ m愃฀nh mẽ nhiều lĩnh vực đời sống đặt biệt như฀ng lĩnh vực công nghệ cao yêu c3u bảo đảm an ninh bảo mật… Vì tốn nhận d愃฀ng khn mặt cịn tốn n漃Āng hổi ngày người ta ln tìm cách hồn thiện n漃Ā để mang l愃฀i kết nhận d愃฀ng tốt 1.2 GIỚI THIỆU ĐỀ TÀI Giới thiệu chung phương pháp nhận dạng mặt người: a) Các phương pháp nhận dạng mặt người: Phương pháp nhận d愃฀ng c漃Ā lo愃฀i:  Nhận d愃฀ng dựa đặc trưng ph3n tử khuôn mặt (Feature based face recognition)  Nhận d愃฀ng dựa xét tổng thể khuôn mặt (Appearance based face recognition) Ngồi cịn c漃Ā số lo愃฀i nhận d愃฀ng sử dụng mơ hình khn mặt, số phương pháp dùng cho lo愃฀i này:  Nhận d愃฀ng 2D: Elastic Bunch Graph, Active Appearance Model  Nhận d愃฀ng 3D: 3D Morphable Model b) Nhận dạng dựa đặc trưng khuôn mặt: Đây phương pháp nhận d愃฀ng khuôn mặt dựa việc xác định đặc trưng hình học chi tiết khuôn mặt (như vị trí, diện tích, hình d愃฀ng mắt, mũi, miệng,…), mối quan hệ giư฀a chúng (như khoảng cách hai mắt, khoảng cách hai lông mày,…) Ưu điểm phương pháp n漃Ā g3n với cách mà người sử dụng để nhận biết khuôn mặt Hơn nư฀a với việc xác định đặc tính mối quan hệ, phương pháp c漃Ā thể cho kết tốt trường hợp ảnh c漃Ā nhiều nhiễu bị nghiêng, bị xoay ánh sáng thay đổi 0 Tieu luan Nhược điểm phương pháp cài đặt thuật toán phư฀c t愃฀p việc xác định mối quan hệ giư฀a đặc tính địi hỏi thuật tốn phư฀c t愃฀p Mặt khác, với ảnh kích thước bé đặc tính kh漃Ā phân biệt đ漃Ā kh漃Ā tính tốn đặc trưng khn mặt c) Nhận dạng dựa xét tồn diện khn mặt: Nhận d愃฀ng đựa tồn diện khn mặt, c漃Ā nghĩa khơng xét đến tư฀ng thành ph3n đặc trưng khn mặt nư฀a… Mình xem khn mặt khơng gian cụ thể tìm như฀ng đặc trưng, như฀ng đặc điểm khơng gian đ漃Ā Nội dung hướng tiếp cận xem ảnh c漃Ā kích thước RxC vector không gian RxC chiều Ta xây dựng không gian c漃Ā chiều nhỏ cho biểu diễn không gian đ漃Ā đặc điểm khn mặt khơng bị Trong không gian đ漃Ā, ảnh người tập trung l愃฀i thành nh漃Ām g3n cách xa nh漃Ām khác Hai phương pháp thường sử dụng hướng tiếp cận này:  PCA (Principle Components Analysis)  LDA (Linear Discriminant Analysis) Vâng, với hướng tiếp cận c漃Ā thể hình dung tương đối dễ chịu phải không Chúng ta không c3n phải phân tích nhiều đặc điểm khn mặt nư฀a đ漃Ā phương pháp tiếp cận tương đối dễ cài đặt hiệu việc nhận d愃฀ng Nhược điểm tất nhiên khơng khỏi tránh khỏi Tùy theo phương pháp sư฀ dụng PCA hay LDA mà đánh giá nhược điểm hướng tiếp cận 1.3) Phân chia công việc nhóm Họ Tên Cơng việc Tr3n Xn Lộc Tìm hiểu ch愃฀y code Hoàng Trung Kiên Demo, kiểm duyệt, viết báo cáo Đ漃Āng g漃Āp 50% 50% 0 Tieu luan CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Ngôn ngữ lập trình, thư viện cơng cụ hỗ trợ 2.1.1 Python Python thiết kế với ưu điểm m愃฀nh dễ đọc, dễ học, dễ nhớ Theo thời gian, Python d3n mở rộng sang hệ điều hành Mac OS, Windows,… c漃Ā thể sử dụng online tảng web Ở chủ đề này, nh漃Ām chọn lựa ngơn ngư฀ lập trình Python dùng để lập trình cho việc nhận diện biển số xe ưu điểm mà ngôn ngư฀ mang l愃฀i 2.1.2 OpenCV OpenCV (Open Computer Vision) thư viện m( nguồn mở hàng đ3u cho xử lý thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết C/C++, c漃Ā tốc độ tính tốn nhanh, c漃Ā thể sử dụng với ư฀ng dụng liên quan đến thời gian thực Opencv c漃Ā interface cho C/C++, Python Java hỗ trợ cho Window, Linux, MacOs lẫn Android, iOS OpenCV OpenCV c漃Ā nhiều ư฀ng dụng nhận d愃฀ng xử lí ảnh 2.1.3 Các thư viện sử dụng - Thư viện numpy: thư viện toán học rât phổ biến m愃฀nh mẽ Python NumPy trang bị hàm số đ( tối ưu, cho phép làm việc hiệu với ma trận mảng, đặc biệt dư฀ liệu ma trận mảng lớn với tốc độ xử lý nhanh nhiều l3n sử dụng Python đơn thu3n - Thư viện os: module os Python cung cấp chư฀c sử dụng để tương tác với hệ điều hành c漃Ā thông tin liên quan n漃Ā OS theo Module tiện ích tiêu chuẩn Python Module cung cấp cách linh động sử dụng chư฀c phụ thuộc vào hệ điều hành - Thư viện sqlite: sở dư฀ liệu Back -end, b愃฀n c漃Ā thể sử dụng Python để xây dựng trang web t愃฀o công cụ c漃Ā yêu c3u lưu trư฀ dư฀ liệu SQLite sử dụng rộng r(i trường khác, chẳng h愃฀n HTML5 thiết bị đ3u cuối di động Python sqlite3 Trong thư viện tiêu chuẩn cung cấp giao diện sở dư฀ liệu 2.2 Phát khuôn mặt phân tầng haar 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 0 Tieu luan 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 như฀ng 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 ph3n, đ漃Ā 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ư฀ như฀ng 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 t3ng 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 2.2.1 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 như฀ng đặ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 ph3n sau) bước đ3u tiên trình nhận d愃฀ng, đặc trưng Haar-like làm việc trực tiếp ảnh tích hợp 2.2.2 Đố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, như฀ng 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 như฀ng đặ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 giư฀a sống mũi tối vùng hai bên mũi - … 0 Tieu luan Và nhiều như฀ng đặ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à c漃Ā thể 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漃Ā như฀ng đặ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 giư฀a vùng ảnh đ漃Ā Đây bước ban đ3u 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 2.2.3 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ư฀ như฀ng đặc trưng mở rộng thành tập đặc trưng: o Đặc trưng c愃฀nh: o Đặc trưng đường: o Đặc trưng tâm – xung quanh: Giá trị đặc trưng Haar-like khác biệt giư฀a 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 đ漃Ā 2.2.4 Cách áp dụng đặc trưng Haar-like để phát khuôn mặt ảnh 0 Tieu luan 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 quét lên toàn ảnh đ3u vào Như c漃Ā nhiều ảnh ư฀ng với tư฀ng 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 Haar-like 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ổ c3n 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 t愃฀i cửa sổ x vượt qua ngưỡng phân lớp hk(x) kết luận cửa sổ x khn mặt(hk(x)=1), cịn fk khơng vượt qua ngưỡng đ漃Ā khơng khn 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ư ph3n đố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 h3u hết giá trị fk khác ta di chuyển cửa sổ x sang vị trí khác(quét toàn ảnh đ3u 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 cịn vị trí khác khơng Đương nhiên c漃Ā như฀ng vị trí khác ảnh đ3u vào vơ tình cho fk vượt 0 Tieu luan 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 như฀ng vị trí kích thước khác cửa sổ làm giảm trùng hợp ngẫu nhiên 2.2.5 Số lượng đặc trưng Haar-like Việc xác định cửa sổ c漃Ā phải mặt hay 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 đ3y đủ số lượng đặc trưng cửa sổ lớn Theo tính tốn hai tác giả, với cửa sổ kích thước 2424 pixel số lượng đ3y đủ đặ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ổ như฀ng đặc trưng khơng c漃Ā ích để tập trung vào như฀ng đặc trưng c漃Ā hiệu cao thời gian xử lý cách vơ ích Như฀ng ph3n sau l3n lượt tìm cách giải vấn đề 2.3 Nhận diện khuôn mặt opencv Cách nhận dạng khuôn mặt OpenCV hoạt động: 10 0 Tieu luan  Dòng 1-3: Khởi t愃฀o t3ng để phát khuôn mặt, mắt nụ cười cách sử dụng hàm OpenCV CascadeClassifier () cách chuyển tệp XML làm đối số  Dòng 4: Khởi t愃฀o nguồn cấp dư฀ liệu webcam  Dòng 6: Tiếp theo, khởi tạo vòng lặp while ch愃฀y vô thời h愃฀n tất khung lặp qua M( kèm theo bên thực thi cho khung hình đến tư฀ webcam Vòng lặp c漃Ā thể bị phá vỡ người dùng nhấn phím ‘thốt’ ( dịng 23-25 )  Dịng 7-9: Sử dụng chư฀c ‘read ()’ để tìm n愃฀p khung hình liên tiếp tư฀ nguồn cấp dư฀ liệu webcam Điều xử lý trước cách chuyển đổi n漃Ā thành thang độ xám (sử dụng cv2.cvtColor) sau đ漃Ā gửi đến đối tượng phân lo愃฀i khuôn mặt để phân lo愃฀i cách sử dụng hàm ‘detector’, hàm trả tọa độ (x, y, w, h) khuôn mặt phát phân lo愃฀i  Dòng 11: Bắt đ3u vòng lặp for lặp qua tất mặt phát (và sử dụng hàm ‘cv2 rectangle’ để đặt hộp giới h愃฀n xung quanh n漃Ā) Để thuận tiện cho việc phát ánh mắt nụ cười (cả hai c漃Ā kích thước nhỏ hơn), xác định khu vực phụ khung video thang độ xám (là khu vực quay l愃฀i dịng khn mặt) Điều c漃Ā thể thực mắt nụ cười phát bên khuôn mặt ( Dòng 13-14 )  Dòng 16-21: Chuyển vùng phụ xác định bước trước đến t3ng ‘mắt’ ‘nụ cười’ để lo愃฀t tọa độ mắt nụ cười phát trả l愃฀i Tiếp theo, khởi t愃฀o vòng lặp ‘for’ cho mảng ( Dòng 18 & 20 ) đặt hộp giới h愃฀n xung quanh đối tượng phát ( Dòng 21 )  Dòng 27: Cuối cùng, giải phóng nguồn cấp dư฀ liệu video webcam đ( tải vào nhớ  Dòng 28: Đ漃Āng tất cửa sổ (Nếu c漃Ā cửa sổ mở ch愃฀y) 3.1.3 Kết Sau thực chi tiết theo hướng dẫn trên, kết nhận diện khuôn mặt lên như฀ng ô chủ nhật khác c漃Ā nhiệm vụ nhận diện đối tượng mắt, mũi, miệng, 15 0 Tieu luan Như tham số gộp l愃฀i như฀ng hình chư฀ nhật chư฀a khn mặt hình chư฀ nhật cho khuôn mặt Đồng thời n漃Ā lo愃฀i bỏ bớt như฀ng kết sai như฀ng 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ụ như฀ng hình chư฀ nhật nhỏ tường hình Việc phát khuôn mặt video hay camera tương tự bư฀c ảnh, video chuỗi liên tiếp như฀ng hình ảnh hiển thị (frame hình) Ta làm vịng lặp để thực phát khn mặt như฀ng 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ị: Trong chương trình này, lớp video_capture = cv2.VideoCapture(0) lớp xử lý như฀ng frame hình lấy tư฀ webcam mặc định máy tính Trong vịng lặp, thực lấy ảnh đ3u 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 đ3u tiên 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 3.2 Lấy liệu khuôn mặt từ webcam 3.2.1 Cài đặt phụ thuộc 16 0 Tieu luan Dòng 1-4: cài đặt thư viện c3n thiết Dòng 5-10: viết hàm để insert update vào sqlite, kết nối với data Dòng 11-18: khởi t愃฀o vòng lặp ‘for’ để cài đặt thông số gồm id, tên, năm sinh cho dư฀ liệu 3.2.2 chụp ảnh từ webcam lưu vào dataset Dịng 20-22: đọc video tư฀ webcam phát khn mặt luồng video hàm face_cascade Dòng 23-27: cài đặt thông số gồm id, tên, năm sinh cho dư฀ liệu Dòng 28-43: khởi t愃฀o vòng lặp ‘for’ lấy fram ảnh chuyển qua ảnh gray Lưu dư฀ liệu bư฀c ảnh khuôn mặt vào file dataset, số ảnh lớn 200 máy ảnh tự động tắt Dư฀ liệu lưu d愃฀ng ảnh xám với đuôi ‘.jpg’ 3.3 Huấn luyện tập liệu 3.3.1 đọc liệu từ id 17 0 Tieu luan Dòng 4-11: lấy dư฀ liệu tư฀ dataset sử dụng id Dòng 12-23: đọc ảnh tư฀ dư฀ liệu cách liên tục với waitKey = 10 3.3.2 Huấn luyện tập liệu sử dụng hàm training recognizer Dòng 26: Huấn luyện tập dũ liệu hàm training recognizer Dòng 27-30: Lưu dũ liệu đ( huấn luyện vào file recognizer/trainningData.yml 3.4 Nhận diện khuôn mặt luồng video 3.4.1 Lấy liệu từ tập liệu training 18 0 Tieu luan Dòng 1-4: cài đặt thư viện c3n thiết Dịng : hàm phát khn mặt Dòng 9-10: sử dụng hàm recognizer đọc dư฀ liệu đ( training để nhận diện khn mặt Dịng 11-23: lấy data tư฀ splite id 3.4.2 Đọc camera nhận diện khuôn mặt luồng video 19 0 Tieu luan Dòng 25-26: đọc dư฀ liệu tư฀ camera, lấy fram hình chuyển qua ảnh gray(ảnh xám) Dịng 27: Lấy hình ảnh đươc phát khn mặt Dịng 28-44: lấy hình ảnh khn mặt tư฀ camera so sánh với dư฀ liệu khuôn mặt đ( tranning.Nếu confidence < 90 xuất hình tên năm sinh khn mặt, khơng xt hình unknow CHƯƠNG 4: KẾT QUẢ THỰC HIỆN Mơ hình nhận diện khn mặt video: 20 0 Tieu luan 21 0 Tieu luan Với g漃Āc độ khac thi mơ hình phát trình trainning đ( chụp ảnh khuôn mặt với nhiều g漃Āc độ khác CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Tóm tắt kết luận 22 0 Tieu luan Qua đồ án này, đ( đ漃Āng g漃Āp hướng tiếp cận cho tốn phát khn mặt Bên c愃฀nh đ漃Ā, hư฀a hẹn việc mở lo愃฀i đặc trưng c漃Ā thể phá triển cho xác định vị trí thành ph3n khn mặt mắt, mũi, miệng, v.v… Ngoài c漃Ā thể phát triển rộng để trở thành tốn nhận d愃฀ng khn mặt Tơi đ( tìm hiểu tốn phát mặt người dựa đặc trưng Haar like để nhận d愃฀ng khuôn mặt xác định ư฀ng dụng đặc trưng toán phát mặt người Tư฀ đ漃Ā ta xây dựng hệ thống nhận diện người 5.2 Hướng phát triển Chương trình phát mặt người ảnh đ( nhân d愃฀ng khuôn mặt chi tiết khuôn mặt Nhằm đưa như฀ng ư฀ng dụng thực tế sống đ愃฀i:  Phân tích cảm xúc khn mặt người  Tổ chư฀c tìm kiếm liên quan đến người thông qua khuôn mặt nhiều hệ sở dư฀ liệu lớn  Điều khiển vào quan, văn phòng  Hệ thống quan sát, theo dõi bảo vệ  Giải trí  Nhận d愃฀ng tội ph愃฀m  Hệ thống giao tiếp thông minh giư฀a người máy TÀI LIỆU THAM KHẢO https://pyimagesearch.com/2018/09/24/opencv-face-recognition/? fbclid=IwAR0VbKgZPXXnyM5RWOAEdRkHEaNx9qyBuATQG9hZIj78c3kackuAa5ExX1k https://www.mygreatlearning.com/blog/face-recognition/? 23 0 Tieu luan fbclid=IwAR2epc1oxjbiqF7jXSrn9Ocs3Quv6kvHU7VYxPWsxKLmPjzEDfCrE-TmDKo https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Object_Detection_Fa ce_Detection_Haar_Cascade_Classifiers.php? fbclid=IwAR25vuBDZBMJkDYSxey0BMF0eRfTULSpLkv70594ow6y5wXZHbiDfy262VQ PHỤ LỤC import cv2 import numpy as np face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+ 24 0 Tieu luan "haarcascade_frontalface_default.xml") cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray) for(x, y, w,h) in faces: cv2.rectangle(frame, (x,y), (x+w, y+h), (0,255,0), 2) cv2.imshow('DETECTING FACE', frame) if(cv2.waitKey(1) & 0xFF == ord('q')): break cap.release() cv2.destroyAllWindows() import cv2 import numpy as np import sqlite3 import os def insertOrUpdate(id, name, yearofbirth): conn = sqlite3.connect('C:/Nhận diện khuôn mặt/Data.db') 25 0 Tieu luan query = "SELECT * FROM People WHERE ID=" + id cusror = conn.execute(query) isRecordExist = for row in cusror: isRecordExist = if (isRecordExist == 0): query = "INSERT INTO People(Id,Name, YearOfBirth) Values(" + id + ",'" + name + "','" + yearofbirth + "')" else: query = "UPDATE People SET Name='" + name + "' YearOfBirth='" + yearofbirth + "' WHERE ID=" + id conn.execute(query) conn.commit() conn.close() # load tv face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") # cap = cv2.VideoCapture(0) cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # captureDevice = camera # insert to db id = input("Nhập ID: ") name = input("Nhập Name: ") yearofbirth = input("Nhập năm sinh: ") insertOrUpdate(id, name, yearofbirth) sampleNum = while (True): ret, frame = cap.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), (0, 255, 0), 2) if not os.path.exists('dataSet'): os.makedirs('dataSet') sampleNum += cv2.imwrite('dataSet/User.' + str(id) + '.' + str(sampleNum) + ' jpg', gray[y: y + h, x: x + w]) cv2.imshow('frame', frame) cv2.waitKey(1) if sampleNum > 200: break cap.release() cv2.destroyAllWindows() 26 0 Tieu luan import cv2 import numpy as np import os from PIL import Image recognizer = cv2.face.LBPHFaceRecognizer_create() path='dataSet' def getImageWithId(path): #get the path of all the files in the folder 27 0 Tieu luan imagePaths=[os.path.join(path,f) for f in os.listdir(path)] faces=[] IDs=[] for imagePath in imagePaths: faceImg=Image.open(imagePath).convert('L'); faceNp=np.array(faceImg,'uint8') print(faceNp) print(os.path.split(imagePath)[1].split('.')) #split to get ID of the image ID=int(os.path.split(imagePath)[1].split('.')[1]) faces.append(faceNp) IDs.append(ID) cv2.imshow('tranning', faceNp) cv2.waitKey(10) return IDs, faces Ids,faces=getImageWithId(path) # trainning recognizer.train(faces,np.array(Ids)) if not os.path.exists('recognizer'): os.makedirs('recognizer') recognizer.save('recognizer/trainningData.yml') cv2.destroyAllWindows() import cv2 import numpy as np import os import sqlite3 from PIL import Image #Tranning hình ảnh nhận diện #Thư viện nhận diện khuôn mặt face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+ "haarcascade_frontalface_default.xml") 28 0 Tieu luan recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read('recognizer/trainningData.yml') #get data from sqlite by ID def getProfile(id): conn = sqlite3.connect('C:/Nhận diện khuôn mặt/Data.db') query = "SELECT * FROM People WHERE ID="+str(id) cursor = conn.execute(query) profile=None for row in cursor: profile = row conn.close() return profile cap = cv2.VideoCapture(0) fontface = cv2.FONT_HERSHEY_SIMPLEX while(True): #camera read ret , frame = cap.read() gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) faces=face_cascade.detectMultiScale(gray) for(x,y,w,h) in faces: cv2.rectangle(frame,(x,y),(x+w,y+h),(0, 255, 0), 2) roi_gray = gray[y:y+h, x:x+w] id, confidence = recognizer.predict(roi_gray) if confidence

Ngày đăng: 06/02/2023, 09:15

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w