Deep learning là một phần của trường machine learning học máy, nó tập trung vào việc xây dựng và huấn luyện các mạng nơ-ron nhân tạo sâu deep neural networks để thực hiện các nhiệm vụ ph
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN
I.Thông tin chung
1.Tên lớp : 20231IT6043002 Khóa : K162.Họ và tên sinh viên : Trần Xuân Vũ.
Trang 23.Tên nhóm : Nhóm 14 Họ và tên thành viên trong nhóm : Trần Xuân Vũ, Hoàng Anh Tú.
II.Nội dung học tập
1.Tên chủ đề : Tìm hiểu mạng CNN và ứng dụng nhận dạng mặt người.2.Hoạt động của sinh viên:
-Hoạt động/Nội dung 1: Tổng quan về mạng Nơ ron Mục tiêu/chuẩn đầu ra: Hiểu về khái niệm, cấu tạo và quá trình xử lý của một số mạng nơ ron.
-Hoạt động/Nội dung 2: Giới thiệu về mạng Nơ ron tích chập Mục tiêu/chuẩn đầu ra: Hiểu về khái niệm, mô hình và cách xây dựng mạng nơ ron tích chập Một số thư viện áp dụng để xây dựng mạng nơ ron tíchchập.
-Hoạt động/Nội dung 3: Ứng dụng nhận dạng ký tự chữ cái Mục tiêu/chuẩn đầu ra: Tạo chương trình demo nhận dạng mặt người bằng mạng CNN từ tập dữ liệu tìm kiếm.
3.Sản phẩm nghiên cứu: Ứng dụng CNN nhận dạng mặt người.
III.Nhiệm vụ học tập
1.Hoàn thành Tiểu luận, Bài tập lớn,Đồ án/Dự án theo đúng thời gian quy định (từ ngày 14/11/2023Đến ngày 17/12/2023)
2.Báo cáo sản phẩm nghiên cứu theo chủ đề được giao trước giảng viên và những sinh viên khác
IV.Học liệu thực hiện Tiểu luận, Bài tập lớn, Đồ án/Dự án
1.Tài liệu học tập :
[1] Trường Đại học Công Nghiệp Hà Nội, Giáo trình trí tuệ nhân tạo
[2] Chung Pham Van, [Deep Learning] Tìm hiểu về mạng tích chập (CNN), https://viblo.asia/p/deep-learning-tim-hieu-ve-mang-tich-chap-cnn-maGK73bOKj2’
[3] Trần Hồng Việt, Đỗ Đình Tiến, Nguyễn Thị Trà, Trần Lâm Quân, NHẬN DIỆN KHUÔN MẶT SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP XẾP CHỒNG VÀ MÔ HÌNH FACENET,
Trang 32 Phương tiện, nguyên liệu thực hiện Tiểu luận, Bài tập lớn,Đồ án/Dự án (nếu có) : Python, Pycharm
KẾ HOẠCH THỰC HIỆN TIỂU LUẬN, BÀI TẬP LỚN, ĐỒ ÁN
Tên lớp : 20231IT6043002Khóa : K16
Họ và tên sinh viên : Trần Xuân Vũ, Hoàng Anh TúTên nhóm : 14
Trang 4Tên chủ đề : Tìm hiểu mạng CNN và ứng dụng nhận dạng mặt người.
TuầnNgười thực hiệnNội dung công việcKết quả đạt đượcPhương pháp thực cứu tài liệu tham khảo, code chương
BÁO CÁO HỌC TẬP CÁ NHÂN/NHÓM
Tên lớp : 20231IT6043002 Khóa : K16
Họ và tên sinh viên : Trần Xuân Vũ, Hoàng Anh TúTên nhóm : 14
Trang 5Tên chủ đề : Tìm hiểu mạng CNN và ứng dụng nhận dạng ký tự chữ cái
TuầnNgười thực hiệnNội dung công việcKết quả đạt đượcKiến nghị với giảng
Trang 61.4.2.Cách hoạt động của Fully Connected Layer 15
CHƯƠNG 2: ỨNG DỤNG CNN TRONG NHẬN DIỆN KHUÔN MẶT 17
2.1.Giới thiệu bài toán 17
2.2.Xây dựng mô hình bài toán 17
2.5.1.Phát hiện khuôn mặt và tiền xử lý tạo tập dữ liệu 20
2.5.2.Huấn luyện mô hình 28
2.6.Kết quả 39
2.6.1.Kết quả test trên ảnh 39
2.6.2.Kết quả test trực tiếp bằng webcam 40
Trang 7KẾT LUẬN 41TÀI LIỆU THAM KHẢO 42
CÁC TỪ VIẾT TẮT
Trang 8DANH MỤC HÌNH ẢNH
Hình 1: Ma trận RGB 6x6x3 10
Hình 2 Toàn bộ luồng CNN để xử lý hình ảnh đầu vào và phân loại đối tượng dựa trên giá trị 10
Hình 3 Hình ảnh tích chập khác nhau khi áp dụng các Kernel khác nhau 13
Hình 4 Lớp tích chập hoạt động với Stride là 2 14
Hình 5: Sơ đồ quy trình của mô hình nhận diện khuôn mặt 17
Hình 6: Hình ảnh cấu trúc sắp xếp các ảnh đã thu thập 20
Hình 7: Đoạn mã duyệt file ảnh 20
Hình 8: Khởi tạo đối tượng CascadeClassifier của thư viện OpenCV 21
Hình 9: Xác định khuôn mặt trong từng file ảnh khi duyệt 21
Hình 10: Minh họa ảnh chuyển sang ảnh xám 22
Hình 11: Minh họa khung cửa sổ con với đặc trưng Haar-like 23
Hình 12: Minh họa khi quét các cửa sổ con 23
Hình 13: Xác định và hình vẽ hình chữ nhật lên vùng chứa khuôn mặt 24
Hình 14: Ảnh sau khi chuyển ảnh xám và xác định khuôn mặt 24
Hình 15: Ảnh sau khi cắt vùng chứa khuôn mặt 25
Hình 16: Ảnh cấu trúc folder facegray 25
Hình 17: Đoạn mã lưu ảnh xám chứa khuôn mặt đã được cắt 26
Hình 18: Ảnh xám chứa khuôn mặt được lưu vào thư mục mới 27
Hình 19: Đoạn mã tạo tập dữ liệu và gắn lable 28
Hình 20: Kết quả sau khi gắn lable cho tập dữ liệu 28
Hình 21: File ResultMap.pkl 28
Hình 22: Cấu trúc mô hình dự kiến 29
Hình 23: Ảnh đầu vào 30
Hình 24: Kết quả sau khi chạy khối B2 30
Hình 25: Kết quả sau khi chạy khối B3 31
Hình 26: Kết quả sau khi chạy khối B4 31
Hình 27: Kết quả sau khi chạy khối B5 32
Hình 28: Kết quả sau khi chạy khối B6 33
Hình 29: Hình minh họa lớp đầu ra cuối cùng 34
Hình 30: Các thư viện cần dùng để xây dựng mô hình 36
Hình 31: Đoạn mã xây dựng mô hình 37
Hình 32: Kết quả sau khi xây dựng mô hình 37
Hình 33: Đoạn mã train và lưu mô hình 38
Hình 34: Quá trình train mô hình 38
Hình 35: File lưu mô hình sau khi train 39
Hình 36: Đoạn mã dùng để nhận dạng khuôn mặt 39
Hình 37: Kết quả nhận dạng trên ảnh 40
Hình 38: Kết quả nhận diện bằng webcam 40
Trang 9LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin gửi lời cảm ơn chân thành tới cô Lê Thị Thuỷ Trong quá trình học tập và thực hiện đề tài này, chúng em đã nhận được sự quan tâm giúp đỡ, hướng dẫn tận tình, tâm huyết của cô Cô đã tận tâm giảng dạy và hướng dẫn chúng em thực hiện đề tài tìm hiểu mạng CNN và ứng dụng nhận dạng khuôn mặt người Chúng em đã hiểu được cách thức hoạt động của mạng CNN, xây dựng một mô hình CNN nhận dạng mặt người trên tập dữ liệu của riêng mình Nhóm em xin cảm ơn cô đã tạo điều kiện cho chúng em được học tập và nghiên cứu
Chúng em xin trân trọng cảm ơn!
Trang 10Chương 1: TÌM HIỂU CHUNG VỀ MẠNG NƠ RONCNN.
Deep learning ra đời từ các nền tảng và ý tưởng trong lĩnh vực machine learning và neural network đã tồn tại từ thập kỷ 1940 và 1950 Tuy nhiên, khái niệm "deep learning" như chúng ta hiểu ngày nay đã được hình thành và phát triển mạnh mẽ trong những năm gần đây Deep learning là một phần của trường machine learning (học máy), nó tập trung vào việc xây dựng và huấn luyện các mạng nơ-ron nhân tạo sâu (deep neural networks) để thực hiện các nhiệm vụ phân loại, dự đoán và xử lý dữ liệu phức tạp Deep learning đã tạo ra sự cách mạng trong nhiều lĩnh vực như thị giác máy tính, xử lý ngôn ngữ tự nhiên, và nhiều ứng dụng khác.
Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay.
CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh Để tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc nhận dạng (detection), chúng ta hãy cùng tìm hiểu về thuật toán này.
1.1 Tổng quan về mạng CNN 1.1.1 Khái niệm chung
- Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi - CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử lý và phân loại nó
theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ) Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày).
Trang 11Hình 1: Ma trận RGB 6x6x3
- Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào sẽ chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernals), tổng hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1.
Hình 2 Toàn bộ luồng CNN để xử lý hình ảnh đầu vào và phân loại đối tượng dựa trên giá trị.
- Trích xuất đặc trưng tự động: CNN tự động học cách trích xuất các đặc trưng quan trọng từ dữ liệu ảnh mà không cần phải xác định rõ ràng các đặc trưng cụ thể Điều này giúp giảm thiểu công việc thủ công và tốn thời gian để thiết lập các đặc trưng thủ công.
Trang 12- Xử lý dữ liệu không gian: CNN được thiết kế đặc biệt để xử lý dữ liệu không gian như ảnh và âm thanh Các lớp tích chập và gộp cho phép nó hiệu quả trong việc trích xuất thông tin từ các cấu trúc không gian này.
- Phân loại và nhận dạng tốt: CNN đã đạt được hiệu suất ấn tượng trong các nhiệm vụ phân loại và nhận dạng Điều này bao gồm nhận biết khuôn mặt, phân loại đối tượng, dự đoán từ ảnh, và nhiều nhiệm vụ khác.
- Tích hợp thông tin cục bộ: Các lớp tích chập trong CNN cho phép mạng tập trung vào việc xử lý thông tin cục bộ trong các phần nhỏ của dữ liệu ảnh Điều này giúp mạng nhận biết các đặc trưng cục bộ và tạo ra biểu diễn chất lượng cao.
- Khả năng học tập sâu: CNN có thể được thiết kế với nhiều lớp và kích thước khác nhau, cho phép nó học các đặc trưng ngày càng phức tạp và sâu hơn Điều này giúp mạng học được các biểu diễn tổng hợp và trừu tượng từ dữ liệu ảnh.
- Hiệu suất cao: Các mô hình CNN tiên tiến có khả năng đạt được hiệu suất rất cao trong các thách thức như các cuộc thi nhận dạng hình ảnh (ImageNet) và các ứng dụng thực tiễn như xe tự hành.
- Số lượng tham số và tài nguyên tính toán: Các mạng CNN tiên tiến thường có hàng triệu hoặc thậm chí hàng tỷ tham số Điều này đòi hỏi tài nguyên tính toán lớn để huấn luyện và triển khai, đặc biệt là trên các thiết bị có tài nguyên hạn chế như điện thoại di động.
- Overfitting: Trong mạng CNN lớn, có nguy cơ mô hình bị overfitting, tức là mô hình học quá nhiều từ dữ liệu huấn luyện và không tổng quát hóa tốt trên dữ liệu mới Điều này có thể dẫn đến hiệu suất kém trên dữ liệu không nhìn thấy trước - Dữ liệu huấn luyện hạn chế: Mạng CNN yêu cầu một lượng lớn dữ liệu huấn luyện
để học hiệu quả Nếu dữ liệu không đủ đa dạng hoặc không đại diện, mô hình có thể không học được các biểu diễn tổng quát.
- Chuẩn bị dữ liệu: Trước khi áp dụng CNN, dữ liệu thường cần phải được chuẩn bị và tiền xử lý một cách cẩn thận, bao gồm việc thay đổi kích thước ảnh, chuẩn hóa dữ liệu và loại bỏ nhiễu.
Trang 13- Khả năng biểu diễn không tốt cho dữ liệu không gian tương đối dài: Mạng CNN không thể hiệu quả biểu diễn thông tin về thứ tự và tương quan không gian dài hơn, chẳng hạn như các dãy thời gian dài.
1.2 Lớp tích chập – Convolution Layer 1.2.1 Khái niệm
- Lớp tích chập (Convolutional Layer) là một phần quan trọng trong mạng nơ-ron tích chập (Convolutional Neural Network - CNN) Lớp tích chập chịu trách nhiệm cho việc tìm và trích xuất các đặc trưng cục bộ từ dữ liệu đầu vào, thường là hình ảnh, bằng cách áp dụng phép tích chập.
1.2.2 Bộ lọc (Filter hoặc Kernel)
- Đây là ma trận nhỏ chứa các trọng số được áp dụng lên vùng cục bộ của dữ liệu đầu vào (ví dụ: hình ảnh) Bộ lọc này có thể là một ma trận có kích thước nhỏ, chẳng hạn 3x3 hoặc 5x5.
Trang 14Hình 3 Hình ảnh 琀ch chập khác nhau khi áp dụng các Kernel khác nhau.
1.2.3 Bước di chuyển(Stride)
- Stride là số pixel thay đổi trên ma trận đầu vào Khi stride là 1 thì ta di chuyển các kernel 1 pixel Khi stride là 2 thì ta di chuyển các kernel đi 2 pixel và tiếp tục như vậy Hình dưới là lớp tích chập hoạt động với stride là 2.
Trang 15Hình 4 Lớp 琀ch chập hoạt động với Stride là 2
- Đệm là việc thêm các giá trị 0 vào xung quanh dữ liệu đầu vào trước khi áp dụng phép tích chập Điều này giúp duy trì kích thước của dữ liệu sau khi đi qua lớp tích chập.
1.3 Lớp gộp – Pooling Layer 1.3.1 Khái niệm
- Lớp gộp (Pooling Layer) là một phần quan trọng trong kiến trúc của mạng nơ-ron sâu (deep neural networks), đặc biệt là trong các mạng nơ-ron tích chập (convolutional neural networks - CNNs), được sử dụng trong xử lý hình ảnh và các tác vụ liên quan đến dữ liệu lưới như dữ liệu âm thanh.
1.3.2 Max Pooling
- Max pooling là một loại phép gộp được sử dụng trong mạng nơ-ron tích chập (CNN) và các kiến trúc liên quan Nó thường được áp dụng sau lớp tích chập để giảm kích thước của đầu vào và tạo ra các phiên bản đã tạo ra của đặc trưng cục bộ.
1.3.3 Average Polling
- Average Pooling là một phép tích chập thường được sử dụng trong mạng học sâu và xử lý ảnh Nó là một phần quan trọng của các kiến trúc mạng thần kinh như
Trang 16Convolutional Neural Networks (CNNs) để giảm kích thước của đặc trưng (feature maps) trong quá trình trích xuất thông tin từ hình ảnh.
- Ưu điểm chính của Average Pooling là nó giúp giảm kích thước của dữ liệu mà vẫn giữ lại thông tin quan trọng Điều này có thể giúp làm giảm lượng tính toán và giảm overfitting trong quá trình huấn luyện mạng.
1.3.4 Sum Pooling
- Sum Pooling là một phương pháp trong xử lý ảnh và mạng học sâu, được sử dụng để giảm kích thước của feature maps trong quá trình trích xuất thông tin từ hình ảnh Tương tự như Average Pooling và Max Pooling, Sum Pooling cũng là một loại phép gộp thông tin trong mạng neural.
- Mục tiêu của Sum Pooling tương tự như các phương pháp gộp khác, đó là giảm kích thước của dữ liệu trong quá trình huấn luyện mạng, giảm lượng tính toán và có thể giúp kiểm soát overfitting.
1.4 Fully connected layer 1.4.1 Khái niệm
- Fully connected layers (còn gọi là dense layers) là một loại tầng trong kiến trúc mạng neural, bao gồm các neuron được kết nối với tất cả các neuron ở tầng trước và tầng sau Đây là tầng mạng neural truyền thống, trong đó mỗi neuron nhận đầu vào từ tất cả các neuron ở tầng trước đó và truyền đầu ra cho tất cả các neuron ở tầng sau.
1.4.2 Cách hoạt động của Fully Connected Layer
- Flattening: Trong ngữ cảnh của Convolutional Neural Networks (CNN), đầu ra từ
các tầng convolutional và pooling layers thường là một tensor 3D hoặc 4D Để đưa chúng vào fully connected layers, cần phải làm phẳng (flatten) chúng thành một vector 1D Điều này thường được thực hiện trước khi các fully connected layers.
- Weights and Biases: Mỗi neuron trong fully connected layers có một trọng số
(weight) tương ứng với mỗi kết nối đến neuron trong tầng trước đó Ngoài ra, mỗi
Trang 17neuron còn có một bias Các trọng số và bias này là các tham số mạng neural được học để tối ưu hóa hiệu suất mạng.
- Activation Function: Sau khi tính tổng trọng số đầu vào từ các neuron ở tầng
trước kết hợp với bias, đầu ra của neuron thường được đưa qua một hàm kích hoạt phi tuyến (như ReLU, Sigmoid, hoặc Tanh) để tạo ra đầu ra của tầng Hàm kích hoạt này thêm tính phi tuyến tính vào tầng fully connected.
Fully connected layers thường được sử dụng trong phần cuối cùng của mạng neural, sau khi thông tin đã được trích xuất và biểu diễn thông qua các lớp khác như convolutional layers (cho xử lý dữ liệu hình ảnh) hoặc recurrent layers (cho xử lý dữ liệu chuỗi thời gian).
Trang 18CHƯƠNG 2: ỨNG DỤNG CNN TRONG NHẬNDIỆN KHUÔN MẶT
2.1 Giới thiệu bài toán
- Bài toán nhận diện khuôn mặt bằng mạng tích chập CNN (Convolutional Neural Networks) là một bài toán phổ biến trong lĩnh vực học sâu (Deep Learning) Mục tiêu của bài toán này là xây dựng một mô hình có khả năng xác định và nhận diện các khuôn mặt có trong ảnh.
- Trong bài toán này, ta sử dụng một bộ dữ liệu hình ảnh của các hình ảnh được các thành viên của nhóm thu thập trên nhiều nguồn khác nhau để huấn luyện mô hình Sau khi huấn luyện, mô hình có thể nhận diện và phân biệt những người có trong tệp dữ liệu huấn liệu trong hình ảnh mới
2.2 Xây dựng mô hình bài toán
Mô hình nhận dạng được chia thành 3 bước chính hình… bao gồm: - Bước 1: Phát hiện khuôn mặt và tiền xử lý tạo tập dữ liệu - Bước 2: Huấn luyện dữ liệu đưa vào
- Bước 3: Phân loại ảnh khuôn mặt dựa trên đặc trưng được trích chọn và đưa ra kết quả
Hình 5: Sơ đồ quy trình của mô hình nhận diện khuôn mặt
Trang 192.3 Công cụ sử dụng
2.3.1 Ngôn ngữ và các thư viện
2.3.1.1 Ngôn ngữ
- Python là một ngôn ngữ lập trình bậc cao, mã nguồn mở, đa năng được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau Ngôn ngữ này được tạo ra bởi Guido van Rossum vào năm 1991 và được phát triển và duy trì bởi một cộng đồng lớn các lập trình viên trên toàn thế giới.
- Ưu điểm của Python
o Cú pháp dễ đọc, dễ học: Python có cú pháp rất rõ ràng, dễ hiểu, gần giống với ngôn ngữ tự nhiên, giúp người mới bắt đầu dễ dàng tiếp cận.
o Đa năng: Python có thể được sử dụng cho nhiều mục đích khác nhau, bao gồm phát triển ứng dụng web, phát triển phần mềm, khoa học dữ liệu, máy học, tự động hóa,
o Hiệu suất cao: Python có thể chạy nhanh và hiệu quả, ngay cả với các dự án lớn.
o Môi trường phát triển tích hợp (IDE) mạnh mẽ: Python có nhiều IDE mạnh mẽ hỗ trợ lập trình viên phát triển và gỡ lỗi mã.
- Lĩnh vực sử dụng của Python
o Phát triển ứng dụng web: Python là một lựa chọn phổ biến cho phát triển ứng dụng web, nhờ vào các thư viện và khung công tác như Django, Flask và Pyramid.
o Phát triển phần mềm: Python có thể được sử dụng để phát triển tất cả các loại phần mềm, từ ứng dụng máy tính để bàn đến ứng dụng di động.
Trang 20o Khoa học dữ liệu và máy học: Python là một ngôn ngữ phổ biến cho khoa học dữ liệu và máy học, nhờ vào các thư viện và khung công tác như NumPy, SciPy và TensorFlow.
o Tự động hóa: Python có thể được sử dụng để tự động hóa các tác vụ lặp đi lặp lại, chẳng hạn như kiểm tra phần mềm hoặc gửi email.
2.3.1.2 Các thư viện
- OpenCV là một thư viện mã nguồn mở cho xử lý hình ảnh và thị giác máy tính Thư viện này cung cấp một loạt các chức năng để xử lý hình ảnh, video và dữ liệu nhận dạng OpenCV được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm: Xử lý hình ảnh, xử lý video, thị giác máy tính,
- TensorFlow là một thư viện mã nguồn mở cho học máy Thư viện này cung cấp một nền tảng cho việc xây dựng và đào tạo các mô hình học máy TensorFlow được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm: Học máy, trí tuệ nhân tạo, khoa học dữ liệu,
- Keras là một thư viện mã nguồn mở cho học máy Thư viện này cung cấp một giao diện lập trình ứng dụng (API) đơn giản và dễ sử dụng để xây dựng các mô hình học máy Keras được xây dựng trên nền tảng TensorFlow, vì vậy nó có thể tận dụng khả năng tính toán mạnh mẽ của TensorFlow.
- PyCharm là một môi trường phát triển tích hợp (IDE) cho ngôn ngữ lập trình Python IDE này được phát triển bởi JetBrains và được sử dụng rộng rãi bởi các lập trình viên Python trên toàn thế giới.
- PyCharm cung cấp một loạt các tính năng và công cụ để giúp lập trình viên Python phát triển và gỡ lỗi mã của họ: Trình soạn thảo mã thông minh,
Trang 21Trình quản lý dự án, Trình gỡ lỗi tích hợp, Hỗ trợ các thư viện và khung công tác,
2.4 Tệp dữ liệu ban đầu
Hình 6: Hình ảnh cấu trúc sắp xếp các ảnh đã thu thập
Là các ảnh rgb của nhóm tìm kiếm và thu thâ ̣p lại từ các nguồn như Google image, Kaggle gồm những người: Bill Gates, Donald Trump, Elon musk, Markzukerberg, Messi, Obama, Ronaldo, Steve Jobs ngoài ra còn có ảnh của hai thành viên nhóm 14: Trần Xuân Vũ, Hoàng Anh Tú Ảnh được lưu vào thư mục datatrain và có cấu trúc
Trang 22Hình 7: Đoạn mã duyệt 昀椀le ảnh
Bước 2: Xác định khuôn mặt
Hình 8: Khởi tạo đối tượng CascadeClassi昀椀er của thư viện OpenCV
Hình 9: Xác định khuôn mặt trong từng 昀椀le ảnh khi duyệt
Bước 2.1: Tiền xử lý
Phương pháp thực hiện trên ảnh xám (gray image) Mỗi điểm ảnh (pixel) sẽ có giá trị mức xám từ 0 đến 255(không gian màu 8 bit) Như vậy phương pháp sẽ không khai