Đồ án học phần Kỹ thuật lập trình: Nhận diện khuôn mặt bằng Python và OpenCV

Tải miễn phí đồ án nhận diện khuôn mặt bằng Python và OpenCV. Báo cáo chi tiết, full source code và giải thích thuật toán cho sinh viên tham khảo.

Người đăng

Ẩn danh

Thể loại

Đồ án học phần

2023

75
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Nhận diện Khuôn mặt bằng Python và OpenCV

Nhận diện khuôn mặt là một trong những ứng dụng phổ biến nhất của xử lý ảnhtrí tuệ nhân tạo hiện nay. Đồ án này tập trung vào việc xây dựng một hệ thống nhận diện khuôn mặt sử dụng PythonOpenCV, hai công cụ mạnh mẽ trong lĩnh vực thị giác máy tính. OpenCV (Open Computer Vision library) được phát triển bởi Intel từ năm 1999, cung cấp khoảng 500 hàm chuyên dụng cho xử lý ảnh số. Việc kết hợp Python - ngôn ngữ lập trình bậc cao, dễ học - với OpenCV giúp sinh viên có thể phát triển nhanh chóng các ứng dụng nhận dạng mặt người một cách hiệu quả. Đây là một bước đột phá trong việc tiếp cận công nghệ trí tuệ nhân tạomachine learning trong các đồ án học thuật.

1.1. Mục tiêu của Đồ án

Mục tiêu chính của đồ án nhận diện khuôn mặt là sử dụng phần mềm Python kết hợp với OpenCV để xây dựng một hệ thống nhận diện khuôn mặt hiệu quả. Sinh viên sẽ viết code Python đầy đủ, khởi tạo thư viện OpenCV, và xây dựng giao diện ứng dụng. Các kỹ năng đạt được bao gồm: xử lý ảnh, phát hiện đặc trưng khuôn mặt, và triển khai thuật toán machine learning trong nhận dạng.

1.2. Ý nghĩa Thực tiễn

Nhận diện khuôn mặt có ứng dụng rộng rãi trong an ninh, xác thực sinh trắc học, và hệ thống quản lý. Thông qua đồ án này, sinh viên không chỉ hiểu sâu về xử lý ảnh số mà còn nắm vững cách triển khai công nghệ OpenCV vào các dự án thực tế, chuẩn bị cho sự nghiệp trong lĩnh vực thị giác máy tínhAI.

II. Phân tích Bài toán và Các Thách thức

Bài toán nhận dạng khuôn mặt là một thách thức lớn trong lĩnh vực xử lý ảnhtrí tuệ nhân tạo. Trước sự ra đời của OpenCV, không có công cụ chuẩn nào cho xử lý ảnh - các nhà nghiên cứu phải tự viết code riêng lẻ, không thống nhất và không ổn định. Các giải pháp thương mại như Matlab, Simulink có giá cao, chỉ phù hợp với các công ty phát triển ứng dụng lớn. OpenCV giải quyết vấn đề này bằng cách cung cấp công cụ mã nguồn mở, miễn phí, và được tối ưu hóa cho xử lý ảnh số. Các thách thức trong nhận diện khuôn mặt bao gồm: sự thay đổi của góc nhìn, ánh sáng, biểu cảm, và các biến dạng khác trên khuôn mặt con người.

2.1. Các Khó khăn Chính

Nhận diện khuôn mặt gặp phải nhiều thách thức như sự biến đổi về góc nhìn, thay đổi ánh sáng, biểu cảm khuôn mặt, và che phủ một phần. Việc xây dựng mô hình nhận dạng phải xử lý các yếu tố này để đạt độ chính xác cao. OpenCV cung cấp các thuật toán Haar CascadesLBP Cascades để giải quyết những khó khăn này.

2.2. Giải pháp từ OpenCV

OpenCVcông cụ chuyên dụng được Intel phát triển với cấu trúc dữ liệu hợp lý và thư viện tích hợp sẵn. Nó hỗ trợ Windows, Linux, Mac OS và có khả năng mã nguồn mở cho phép mở rộng và cải tiến. Với hơn 500 hàm tối ưu hóa, OpenCV là lựa chọn hoàn hảo cho phát triển nhanh ứng dụng nhận diện khuôn mặt.

III. Công Cụ và Công Nghệ Sử Dụng

Để xây dựng đồ án nhận diện khuôn mặt, chúng ta cần kết hợp nhiều công cụ và thư viện. Python là ngôn ngữ lập trình bậc cao, dễ học, hỗ trợ lập trình hướng đối tượng và lập trình thông dịch. OpenCV được viết bằng C, cung cấp giao diện Python cho phép truy xuất các hàm xử lý ảnh. Anaconda là một nền tảng quản lý gói Python, giúp cài đặt và quản lý các thư viện dễ dàng. Visual Studio Code là trình soạn thảo code mạnh mẽ, được sử dụng để viết và debug code. Kết hợp các công cụ này tạo ra một môi trường phát triển hoàn thiện cho nhận diện khuôn mặt.

3.1. Python Ngôn ngữ Lập trình Chính

Pythonngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và bậc cao (high-level). Python có cú pháp đơn giản, dễ học, phù hợp cho người mới bắt đầu. Thư viện Python rất phong phú, bao gồm NumPy, Pandas, Matplotlib, và đặc biệt là OpenCV, giúp xây dựng các ứng dụng xử lý ảnh một cách hiệu quả.

3.2. OpenCV Thư viện Xử lý Ảnh

OpenCV gồm khoảng 500 hàm viết bằng C, tương thích với Windows, Linux, Mac OS. Nó cung cấp các thuật toán tối ưu hóa cho phát hiện khuôn mặt, nhận dạng đặc trưng, và xử lý ảnh số. OpenCVmã nguồn mở, cho phép người dùng sửa đổi, mở rộng, và sử dụng miễn phí cho các dự án cá nhân và thương mại.

3.3. Anaconda và Visual Studio Code

Anaconda là nền tảng quản lý gói và môi trường Python, giúp cài đặt các thư viện như OpenCV, NumPy một cách dễ dàng. Visual Studio Code là trình soạn thảo code hiện đại, có hỗ trợ debug, terminal tích hợp, giúp phát triển code Python hiệu quả. Cộng lại, chúng tạo ra một môi trường phát triển hoàn chỉnh cho nhận diện khuôn mặt.

IV. Phương Pháp và Quy Trình Triển Khai

Quy trình triển khai nhận diện khuôn mặt bao gồm các bước: cài đặt OpenCV và các thư viện cần thiết, tải bộ dữ liệu đặc trưng khuôn mặt (Haar Cascades), viết code Python để đọc ảnh từ camera hoặc tệp, sử dụng thuật toán phát hiện để định vị khuôn mặt, và cuối cùng là hiển thị kết quả. Đồ án này tập trung vào việc xây dựng một ứng dụng hoàn chỉnh có giao diện người dùng, cho phép người dùng nhận diện khuôn mặt từ camera hoặc ảnh tĩnh. Sinh viên sẽ học cách sử dụng Haar Cascades, LBP Cascades, và các pre-trained models để nhận diện chính xác. Cách tiếp cận bước từng bước giúp sinh viên hiểu sâu về xử lý ảnhnhận dạng mẫu.

4.1. Cài đặt và Khởi tạo Môi trường

Bước đầu tiên là cài đặt Python, Anaconda, và OpenCV. Sử dụng pip hoặc conda để cài đặt OpenCV: pip install opencv-python. Khởi tạo môi trường Anaconda với các thư viện cần thiết như NumPy, Matplotlib. Kiểm tra cài đặt bằng cách import OpenCV trong Python, đảm bảo không có lỗi. Thiết lập Visual Studio Code với Python extension cho hỗ trợ code hoàn chỉnh.

4.2. Phát hiện Khuôn mặt bằng Haar Cascades

Haar Cascades là một bộ phân loại cascade được huấn luyện trước bằng machine learning, giúp phát hiện khuôn mặt nhanh chóng. Sử dụng cv2.CascadeClassifier() để tải mô hình Haar, rồi gọi detectMultiScale() để phát hiện khuôn mặt trong ảnh. Vẽ hình chữ nhật quanh những khuôn mặt được phát hiện bằng cv2.rectangle(). Phương pháp này đạt độ chính xác cao trên hầu hết các trường hợp.

4.3. Triển khai Giao diện Ứng dụng

Xây dựng giao diện ứng dụng cho phép người dùng chọn nguồn ảnh (camera hoặc tệp). Sử dụng cv2.VideoCapture() để mở camera, đọc frame theo từng khung hình, và áp dụng nhận diện khuôn mặt trên mỗi frame. Hiển thị kết quả real-time trên màn hình bằng cv2.imshow(). Thêm các tính năng như lưu hình ảnh, chụp ảnh, và điều chỉnh tham số nhận diện để tạo ứng dụng hoàn chỉnh.

28/12/2025

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

Mở Đầu Lý do lựa chọn đề tài: -Với sự phát triển mạnh mẽ các công nghệ mới của Cuộc cách mạng công nghiệp lần thứ tư (CMCN 4.0), công nghiệp công nghệ thông tin (CNTT) hay công nghiệp ICT được hiểu là công nghiệp công nghệ số. Nhằm tận dụng và khai thác tiềm năng ngành công nghiệp này, nhiều quốc gia đã đã ban hành các chiến lược, chính sách, đạo luật để thúc đẩy phát triển công nghệ số. Bởi phát triển và làm chủ được công nghệ số sẽ đóng vai trò then chốt trong quyết định vị thế, sức mạnh của các quốc gia, dân tộc trên trường quốc tế trong mọi lĩnh vực kinh tế, xã hội, chính trị và an ninh - quốc phòng. Vì vậy đề tài nhóm làm là phù hợp với nhu cầu hiện nay Mục tiêu: -Nhằm tìm hiểu sâu cơ sở lý thuyết và nắm bắt pháp vận hành thực tế phần mềm xử lý ảnh nhận diện khuôn mặt.

Từ kết quả đạt được có thể tìm ra hướng khắc phục hoặc hạn chế sự sai lệch giữa cơ sở lý thuyết và thực tập thực tế nhằm để vận hành bảo dưỡng các thuyết bị công việc làm ổn định , lâu dài và kinh tế 7 Java cho Jython, hoặc .Net cho IronPython).  Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).2 :Thư viện OpenCV Opencv (Open Computer Vision library) do Intel phát triển, được giới thiệu năm 1999 và hoàn thiện thành phiên bản 1. Thư viện opencv – gồm khoảng 500 hàm – được viết bằng ngôn ngữ lập trình C và tương thích với các hệ điều hành Windows, Linux, Mac OS. đóng vai trò xác lập chuẩn giao tiếp, dữ liệu, thuật toán cho lính vực CV và tọa điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng Trước Opencv không có một công cụ chuẩn nào cho lĩnh vực xử lí ảnh.

Các đoạn code đơn lẻ do các nhà nghiên cứu tự viết thường không thống nhất và không ổn định. Các bộ công cụ thương mại như Matlab, Simulink,. lại có giá cao chỉ thích hợp cho các công ty phát triển các ứng dụng lớn. Ngoài ra còn có các giải phảp kèm theo thiết bị phần cứng mà phần lớn là mã đóng và được thiết kế riêng cho tứng thiết bị, rất khó khan cho việc mở rộng ứng dụng.

OpenCV là công cụ hữu ích cho những người bước đầu làm quen với xử lí ảnh số vì các ưu điểm sau:  OpenCV là công cụ chuyên dụng: được Intel phát triển theo hướng tối ưu hóa cho các ứng dụng xử lí và phân tích ảnh, với cấu trúc dữ liệu hợp lí, thư viện tạo giao diện, truy xuất thiết bị phần cứng được tích hợp sẵn. OpenCV thích hợp để phát triển nhanh ứng dụng  OpenCV là công cụ mã nguồn mở: Không chỉ là công cụ miễn phí, việc được xây dựng trên mã nguốn mở giúp OpenCV trở thành công cụ thích hợp cho nghiên cứu và phát triển, với khả năng thay đổi và mở rộng các mô hình, thuật toán 10 MỤC LỤC Mục tiêu và nhiêm vụ đò án môn học. Phân công nhiệm vụ đồ án.1 Tổng quan về nhận diện khuôn mặt.2 Phân tích bài toán.2 Thư viện OpenCV.4 Thư viện Anaconda.4 Phương pháp giải quyết.5 Ngôn ngữ lập trình.4 Bài toán nhận dạng mặt người và những khó khăn.1 Bài toán nhận dạng mặt người. 4 CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 1.1 :Tổng quan về nhận diện khuôn mặt Hơn một thập kỉ qua 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 như ngày hôm nay.

Các nhà nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh. Không những thế mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản cho đến môi trường xung quanh rất phức tạp nhằm đáp ứng nhu cầu của con người. Trong những năm gần đây các ứng dụng về trí tuệ nhân tạo ngày càng phát triển và được đánh giá cao.

Một lĩnh vực đang được quan tâm của trí tuệ nhân tạo nhằm tạo ra các ứng dụng thông minh, có tính người đó là nhận dạng. Trong đề tài này em chọn đối tượng là khuôn mặt.2 :Phân tích bài toán Bài toán Nhận Diện Khuôn mặt(Face Recognition) bao gôm các bài toán khác nhau như Phát hiện khuôn mặt (Face detection), đánh dấu(facial landmarking), trích chọn(rút) đặc trưng(feature extration), gán nhãn, phân lớp(classification). 8 Lời Nói Đầu Công nghệ ngày càng phát triển và có vai trò hết sức quan trọng không thể thiếu trong cuộc sống hiện đại. Con người ngày càng tạo ra những cỗ máy thông minh có khả năng tự nhận biết và xử lí được các công việc một cách tự động, phục vụ cho lợi ích của con người.

Trong những năm gần đây, một trong những bài toán nhận được nhiều sự quan tâm và tốn nhiều công sức nhất của lĩnh vực công nghệ thông tin, đó chính là bài toán nhận dạng. Tuy mới xuất hiện chưa lâu nhưng nó đã rất được quan tâm vì tính ứng dụng thực tế của bài toán cũng như sự phức tạp của nó.Bài toán nhận dạng có rất nhiều lĩnh vực như: nhận dạng vất chất(nước, lửa, đất, đá, gỗ.) nhận dạng chữ viết, nhận dạng giọng nói, nhận dang hình dáng, nhận dạng khuôn mặt. trong đó phổ biến và được ứng dụng nhiều hơn cả là bài toán nhận diện khuôn mặt.Để nhận dạng được khuôn mặt, bước đầu tiên để nhận dạng là phát hiện ra khuôn mặt, điều này thực sự là quan trọng và hết sức khó khăn. Cho đến tận bây giờ, các nhà nghiên cứu vẫn chưa đạt được sự ưng ý trong việc giải quyết các khó khăn của bài toán và cho kết quả hoàn toàn đúng.

Tuy nhiên, những gì đã đạt được cũng đủ để chúng ta áp dụng rộng rãi và đem lại những lợi ích to lớn trong cuộc sống.Với sự hấp dẫn của bài toán và những thách thức còn đang ở phía trước, với niềm đam mê công nghệ hiện đại và những ứng dụng thực tế tuyệt với của nó, với khát khao khám phá và chinh phục những chi thức mới mẻ. tôi đã chọn đề tài nghiên cứu :” Xử lý ảnh nhận diện khuôn mặt” 6 1.3 :Các công cụ Để giải quyết bài toán nhận dạng khuôn mặt trong đồ án này chúng em sử dụng thư viện opencv và ngôn ngữ python trên phần mềm Visual Studio Code 1.1 :PyThon Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics). Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã. Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do.

Các đặc điểm của Python:  Ngữ pháp đơn giản, dễ đọc.  Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented)  Hỗ trợ module và hỗ trợ gói (package)  Xử lý lỗi bằng ngoại lệ (Exception)  Kiểu dữ liệu động ở mức cao.  Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.  Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc 9 MỤC LỤC Mục tiêu và nhiêm vụ đò án môn học.

Phân công nhiệm vụ đồ án.1 Tổng quan về nhận diện khuôn mặt.2 Phân tích bài toán.2 Thư viện OpenCV.4 Thư viện Anaconda.4 Phương pháp giải quyết.5 Ngôn ngữ lập trình.4 Bài toán nhận dạng mặt người và những khó khăn.1 Bài toán nhận dạng mặt người. 4 Mở Đầu Lý do lựa chọn đề tài: -Với sự phát triển mạnh mẽ các công nghệ mới của Cuộc cách mạng công nghiệp lần thứ tư (CMCN 4.0), công nghiệp công nghệ thông tin (CNTT) hay công nghiệp ICT được hiểu là công nghiệp công nghệ số. Nhằm tận dụng và khai thác tiềm năng ngành công nghiệp này, nhiều quốc gia đã đã ban hành các chiến lược, chính sách, đạo luật để thúc đẩy phát triển công nghệ số. Bởi phát triển và làm chủ được công nghệ số sẽ đóng vai trò then chốt trong quyết định vị thế, sức mạnh của các quốc gia, dân tộc trên trường quốc tế trong mọi lĩnh vực kinh tế, xã hội, chính trị và an ninh - quốc phòng.

Vì vậy đề tài nhóm làm là phù hợp với nhu cầu hiện nay Mục tiêu: -Nhằm tìm hiểu sâu cơ sở lý thuyết và nắm bắt pháp vận hành thực tế phần mềm xử lý ảnh nhận diện khuôn mặt. Từ kết quả đạt được có thể tìm ra hướng khắc phục hoặc hạn chế sự sai lệch giữa cơ sở lý thuyết và thực tập thực tế nhằm để vận hành bảo dưỡng các thuyết bị công việc làm ổn định , lâu dài và kinh tế 7 1.3 :Các công cụ Để giải quyết bài toán nhận dạng khuôn mặt trong đồ án này chúng em sử dụng thư viện opencv và ngôn ngữ python trên phần mềm Visual Studio Code 1.1 :PyThon Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics). Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã. Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do.

Các đặc điểm của Python:  Ngữ pháp đơn giản, dễ đọc.  Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented)  Hỗ trợ module và hỗ trợ gói (package)  Xử lý lỗi bằng ngoại lệ (Exception)  Kiểu dữ liệu động ở mức cao.  Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.  Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc 9 CHƯƠNG 1 GIỚI THIỆU TỔNG QUAN 1.1 :Tổng quan về nhận diện khuôn mặt Hơn một thập kỉ qua 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 như ngày hôm nay.

Các nhà nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh.

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