Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người Nhập môn học máy và khai phá dữ liệu xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi con người
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO ĐỒ ÁN MÔN HỌC Đề tài: Xây dựng hệ thống nhận dạng khuôn mặt và dự đoán tuổi người Lớp : 136805 Học phần : Nhập môn Học máy Khai phá liệu Mã học phần : IT3190 Giảng viên hướng dẫn : TS Nguyễn Nhật Quang Danh sách thành viên nhóm: Họ tên Mã số sinh viên Phạm Đức Hảo 20200200 Trương Văn Hiển 20194276 Đinh Trọng Nghĩa 20194340 Phạm Phương Huy 20194300 Hà Nội, tháng năm 2023 Bài tập lớn: Nhập môn Học máy Khai phá liệu MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN ĐỀ TÀI 1.1 Lý chọn đề tài 1.2 Yêu cầu toán 1.3 Ý tưởng thực CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Bài toán 1: Phát toạ độ khuôn mặt ảnh, video 2.1.1 Đặc trưng Haar Like 2.1.2 Thuật toán Adaboost 2.1.3 Mơ hình phân tầng Cascade 12 2.2 Bài toán 2: Dự đoán độ tuổi khuôn mặt 13 2.2.1 Convolutional 13 2.2.2 Cấu trúc mạng CNN 14 CHƯƠNG CÔNG NGHỆ SỬ DỤNG VÀ BỘ DỮ LIỆU 16 3.1 Công nghệ sử dụng 16 3.2 Bộ liệu 16 CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH VÀ TRIỂN KHAI CÀI ĐẶT 17 3.1 Xây dựng chương trình Training data 17 3.1.1 Các thư viện sử dụng 17 3.1.2 Xây dựng liệu 17 3.1.3 Loading Images 18 3.1.4 Tạo Model 20 Bài tập lớn: Nhập môn Học máy Khai phá liệu 3.1.5 Train Model 21 3.2 Face_detection.py 22 3.3 Triển khai cài đặt 22 CHƯƠNG KẾT QUẢ TỔNG QUAN 24 4.1 Đánh giá mơ hình 24 4.2 Sản phẩm demo 24 4.2.1 Kiểm thử tập liệu test 24 4.2.2 Demo app Age Prediction realtime 25 4.3 Nhận xét, đánh giá 26 4.4 Hướng phát triển 26 TÀI LIỆU THAM KHẢO 27 Bài tập lớn: Nhập môn Học máy Khai phá liệu LỜI NĨI ĐẦU 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 Trong thời đại 4.0, 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 Trong năm gần đây, toán nhận nhiều quan tâm tốn nhiều công sức lĩnh vực công nghệ thông tin, đó tốn nhận dạng Tuy mới xuất chưa lâu nó đã quan tâm tính ứng dụng thực tế tốn phức tạp Bài tốn nhận dạng có nhiều lĩnh vực như: nhận dạng vất chất, nhận dạng chữ viết, nhận dạng giọng nói, nhận dạng khn mặt đó phổ biến có tính ứng dụng nhiều cả tốn nhận diện khn mặt Để nhận dạng khuôn mặt, bước đầu tiên để nhận dạng phát khuôn mặt, sau đó nhận dạng, phân loại khuôn mặt Với hấp dẫn tốn thách thức cịn phía trước, với niềm đam mê, mong ḿn học hỏi công nghệ, tiếp xúc với tốn nhận dạng, nhóm chúng em đã định lựa chọn đề tài “Xây dựng hệ thống nhận dạng khuôn mặt dự đoán tuổi người” cho đồ án mơn học Nhóm chúng em mong ḿn có thể triển khai mơ hình đáp ứng tiêu chuẩn tớt, nhanh để phù hợp cho tính ứng dụng Đồ án nhóm chúng em bao gồm nội dung chính: - Tổng quan đề tài - Cơ sở lý thuyết - Công nghệ sử dụng liệu - Xây dựng chương trình triển khai cài đặt - Kết quả tổng quan Mặc dù đã cớ gắng hồn thiện sản phẩm khơng thể tránh khỏi thiếu hụt kiến thức sai sót kiểm thử Chúng em mong nhận nhận xét thẳng thắn, chi tiết đến từ thầy để tiếp tục hồn thiện Ći cùng, nhóm chúng em xin gửi lời cảm ơn đến thầy TS Nguyễn Nhật Quang đã hướng dẫn chúng em śt q trình hồn thiện Đồ án mơn học Nhóm chúng em xin chân thành cảm ơn thầy Bài tập lớn: Nhập môn Học máy Khai phá liệu CHƯƠNG TỔNG QUAN ĐỀ TÀI 1.1 Lý chọn đề tài Với phát triển không ngừng khoa học công nghệ, đặc biệt với điện thoại thông minh ngày đại sử dụng phổ biến đời sống người đã làm cho lượng thông tin thu hình ảnh ngày tăng Theo đó, lĩnh vực xử lý ảnh trọng phát triển, ứng dụng rộng rãi đời sống xã hội đại Không dừng lại việc chỉnh sửa, tăng chất lượng hình ảnh mà với cơng nghệ xử lý ảnh có thể giải tốn nhận dạng chữ viết, nhận dạng dấu vân tay, nhận dạng khn mặt Một tốn nhiều người quan tâm lĩnh vực xử lý ảnh đó nhận dạng khuôn mặt (Face Recognition) Như đã biết, khuôn mặt đóng vai trị quan trọng q trình giao tiếp người với người, mang lượng thơng tin giàu có, chẳng hạn từ khn mặt có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt xác định mối quan hệ với đới tượng (có quen biết hay khơng) Do đó, tốn nhận dạng khn mặt đóng vai trị quan trọng nhiều lĩnh vực đời sống hàng ngày người hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin người tiếng đặc biệt vấn đề an ninh, bảo mật Trong khn khổ đồ án mơn học, nhóm em mong ḿn triển khai mơ hình nhận diện khn mặt có thể đáp ứng tính thực tiễn u cầu độ xác tương đới hệ thớng gửi xe, hệ thớng điểm danh Vì nhóm em đã lựa chọn đề tài “Xây dựng hệ thống nhận dạng khn mặt dự đốn tuổi người” để có thể tìm hiểu sâu hiểu toán 1.2 Yêu cầu toán - Phát khn mặt có ảnh, video - Mơ hình đạt tỉ lệ xác cao, tới thiểu sai số độ tuổi giúp người dùng tin tưởng để sử dụng - Đảm bảo mượt mà chạy real-time với webcam 1.3 Ý tưởng thực Nhóm chúng em chia nhỏ hệ thớng thành toán cần giải quyết: - Bài toán 1: Phát toạ độ khuôn mặt ảnh, video Bài tập lớn: Nhập môn Học máy Khai phá liệu - Bài toán 2: Sau đã xác định khn mặt, dự đốn độ tuổi khn mặt đó Ý tưởng giải pháp cho toán con: - Bài tốn 1: Nhận dạng khn mặt người ảnh, video phân loại Haar Cascade - Bài tốn 2: Xây dựng mơ hình mạng CNN để dự đoán độ tuổi cho input đầu vào Tập liệu sử dụng cho việc huấn luyện mạng CNN Age prediction | Kaggle Bài tập lớn: Nhập môn Học máy Khai phá liệu CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Bài toán 1: Phát toạ độ khn mặt ảnh, video Để có thể phát tọa độ khn mặt người có ảnh video, chúng em sử dụng phân loại Haar Cascade Bộ phân loại Haar Cascade hướng tiếp cận hiệu quả cho toán nhận diện vật thể, đề xuất báo “Rapid Object Detection using a Boosted Cascade of Simple Features” (2001) Paul Viola Michael Jones Bộ phân loại Haar, sử dụng nhận diện khuôn mặt thời gian thực đầu tiên, thực chất hệ thống học máy mà hàm cascade huấn luyện với nhiều ảnh, gồm cả ảnh dương bản ảnh âm bản Sau huấn luyện, hệ thống sử dụng để nhận diện vật thể hình ảnh khác Bộ phân loại bản sử dụng đặc trưng Haar Like sau đó sử dụng thật nhiều đặc trưng đó qua nhiều lượt (Cascade) để tạo thành cỗ máy nhận diện hồn chỉnh 2.1.1 Đặc trưng Haar Like Khn mặt đặc trưng tập hợp pixel vùng khuôn mặt mà pixel tạo lên điểm khác biệt so với vùng pixel khác Tuy nhiên với ảnh đầu vào, việc sử dụng pixel riêng lẻ lại khơng hiệu quả Vì nhà nghiên cứu đã đưa tư tưởng kết hợp vùng pixel với tạo đặc trưng có khả phân loại tốt vùng khuôn mặt Trong số đó đặc trưng Haar Like đã ứng dụng Mỗi đặc trưng Haar Like miền hình chữ nhật chia thành 2, hình chữ nhật nhỏ phân biệt quy ước màu trắng màu đen hình vẽ dưới đây: Từ đặc trưng bản mở rộng thành tập đặc trưng: o Đặc trưng cạnh Bài tập lớn: Nhập môn Học máy Khai phá liệu o Đặc trưng đường o Đặc trưng tâm - xung quanh Giá trị đặc trưng Haar Like: 𝑓(𝑥) = ∑ (𝑝𝑖𝑥𝑒𝑙) − 𝑣ù𝑛𝑔 đ𝑒𝑛 ∑ (𝑝𝑖𝑥𝑒𝑙) 𝑣ù𝑛𝑔 𝑡𝑟ắ𝑛𝑔 Để tính giá trị đặc trưng Haar Like, ta phải tính tổng vùng pixel ảnh Nhưng để tính tốn giá trị đặc trưng Haar Like cho tất cả vị trí ảnh địi hỏi chi phí tính tốn lớn Do đó để có thể tính nhanh, Viola Jones giới thiệu khái niệm ảnh tích phân (Integral Image) Integral Image mảng chiều với kích thước kích thước ảnh cần tính đặc trưng Haar Like, với phần tử mảng tính cách tính tổng điểm ảnh phía bên trái Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, phải ảnh, việc tính tốn dựa phép cộng số nguyên đơn giản Giá trị ảnh tích phân điểm P có toạ độ (x,y) tính sau: 𝑃(𝑥, 𝑦) = ∑ 𝑖(𝑥 ′ , 𝑦 ′ ) 𝑥′≤ 𝑥 𝑦 ≤ 𝑦′ Sau đã tính ảnh tích phân, việc tính tổng điểm ảnh vùng đó ảnh thực sau: Bài tập lớn: Nhập mơn Học máy Khai phá liệu Ví dụ ta tính tổng điểm ảnh vùng D: Với: A, B, C, D tổng giá trị điểm ảnh vùng P1, P2, P3, P4 giá trị ảnh tích phân đỉnh D Ta có: P1 = A P2 = A + B P3 = A + C P4 = A + B + C + D Vậy: 𝑃1 + 𝑃4 − 𝑃2 − 𝑃3 = 𝐴 + (𝐴 + 𝐵 + 𝐶 + 𝐷) − (𝐴 + 𝐵) − (𝐴 + 𝐶) = 𝐷 𝑫 = 𝑷𝟏 + 𝑷𝟒 − 𝑷𝟐 − 𝑷𝟑 Khi áp dụng vào tính tốn giá trị đặc trưng, ta thấy: - Đặc trưng hình chữ nhật (đặc trưng cạnh) tính thơng qua giá trị điểm ảnh tích phân - Đặc trưng hình chữ nhật (đặc trưng đường) đặc trưng tâm – xung quanh tính thơng qua giá trị điểm ảnh tích phân - Đặc trưng hình chữ nhật (đặc trưng chéo) tính thơng qua giá trị điểm ảnh tích phân Trong tính dùng định nghĩa giá trị cần tính tốn lên tới hàng trăm Điều làm tăng tốc độ xử lý cách đáng kể Tiếp theo, ta sử dụng phương pháp học máy Adaboost để xây dựng phân loại mạnh với độ xác cao 2.1.2 Thuật tốn Adaboost Adaboost phân loại phi tuyến phức dựa tiếp cận boosting Freund Schapzire đưa vào năm 1995 Adaboost hoạt động dưa nguyên tắc kết hợp tuyến tính phân loại yếu để tạo nên phân loại mạnh Bài tập lớn: Nhập môn Học máy Khai phá liệu Là cải tiến tiếp cận boosting Adaboost sử dụng khái niệm trọng sớ để đánh dấu mẫu khó nhận dạng Trong trình huấn luyện, phân loại yếu xây dựng, thuật toán tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng phân loại kế tiếp: tăng trọng số mẫu bị nhận dạng sai giảm trọng số mẫu nhận dạng phân loại yếu vừa xây dựng Bằng cách phân loại sau có thể tập trung vào mẫu mà phân loại trước nó làm chưa tốt Sau cùng, phân loại yếu kết hợp tuỳ theo mức độ tốt chúng để tạo nên phân loại mạnh Biểu diễn phân loại yếu: 1: ℎ𝑘 (𝑥) = { 0: 𝑝𝑘 𝑓𝑘 < 𝑝𝑘 θ𝑘 𝑝𝑘 𝑓𝑘 ≥ 𝑝𝑘 θ𝑘 Trong đó: 𝑥: cửa sổ cần xét 𝜃k: ngưỡng 𝑓 k: giá trị đặc trưng Haar Like 𝑝k: hệ sớ định chiều phương trình Adaboost kết hợp phân loại yếu thành phân loại mạnh sau: 𝑛 𝐻(𝑥) = 𝑎1 ∗ ℎ1 + 𝑎2 ∗ ℎ2 + ⋯ + 𝑎𝑛 ∗ ℎ𝑛 = ∑ 𝑎𝑖 ∗ ℎ𝑖 𝑖=1 Với 𝑎𝑖 ≥ : hệ sớ chuẩn hố cho phân loại yếu Thuật toán Adaboost: - Cho tập n mẫu: (𝑥1 , 𝑦1 ), … , (𝑥𝑛 , 𝑦𝑛 ) đó 𝑦𝑖 nhãn mẫu 𝑥𝑖 Trong toán chúng em, 𝑥𝑖 ảnh 𝑦𝑖 ∈ {0,1} tương ứng cho ảnh 𝑥𝑖 có chứa khuôn mặt người hay không - 1 Khởi tạo giá trị trọng số 𝑤1,𝑖 = 2𝑚 , 2𝑙 tương ứng với 𝑦𝑖 = 0, đó: 𝑚 số ảnh không chứa mặt người (trường hợp âm - negative) 𝑙 số trường ảnh chứa mặt người (trường hợp dương – positive) - Xây dựng T phân loại yếu: 10 Bài tập lớn: Nhập môn Học máy Khai phá liệu Tóm lại, chuỗi phân lớp xử lý mẫu (ảnh) vào theo nguyên tắc sau: Nếu có phân lớp đó cho đó không phải mặt người ta loại bỏ ngay, cịn phân lớp đó cho đó khn mặt ta chuyển đến phân lớp sau Nếu mẫu qua hết tất cả phân lớp ta mới định đó khuôn mặt Sơ đồ nhận diện khn mặt: 2.2 Bài tốn 2: Dự đốn độ tuổi khuôn mặt Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) mơ hình Deep Learning tiên tiến Nó giúp cho xây dựng hệ thớng thơng minh với độ xác cao 2.2.1 Convolutional Các convolutional layer có parameter (kernel) đã học để tự điều chỉnh lấy thơng tin xác mà không cần chọn feature 13 Bài tập lớn: Nhập mơn Học máy Khai phá liệu Trong hình ảnh ví dụ trên, ma trận bên trái hình ảnh trắng đen sớ hố Ma trận có kích thước 5x5 điểm ảnh có giá trị giao điểm dòng cột Convolution hay tích chập nhân phần tử ma trận Sliding Window hay kernel, filter feature detect tra trận có kích thước nhỏ ví dụ 3x3 Convolution hay tích chập nhân phần tử bên ma trận 3x3 với ma trận bên trái Kết quả ma trận gọi Convoled feature sinh từ việc nhân ma trận Filter với ma trận ảnh 5x5 bên trái 2.2.2 Cấu trúc mạng CNN Mạng CNN tập hợp lớp Convolution chồng lên sử dụng hàm nonlinear activation ReLU để kích hoạt trọng sớ node Mỗi lớp sau thơng qua hàm kích hoạt tạo thông tin trừu tượng cho lớp Mỗi lớp sau thông qua hàm kích hoạt tạo thơng tin trừu tượng cho lớp Trong mô hình mạng truyền ngược (feedforward neural network) neural đầu vào (input node) cho neural đầu lớp Mơ hình gọi mạng kết nới đầy đủ (fully connected layer) hay mạng tồn vẹn (affine layer) Cịn mơ hình CNNs ngược lại Các layer liên kết với thông qua chế convolution Layer kết quả convolution từ layer trước đó, nhờ mà ta có kết nối cục Như neuron lớp sinh từ kết quả filter áp đặt lên vùng ảnh cục neuron trước đó Mỗi lớp sử dụng filter khác thơng thường có hàng trăm hàng nghìn filter kết hợp kết quả chúng lại Ngồi có sớ layer khác 14 Bài tập lớn: Nhập môn Học máy Khai phá liệu pooling/subsampling layer dùng để chắt lọc lại thông tin hữu ích (loại bỏ thơng tin nhiễu) Trong trình huấn luyện mạng (traning) CNN tự động học giá trị qua lớp filter dựa vào cách thức mà bạn thực Ví dụ tác vụ phân lớp ảnh, CNNs cớ gắng tìm thông số tối ưu cho filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features Layer cuối dùng để phân lớp ảnh Trong mơ hình CNN có khía cạnh cần quan tâm tính bất biến (Location Invariance) tính kết hợp (Compositionality) Với đới tượng, đối tượng chiếu theo gốc độ khác (translation, rotation, scaling) độ xác thuật toán bị ảnh hưởng đáng kể Pooling layer cho bạn tính bất biến đới với phép dịch chủn (translation), phép quay (rotation) phép co giãn (scaling) Tính kết hợp cục cho ta cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao trừu tượng thông qua convolution từ filter Đó lý CNNs cho mơ hình với độ xác cao Cũng giớng cách người nhận biết vật thể tự nhiên 15 Bài tập lớn: Nhập môn Học máy Khai phá liệu CHƯƠNG CÔNG NGHỆ SỬ DỤNG VÀ BỘ DỮ LIỆU 3.1 Công nghệ sử dụng Mơi trường: Anaconda Ngơn ngữ lập trình: Python 3+ Các thư viện sử dụng: o OpenCV o Tkinter o Anaconda o Numpy o Pandas o Sklearn o TensorFlow o Matplotlib 3.2 Bộ liệu Bộ liệu sử dụng: Age prediction | Kaggle Mô tả liệu: o Tập liệu sử dụng gồm 185.000 ảnh chụp khuôn mặt người độ tuổi khác từ – 100 tuổi Kích thước ảnh 128x128 px o Tập liệu chia thành phần “train” “test” với tỉ lệ 7:3 Biểu đồ tập liệu 8000 7000 6000 5000 4000 3000 2000 1000 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97 16 Bài tập lớn: Nhập môn Học máy Khai phá liệu CHƯƠNG XÂY DỰNG CHƯƠNG TRÌNH VÀ TRIỂN KHAI CÀI ĐẶT 3.1 Xây dựng chương trình Training data 3.1.1 Các thư viện sử dụng Thư viện numpy: thư viện toán học phổ biến mạnh mẽ Python Cho phép làm việc hiệu quả với ma trận mảng, đặc biệt liệu ma trận mảng lớn với tốc độ xử lý nhanh nhiều lần sử dụng “core Python” đơn thuần Thư viện pandas:Thư viện pandas python thư viện mã nguồn mở, hỗ trợ đắc lực thao tác liệu Đây cơng cụ phân tích xử lý liệu mạnh mẽ ngôn ngữ lập trình python Thư viện pathlib: Tạo đường dẫn Thư viện matplotlib: Tạo biểu đồ từ liệu train để có thể đánh giá cách tốt Thư viện sklearn (Scikit-learn): thư viện mạnh mẽ dành cho thuật tốn học máy viết ngơn ngữ Python Sử dụng để chia tập liệu đánh giá hiệu điểm r2 score Thư viện tensorflow: thư viện mã nguồn mở cho machine learning, hỗ trợ mạnh mẽ phép tốn học để tính tốn machine learning deep learning giúp việc tiếp cận tốn trở nên đơn giản, nhanh chóng tiện lợi nhiều Trong toán này, ta sử dụng keras tensorflow để xây dụng model train 3.1.2 Xây dựng liệu 17 Bài tập lớn: Nhập môn Học máy Khai phá liệu Tập liệu xây dựng thành cột Filepath Age Từ tập liệu sử dụng hàm train_test_split để chia liệu thành phần Train Test tỉ lệ 7:3 3.1.3 Loading Images Sử dụng ImageDataGenerator để tạo hàng loạt liệu hình ảnh tensor với tính tăng cường liệu theo thời gian thực Rescale 1./255 để đưa liệu khoảng [0:1] 18 Bài tập lớn: Nhập môn Học máy Khai phá liệu Truyền luồng liệu qua trình tạo trên: 19 Bài tập lớn: Nhập môn Học máy Khai phá liệu 3.1.4 Tạo Model Đầu vào input khối (120, 120, 3) Lớp đầu tiên lớp tích chập chiều Conv2D với filter = 16 (16 lần chủn tồn hình ảnh), kích thước hạt nhân kenel_size = 3x3 Sau đó, sử dụng Maxpool2D để giảm kích thước ảnh x́ng ta 16 tính 59x59 Tương tự ta lại sử dụng Conv2D với filter = 32 Maxpool2D để có 32 tính 28x28 Tiếp theo sử dụng GlobalAveragePooling2D để tính tốn trung bình chiều để đưa 32 tính cuối Cuối tạo mạng lưới thần kinh lớp với 64 tế bào Đầu xuất giá trị với activation= ‘linear’ (kích hoạt tuyến tính) tác vụ hồi quy Mơ hình Model: 20 Bài tập lớn: Nhập mơn Học máy Khai phá liệu Cấu hình Model: 3.1.5 Train Model Đầu tiên ta chọn epochs = 100 để đánh giá kết quả train Sử dụng matplotlib để vẽ biểu đồ: Kết quả: Dựa biểu đồ ta thấy train test đã xấp xỉ có xu hướng lệch epoch = 74 Do đó ta train lại với epoch = 74 Lưu lại model sau train: 21 Bài tập lớn: Nhập môn Học máy Khai phá liệu 3.2 Face_detection.py Load model đã train ImageDataGenerator Với khung hình haadcascade nhận diện img_cat, ta resize theo shape (3, 120, 120, 3) dùng trình tạo để đưa ảnh khoảng [0, 1] Sau đó dự đốn tuổi lưu vào biến output_predict Ći dùng cv2.putText để hiển thị dự đốn lên hình 3.3 Triển khai cài đặt Clone repo link từ github: https://github.com/nghiaxir/Nhap_mom_ML.git Download dataset từ Kaggle lưu project: Age prediction | Kaggle Cài đặt môi trường Anaconda - Cài Anaconda link: https://www.anaconda.com/products/distribution - Mở Anaconda Promt (Run as Administrator) o Tạo môi trường mới: conda create name env_machine o Cấu hình mơi trường: activate env_machine o Cài đặt tensorflow: conda install -c conda-forge tensorflow o Cài đặt pandas: conda install -c anaconda pandas o Cài đặt matplotlib: conda install -c conda-forge matplotlib o Cài đặt scikit-learn: conda install -c anaconda scikit-learn o Cài đặt OpenCV: conda install -c conda-forge opencv Cài đặt thư viện thiếu Mở project pycharm - Chọn File -> Settings (Ctrl + Alt + S) -> Project -> Python Interpreter 22 Bài tập lớn: Nhập môn Học máy Khai phá liệu - Đổi Python Interpreter sang đường dẫn file python.exe anaconda (Ví dụ: D:\Program Files\Anaconda\envs\env_machine\python.exe) Sửa đường dẫn Model file face_detection.py Chạy camera.py để mở app Để test tập liệu sử dụng file test.py (Sửa link Model link liệu image_dir) 23 Bài tập lớn: Nhập môn Học máy Khai phá liệu CHƯƠNG KẾT QUẢ TỔNG QUAN 4.1 Đánh giá mơ hình Sau đã huấn luyện chạy thử với tập test kết quả thu biểu đồ sau: Biểu đồ gồm đường “Độ lệch 2” “Độ lệch 5” ứng với khoảng chấp nhận sai sớ module dự đốn Kết quả cho ta thấy module dự đốn tớt khoảng 23 – 50 tuổi Nguyên nhân liệu huấn luyện tập trung chủ yếu khoảng tuổi Chấm điểm theo hệ số R2 cho kết quả tương tự 4.2 Sản phẩm demo 4.2.1 Kiểm thử tập liệu test Sử dụng file test.py để test liệu ảnh từ folder test Ví dụ, test file 035 (35 tuổi) ta mảng đầu dự đoán ảnh Giá trị trung bình 37,734962 24 Bài tập lớn: Nhập mơn Học máy Khai phá liệu Dự đoán tuổi ảnh: 4.2.2 Demo app Age Prediction real-time Sau đã có mơ hình hiệu quả, nhóm chúng em tiến hành kiểm nghiệm thực tế Chúng em đã xây dựng app để kiểm nghiệm hoạt động mơ hình Chức bản app cho người dùng có thể kiểm nghiệm chứng dự đốn độ tuổi khuôn mặt ảnh đầu vào trải nghiệm nhận diện real-time webcam 25 Bài tập lớn: Nhập môn Học máy Khai phá liệu Link video demo app Age Prediction real-time: https://drive.google.com/file/d/1gh0hQR6WPkuy8olrRO2JxAmRFZod_0j/view?usp=sharing 4.3 Nhận xét, đánh giá Trong khuôn khổ đồ án môn học, nhóm chúng em đã thiết kế mơ hình đạt u cầu đề ra: - Phát khuôn mặt - Dự đốn độ tuổi tương đới xác - Đạt yêu cầu thời gian thực - Đạt độ xác ổn định cần thiết Các vấn đề cịn thiếu sót: - Bộ phân loại Haar Cascade chưa phát khn mặt xác tuyệt đới Ngun nhân có thể ảnh chưa xử lý sâu góc quay khn mặt, màu ảnh, kích thước khn mặt… Nhóm chúng em cớ gắng khắc phục thử nghiệm phương pháp phát khuôn mặt đại - Do sử dụng camera từ máy tính cá nhân nên ảnh chưa rõ nét, mơ hình chưa thật phân biệt rõ đặc trưng sâu khn mặt, tốn nhận diện thời điểm yêu cầu độ xác cần > 95-97% - Cải thiện kiến trúc mô hình để đạt mơ hình hiệu quả 4.4 Hướng phát triển - Nâng cấp hệ thống camera để cải thiện chất lượng ảnh người dùng - Thiết kế mơ hình với sớ đầu vào ảnh, sớ bước lặp, kiến trúc mơ hình cho phù hợp hệ thống phần cứng xử lý GPU để đáp ứng xử lý thời gian thực 26 Bài tập lớn: Nhập môn Học máy Khai phá liệu TÀI LIỆU THAM KHẢO https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html https://viblo.asia/p/haar-cascade-la-gi-luan-ve-mot-ky-thuat-chuyen-dung-de-nhan-bietcac-khuon-mat-trong-anh-E375zamdlGW https://github.com/opencv/opencv/tree/master/data/haarcascades https://topdev.vn/blog/thuat-toan-cnn-convolutional-neural-network/#cnn-convolutionalneural-network-la-gi https://sefiks.com/2019/02/13/apparent-age-and-gender-prediction-inkeras/?fbclid=IwAR1yHp6J9Mtnf0Jky6lbPDg58-KNomtZFejoIMf-PhNsG3aNWNG4Cigyq4 https://www.youtube.com/watch?v=rwiPcSrPPQk https://www.youtube.com/watch?v=G0iYWNRuDcM&t=977s Bài giảng Nhập môn Học máy Khai phá liệu (IT3190) – TS Nguyễn Nhật Quang 10 Giáo trình Deep Learning bản, Tái bản lần thứ – Nguyễn Thanh Tuấn 27