Chương 1: GIỚI THIỆU 1.1 Giới thiệu đề tài Ngày nay, trong kỷ nguyên số, máy tính là một phần không thể thiếu trong nghiên cứu khoa học cũng như trong đời sống hàng ngày. Tuy nhiên, do hệ thống máy tính dựa trên lý thuyết cổ điển (tập hợp, logic nhị phân), nên dù có khả năng tính toán lớn và độ chính xác cao, thì máy tính cũng chỉ có thể làm việc theo một chương trình gồm các thuật toán được viết sẵn do lập trình viên chứ chưa thể tự lập luận hay sáng tạo. Học máy (Machine learning) là một phương pháp phân tích dữ liệu có thể tự động hóa phân tích dữ liệu và tìm ra các trích xuất đặc trưng của bộ dữ liệu. Học máy sử dụng các thuật toán trừu tượng để tự học từ dữ liệu, cho phép máy tính tìm thấy những thông 2 tin có giá trị ẩn ở rất sâu mà không thể lập trình được bằng cách thông thường.
Khi tiếp xúc với dữ liệu mới, học máy có thể thích ứng rất nhanh và độc lập. Học sâu (Deep Learning) là một ngành đặc biệt của học máy. Học sâu sử dụng mạng nơ ron nhân tạo (Artificial Neural Networks) để giải quyết các bài toán mà tính toán cứng chưa thể xử lý được như dữ liệu trừu tượng, dữ liệu mờ, dữ liệu không rõ ràng,. Với tính chất như vậy, học sâu thường được ứng dụng trong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên hoặc dự đoán, dự báo.
Mạng nơ ron nhân tạo (Artificial Neural Networks) là một mô hình xử lý thông tin, cấu thành từ các lớp nơ ron, được ra đời trên cơ sở mô phỏng hoạt động não bộ của sinh vật. Mạng nơ ron nhân tạo gắn kết nhiều nơ ron theo một mô hình nhất định, được trải qua huấn luyện để rút ra được kinh nghiệm, và sử dụng các kinh nghiệm đã có để xử lý các thông tin mới. Mạng nơ ron nhân tạo thường áp dụng vào giải các bài toán nhận dạng mẫu, hoặc dự đoán. Mạng nơ ron Tích chập (Convolutional Neural Network) là một trong những mô hình học sâu hiện đại nhất hiện nay.
Mạng nơ ron Tích chập hiện nay thường được sử dụng nhiều trong các hệ thống thông minh do ưu điểm của mạng là có độ chính xác cao, tuy nhiên tốc độ tính toán lại rất nhanh. Vì lý do đó, mạng Trang 10 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT GVHD: Ths. HÀ THỊ MINH PHƯƠNG nơ ron tích chập rất mạnh trong xử lý hình ảnh, và được ứng dụng rất nhiều trong ngành thị giác máy tính trong các bài toán liên quan đến nhận dạng đối tượng. Ngày nay, với sự phát triển của công nghệ bán dẫn, máy tính ngày càng nhỏ đi, năng lượng tiêu thụ ngày càng thấp xuống, trong khi sức mạnh lại ngày càng tăng lên.
Với những ưu điểm như vậy, chúng ta có thể thấy rất nhiều thiết bị thông minh đã và đang hiện diện mọi nơi trong đời sống, với camera nhiều điểm ảnh, bộ nhớ trong lớn và vi xử lý mạnh như: điện thoại thông minh, máy ảnh kỹ thuật số, camera hành trình,… Ngoài ra, với sự bùng nổ của xu hướng mạng vạn vật IOT, người ta có thể sẽ còn thấy rất nhiều thiết bị thông minh mới xuất hiện: xe ô tô tự lái, thiết bị bay không người lái tự giao hàng,. Có thể thấy, việc sử dụng trí thông minh nhân tạo để khai thác dữ liệu hình ảnh trong các thiết bị thông minh trong tương lai đã và đang trở thành xu hướng. Từ nhận định trên và sự gợi ý của giảng viên hướng dẫn, nhóm em quyết định chọn nội dung “Xây dựng ứng dụng nhận diện sử dụng deep learning” để làm đề tài nghiên cứu thực hiện đồ án cơ sở của mình.2 Phương pháp thực hiện - Trước tiên ta phải nêu bài toán, phân tích và thiết kế hệ thống nhận dạng. - Xây dựng hệ thống deep learning sử dụng ngôn ngữ Python và mạng nơ ron Tích chập (CNN).
Hệ thống lấy mẫu khuôn mặt bằng camera, sau đó hệ thống trích xuất, phân tích khuôn mặt từ hình ảnh hoặc các mẫu được lấy trước đó để so sánh và hệ thống đưa ra kết luận rằng có phải đối tượng được cho phép hay không. Sử dụng công cụ IDLE Python để lập trình - Sau đó xây dựng cơ sở dữ liệu SQLite để thống kê, hiển thị dữ liệu, sử dụng một số công cụ để lập trình như Sublime Text, PHPStorm, Pycharm … 1.3 Mục đích nghiên cứu Tìm hiểu về các thuật toán nhận diện khuôn mặt người. Tìm hiểu về mạng nơ-ron tích chập (CNN). Nâng cao kỹ năng thiết kế và lập trình bằng ngôn ngữ Python.
Rèn luyện kỹ năng nghiên cứu và tìm hiểu tài liệu. Xây dựng mô hình có thể nhận diện được cảm xúc khuôn mặt người và đếm được số người ra vào. Trang 11 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT GVHD: Ths. HÀ THỊ MINH PHƯƠNG 1.4 Giới hạn của đề tài Với thời gian có hạn nên nhóm chỉ thực hiện nghiên cứu các vấn đề cơ bản trong phạm vi nhất định: - Sử dụng thư viện mở có sẵn.
- Sử dụng video quay trực tiếp từ webcam và ảnh có sẵn làm đầu vào. - Chỉ hoạt động trong điều kiện có ánh sáng và góc quay phù hợp.5 Cấu trúc đồ án: - Nghiên cứu tổng quan. - Phân tích và thiết kế hệ thống. - Triển khai xây dựng.
- Kết luận và hướng phát triển. Trang 12 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT GVHD: Ths. HÀ THỊ MINH PHƯƠNG Chương 2: CƠ SỞ LÝ THUYẾT 2.1 Các phương pháp nhận diện khuôn mặt Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng theo các tiêu chí khác nhau: nhận dạng với dữ liệu đầu vào là ảnh tĩnh 2D là phổ biến nhất, tuy nhiên tương lai có lẽ sẽ là 3D (vì việc bố trí nhiều camera 2D sẽ cho dữ liệu 3D và đem lại kết quả tốt hơn, đáng tin cậy hơn), cũng có thể chia thành 2 hướng là: làm với dữ liệu ảnh và làm với dữ liệu video. Trên thực tế người ta hay chia các phương pháp nhận dạng mặt ra làm 3 loại: phương pháp tiếp cận toàn cục (Global) như Eigenfaces - PCA, Fisherfaces - LDA; phương pháp tiếp cận dựa trên các đặc điểm cục bộ (Local Feature Based) như LBP, Gabor Wavelets và phương pháp lai (là sự kết hợp của phương pháp toàn cục và phương pháp cục bộ).
[2] Phương pháp nhận dạng khuôn mặt dựa trên xét toàn diện khuôn mặt: Nhận dạng dựa trên toàn diện khuôn mặt, có nghĩa là sẽ không đi xét đến từng thành phần đặc trưng trên khuôn mặt nữa mà sẽ xem khuôn mặt là một không gian cụ thể và sẽ tìm những đặc trưng, những đặc điểm chính trên không gian đó. [2] Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt hơn khi làm việc trong các điều kiện không có kiểm soát và có thể nói rằng lịch sử phát triển của nhận dạng mặt là sự phát triển của các phương pháp trích chọn đặc trưng (Feature Extractrion Methods) được sử dụng trong các hệ thống dựa trên feature based. Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mô hình nhận dạng: identification (xác định danh tính, bài toán 1-N), và verification (xác thực danh tính, bài toán 1-1). Trong bài toán identification, ta cần xác định danh tính Trang 13 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT GVHD: Ths.
HÀ THỊ MINH PHƯƠNG của ảnh kiểm tra, còn trong bài toán verification ta cần xác định 2 ảnh có cùng thuộc về một người hay không.1 Nhận dạng khuôn mặt người dùng thuật toán PCA Kohonen đã đưa ra phương pháp dùng vector riêng để nhận dạng khuôn mặt, ông dùng một mạng neural đơn giản để chứng tỏ khả năng của phương pháp này trên các ảnh đã được chuẩn hóa. Mạng neural tính một mô tả của khuôn mặt bằng cách xấp xỉ các vector riêng của ma trận tương quan của ảnh. Các vector riêng sau này được biết đến với cái tên Eigenface [3]. Kirby và Sirovich chứng tỏ các ảnh có khuôn mặt có thể được mã hóa tuyến tính bằng một số lượng vừa phải các ảnh cơ sở.
Tính chất này dựa trên biến đổi Karhunen-Lòeve, mà còn được gọi dưới một cái tên khác là PCA và biến đổi Hotelling. Ý tưởng này được xem là của Pearson trình bày đầu tiên vào năm 1901 và sau đó là Hotelling vào năm 1933. Cho một tập các ảnh huấn luyện có kích thước n x m được mô tả bởi các vector có kích thước m x m, các vector cở sở cho một không gian con tối ưu được xác định thông qua lỗi bình phương trung bình khi chiếu các ảnh huấn luyện vào không gian con này. Các tác giả gọi tập các vector cơ sở tối ưu này là ảnh riêng sau đó gọi cho đơn giản là vector riêng của ma trận hiệp phương sai được tính từ các ảnh khuôn mặt đã vector hóa trong tập huấn luyện.
Nếu cho 100 ảnh, mà mỗi khuôn mặt có kích thước 91x50 thì có thể chỉ dùng 50 ảnh riêng, trong khi vẫn duy trì được một khả năng giống nhau hợp lý (giữ được 95% tính chất). [4] Turk và Pentland áp dụng PCA để xác định và nhận dạng khuôn mặt. Tương tự, dùng PCA trên tập huấn luyện ảnh các khuôn mặt để sinh các ảnh riêng (còn gọi là Eigenface) để tìm một không gian con (không gian khuôn mặt) trong không gian ảnh. Các ảnh khuôn mặt được chiếu vào không gian con này và được gom nhóm lại.
Tương tự các ảnh không có khuôn mặt dùng để huấn luyện cũng được chiếu vào cùng không gian con và gom nhóm lại. Các ảnh khi chiếu vào không gian khuôn mặt thì không bị thay đổi tính chất cơ bản, trong khi chiếu các ảnh không có khuôn mặt thì xuất hiện sự khác nhau cũng không ít. Xác định sự có mặt của một khuôn mặt trong ảnh thông qua tất cả khoảng cách giữa các vị trí trong ảnh và không gian ảnh. Khoảng cách này dùng để xem xét có hay không Trang 14 XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT GVHD: Ths.
HÀ THỊ MINH PHƯƠNG có khuôn mặt người, kết quả khi tính toán các khoảng cách sẽ cho ta một bản đồ về khuôn mặt. Có nhiều nghiên cứu về xác định khuôn mặt, nhận dạng, và trích đặc trưng từ ý tưởng vector riêng, phân rã, và gom nhóm. Sau đó Kim phát triển cho ảnh màu, bằng cách phân đoạn ảnh để không gian tìm kiếm giảm xuống.2 Nhận dạng khuôn mặt người dựa trên phương pháp LBP [5] Mẫu nhị phân cục bộ (Local Binary Pattern - LBP) là phương pháp trích chọn kết cấu của ảnh thành vector đặc trưng gọi là đặc trưng LBP.