Nhận diện khuôn mặt bằng phương pháp máy học CNN. Tìm hiểu khái niệm chung về máy học, sau đó tìm hiểu mô hình CNN và áp dụng vào nhận diện khuôn mặt. tài liệu giúp giáo viên và sinh viên làm đề tài tiểu luận hoặc nghiên cứu khoa học cấp trường ở các trường Trung cấp, Cao đẳng.
MỤC LỤC LỜI CẢM ƠN MỞ ĐẦU Lý chọn đề tài Mục đích nghiên cứu Nhiệm vụ nghiên cứu .5 Đối tượng phạm vi nghiên cứu 5 Phương pháp nghiên cứu Đóng góp đề tài Cấu trúc đề tài NỘI DUNG .7 CHƯƠNG I: CƠ SỞ LÝ THUYẾT VỀ MÁY HỌC 1.1 Tổng quan phương pháp máy học 1.2 Mạng nơ ron (Neural) 1.2.1 Mạng Nơ-ron nhân tạo .8 1.2.2 Kiến trúc mạng nơ ron 12 1.2.3 Huấn luyện mạng neural 14 1.2.4 Thuật toán huấn luyện mạng 16 CHƯƠNG 2: MẠNG NƠ RON TÍCH CHẬP (CONVOLUTION NEURAL NETWORKS – CNNs) 18 2.1 Phương pháp CNN 18 2.1.1 Các thành hần mơ hình hoạt động CNN 18 2.1.2 Ưu điểm CNN 22 2.2 Các tầng mạng CNN 23 2.2.1 Pooling 23 2.2.2 ReLU 25 2.2.3 Fully-connected 25 2.3 Kiến trúc mạng CNN 25 2.4 Cách chọn tham số cho CNN 26 CHƯƠNG 3: NHẬN DIỆN KHUÔN MẶT BẰNG CNN .27 3.1 Phương pháp nhận diện khuôn mặt CNN 27 3.1.1 Giới thiệu 27 3.1.2 Cấu trúc hệ thống 27 3.2 Thực nghiệm nhận diện khuôn mặt 31 3.2.1 Môi trường thực nghiệm 31 3.2.2 Tổ chức thực 32 3.2.3 Các bước thực 37 C KẾT LUẬN .39 TÀI LIỆU THAM KHẢO .40 LỜI CẢM ƠN Chúng xin gửi lời cảm ơn sâu sắc tới quý Thầy Cô hội đồng khoa học trường CĐ Bình Phước giúp đỡ động viên chúng tơi tận tình thời gian thực đề tài Những lời hướng dẫn động viên quý Thầy Cô thực học quý báu giúp cho chúng tơi hồn thành tốt đề tài Cảm ơn quý Thầy Cô khoa/tổ chuyên môn tận tình chia sẻ kinh nghiệm giúp đỡ công tác giúp hồn thành đề tài nghiên cứu Trong q trình thực đề tài này, tham khảo số tài liệu số tác giả, xin tỏ lòng cảm ơn tác giả Mặc dù cố gắng hoàn thành đề tài với tất nỗ lực thân, với kiến thức hạn chế đề tài khơng tránh khỏi sai sót, chúng tơi mong nhận góp ý tận tình q Thầy Cơ bạn Người thực đề tài: Đinh Thúy Chiều – Bùi Hùng Cường MỞ ĐẦU Lý chọn đề tài Ngày nay, xã hội loài người chứng kiến phát triển mạnh mẽ sôi động công nghệ thông tin lĩnh vực có lĩnh vực trí tuệ nhân tạo thị giác máy tính, nhận diện đối tượng Những năm gần đây, lĩnh vực đưa nhiều ứng dụng quan trọng giúp ích cho sống Trong việc nghiên cứu máy học ứng dụng máy học như: nhận diện khuôn mặt, nhận diện chữ viết tay, nhận diện đối tượng… nhà nghiên cứu dành quan tâm đặc biệt đầu tư nhiều nguồn lực vào lĩnh vực Nhận diện khuôn mặt cách thức để giám sát an ninh, an toàn xã hội cần thiết nơi, số địa điểm/đơn vị cần mức độ an tồn mức bình thường như: cửa hàng siêu thị, tịa nhà cơng ty, chung cư cao cấp, quan cơng an, doanh trại quan đội… Nhận diện danh tính qua khuôn mặt không đặc biệt quan trong ngành an ninh mà cịn áp dụng cho nhiều lĩnh vực khác như: điểm danh học sinh/sinh viên ngành giáo dục, giám sát trẻ nhỏ lớp học… Nhận diện khn mặt có hai yếu tố phát khn mặt ảnh nhận diện danh tính khn mặt Phát khn mặt có mặt nhiều điện thoại di động đời mới, cịn nhận diện khn mặt nhận diện danh tính xem người từ thư viện ảnh Nhận diện khn mặt tốn khó cần đào sâu nghiên cứu có nhiều thử thách Điểm thử thách khn mặt có mắt, mũi, miệng có khn dạng Như để áp dụng xử lý ảnh máy học vào nhận dạng, phạm vi đề tài tác giả tìm hiểu phương pháp máy học có độ xác cao tốc độ chạy nhanh, phù hợp với thời gian thực phương pháp mạng nơ ron tích chập (CNN) Do q trình nghiên cứu kiến thức tài liệu nhiều hạn chế nên đề tài cịn nhiều thiếu sót, chưa đầy đủ Mong nhận góp ý quý Thầy Cơ để đề tài thực hồn chỉnh Mục đích nghiên cứu Nghiên cứu tổng quan phương pháp máy học Nghiên cứu giải thuật máy học để áp dụng vào nhận diện khn mặt người Viết chương trình thực nghiệm ngơn ngữ lập trình python Nhiệm vụ nghiên cứu Nghiên cứu phương pháp máy học để xem cách học phù hợp với tốn nhận diện khn mặt Ứng dụng phương pháp học sâu mạng nơ ron tích chập (CNNs) vào phương pháp nhận diện khuôn mặt Đối tượng phạm vi nghiên cứu Nghiên cứu phương pháp sử dụng hệ thống nhận diện khuôn mặt: Phương pháp sử dụng mạng nơ ron tích chập Nghiên cứu ngơn ngữ lập trình python áp dụng cho toán Phương pháp nghiên cứu Phương pháp phân tích tổng hợp tài liệu để tìm hiểu phương pháp máy học nhận diện khuôn mặt dựa giải thuật máy học Phương pháp nghiên cứu thực tiễn áp dụng đề tài Đóng góp đề tài Tài liệu bổ ích cho lĩnh vực máy học Sử dụng để phát triển với tập liệu lớn q trình nhận diện khn mặt để kiểm soát người lạ vào quan Nâng cao khản tư xây dựng thuật tốn viết chương trình Cấu trúc đề tài Chương 1: Giới thiệu tổng quan phương pháp máy Chương 2: Mạng nơ ron tích chập (Convolutional Neural Networks –CNNs) Chương Thực nghiệm nhận diện khuôn mặt NỘI DUNG CHƯƠNG I: CƠ SỞ LÝ THUYẾT VỀ MÁY HỌC 1.1 Tổng quan phương pháp máy học Máy học (Machine Learning - ML) công nghệ phát triển từ lĩnh vực trí tuệ nhân tạo Các thuật tốn ML chương trình máy tính có khả học hỏi cách hoàn thành nhiệm vụ cách cải thiện hiệu suất theo thời gian ML đòi hỏi đánh giá người việc tìm hiểu liệu sở lựa chọn kĩ thuật phù hợp để phân tích liệu Đồng thời, trước sử dụng, liệu phải sạch, khơng có sai lệch khơng có liệu giả Các mơ hình ML u cầu lượng liệu đủ lớn để "huấn luyện" đánh giá mơ hình Trước đây, thuật toán ML thiếu quyền truy cập vào lượng lớn liệu cần thiết để mơ hình hóa mối quan hệ liệu Sự tăng trưởng liệu lớn (big data) cung cấp thuật toán ML với đủ liệu để cải thiện độ xác mơ hình dự đoán Học sâu, tập máy học, sử dụng lớp, bậc mạng nơ-ron nhân tạo để thực trình máy học Các mạng nơ-ron xây dựng giống não người, với nút rơ-ron kết nối với trang web Học sâu khơng có nghĩa máy học thêm kiến thức chuyên sâu, có nghĩa máy sử dụng lớp khác để học hỏi từ liệu Độ sâu mơ hình biểu thị số lớp mơ hình Trong chương trình truyền thống xây dựng phân tích liệu theo cách tuyến tính, chức phân tầng hệ thống học sâu cho phép máy xử lí liệu theo cách tiếp cận phi tuyến Lớp mạng nơ-ron xử lí liệu đầu vào thô, xử lý ảnh gốc ban đầu chuyển sang lớp làm đầu Lớp thứ hai xử lí thơng tin lớp trước cách thêm thông tin bổ sung địa IP người dùng rút trích đặc trưng ảnh chuyển qua kết Một mô hình Deep Learning tiên tiến giúp xây dựng hệ thống thơng minh với độ xác cao mạng nơ ron 1.2 Mạng nơ ron (Neural) 1.2.1 Mạng Nơ-ron nhân tạo Mạng Neural nhân tạo, Artificial Neural Network (ANN) gọi tắt mạng nơ ron, mơ hình xử lý thơng tin theo cách thức xử lý thông tin hệ nơ ron sinh học Trong Deep learning, Neural networks để mạng nơ ron nhân tạo, kết hợp nơ ron nhân tạo với Mỗi liên kết kèm theo trọng số đặc trưng cho đặc tính kích hoạt ức chế nơ ron ANN giống não người, học kinh nghiệm thơng qua huấn luyện, có khả lưu giữ kinh nghiệm hiểu biết sử dụng tri thức việc dự đốn liệu chưa biết Kiến trúc chung mạng nơron nhân tạo (ANN) gồm thành phần là: Tầng nhập (Input Layer), tầng ẩn (Hidden Layer) tầng xuất (Output Layer) Trong đó, tầng ẩn (Hidden Layer) gồm nơron nhận liệu input từ nơron lớp (Layer) trước chuyển đổi input cho lớp xử lý Trong ANN có nhiều tầng ẩn Tầng input layer (tầng vào): Tầng nằm bên trái mạng, thể cho đầu vào mạng Tầng output layer (tầng ra): Là tầng bên phải thể cho đầu mạng Tầng hidden layer (tầng ẩn): Tầng nằm tầng vào tầng thể cho trình suy luận logic mạng Mỗi Neural Network có tầng vào tầng lại có nhiều tầng ẩn Hình 1.1 Mơ hình mạng nơ ron nhân tạo ANN Hình 1.2 Kiến trúc tổng quát ANN Trong Processing Elements (PE) ANN gọi nơ ron, nơ ron nhận liệu vào (Inputs) xử lý chúng cho kết (Output) Kết xử lý nơron làm Input cho nơron khác - Q trình xử lý thơng tin ANN: Hình 1.3 Qúa trình xử lý thơng tin ANN + Inputs (dữ liệu vào): Mỗi Input tương ứng với thuộc tính (attribute) liệu (patterns) + Output (kết quả): Kết ANN giải pháp cho vấn đề + Connection Weights (Trọng số liên kết) : Đây thành phần quan trọng ANN, thể mức độ quan trọng (độ mạnh) liệu đầu vào trình xử lý thơng tin (q trình chuyển đổi liệu từ Layer sang layer khác) Quá trình học ANN thực trình điều chỉnh trọng số liệu đầu vào để có kết mong muốn + Summation Function (Hàm tổng): Tính tổng trọng số tất input đưa vào nơron Hàm tổng nơron n input tính theo cơng thức sau: + Transfer Function (Hàm chuyển đổi): Hàm chuyển đổi nơron cho biết khả kích hoạt nơron cịn gọi kích hoạt bên (internal activation) Các nơron sinh output khơng (nói cách khác output nơ ron chuyển đến layer tiếp mạng không) CHƯƠNG 3: NHẬN DIỆN KHUÔN MẶT BẰNG CNN 3.1 Phương pháp nhận diện khuôn mặt CNN 3.1.1 Giới thiệu Nhận dạng khuôn mặt vấn đề quan tâm nhiều sử dụng rộng rãi hệ thống an ninh Để trình nhận dạng khn mặt xác nhiệm vụ phát khn mặt đóng vai trị vơ quan trọng Nhiệm vụ phát khuôn mặt dựa phương pháp mạng nơron tích chập ghép nhiều tầng nối tiếp Chúng tơi đề xuất khung qt tồn ảnh với kiến trúc ghép nối tiếp ba mạng nơron tích chập để phát khn mặt Nhiệm vụ nhận dạng khuôn mặt dựa phương pháp FaceNet Lợi ích hệ thống FaceNet là: khuôn mặt đại diện vector đặc trưng Khi đó, trình nhận dạng khn mặt trở thành vấn đề phân lớp vector đặc trưng 3.1.2 Cấu trúc hệ thống Hệ thống nhận diện khuôn mặt gồm quy trình chính: - Phát khn mặt - Nhận diện khn mặt 3.1.2.1 Quy trình phát khn mặt Quy trình phát khn mặt sau: Hình ảnh ban đầu thay đổi hướng nhìn theo hướng khác Từ ảnh ban đầu nhân lên 500 có góc nhìn khác để lấy đặc trưng khuôn mặt Các ảnh lấy theo 10 đặc trưng như: phóng to, thu nhỏ, xoay trái, xoay phải, sáng, tối… Sau ta quét toàn ảnh đưa vec tơ đặc trưng, đồng thời rút trích đặc trưng để chuẩn bị cho trình học máy Như tập liệu để chuẩn bị đưa vào huấn luyện gồm 2000 ảnh người khác nhân lên từ 20 ảnh gốc ban đầu Hình 3.1 Thư mục chứa ảnh gốc người ban đầu Hình 3.2 Hình ảnh minh họa việc nhân lên từ ảnh gốc Nhân ảnh theo hướng nhìn, sáng tối khác (5x100) Hình 3.3 Tập ảnh rút trích đặc trưng để chuẩn bị đưa vào huấn luyện Lớp 1: Lớp tích chập gồm có tầng sau: - Tầng 1: Sử dụng mạng CNN, gọi tầng đề xuất, để thu cửa sổ chứa khuôn mặt vec tơ hồi quy cửa sổ Tiếp theo, cửa sổ chứa khuôn mặt hiệu chuẩn dựa vec tơ hồi quy Cuối cùng, cửa sổ xếp chồng vùng hợp thành cửa sổ Sau qua tầng 1, ta thu cửa sổ chứa khn mặt - Tầng 2: Tất cửa sổ chứa khuôn mặt từ tầng sàng lọc cách đưa vào CNN khác phức tạp gọi mạng lọc để tiếp tục loại bỏ số lượng lớn cửa sổ không chứa khuôn mặt Sau thực hiệu chuẩn với vec tơ hồi quy thực hợp cửa sổ xếp chồng vùng - Tầng 3: Tầng tương tự tầng 2, sử dụng CNN chi tiết gọi mạng đầu để lọc kết lần đánh dấu vị trí năm điểm khn mặt Sau qua tầng cửa sổ chứa khuôn mặt phát khuôn mặt Nhờ việc huấn luyện qua lớp mạng CNN, hiệu suất phát khuôn mặt phương pháp cải thiện đáng kể Lớp 2: Sử dụng max pooling để giảm nửa số đặc trưng, sau pooling ảnh lấy ¼ đặc trưng so với đặc trưng ban đầu Đặc trưng chọn đặc trưng có số lớn cửa sổ gồm ô lớp Lớp 3: Sử dụng hàm ReLu để kích hoạt phi tuyến sau tích chập kết nối đầy đủ (trừ lớp đầu ra) 3.1.2.2 Nhận diện khuôn mặt Trong đề tài này, tác giả thực nhận dạng khuôn mặt dựa nghiên cứu FaceNet Dựa việc nhúng ảnh vào không gian Euclide cách sử dụng mạng CNN Mạng huấn luyện cho khoảng cách bình phương không gian nhúng tương ứng với khoảng cách khn mặt Khn mặt người có khoảng cách nhỏ khuôn mặt người khác có khoảng cách lớn Khi ta lấy khuôn mặt người đại diện vec tơ đặc trưng 128 chiều chuyển đổi thành 128 byte Khi không gian nhúng tạo nhiệm vụ nhận dạng khn mặt trở thành tốn phân lớp vec tơ đặc trưng dùng thuật toán KNN – mang nơ ron nhiều lớp Để đánh giá hiệu phát khuôn mặt phương pháp đề tài này, so sánh hiệu suất phương pháp so với số nghiên cứu trước như: Bộ phân loại AdaBoost sử dụng với đặc trưng Haar , phân loại AdaBoost kết hợp với đặc trưng LBP (Local Binary Pattern) phân loại SVM (Support Vector Machine) sử dụng với đặc trưng HOG (Histogram of Oriented Gradients) việc phát khuôn mặt tập liệu Face 94 , Face 95 , Grimace Pain 3.2 Thực nghiệm nhận diện khuôn mặt 3.2.1 Môi trường thực nghiệm Sử dụng ngôn ngữ python, cài đặt Anaconda Cài thêm số gói thư viện python để sử dụng như: numpy, sklearn,scikit-skimage, - Cài đặt gói thư viện bắt buộc để ứng dụng như: tensorflow, keras, opencv - Kiểm tra thư viện cài đặt cách import cmd python Hình 3.4 Giao diện ngơn ngữ lập trình python anaconda Màn hình kiểm tra số thư viện cần thiết: Hình 3.5 Kiểm tra số thư viện python 3.2.2 Tổ chức thực Cấu trúc thư mục thực thi chương trình sau: Hình 3.6 Thư mục gốc ban đầu chứa toàn đề tài + Tập ảnh đầu vào: Được đặt thư mục inputphoto, tập ảnh đầu vào chứa thư mục tương ứng với ảnh người khác Mỗi thư mục chứa người chứa bứa ảnh gốc người Hình 3.7 Tập ảnh đầu vào + Thư mục có tên Changedphoto: thư mục nhân ảnh chuẩn bị nguồn cho máy học tự động tạo folder tương ứng với thư mục tập inputphoto,mỗi folder thực việc chuyển đổi phép biến đổi (góc chiếu, xoay, ánh sáng, nhiễu, …) tạo thành 500 ảnh khác 1000000 Hình 3.8 Từ ảnh gốc nhân lên 500 ảnh với thuộc tính khác + Thư mục CNNdata: Biến đổi 2000 ảnh từ tập nguồn changedphoto trích chọn đặc trưng ảnh Hình 3.9 Tập ảnh rút trích đặc trưng chuẩn bị đưa vào huấn luyện + Thư mục Photooftest: chứa hình ảnh test sau huấn luyện mạng thành cơng Hình 3.10 Tập ảnh kiểm tra Kết sau test với tập ảnh thư mục có sẵn để test: Hình 3.11 Kết tập ảnh kiểm tra (mẫu dương) Trong trường hợp dùng máy tính có camera ta test trực tiếp camera gọi file test camera Hình 3.12 Kết test camera (mẫu âm) 3.2.3 Các bước thực Bước 0: Chuẩn bị tập ảnh nguồn đặt tên ảnh theo dạng sau: [hoten]_[chiso].jpg Bước 1: Gọi file baseofimageWindow.py: code chuyển đổi nhân từ ảnh nguồn thư mục inputphoto qua changedphoto Đồng thời rút chọn đặc trưng tạo liệu đầu vào cho mạng CNN thư mục CNNdata Thời gian ước lượng tầm 40 phút đến 60 phút Bước 2: Gọi file trainWindows.py tiến hành huấn luyện mạng CNN Sau huấn luyện tạo file model.h5, model.json haarcascade_frontalface_default.xml (chứa thông số kiến trúc tầng mạng) Thời gian ước lượng khoảng 60 phút Bước 3: Gọi file testWindowsIndent.py để kiểm tra hình ảnh thư mục photooftest Bước 4: Gọi file face_recognization_byCamera_Window.py để kiểm tra máy tính có gắn camera C KẾT LUẬN Qua tháng nghiên cứu chúng tơi hồn thành đề tài với kết đạt sau: - Nêu tổng quan phương phá máy học - Nêu vài phương pháp máy học liên quan đến đề tài - Sưu tầm liệu ảnh phục vụ cho huấn luyện kiểm tra - Xây dựng viết code chương trình nhận diện khn mặt Bên cạnh kết đạt được, thời gian có hạn, đề tài số hạn chế như: - Chưa nghiên cứu hết tất phương pháp xây dựng phương pháp nhận diện khn mặt - Tập liệu cịn cấu hình máy khơng cao nên khơng thể chạy liệu lớn Đây hướng nghiên cứu thời gian tới Cụ thể, tiếp tục thực hiện: Nghiên cứu hết phương pháp xây dựng hệ thống nhận diện khuôn mặt Nâng cấp máy để thực nghiệm với liệu lớn TÀI LIỆU THAM KHẢO [1] Phạm Trung Kiên, Luận văn Thạc sỹ, Tìm kiếm nhận dạng khn mặt người ảnh, 2007 [2] website: https://ereka.vn/post/chia-se-ve-mang-noron-tich-chap-convolutionalneural-networks-or-convnets-52790224348847566 [3] Muhammad Imran Razzak, Saeeda Naz, Ahmad Zaib, Deep Learning for Medical Image Processing: Overview, Challenges and Future [4] Dương Thanh Long, Bùi Thế Hùng, phương pháp nhận dạng khuôn mặt dựa mạng nơ ron tích chập [5] Ngơ Quốc Việt, Bài giảng Deep Learning - CNN [6] Website: https://techblog.vn/su-dung-cnn-trong-bai-toan-nhan-dang-mat-nguoi-phan1 [7] Lê Thị Thu Hằng, Nghiên cứu mạng nơ ron tích chập ứng dụng cho toán nhận dạng biển số xe, ĐH Công nghệ - ĐHQG Hà Nội, 2016 ... cứu Nghiên cứu phương pháp máy học để xem cách học phù hợp với tốn nhận diện khn mặt Ứng dụng phương pháp học sâu mạng nơ ron tích chập (CNNs) vào phương pháp nhận diện khuôn mặt Đối tượng phạm... 3: NHẬN DIỆN KHUÔN MẶT BẰNG CNN 3.1 Phương pháp nhận diện khuôn mặt CNN 3.1.1 Giới thiệu Nhận dạng khuôn mặt vấn đề quan tâm nhiều sử dụng rộng rãi hệ thống an ninh Để q trình nhận dạng khn mặt. .. liệu để tìm hiểu phương pháp máy học nhận diện khuôn mặt dựa giải thuật máy học Phương pháp nghiên cứu thực tiễn áp dụng đề tài Đóng góp đề tài Tài liệu bổ ích cho lĩnh vực máy học Sử dụng để phát