Luận văn tốt nghiệp: Xây dựng ứng dụng phát hiện khuôn mặt trong ảnh sử dụng OpenCV

Chuyên đề nghiên cứu Ứng dụng phát hiện khuôn mặt trong ảnh với OpenCV, cập nhật xu hướng mới, giá trị tham khảo cao cho chuyên gia chuyên ngành

Chuyên ngành

Công nghệ Thông tin

Người đăng

Ẩn danh

Thể loại

đồ án tốt nghiệp

2019

61
3
0

Phí lưu trữ

30 Point

Mục lục chi tiết

PHẦN MỞ ĐẦU

1. CHƯƠNG 1: TỔNG QUAN VỀ PHÁT HIỆN KHUÔN MẶT

1.1. Giới thiệu phát hiện khuôn mặt

1.2. Các hướng tiếp cận trong phát hiện khuôn mặt

1.2.1. Hướng tiếp cận dựa trên tri thức

1.2.2. Hướng tiếp cận dựa trên đặc trưng không đổi

1.2.3. Hướng tiếp cận dựa trên so khớp mẫu

1.2.4. Hướng tiếp cận dựa trên diện mạo

1.3. Khó khăn và thách thức trong bài toán phát hiện khuôn mặt

1.4. Một số lĩnh vực ứng dụng phát hiện khuôn mặt

2. CHƯƠNG 2: PHÁT HIỆN KHUÔN MẶT SỬ DỤNG ĐẶC TRƯNG HAAR

2.1. Đặc trưng của Haar

2.1.1. Đối tượng nhận dạng

2.1.2. Đặc trưng

2.2. Bộ phân lớp AdaBoost

2.2.1. Các hướng tiếp cận dò tìm khuôn mặt nhanh

2.2.2. Thuật toán AdaBoost

2.2.3. Bộ phân lớp AdaBoost

2.2.4. Nhược điểm

3. CHƯƠNG 3: THỰC NGHIỆM PHÁT HIỆN KHUÔN MẶT

3.1. Mô tả bài toán

3.2. Phân tích và lựa chọn công cụ

3.3. Phát hiện khuôn mặt sử dụng hàm OpenCV

3.3.1. Cấu trúc OpenCV

3.3.2. Phát hiện khuôn mặt với các hàm trong OpenCV

3.3.3. Một số kết quả chương trình

DANH MỤC HÌNH

Tóm tắt

I. Tổng quan về phát hiện khuôn mặt

Phát hiện khuôn mặt là một lĩnh vực quan trọng trong computer vision. Nó liên quan đến việc xác định vị trí và kích thước của khuôn mặt trong ảnh. Các hệ thống nhận dạng khuôn mặt thường bao gồm bốn bước chính: phát hiện khuôn mặt, phân đoạn khuôn mặt, rút trích đặc trưng và phân lớp khuôn mặt. Phát hiện khuôn mặt là bước đầu tiên và quan trọng nhất, vì nó ảnh hưởng đến độ chính xác của các bước tiếp theo. Các phương pháp phát hiện khuôn mặt đã phát triển từ những kỹ thuật đơn giản đến những phương pháp phức tạp hơn, có khả năng nhận diện khuôn mặt trong nhiều điều kiện khác nhau. Việc áp dụng machine learning và các thuật toán như Haar-like features đã giúp cải thiện đáng kể hiệu suất của các hệ thống này. Theo một nghiên cứu, việc phát hiện khuôn mặt có thể đạt tỷ lệ chính xác cao nếu được thực hiện trong điều kiện ánh sáng tốt và với các khuôn mặt nhìn thẳng. Tuy nhiên, việc phát hiện khuôn mặt trong các tình huống phức tạp vẫn là một thách thức lớn.

1.1 Giới thiệu phát hiện khuôn mặt

Trong những năm gần đây, nghiên cứu về phát hiện khuôn mặt đã trở nên phổ biến. Các phương pháp phát hiện khuôn mặt đã được cải tiến để có thể nhận diện khuôn mặt trong các điều kiện khác nhau, từ ảnh đen trắng đến ảnh màu. Phát hiện khuôn mặt không chỉ đơn thuần là xác định vị trí mà còn cần phân tích các đặc trưng của khuôn mặt. Hệ thống nhận dạng khuôn mặt thường bao gồm các bước như phát hiện, phân đoạn và rút trích đặc trưng. Việc phát hiện khuôn mặt chính xác sẽ giúp nâng cao hiệu quả của các ứng dụng như an ninh, giám sát và nhận diện người nổi tiếng.

1.2 Các hướng tiếp cận trong phát hiện khuôn mặt

Có nhiều hướng tiếp cận khác nhau trong việc phát hiện khuôn mặt. Một số phương pháp dựa trên tri thức, trong khi những phương pháp khác dựa trên các đặc trưng không thay đổi của khuôn mặt. Hướng tiếp cận dựa trên tri thức thường sử dụng các luật để mô tả các đặc trưng của khuôn mặt, trong khi hướng tiếp cận dựa trên đặc trưng không thay đổi tìm kiếm các đặc trưng có thể nhận diện được trong nhiều điều kiện khác nhau. Các phương pháp hiện đại thường kết hợp nhiều kỹ thuật khác nhau để đạt được hiệu quả cao nhất trong việc phát hiện khuôn mặt.

II. Phát hiện khuôn mặt sử dụng đặc trưng Haar

Đặc trưng Haar là một trong những phương pháp phổ biến nhất trong phát hiện khuôn mặt. Phương pháp này sử dụng các đặc trưng hình học để xác định khuôn mặt trong ảnh. Thuật toán phát hiện khuôn mặt dựa trên đặc trưng Haar thường sử dụng một bộ phân lớp như AdaBoost để cải thiện độ chính xác. Đặc trưng Haar có thể được tính toán nhanh chóng, giúp tăng tốc độ phát hiện khuôn mặt trong các ứng dụng thực tế. Tuy nhiên, phương pháp này cũng có những nhược điểm, chẳng hạn như khả năng phát hiện khuôn mặt trong các tư thế khác nhau hoặc trong điều kiện ánh sáng không tốt. Việc áp dụng các kỹ thuật như deep learning có thể giúp cải thiện khả năng phát hiện khuôn mặt trong các tình huống phức tạp.

2.1 Đặc trưng của Haar

Đặc trưng Haar là một tập hợp các đặc trưng hình học được sử dụng để phát hiện khuôn mặt. Chúng có thể được tính toán nhanh chóng và hiệu quả, giúp tăng tốc độ phát hiện. Các đặc trưng này thường được sử dụng trong các mô hình phân lớp để xác định khuôn mặt trong ảnh. Việc sử dụng đặc trưng Haar đã giúp cải thiện đáng kể hiệu suất của các hệ thống nhận dạng khuôn mặt. Tuy nhiên, để đạt được kết quả tốt nhất, cần phải kết hợp với các phương pháp khác như machine learning.

2.2 Thuật toán AdaBoost

Thuật toán AdaBoost là một trong những phương pháp phổ biến nhất trong việc phát hiện khuôn mặt. Nó giúp cải thiện độ chính xác của các mô hình phân lớp bằng cách kết hợp nhiều mô hình yếu thành một mô hình mạnh. AdaBoost hoạt động bằng cách tập trung vào các mẫu khó phân loại và cải thiện độ chính xác cho những mẫu này. Việc áp dụng thuật toán này trong phát hiện khuôn mặt đã giúp nâng cao hiệu suất của các hệ thống nhận dạng khuôn mặt, đặc biệt là trong các điều kiện phức tạp.

III. Thực nghiệm phát hiện khuôn mặt

Thực nghiệm phát hiện khuôn mặt sử dụng OpenCV là một phần quan trọng trong nghiên cứu này. OpenCV cung cấp nhiều hàm và công cụ hữu ích cho việc phát hiện khuôn mặt. Việc sử dụng OpenCV giúp đơn giản hóa quá trình phát triển ứng dụng phát hiện khuôn mặt. Các hàm trong OpenCV cho phép người dùng dễ dàng thực hiện các bước như chuyển đổi ảnh sang ảnh xám, phát hiện khuôn mặt và hiển thị kết quả. Kết quả thực nghiệm cho thấy rằng việc phát hiện khuôn mặt có thể đạt được độ chính xác cao trong các điều kiện ánh sáng tốt và với các khuôn mặt nhìn thẳng. Tuy nhiên, việc phát hiện khuôn mặt trong các tư thế khác nhau vẫn là một thách thức lớn.

3.1 Mô tả bài toán

Bài toán phát hiện khuôn mặt được mô tả thông qua việc xác định vị trí và kích thước của khuôn mặt trong ảnh. Việc phát hiện khuôn mặt có thể được thực hiện thông qua nhiều phương pháp khác nhau, từ các phương pháp truyền thống đến các phương pháp hiện đại như deep learning. Mục tiêu chính là phát hiện khuôn mặt trong các điều kiện khác nhau và với nhiều tư thế khác nhau. Việc áp dụng OpenCV giúp đơn giản hóa quá trình này và cải thiện hiệu suất của hệ thống.

3.2 Phát hiện khuôn mặt sử dụng hàm OpenCV

OpenCV cung cấp nhiều hàm hữu ích cho việc phát hiện khuôn mặt. Các hàm này cho phép người dùng thực hiện các bước như chuyển đổi ảnh sang ảnh xám, phát hiện khuôn mặt và hiển thị kết quả. Việc sử dụng OpenCV giúp đơn giản hóa quá trình phát triển ứng dụng phát hiện khuôn mặt. Kết quả thực nghiệm cho thấy rằng việc phát hiện khuôn mặt có thể đạt được độ chính xác cao trong các điều kiện ánh sáng tốt và với các khuôn mặt nhìn thẳng.

25/01/2025

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

CHƯƠNG 1: TỔNG QUAN VỀ PHÁT HIỆN KHUÔN MẶT.1 Giới thiệu phát hiện khuôn mặt Trong những năm gần đây, có rất nhiều công trình nghiên cứu về bài toán xác định khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu. Ban đầu chỉ là những bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt nhìn thẳng và đầu luôn phải ở tư thế thẳng đứng trong ảnh đen trắng, không đáp ứng được nhu cầu ngày càng cao trong cuộc sống, khoa học ngày nay. Vì thế đã có nhứng cải tiến nghiên cứu về bài toán phát hiện khuôn mặt người trong những môi trường phức tạp hơn, có nhiều khuôn mặt người trong ảnh hơn, và có nhiều tư thế thay đổi trong ảnh. Xác định khuôn mặt người là một kỹ thuật để xác định vị trí và kích thước khuôn mặt người trong các ảnh bất kỳ.

Kỹ thuật này nhận biết về các đặc trưng của khuôn mặt và bỏ qua những thứ khác. Tổng quan kiến trúc của một hệ thống nhận dạng mặt người Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý sau: phát hiện khuôn mặt (face detection), phân đoạn khuôn mặt (face alignment hay segmentation), rút trích đặc trưng (feature extraction), và phân lớp khuôn mặt (face classification). Hình 1-1: Các bước chính trong một hệ thống nhận dạng mặt người Cao Tiến Đạt _ CT1901C 6 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV Phát hiện khuôn mặt dò tìm và định vị những vị trí khuông mặt xuất hiện trong ảnh hoặc trên các frame video. Phân đoạn khuôn mặt sẽ xác định vị trí mắt mũi, miệng, là các thành phần khác của khuôn mặt và chuyển kết quả này cho bước rút trích đặc trưng.

Từ những thông tin về các thành phần trên khuôn mặt, chúng ta có thể dễ dàng tính được véc-tơ đặc trưng trong bước rút trích đặc trưng. Những véc-tơ đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đã được huấn luyện trước để phân loại khuôn mặt. Bên cạnh những bước chính nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống. Do một số thông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v , phát hiện khuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ thống.

Trong luận văn này, em tập trung chủ yếu vào bước phát hiện khuôn mặt.2 Các hướng tiếp cận trong phát hiện khuôn mặt Có nhiều nghiên cứu tìm ra phương pháp xác định khuôn mặt người, từ ảnh xám đến ngày nay là ảnh màu. Dựa vào tính chất của các phương pháp này thành bốn hướng tiếp cận chính:  Hướng tiếp cận dựa trên tri thức: Mã hóa các hiểu biết của con người về các loại khuôn mặt người thành các luật. Thông thường các luật mô tả quan hệ của các đặc trưng.  Hướng tiếp cận dựa trên đặc trưng không thay đổi: Mục tiêu các thuật toán đi tìm các đặc trưng mô tả cấu trúc khuôn mặt người mà các đặc trưng này sẽ không thay đổi khi tư thế khuôn mặt, vị trí đặt thiếu bị thu hình hoặc điều kiện ánh sáng thay đổi.

 Hướng tiếp cận dưa trên so khớp mẫu: Dùng các mẫu chuẩn của khuôn mặt người(các mẫu này được chọn lựa và lưu trữ) để mô tả cho khuôn mặt người hay các đặc trưng khuôn mặt(các mẫu Cao Tiến Đạt _ CT1901C 7 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV này phải chọn làm sao cho tách biệt nhau theo tiêu chuẩn mà các tác giả định ra để so sánh).  Hướng tiếp cận dựa trên diện mạo: Trái ngược hẳn so khớp mẫu, các mô hình học ở đây được học từ 1 tập ảnh huấn luyện cho trước. Sau đó hệ thống sẽ xác định khuôn mặt người. Một số tác giả còn gọi hướng tiếp cận này là hướng tiếp cận theo phương pháp học.1 Hướng tiếp cận dựa trên tri thức Trong hướng tiếp cận này, các luật sẽ phụ thuộc rất hơn vào tri thức của những tác giả nghiên cứu về bài toán xác định khuôn mặt người.

Đây là hướng tiếp cận top-down. Dễ dàng xây dựng các luật cơ bản để mô tả các đặc trưng của khuôn mặt và các quan hệ tương ứng, Ví dụ, một khuôn mặt thường có hai đôi mắt đối xứng nhau qua trục thẳng đứng ở giữa khuôn mặt và có một mũi, một miệng. Các quan hệ của các đặc trưng có thể được mô tả như quan hệ về khoảng cách và vị trí. Thông thường các tác giả sẽ trích đặc trưng của khuôn mặt trước tiên để có thể được các ứng viên, sau đó các ứng viên này sẽ được xác định thông qua các luật để biết ứng viên nào là khuôn mặt và ứng viên nào không phải là khuôn mặt, Một vấn đề khá phức tạp khi dùng hướng tiếp cận này là làm sao chuyển từ tri thức con người sang các luật một cách hiệu quả.

Nếu các luật này quá chi tiết những khuôn mặt(chặt chẽ) thì khi xác định có thể xác định thiếu các khuôn mặt có trong ảnh, vì những khuôn mặt này không thể thỏa mãn tất cả các luật đưa ra, Nhưng các luật tổng quát có thể chúng ta sẽ xác định lầm một vùng nào đó không phải là khuôn mặt mà lại xác định là khuôn mặt. Và cũng khó khăn khi cân mở rộng yêu cầu của bài toán để xác định các khuôn mặt có nhiều tư thế khác nhau. Cao Tiến Đạt _ CT1901C 8 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV Hình 1-2: (a) Ảnh ban đầu có độ phân giải n = 1; (b), (c), và (d) Ảnh có độ phân giải n = 4, 8, 16. Yang và Huang dùng phương thức theo hướng tiếp cận này để xác định các khuôn mặt.

Hệ thống của hai tác giả này bao gồm ba mức luật. Ở mức cao nhất, dùng một khung cửa số quét trên ảnh và thông qua một tập luật để tìm các ứng viên có thể là khuôn mặt. Ở mức kế tiếp, hai ông dùng một tập luật để mô tả tổng quát hình dáng khuôn mặt. Ở mức còn lại dùng một tập luật khác để xem xét ở mức chi tiết các đặc trưng khuôn mặt, Một hệ thống đa độ phân giải có thứ tự được dùng để xác định, (Hình 1.

Các luật ở mức cao nhất để tìm ứng viên như: “Vùng trung tâm khuôn mặt ( phần tối hơn trong hình 1.2) có bốn phần với một mức độ đều cơ bản”, “phần xung quanh bên trên của một khuôn mặt( phần sáng hơn trong hình 1.2) có một mức độ đều cơ bản”. và “mức độ khác nhau giữa các giá trị xám trung bình của phần trung tâm và phần bao bên trên là đáng kể”. Ở mức hai, xem xét biểu đồ của các ứng viên để loại bớt ứng viên không phải là khuôn mặt, đồng thời dò ra cạnh bao xung quanh ứng viên. Ở mức cuối cùng, những ứng viên nào còn lại sẽ được xem xét các đặc trưng của khuôn mặt về mắt và miện.

Hai ông đã dùng một chiến lược “ từ thô đến mịn” hay “Làm rõ dần” để giảm số lượng tính toán trong xử lý, Mặc dù tỷ lệ chính xác chưa cao, nhưng đây là tiền để cho nhiều nghiên cứu sau này. Cao Tiến Đạt _ CT1901C 9 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV Hình 1-3: Một loại tri thức của người nghiên cứu phân tích trên khuôn mặt. Kotropoulos và Pitas đưa ra một phương pháp dùng trên độ phân giải thấp. Hai ông dùng phương pháp chiếu để xác định các đặc trưng khuôn mặt.

Kanade đã thành công với phương pháp chiếu để xác định biên của khuôn mặt. Với I(x,y) là giá trị xám của một điểm trong ảnh có kích thước m x n iwr tại vị trí (x,y), các hàm để chiếu ảnh theo phương ngang và thẳng đứng được định nghĩa như sau: HI(x)  ( , y) và VI(y) ny1 I x  mx1 I(x, y) (1-1) Hình 1-4: Phương pháp chiếu (a) Ảnh chỉ có một khuôn mặt và hình nền đơn giản; (b) Ảnh chỉ có một khuôn mặt và hình nền phức tạp; (c) Ảnh có nhiều khuôn mặt Cao Tiến Đạt _ CT1901C 10 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV Dựa trên biển đồ chiếu hình ngang, có hau cực tiểu cục bộ khi hai ông xét quá trình thay đổi độ dốc HI, đó chính là cạnh bên trái và phải của hai bên đầu. Tương tự với hình chiếu dọc VI, các cực tiểu cục bộ cũng cho ta biết vị trí miệng, đỉnh mũi, và hai mắt. Các đặc trưng này đủ để xác định khuôn mặt.a là một ví dụ của cách xác định trên.

Cách xách định này có tỷ lệ xác định chính xác 86,5% cho trường hợp chỉ có một khuôn mặt thẳng trong ảnh và hình nền không phức tạp. Nếu hình nền phức tạp thì rất khó tìm, như là hình 1. Nếu ảnh có nhiều khuôn mặt thì sẽ không xác định được, hình 1. Hình 1-5: Chiếu từng phần ứng viên để xác định khuôn mặt.

Mateos và Chicote dùng kết cấu để xác định ứng viên trong ảnh màu. Sau đó phân tích hình dáng, kích thước, thành phần khuôn mặt để xác định khuôn mặt, hai ông trích các ứng viên của từng thành phần khuôn mặt, sau đó chiếu từng phần này để xác thực đó có phải là thành phần khuôn mặt hay không. Tỷ lệ chính xác hơn 87%. Berbar kết hợp mô hình màu da người và xác định cạnh để tùn ứng viên khuôn mặt người.

Sau đó kết hợp các đặc trưng và phương pháp chiếu các ứng viên khuôn mặt xuống hệ trục tọa độ để xác định ứng viên nào thực sự là khuôn mặt.2 Hướng tiếp cận dựa trên đặc trưng không đổi. Đây là hướng tiếp cận thiểu kiểu bottom-up. Các tác giả cố gắng tìm các đặc trưng không thay đổi của khuôn mặt người để xác định khuôn mặt người. Dựa trên nhận xét thực tế: con người dễ dàng nhận biết các khuôn mặt trong Cao Tiến Đạt _ CT1901C 11 Luan van Xây dựng ứng dụng phát hiện khuân mặt trong ảnh sử dụng OpenCV các tư thế khác nhau và điều kiện ánh sáng khác nhau.

Do đó khuôn mặt phải có các thuộc tính hay đặc trưng không thay đổi. Theo nhiều nghiên cứu thì ban đầu phải xác định các đặc trưng khuôn mặt rồi chỉ có khuôn mặt trong ảnh hay không. Các đặc trưng như: lông mày, mắt, mũi, miệng, và đường viền của tóc được trích bằng phương pháp xác định cạnh.

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

Bài viết "Luận văn tốt nghiệp: Xây dựng ứng dụng phát hiện khuôn mặt trong ảnh sử dụng OpenCV" của tác giả Cao Tiến Đạt, dưới sự hướng dẫn của TS. Ngô Trường Giang tại Trường Đại học Dân lập Hải Phòng, trình bày về việc phát triển một ứng dụng sử dụng thư viện OpenCV để nhận diện khuôn mặt trong ảnh. Nghiên cứu này không chỉ cung cấp cái nhìn sâu sắc về công nghệ nhận diện khuôn mặt mà còn mở ra nhiều ứng dụng thực tiễn trong lĩnh vực an ninh, giám sát và tương tác người-máy. Độc giả sẽ tìm thấy những lợi ích từ việc hiểu rõ hơn về cách thức hoạt động của OpenCV và cách áp dụng nó vào các dự án thực tế.

Nếu bạn quan tâm đến các ứng dụng công nghệ thông tin trong giáo dục, hãy tham khảo bài viết Quản lý ứng dụng công nghệ thông tin trong dạy học ở trường trung học cơ sở Hoằng Hóa, Thanh Hóa. Bài viết này cũng đề cập đến việc ứng dụng công nghệ trong môi trường học tập, tương tự như cách mà OpenCV được áp dụng trong nhận diện khuôn mặt.

Ngoài ra, bạn có thể tìm hiểu thêm về Ứng Dụng Active Learning trong Lựa Chọn Dữ Liệu Gán Nhãn cho Bài Toán Nhận Diện Giọng Nói, một nghiên cứu liên quan đến việc sử dụng công nghệ trong nhận diện giọng nói, cho thấy sự phát triển của các ứng dụng học máy trong lĩnh vực công nghệ thông tin.

Cuối cùng, bài viết Nhận dạng giọng nói tiếng Việt qua học sâu và mô hình ngôn ngữ cũng sẽ mang đến cho bạn cái nhìn về cách mà công nghệ học sâu có thể được áp dụng trong nhận diện âm thanh, tương tự như cách mà OpenCV được sử dụng trong nhận diện hình ảnh. Những tài liệu này sẽ giúp bạn mở rộng kiến thức và khám phá thêm nhiều khía cạnh khác nhau trong lĩnh vực công nghệ thông tin.