Đồ án cơ sở 4: Xây dựng ứng dụng nhận diện khuôn mặt sử dụng Deep Learning

Đồ án nhận diện khuôn mặt bằng Deep Learning. Báo cáo đầy đủ, phân tích hệ thống, kết quả thực nghiệm và hướng phát triển cho sinh viên tham khảo.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Đồ án cơ sở 4

2020

53
12
0

Phí lưu trữ

30 Point

Mục lục chi tiết

MỞ ĐẦU

LỜI CẢM ƠN

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

MỤC LỤC HÌNH ẢNH

1. Chương 1: GIỚI THIỆU

1.1. Giới thiệu đề tài

1.2. Phương pháp thực hiện

1.3. Mục đích nghiên cứu

1.4. Giới hạn của đề tài

1.5. Cấu trúc đồ án

2. Chương 2: CƠ SỞ LÝ THUYẾT

2.1. Các phương pháp nhận diện khuôn mặt

2.1.1. Nhận dạng khuôn mặt người dùng thuật toán PCA

2.1.2. Nhận dạng khuôn mặt người dựa trên phương pháp LBP [5]

2.1.3. Nhận dạng khuôn mặt dựa trên phương pháp haar like và thuật toán Adaboost

2.2. Mạng nơ-ron tích chập (Convolutional Neural Network)

2.2.1. Cấu trúc đơn giản của CNN [8]

2.3. Tìm hiểu về Face Detector - MTCNN

2.4. Tìm hiểu Pre-trained model - FaceNet

2.4.1. Pre-trained model

2.4.2. Thuật toán Triplet loss trong FaceNet

2.5. Kỹ thuật căn chỉnh khuôn mặt (Face alignment)

2.6. Ngôn ngữ Python

2.6.1. Giới thiệu sơ lược về ngôn ngữ Python

2.6.2. Các đặc điểm của ngôn ngữ Python

2.6.3. Ứng dụng của Python

2.7. Một số thư viện quan trọng

3. Chương 3: PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG

3.1. Phân tích – thiết kế hệ thống phát hiện mặt người

3.2. Thiết kế hệ thống

3.3. Trích chọn đặc trưng và gán nhãn

3.4. Phát hiện khuôn mặt trong ảnh đầu vào

3.5. Căn chỉnh khuôn mặt trước khi nhận dạng

3.6. Trích rút đặc trưng khuôn mặt từ ảnh đầu vào

3.7. Nhận diện khuôn mặt

3.8. Xác định các khuôn mặt “unknown”

3.9. Kết quả thử nghiệm hệ thống

3.9.1. Giao diện chương trình

3.10. Kết quả đạt được

3.11. Hướng phát triển

DANH MỤC TÀI LIỆU THAM KHẢO

Tóm tắt

I. Nền tảng đồ án nhận diện khuôn mặt bằng Deep Learning

Trong bối cảnh an ninh bảo mật ngày càng được chú trọng, các hệ thống nhận dạng sinh trắc học, đặc biệt là nhận dạng khuôn mặt, đã trở thành một lĩnh vực nghiên cứu trọng điểm. Công nghệ này không chỉ là nền tảng cho các ứng dụng bảo mật mà còn mở ra nhiều tiềm năng trong quản lý, tự động hóa và tương tác người-máy. Đồ án nhận diện khuôn mặt bằng Deep Learning là một đề tài ứng dụng cao, kết hợp giữa thị giác máy tính và trí tuệ nhân tạo để giải quyết bài toán xác thực danh tính. Deep Learning, cụ thể là mạng nơ-ron tích chập (CNN), đã chứng tỏ hiệu quả vượt trội trong các bài toán xử lý ảnh so với các phương pháp truyền thống. Kiến trúc CNN mô phỏng cách não bộ con người xử lý thông tin thị giác, cho phép mô hình tự động học các đặc trưng quan trọng từ dữ liệu ảnh thô. Điều này giúp hệ thống có khả năng nhận diện chính xác ngay cả trong các điều kiện phức tạp. Một đồ án tốt nghiệp AI về chủ đề này không chỉ đòi hỏi kiến thức về thuật toán mà còn cần kỹ năng lập trình với các thư viện chuyên dụng như OpenCV PythonTensorflow Keras để xây dựng và triển khai một hệ thống hoàn chỉnh. Việc hiểu rõ các khái niệm cốt lõi và mục tiêu của đề tài là bước đầu tiên để xây dựng thành công một ứng dụng thực tiễn.

1.1. Tầm quan trọng của nhận dạng khuôn mặt trong kỷ nguyên số

Khuôn mặt là một trong những đặc điểm sinh trắc học tự nhiên và dễ dàng thu thập nhất. Do đó, bài toán nhận dạng khuôn mặt (Face Recognition) đóng vai trò then chốt trong nhiều lĩnh vực. Trong an ninh, công nghệ này được ứng dụng để giám sát, truy tìm tội phạm và kiểm soát truy cập. Trong thương mại, nó được dùng để xây dựng hệ thống điểm danh bằng khuôn mặt, quản lý khách hàng và cá nhân hóa trải nghiệm người dùng. Theo tài liệu nghiên cứu, 'khuôn mặt đóng vai trò quan trọng trong quá trình giao tiếp giữa người với người, nó mang một lượng thông tin giàu có'. Việc tự động hóa quá trình này bằng máy tính giúp nâng cao hiệu quả và độ tin cậy so với phương pháp thủ công. Sự phát triển của các thiết bị thông minh với camera chất lượng cao và khả năng xử lý mạnh mẽ đã tạo điều kiện thuận lợi để triển khai các ứng dụng này trên quy mô rộng lớn, từ điện thoại thông minh đến các hệ thống giám sát đô thị.

1.2. Giới thiệu mạng nơ ron tích chập CNN trong xử lý ảnh

Mạng nơ-ron tích chập (Convolutional Neural Network - CNN) là một lớp mô hình Deep Learning được thiết kế đặc biệt cho việc xử lý dữ liệu dạng lưới, chẳng hạn như hình ảnh. CNN có khả năng tự động và thích ứng học các phân cấp đặc trưng từ ảnh đầu vào. Cấu trúc của CNN thường bao gồm các lớp chính: Lớp tích chập (Convolutional Layer) để trích xuất các đặc trưng cục bộ như cạnh, góc; Lớp gộp (Pooling Layer) để giảm chiều dữ liệu và làm cho các đặc trưng trở nên bất biến với sự dịch chuyển nhỏ; và Lớp kết nối đầy đủ (Fully Connected Layer) để thực hiện nhiệm vụ phân loại. Tài liệu gốc khẳng định: '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'. Chính vì vậy, CNN là lựa chọn hàng đầu cho các bài toán thị giác máy tính như nhận dạng khuôn mặt.

II. Các thách thức và giải pháp tiền xử lý trong xử lý ảnh

Việc xây dựng một hệ thống nhận dạng khuôn mặt chính xác phải đối mặt với nhiều thách thức. Các yếu tố như sự thay đổi về ánh sáng, góc chụp, biểu cảm, tư thế đầu, và các vật cản (kính, khẩu trang) đều ảnh hưởng lớn đến hiệu suất của mô hình. Một đồ án nhận diện khuôn mặt thành công đòi hỏi một quy trình tiền xử lý dữ liệu kỹ lưỡng để giảm thiểu các biến thể này. Bước đầu tiên và quan trọng nhất là xây dựng một dataset khuôn mặt chất lượng, đa dạng và được gán nhãn chính xác. Sau đó, các kỹ thuật như căn chỉnh khuôn mặt (Face Alignment) giúp chuẩn hóa vị trí và tỷ lệ của khuôn mặt trước khi đưa vào mô hình. Cuối cùng, việc lựa chọn một thuật toán phát hiện khuôn mặt (face detection) mạnh mẽ là tiền đề để đảm bảo chỉ có vùng chứa khuôn mặt được trích xuất và xử lý. Tài liệu gốc đã thực hiện so sánh giữa các phương pháp khác nhau, cho thấy việc lựa chọn đúng công cụ có thể cải thiện đáng kể kết quả đầu ra. Việc giải quyết tốt các thách thức này sẽ quyết định độ chính xác và ổn định của toàn bộ hệ thống.

2.1. Vấn đề thu thập và chuẩn hóa dataset khuôn mặt hiệu quả

Chất lượng của mô hình Deep Learning phụ thuộc trực tiếp vào chất lượng của dataset khuôn mặt được sử dụng để huấn luyện. Một bộ dữ liệu tốt cần có số lượng ảnh đủ lớn cho mỗi cá nhân và bao gồm nhiều biến thể: góc mặt khác nhau (trái, phải, thẳng), điều kiện ánh sáng đa dạng (sáng, tối, ngược sáng), và các biểu cảm tự nhiên. Việc thu thập dữ liệu có thể thực hiện bằng cách chụp ảnh trực tiếp từ webcam hoặc sử dụng các bộ dữ liệu công khai. Sau khi thu thập, bước chuẩn hóa là cần thiết. Tất cả các ảnh cần được đưa về cùng một kích thước (ví dụ: 160x160 pixels như trong mô hình FaceNet), và các giá trị pixel cần được chuẩn hóa (ví dụ: trừ đi giá trị trung bình và chia cho độ lệch chuẩn) để quá trình huấn luyện diễn ra ổn định và hiệu quả hơn. Quản lý và gán nhãn dữ liệu một cách có hệ thống là yếu tố cốt lõi để mô hình học đúng và cho kết quả đáng tin cậy.

2.2. Kỹ thuật căn chỉnh khuôn mặt Face Alignment tự động

Căn chỉnh khuôn mặt là một bước tiền xử lý quan trọng nhằm đưa các khuôn mặt về một dạng chuẩn hóa, bất kể góc quay hay vị trí ban đầu trong ảnh. Theo tài liệu: 'việc áp dụng căn chỉnh khuôn mặt ở đây là cần thiết, nó có thể hiểu như một hình thức của chuẩn hóa dữ liệu, giúp tiêu chuẩn hoá lại dữ liệu trước khi đưa vào mô hình dự đoán'. Một phương pháp phổ biến là sử dụng các điểm mốc trên khuôn mặt (facial landmarks) như vị trí hai mắt, mũi, và miệng. Dựa vào vị trí của hai mắt, thuật toán có thể tính toán góc nghiêng của khuôn mặt và thực hiện phép xoay để đường thẳng nối hai mắt nằm ngang. Sau đó, khuôn mặt được cắt và thay đổi tỷ lệ để đảm bảo các đặc điểm chính như mắt, mũi luôn nằm ở những vị trí tương đối cố định. Kỹ thuật này giúp mô hình Deep Learning tập trung vào các đặc trưng nhận dạng cốt lõi thay vì bị ảnh hưởng bởi sự thay đổi về tư thế.

2.3. Lựa chọn thuật toán phát hiện khuôn mặt Face Detection

Trước khi nhận dạng, hệ thống cần xác định chính xác vị trí của khuôn mặt trong ảnh. Đây là nhiệm vụ của phát hiện khuôn mặt (face detection). Có nhiều thuật toán cho tác vụ này, từ các phương pháp cổ điển như Haar Cascades (sử dụng thuật toán Viola-Jones) đến các mạng nơ-ron hiện đại như MTCNN (Multi-task Cascaded Convolutional Networks). Tài liệu gốc đã tiến hành thử nghiệm và so sánh hiệu quả: 'haar cascade hiệu quả với các khuôn mặt thẳng và không bị che khuất', trong khi 'Với MTCNN, tất cả các khuôn mặt có trong hình đều được phát hiện ra, ngay cả khuôn mặt nghiêng hay có vật cản'. Do đó, việc lựa chọn MTCNN cho đồ án này là một quyết định hợp lý để tối đa hóa khả năng phát hiện, đảm bảo không bỏ sót khuôn mặt nào và cung cấp đầu vào chất lượng cao cho giai đoạn nhận dạng tiếp theo. MTCNN không chỉ trả về bounding box mà còn cả các điểm mốc trên mặt, hỗ trợ đắc lực cho việc căn chỉnh khuôn mặt.

III. Hướng dẫn xây dựng mô hình FaceNet với Tensorflow Keras

Để giải quyết bài toán nhận dạng khuôn mặt, việc lựa chọn một kiến trúc Deep Learning hiệu quả là yếu tố quyết định. Mô hình FaceNet, được phát triển bởi Google, là một trong những giải pháp hàng đầu, nổi tiếng với độ chính xác cao. FaceNet không trực tiếp phân loại khuôn mặt, thay vào đó, nó học cách ánh xạ một ảnh khuôn mặt thành một vector đặc trưng 128 chiều (gọi là embedding) trong không gian Euclidean. Trong không gian này, khoảng cách giữa các vector của cùng một người sẽ rất nhỏ, trong khi khoảng cách giữa các vector của những người khác nhau sẽ lớn. Để đạt được điều này, FaceNet sử dụng một hàm mất mát đặc biệt gọi là Triplet Loss. Việc triển khai mô hình FaceNet có thể được thực hiện dễ dàng bằng cách sử dụng các thư viện phổ biến như Tensorflow Keras. Thay vì huấn luyện từ đầu, một phương pháp hiệu quả là sử dụng pre-trained model, tức là một mô hình đã được huấn luyện trên một tập dữ liệu cực lớn, giúp tiết kiệm thời gian và tận dụng được kiến thức mà mô hình đã học. Đây là phương pháp được áp dụng trong đồ án nhận diện khuôn mặt này.

3.1. Kiến trúc mô hình FaceNet và Pre trained model là gì

Mô hình FaceNet sử dụng kiến trúc mạng nơ-ron tích chập (CNN) sâu để học cách trích xuất đặc trưng. Ảnh đầu vào sau khi qua các lớp tích chập và gộp sẽ được đưa vào một lớp embedding để tạo ra vector 128 chiều. Điểm đặc biệt của FaceNet là nó được tối ưu hóa để tạo ra các embedding có tính phân biệt cao. Một pre-trained model là một mô hình đã được huấn luyện sẵn trên các bộ dữ liệu khổng lồ như MS-Celeb-1M hoặc VGGFace2. Tài liệu gốc ghi rõ: 'Pre-trained model là một mô hình được đào tạo bởi một người khác để giải quyết một vấn đề tương tự... nó giúp tiết kiệm thời gian và công sức'. Bằng cách sử dụng mô hình này, chúng ta có thể tận dụng các trọng số đã được tối ưu hóa để trích xuất đặc trưng khuôn mặt một cách hiệu quả mà không cần thực hiện quá trình huấn luyện tốn kém từ đầu. Đây là một cách tiếp cận thông minh và phổ biến trong các đồ án tốt nghiệp AI.

3.2. Tìm hiểu thuật toán Triplet Loss để tối ưu hóa mô hình

Triplet Loss là hàm mất mát cốt lõi làm nên sức mạnh của FaceNet. Thay vì xử lý từng cặp ảnh, Triplet Loss hoạt động trên một bộ ba ảnh (triplet) bao gồm: một ảnh neo (Anchor), một ảnh tích cực (Positive - cùng người với Anchor), và một ảnh tiêu cực (Negative - khác người với Anchor). Mục tiêu của hàm mất mát là điều chỉnh các trọng số của mạng sao cho khoảng cách Euclidean giữa embedding của Anchor và Positive (d(A,P)) nhỏ hơn khoảng cách giữa embedding của Anchor và Negative (d(A,N)) một khoảng lề (margin α). Công thức được biểu diễn là: d(A,P) + α ≤ d(A,N). Bằng cách tối thiểu hóa hàm loss này, mô hình bị 'ép' phải học cách kéo các embedding của cùng một người lại gần nhau và đẩy các embedding của những người khác nhau ra xa nhau trong không gian đặc trưng. Điều này giúp tạo ra các vector embedding rất mạnh mẽ và có khả năng phân biệt cao.

IV. Bí quyết triển khai source code nhận diện khuôn mặt Python

Việc biến lý thuyết thành một ứng dụng hoạt động đòi hỏi kỹ năng lập trình và sử dụng thành thạo các thư viện chuyên dụng. Ngôn ngữ Python, với hệ sinh thái phong phú, là lựa chọn lý tưởng để triển khai source code nhận diện khuôn mặt. Toàn bộ quy trình, từ việc đọc ảnh, phát hiện và căn chỉnh khuôn mặt, đến trích xuất đặc trưng và so sánh, đều có thể được thực hiện một cách hiệu quả. Các thư viện như OpenCV Python đóng vai trò xử lý các tác vụ cơ bản về hình ảnh, trong khi Tensorflow Keras được dùng để tải và sử dụng mô hình FaceNet đã được huấn luyện sẵn. Thư viện Dlib cũng là một công cụ mạnh mẽ khác thường được sử dụng cho việc phát hiện và căn chỉnh khuôn mặt. Sau khi trích xuất được các vector đặc trưng, bước cuối cùng là so sánh chúng để đưa ra quyết định nhận dạng. Một phương pháp phổ biến và hiệu quả là sử dụng độ tương tự cosine (Cosine Similarity). Việc xử lý các trường hợp không xác định ('unknown') cũng là một phần quan trọng để đảm bảo hệ thống hoạt động ổn định và chính xác trong thực tế.

4.1. Các thư viện quan trọng OpenCV Python Dlib và Numpy

Để xây dựng một chương trình face recognition python, việc kết hợp các thư viện là rất cần thiết. OpenCV Python là thư viện nền tảng cho hầu hết các tác vụ thị giác máy tính. Nó cung cấp các hàm để đọc, ghi, hiển thị hình ảnh và video, cũng như các thuật toán xử lý ảnh cơ bản như thay đổi kích thước, chuyển đổi không gian màu. Thư viện Dlib cung cấp các thuật toán máy học hiệu suất cao, đặc biệt nổi tiếng với bộ công cụ phát hiện điểm mốc trên khuôn mặt với độ chính xác cao. Numpy là thư viện cốt lõi cho tính toán khoa học trong Python, cung cấp cấu trúc dữ liệu mảng đa chiều mạnh mẽ và các hàm toán học để thao tác trên các mảng này. Tất cả các vector embedding được trích xuất từ FaceNet đều được biểu diễn dưới dạng mảng Numpy, giúp việc tính toán khoảng cách và so sánh trở nên nhanh chóng và hiệu quả.

4.2. Quy trình so sánh và nhận dạng bằng Cosine Similarity

Sau khi có được vector embedding 128 chiều cho khuôn mặt cần nhận dạng và một cơ sở dữ liệu các embedding đã được gán nhãn, bước tiếp theo là tìm ra embedding trong cơ sở dữ liệu giống nhất. Thay vì dùng khoảng cách Euclidean, độ tương tự cosine (Cosine Similarity) thường cho kết quả tốt hơn trong không gian nhiều chiều. Cosine Similarity đo lường góc cosine giữa hai vector, giá trị càng gần 1 thì hai vector càng giống nhau. Quy trình thực hiện như sau: Tính toán độ tương tự cosine giữa vector của khuôn mặt đầu vào với tất cả các vector trong cơ sở dữ liệu. Sau đó, tìm ra vector có độ tương tự cao nhất. Nhãn của vector này sẽ được gán cho khuôn mặt đầu vào. Tài liệu gốc đề cập đến việc sử dụng khoảng cách cosine (cosine_distance = 1 – cosine_similarity) và tìm giá trị khoảng cách nhỏ nhất, điều này hoàn toàn tương đương. Phương pháp này không phụ thuộc vào độ lớn của vector mà chỉ tập trung vào hướng, giúp nó trở nên mạnh mẽ trước sự thay đổi về độ sáng.

4.3. Xử lý trường hợp Unknown và tăng độ chính xác hệ thống

Một hệ thống nhận dạng khuôn mặt thực tế phải có khả năng xử lý những người không có trong cơ sở dữ liệu. Nếu không, hệ thống sẽ luôn cố gắng 'ghép' một người lạ với người dùng có sẵn gần nhất, dẫn đến nhận dạng sai. Giải pháp là đặt ra một ngưỡng (threshold) cho khoảng cách hoặc độ tương tự. Ví dụ, sau khi tìm được khuôn mặt giống nhất với khoảng cách cosine nhỏ nhất, hệ thống sẽ kiểm tra xem khoảng cách này có nhỏ hơn một ngưỡng đã định trước (ví dụ: 0.5) hay không. Nếu khoảng cách nhỏ hơn ngưỡng, khuôn mặt được nhận dạng thành công. Ngược lại, nếu khoảng cách lớn hơn ngưỡng, điều đó có nghĩa là không có khuôn mặt nào trong cơ sở dữ liệu đủ giống, và khuôn mặt đó được gán nhãn là 'Unknown'. Tài liệu chỉ ra rằng: 'Không có một quy tắc chuẩn nào cho việc lựa chọn ngưỡng... giá trị ngưỡng này được chọn thông qua các lần thử nghiệm mang lại kết quả tốt nhất'.

V. Ứng dụng thực tiễn Hệ thống điểm danh bằng khuôn mặt

Lý thuyết và mã nguồn chỉ thực sự có giá trị khi được áp dụng để giải quyết các vấn đề trong thực tế. Một trong những ứng dụng phổ biến và thiết thực nhất của đồ án nhận diện khuôn mặt là xây dựng hệ thống điểm danh bằng khuôn mặt. Hệ thống này giúp tự động hóa hoàn toàn quy trình điểm danh trong các trường học, công ty, hoặc sự kiện, mang lại nhiều lợi ích vượt trội so với phương pháp thủ công hoặc dùng thẻ từ. Nó giúp tiết kiệm thời gian, loại bỏ gian lận (điểm danh hộ), và cung cấp dữ liệu thống kê chính xác theo thời gian thực. Việc phân tích và thiết kế một hệ thống như vậy đòi hỏi phải xem xét luồng dữ liệu từ đầu vào (camera) đến đầu ra (báo cáo điểm danh), bao gồm các chức năng như đăng ký người dùng mới, huấn luyện mô hình, và giao diện nhận dạng trực tiếp. Các kết quả thử nghiệm từ đồ án gốc cho thấy mô hình có khả năng hoạt động tốt, tạo tiền đề vững chắc cho việc phát triển và triển khai các ứng dụng lớn hơn trong tương lai.

5.1. Phân tích và thiết kế hệ thống điểm danh tự động

Thiết kế một hệ thống điểm danh bằng khuôn mặt hoàn chỉnh bao gồm nhiều module chức năng. Module đăng ký người dùng cho phép thêm người mới vào hệ thống, yêu cầu chụp một số ảnh chân dung để tạo dataset khuôn mặt ban đầu. Module huấn luyện (Training) sẽ lấy dữ liệu từ module đăng ký, sử dụng mô hình FaceNet để trích xuất và lưu trữ các vector embedding cùng với nhãn (tên, mã số sinh viên). Module điểm danh thời gian thực sẽ nhận luồng video từ webcam, liên tục thực hiện phát hiện khuôn mặt, trích xuất embedding và so sánh với cơ sở dữ liệu đã huấn luyện để xác định danh tính. Giao diện người dùng cần được thiết kế trực quan, hiển thị kết quả nhận dạng, và ghi lại thông tin điểm danh (tên, thời gian) vào cơ sở dữ liệu. Sơ đồ hệ thống trong tài liệu gốc đã mô tả rõ ràng luồng xử lý này, từ đầu vào là ảnh/video đến các bước xử lý và cuối cùng là đầu ra.

5.2. Kết quả thử nghiệm và hướng phát triển trong tương lai

Kết quả thử nghiệm là một phần không thể thiếu để đánh giá hiệu quả của đồ án. Dựa trên các giao diện chương trình được trình bày trong tài liệu, hệ thống đã hoàn thành các chức năng cốt lõi: tạo người dùng mới, training dữ liệu, và nhận diện trực tiếp qua webcam. Việc lựa chọn MTCNN thay cho Haar Cascade đã cải thiện đáng kể khả năng phát hiện khuôn mặt, và việc áp dụng mô hình FaceNet đảm bảo độ chính xác cao trong nhận dạng. Hướng phát triển trong tương lai cho đề tài này là rất rộng mở. Hệ thống có thể được cải tiến để xử lý nhiều khuôn mặt cùng lúc một cách hiệu quả hơn, tăng cường khả năng chống giả mạo (anti-spoofing) bằng cách phân biệt ảnh thật và ảnh/video giả. Ngoài ra, việc tích hợp hệ thống với các nền tảng web hoặc di động sẽ giúp ứng dụng trở nên linh hoạt và dễ dàng tiếp cận hơn, mở rộng phạm vi ứng dụng từ điểm danh sang kiểm soát ra vào, thanh toán bằng khuôn mặt và nhiều lĩnh vực khác.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI từ nội dung tài liệu gốc; tài liệu do người dùng đóng góp và được kiểm duyệt trước khi xuất bản. Báo lỗi nội dung.

01/10/2025
Đồ án cơ sở 4 đề tài xây dựng ứng dụng nhận diện khuôn mặt sử dụng deep learning

Trích đoạn nội dung tài liệu

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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ