Nhằm cho công tác nghiên cứu, tìm hiểu thêm về AI, cũng như kiến thức chuyên nghành bài tập Nhận diện khuôn mặt sử dụng Vector SVM dưới đây sẽ là tài liệu hữu ích cho các bạn khối nghành công nghệ thông tin.
TRƯỜNG ĐẠI HỌC TÂN TRÀO KHOA KHOA HỌC CƠ BẢN BỘ MƠN TIN HỌC BÀI TẬP LỚN MƠN HỌC Mơn học: Kỹ thuật lập trình tiên tiến Tên đề tài: Phát hiện, nhận dạng khuôn mặt từ liệu thu từ Webcam Laptop Nhóm thực hiện: Nhóm 1: Hoàng Anh Tuấn 2: Ma Thị Thủy Trang 3: Tạ Văn Khánh 4: Cherxong Kertongpao Giảng viên hướng dẫn: TS Lê Văn Hùng Tuyên Quang, ngày tháng năm 2021 MỤC LỤC PHẦN I: MỞ ĐẦU Tính cấp thiết ứng dụng Công nghệ thông tin ngày phát triển có vai trị quan trọng khơng thể thiếu sống đại Con người ngày tạo cỗ máy thơng minh có khả tự nhận biết xử lí cơng việc cách tự động, phục vụ cho lợi ích người Ngày nay, với phát triển khoa học máy tính việc nhận dạng hình ảnh khuôn mặt ứng dụng nhiều sống Thông qua camera cho biết việc thực việc phát đối tượng, khách hàng để bảo mật, cảnh báo ứng dụng robot để điều khiển việc giúp đỡ tự động từ hình ảnh khn mặt thu thập Cùng với phát triển trí tuệ nhân tạo đặc trưng lĩnh vực dự đốn, phân tích dự báo giới kỹ thuật số có tính học máy, đòi hỏi cần phải thu nhập liệu cho hệ thống máy tính học dần liệu để phân tích đưa kết dự đốn Ngày nay, ô tô tự động thông minh, tích hợp hệ thống để cảnh báo buồn ngủ lái xe, (được minh họa hình 1) Hình 1: Minh họa lái xe buồn ngủ Điều giúp tránh tai nạn đáng tiếc xảy Hay phát nhận dạng khuôn mặt ứng dụng tịa nhà lớn, sử dụng để điểm danh hay giám sát người di chuyển hoạt động tịa nhà (minh họa hình 2) Hình 2: Điểm danh hệ thống tự động Điều phát hoạt động bất thường định danh kẻ trộm Từ lý giúp nhóm chúng em tìm hiểu, định lựa chọn thực đề tài Mục tiêu Một đổi quan trọng giới nghiên cứu thập kỷ qua đời công nghệ nhận dạng Từ kỷ trước, vấn đề nhận dạng vật thể coi nhiệm vụ khó khăn lĩnh vực thị giác máy tính Cơng nghệ nhận dạng khn mặt sử dụng cho vô số ứng dụng, từ bảo mật đến quảng cáo Một số trường hợp sử dụng bao gồm: • Bảo mật thiết bị di động • Mạng xã hội (chẳng hạn Facebook, để gắn thẻ cá nhân ảnh) • Bảo mật doanh nghiệp, doanh nghiệp sử dụng nhận dạng khn mặt để vào tịa nhà • Tiếp thị Các nhà tiếp thị sử dụng nhận dạng khn mặt để xác định độ tuổi, giới tính dân tộc để nhắm mục tiêu tới đối tượng cụ thể PHẦN II: NỘI DUNG Chương I: Tổng quan 1.1: Lập trình hướng đối tượng Lập trình hướng đối tượng (còn gọi Object Oriented Programming, viết tắt “OOP”) phương thức lập trình mà lập trình viên lấy đối tượng làm tảng để viết chương trình Theo định nghĩa khác, lập trình hướng đối tượng phương pháp lập trình dựa khái niệm lớp đối tượng tập trung vào đối tượng thao tác, giúp code dễ quản lý, tái sử dụng dễ bảo trì Hiện nay, OOP phương pháp lập trình quan trọng sử dụng rộng rãi Hầu hết ngơn ngữ lập trình Java, PHP, NET, Ruby, Python… hỗ trợ OOP * Giải thích cụ thể định nghĩa hướng đối tượng - Đối tượng ( Object ): Đối tượng người, điện thoại, máy tính, xe cộ…mỗi đối tượng gồm có thơng tin phương thức thuộc tính + Thuộc tính: Là thơng tin, đặc điểm đối tượng mà lập trình viên hướng đến + Phương thức: Chính thao tác, hành động mà đối tượng lập trình thực Ví dụ: Nếu điện thoại đối tượng • Điện thoại có thuộc tính như: màu sắc, kích thước, nhớ, … • Và phương thức như: qt virus, khóa hình, phím khởi động, sử dụng trình duyệt - Lớp ( Class ): Mỗi lớp kiểu liệu chứa nhiều thuộc tính phương thức định nghĩa sẵn từ trước Đây xem trừu tượng hóa nhiều đối tượng Kiểu liệu khác xa với kiểu liệu thông thường, lớp đơn vị bao gồm kế hợp phương thức thuộc tính Nói cách dễ hiểu đối tượng có đặc tính giống tập trung lại thành lớp đối tượng *Đặc điểm OOP • • • Tính kế thừa ( Inheritance ) Tính đa hình (Polymorphism ) Tính trừu tượng ( Abstraction ) 1.2: Tổng quan xử lý ảnh thị giác máy tính 1.3: Bộ thư viện OpenCV OpenCV tên viết tắt open source computer vision library – hiểu thư viện nguồn mở cho máy tính Cụ thể OpenCV kho lưu trữ mã nguồn mở dùng để xử lý hình ảnh, phát triển ứng dụng đồ họa thời gian thực OpenCV cho phép cải thiện tốc độ CPU thực hoạt động real time Nó cịn cung cấp số lượng lớn mã xử lý phục vụ cho quy trình thị giác máy tính hay learning machine khác Thư viện OpenCV phát hành với giấy phép BDS Do dịch vụ cung cấp hồn tồn miễn phí hạn chế tối đa rào cản thông thường Cụ thể, bạn phép sử dụng phần mềm cho hoạt động thương mại lẫn phi thương mại OpenCV sở hữu giao diện thiên thiện với loại ngơn ngữ lập trình, ví dụ C++, C, Python hay Java… Ngồi ra, dễ dàng tương thích với hệ điều hành khác nhau, bao gồm từ Windows, Linux, Mac OS, iOS Android Kể từ lần đầu xuất từ năm 1999, OpenCV sở hữu đội ngũ người dùng hùng hậu, số ước tính lên tới 47.000 người Tất nhờ ưu điểm vượt trội OpenCV *Chức có thư viện OpenCV Bộ công cụ hỗ trợ 2D 3D Nhận diện khuôn mặt Nhận diện cử Nhận dạng chuyển động, đối tượng, hành vi Tương tác người máy tính Điều khiển Robot Hỗ trợ thực tế tăng cường *Ứng dụng OpenCV giới thực Giám sát tự động Tìm kiếm, phục hồi, xử lý ảnh Nhận dạng khuôn mặt, cử Nhận dạng chữ viết, số kí tự, 1.4: Học máy ( Machine Learning ) Học máy hay máy học có tên tiếng Anh đầy đủ Machine Learning, (viết tắt ML) Thuật tốn Machine Learning chương trình máy tính có khả học hỏi hồn thành nhiệm vụ, đồng thời cách để cải thiện hiệu suất theo thời gian vô hiệu Học máy cơng nghệ phát triển từ trí tuệ nhân tạo Ngồi ra, Machine Learning cịn biết cịn cơng nghệ phát triển từ lĩnh vực trí tuệ nhân tạo tiên tiến Để đảm bảo sai lệch khơng xuất liệu giả, Machine Learning cần trình tìm hiểu lựa chọn kỹ thuật phân tích liệu từ người Học máy ngày mang tính phổ biến toàn giới Sự tăng trưởng vượt bậc liệu lớn (Big Data) thuật toán Machine Learning cải thiện độ xác mơ hình dự đoán tương lai *Thuật toán học máy chia thành loại - Học có giám sát (Supervised Learning) - Học khơng có giám sát (Unsupervised Learning) - Học bán giám sát (Semi – Supervised) - Học củng cố (Reinforcement learning) *Ứng dụng Machine Learning thực tiễn - Cảnh báo giao thông ứng dụng (trên ứng dụng Google Maps), (minh họa hình 3) Hình 3: Cảnh báo giao thơng - Nhận dạng hình ảnh (Image Recognition): ứng dụng phổ biến Machine Learning Có nhiều tình để phân loại đối tượng hình ảnh kỹ thuật số Ví dụ, trường hợp ảnh đen trắng sử dụng phép đo mức xám pixel ảnh màu lại sử dụng phép đo cường độ màu khác tạo nên pixel (R-G-B), (minh họa hình 4) Hình 4:sử dụng phép đo mức xám pixel - Trợ lý ảo Siri Apple (minh họa hình 5) Hình 5: Ứng dụng Siri Iphone Apple - Xe tự hành Google Tesla (minh họa hình 6) Hình 6: Xe tự hành Google - Máy chơi cờ vây AlphaGo Google DeepMind (minh họa hình 7) Hình 7: Máy chơi cờ vây Google - Hệ thống gợi ý phim Netflix (minh họa hình 8) Hình 8: Ứng dụng gợi ý phim Netflix - Ứng dụng tag khuôn mặt Facebook (minh họa hình 9) Hình 9: Ứng dụng tag khn mặt Facebook Visual Studio Visual Studio cơng cụ hỗ trợ lập trình website tiếng Mcrosoft chưa có phần mềm thay Visual Studio viết ngơn ngữ C# VB+ Đây ngơn ngữ lập trình, giúp người dùng lập trình hệ thống dễ dàng nhanh chóng thơng qua Visual Studio Visual Studio phần mềm lập trình hệ thống sản xuất trực tiếp từ Microsoft Từ đời đến nay, Visual Studio có nhiều phiên sử dụng khác Điều đó, giúp cho người dùng lựa chọn phiên tương thích với dịng máy cấu hình sử dụng phù hợp Bên cạnh đó, Visual Studio cịn cho phép người dùng tự chọn lựa giao diện cho máy tùy thuộc vào nhu cầu sử dụng * Một số tính Visual Studio • • • • • • • • • • • • • • Biên tập mã Trình gỡ lỗi Thiết kế + Windows Forms Designer + WPF Designer + Web designer/development Đa tảng Đa ngôn ngữ lập trình Hỗ trợ website Kho tiện ích mở rộng phong phú Lưu trữ phân cấp Kho lưu trữ an tồn Màn hình đa nhiệm Hỗ trợ viết code Hỗ trợ thiết bị đầu cuối Hỗ trợ Git Intellisense CHƯƠNG II 10 Đối tượng phạm vi nghiên cứu, phương pháp thực 2.1: Đối tượng phạm vi nghiên cứu Tập trung vào đối tượng nghiên cứu mặt người, kỹ thuật nhận diện khuôn mặt Machine Learning (Học máy) Đề tài tập trung tìm hiểu số phương pháp nhận dạng khuôn mặt người phổ biến đưa phương án nhận dạng cho tốn nhận dạng khn mặt người 2.2: Phương pháp thực Phương pháp thực phát triển hệ thống nhận dạng sinh trắc học dựa nhận dạng khuôn mặt thư viện OpenCV phát trực tuyến thời gian thực qua camera ghi hình Để hệ thống hoạt động, cần thực hiện, đầu tiên, phải phát khn mặt Sau đó, phải nhận khn mặt gần Q trình nhận dạng khn mặt bắt đầu trình ứng dụng cho camera, cài đặt thiết bị tương thích kết nối với máy ảnh, sau sử dụng thị giác máy tính (Computer Vision) mạng thần kinh sâu (Deep Neural Network) để tìm khn mặt tiềm luồng hình ảnh Khi khn mặt chụp lại, hình ảnh cắt khung chuyển tiếp đến đường dẫn định lưu trữu lại 11 CHƯƠNG III: Các bước thực 3.1: Cấu hình thư viện OpenCV với Visual Studio Bước 1: Mở Visual Studio Tạo Empty Project Visual C++ Bước 2: Thêm file C++ vào Project vừa tạo 12 Bước 3: Chuyển build platform Project sang x64 OpenCV build sẵn hỗ trợ 64-bit Bước 4: Click chuột phải vào Project chọn Properties để mở cửa sổ Project Properties 13 Bước 5: Chọn mục C/C++ -> General Ở dòng Additional Include Directories, thêm vào đường dẫn đến thư mục build\include thư mục OpenCV giải nén bước Bấm vào Apply Bước 6: Chuyển sang mục Linker->General Ở dòng Additional Library Directories, thêm vào đường dẫn đến thư mục build\x64\vc15/lib 14 Bước 7: Chuyển sang mục Linker -> Input Ở dòng Additional Dependencies, thêm vào tên file opencv_world341d.lib (vì build chế độ Debug) Nếu build chế độ Release tên file opencv_world341d.lib Hai file tìm thấy thư mục build\x64…\bin Bấm vào Apply Bước 8: Nhấn OK 3.2: Lập trình mở webcam nhận dạng khn mặt // Chương trình CPP để phát khuôn mặt video // Bao gồm tệp tiêu đề bắt buộc từ thư mục OpenCV #include #include #include #include #include "opencv2/opencv.hpp" #include #include 15 using namespace std; using namespace cv; // Hàm phát khuôn mặt void detectAndDraw(Mat& img, CascadeClassifier& cascade, CascadeClassifier& nestedCascade, double scale); string cascadeName, nestedCascadeName; int main(int argc, const char** argv) { Ptr pBackSub; pBackSub = createBackgroundSubtractorKNN(); // Lớp VideoCapture để phát video mà khuôn mặt phát VideoCapture videos(0);//Lớp mở camera mặc định double fps = videos.get(CAP_PROP_FPS); //cout