1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng chương trình nhận dạng khuôn mặt Để tích hợp vào hệ thống Điểm danh

31 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Chương Trình Nhận Dạng Khuôn Mặt Để Tích Hợp Vào Hệ Thống Điểm Danh
Tác giả Bùi Duy Hiếu, Đàm Thị Hà
Người hướng dẫn GV.Hồ Thị Hương Thơm
Trường học Trường Đại Học Hàng Hải Việt Nam
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo bài tập lớn
Năm xuất bản 2022
Thành phố Hải Phòng
Định dạng
Số trang 31
Dung lượng 3,37 MB

Nội dung

Nội dung báo cáoBáo cáo này gồm 4 chương: Chương 1: Giới thiệu đề tài Chương 2: Áp dụng các kĩ thuật xử lý ảnh vào bài toán - Mô hình tổng quát và chi tiết của bài toán - Chi tiết các th

Trang 1

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM

KHOA CÔNG NGHỆ THÔNG TIN

-*** -BÁO CÁO BÀI TẬP LỚNHỌC PHẦN “THỊ GIÁC MÁY TÍNH”

Đề tài:

XÂY DỰNG CHƯƠNG TRÌNH NHẬN DẠNG KHUÔN MẶT ĐỂ TÍCH

HỢP VÀO HỆ THỐNG ĐIỂM DANH

GVHD: GV.Hồ Thị Hương Thơm

Sinh viên thực hiện: Bùi Duy Hiếu – Mã SV: 83066

Đàm Thị Hà – Mã SV: 82867

Hải Phòng, tháng 11 năm 2022

Trang 2

TRƯỜNG ĐẠI HỌC HÀNG HẢIKHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚNHỌC PHẦN: THỊ GIÁC MÁY TÍNH

3 Công việc cần thực hiện

Tìm hiểu các vấn đề liên quan

Đề xuất phương án và xây dựng chương trình

Làm báo cáo bài tập lớn

Bảo vệ bài tập lớn

4 Yêu cầu

Kết quả làm bài tập lớn: Báo cáo bài tập lớn

Báo cáo bài tập lớn phải được trình bày theo mẫu quy định (kèm theo),báo cáo có thể kết xuất thành tệp định dạng PDF và nộp qua email

5 Tài liệu tham khảo

- Giáo trình Công nghệ Thị Giác Máy Tính - Trường Đại học Hàng hải ViệtNam

- Youtube, github…

Trang 3

Nội dung báo cáo

Báo cáo này gồm 4 chương:

Chương 1: Giới thiệu đề tài

Chương 2: Áp dụng các kĩ thuật xử lý ảnh vào bài toán

- Mô hình tổng quát và chi tiết của bài toán

- Chi tiết các thuật toán sử dụng

Chương 3: Cài đặt và đánh giá kết quả hệ thống

- Ngôn ngữ lập trình, nền tảng lập trình, thư viện sử dụng

- Đánh giá kết quả thực hiện chương trình

Chương 4: Kết luận

- Tóm tắt lại quá trình thực hiện bài tập lớn

- Ưu, nhược điểm của hệ thống

Trang 4

MỤC LỤC

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1

1.1 Lý do chọn đề tài: 1

1.2 Mục đích – Ngữ cảnh áp dụng: 2

1.3 Phạm vi bài toán: 3

1.4 Các phương pháp có thể áp dụng: 3

1.4.1 Xây dựng hệ thống nhận dạng mặt người thông qua biến đổi Gabor wavelets 3

1.4.2 Phân tích thành phần chính (PCA) 3

1.4.3 Xây dưng hệ thống nhận dạng mặt người thông qua phương pháp trích chọn đặc trưng mẫu nhị phân cục bộ LBP 4

1.4.4 Support vector Machines (SVM) 4

1.5 Cách thức đánh giá kết quả: 5

CHƯƠNG 2: ÁP DỤNG CÁC KĨ THUẬT XỬ LÝ ẢNH CHO BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI 6

2.1 Mô hình tổng quát của bài toán 6

2.2 Mô hình chi tiết của bài toán 7

2.3 Chi tiết thuật toán sử dụng 7

2.3.1 Phát hiện khuôn mặt (face detection) 7

2.3.2 Tiền xử lý ảnh (Preprocessing) 7

2.3.3 Trích rút đặc trưng (Feature extraction) 7

2.3.4 Nhận dạng, phân lớp 8

2.3.5 Dữ liệu hệ thống nhận dạng 8

CHƯƠNG 3: CÀI ĐẶT VÀ ĐÁNH GIÁ KẾT QUẢ HỆ THỐNG 10

3.1 Ngôn ngữ lập trình, thư viện sử dụng , nền tảng lập trình 10

3.1.1 Ngôn ngữ lập trình: Python 10

3.1.2 Thư viện sử dụng: OpenCV 11

3.1.3 Nền tảng lập trình – Anaconda: 12

3.2 Mã nguồn chi tiết của chương trình: 12

Trang 5

3.2.1 NewUser.py 12

3.2.2 TrainModel.py 14

3.2.3 FaceRecognizer.py 16

3.3 Đánh giá kết quả 19

3.3.1 Dữ liệu 19

3.3.2 Kết quả 19

CHƯƠNG 4: KẾT LUẬN 21

4.1 Qúa trình thực hiện 21

4.2.1 Ưu điểm 21

4.2.2 Nhược điểm 21

4.2.3 Hướng phát triển 21

4.2 Tổng kết 22

Trang 6

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI1.1 Lý do chọn đề tài:

Trong những năm gần đây, Trí tuệ nhân tạo (Artificial Intellegence)

là một trong những lĩnh vực được rất nhiều các nhà khoa học quan tâm.Đặc biệt các ứng dụng và nghiên cứu của Trí tuệ nhân tạo & Máy học đãđược áp dụng rất nhiều vào thực tế, và góp phần không nhỏ vào việc cảithiện cuộc sống của con người ngày nay Một trong những lĩnh vực liênquan tới công nghệ tri thức mà hiện nay được ứng dụng rất nhiều vàotrong cuộc sống là nhận dạng mẫu (Pattern Recognition) Một số hệ thốngđược ứng dụng rộng rãi hiện nay: nhận dạng chữ viết (đánh máy hoặc viếttay), nhận dạng chuyển động của mắt người, nhận dạng biển số xe, nhậndạng phương tiện giao thông, nhận dạng mặt người…

Cụ thể, một trong những bài toán được khá nhiều người quan tâm ởthời điểm hiện tại là Bài toán nhận dạng mặt người ( Face Recognition).Khuôn mặt đóng vai trò vô cùng quan trọng việc tiếp xúc và giao tiếp,mặt khác nó cũng là một nguồn cung cấp những thông tin cần thiết khigiao tiếp hoặc chứa những dữ liệu cơ bản như: giới tính, tuổi, màu da,trạng thái, cảm xúc,… để nhận diện một người Nhận dạng khuôn mặtkhông còn là một đề tài quá mới mẻ nhưng vẫn là một thách thức mới đòihỏi được khám phá Ngoài ra để giải quyết bài toán ta phải giải quyết cácvấn đề khác của bài toán như: ánh sáng, độ mờ, đỗ nhiễu, độ phân giải củaảnh, góc ảnh…

Trong thực tế đã có rất nhiều ông lớn như Google, Facebook,Apple, Microsoft đều có những trung tâm sinh trắc học (Biometrics

Trang 7

Center) riêng và nghiên cứu nhận dạng khuôn mặt người là lĩnh vựcnghiên cứu chính từ đó đến nay.

Nhận diện khuôn mặt được ứng dụng khá rộng rãi vào thực tế tùyvào nhu cầu của các nhà sử dụng: ví dụ như được dùng trong camera anninh để phát hiện trộm cắp, khủng bố, tội phạm nguy hiểm; hoặc dùng để

mở khóa cửa ra vào thông qua khuôn mặt, nhận dạng mặt người nhằmchống gian lận trong thi cử…

Cùng với phát triển của AI, đã có rất nhiều các hệ thống nhận dạngkhuôn mặt khác nhau được hình thành Kết quả nhận dạng của từng hệthống cũng khác nhau tùy vào dữ liệu test Trong bài tập lớn này, mộtphương pháp em nghĩ là đơn giản mà cũng hiệu quả không kém đó làphương pháp Trích chọn đặc trưng mẫu nhị phân cục bộ LBP (LocalBinary Patterns) Mặc dù LBP không phải là phương pháp mới nhất, tốtnhất nhưng nhờ vào tính năng hiệu quả và khả năng bền vững độc lập của

dữ liệu, cho đến hiện tại thì LBP được sử dụng để làm baseline để sosánh, đánh giá cho một hệ thống nhận diện Nhờ vào khả năng bất biếnvới độ sáng (đây là một trong những thách thức lớn nhất của các bài toánliên quan đến ảnh mặt người) nên em chọn Local Binary Pattern (LBP)trong hệ thống nhận dạng khuôn mặt trong bài tập của em

Trang 8

o Ngữ cảnh áp dụng: Do các khó khăn của bài toán nhận dạng khuôn mặt :Góc chụp, độ phân giải, ánh sáng, hướng ảnh… nên đề xuất bài toán nênđược áp dụng đối với các điều kiện sau:

Góc ảnh trực diện, thẳng mặt, không bị che khuất

1.3.2 Phân tích thành phần chính (PCA)

Phân tích thành phần chính là một kỹ thuật phân tích biến đổi đượcnghiên cứu khá rộng rãi và biết đến nhiều Ý tưởng chính của thuật toán phântích thành phần chính là giảm số chiều của tập dữ liệu có sự tương quan lớn giữa

Trang 9

các biến Mặc dù giảm số chiều của biến nhưng vẫn duy trùy sự biến đổi nhiềunhất có thể của tập dữ liệu ban đầu Thực chất của PCA là giải 4 quyết bài toántìm trị riêng và vector riêng cho ma trận đối xứng.

Ưu điểm: Dễ cài đặt, tìm được các đặc tính tiêu biểu của đối tượngcần nhận dạng mà không cần phải xác định các thành phần và mốiquan hệ giữa các thành phần đó

Nhược điểm: Phụ thuộc vào tập huấn luyện ( Các ảnh kiểm traphải giống các ảnh huấn luyện về kích thước, độ sáng, độ phân giải,

tư thế… mà trong thực tế điều này là không thể)

1.3.3 Xây dưng hệ thống nhận dạng mặt người thông qua phương pháp tríchchọn đặc trưng mẫu nhị phân cục bộ LBP

LBP là một toán tử kernel 3×3, nó tổng quát hóa cấu trúc không gian cục

bộ của một ảnh Ojala và các đồng nghiệp đã giới thiệu phương pháp LBP và chỉ

ra khả năng phân tách cao của chúng cho sự phân lớp vân Bởi vì khả năng phântách và chi phí tính toán thấp, LBP trở nên rất phổ biến trong nhận dạng mẫuLBP đã được áp dụng cho phát hiện khuôn mặt, nhận dạng khuôn mặt, xác thựckhuôn mặt, truy vấn ảnh

Trang 10

Ưu điểm: Thuật toán trích rút đặc trưng LBP cài đặt đơn giản, thờigian tính toán giá trị đặc trưng nhanh vì nó làm việc với giá trịnguyên, tính toán rất nhanh và hoạt động rất hiệu quả.

Nhược điểm: Tuy nhiên độ chính xác không cao bằng thuật toánHaar-like

1.3.4 Support vector Machines (SVM)

SVM là một phương pháp phân lớp xuất phát từ lý thuyết học thống kê.Thuật toán SVM lần đầu tiên được Vladimir Vapnik đề xuất Sau đó, CorinnaCortes cùng với Vladimir Vapnik đề xuất hình thức chuẩn hiện nay SVM cónhiều tính năng ưu việt so với các phương pháp cổ điển khác: dễ dàng xử lý, xử

lý với tính ổn định cao trên dữ liệu phức tạp, có thể có số chiều lớn và quantrọng hơn cả là khả năng xử lý tổng quát

Trang 11

Trên thực tế, việc xây dựng chương trình cho việc huấn luyện SVM là khókhăn và mất nhiều công sức, vì vậy đa số thuật chương trình SVM đã được xâydựng sẵn trong một số công cụ lập trình và cho bởi nguyên hàm và chỉ cần điềntham số, ta sẽ có kết quả đầu vào và đầu ra Tuy nhiên, về cơ bản chương trình

đó được xây dựng trên một số thuật toán có sẵn

Ưu điểm: Có khả năng huấn luyện với tập dữ liệu lớn

Nhược điểm: Khó khăn và mất nhiều công sức

Tóm lại: Local Binary Pattern (LBP) là một đặc trưng rất phổ biến trong các bàitoán liên quan đến ảnh khuôn mặt nói chung và nhận dạng khuôn mặt nói riêng.Nhờ vào khả năng bất biến với độ sáng (đây là một trong những thách thức lớnnhất của các bài toán liên 3 quan đến ảnh mặt người), tính toán rất nhanh và hoạtđộng rất hiệu quả nên Local Binary Pattern (LBP) được chọn trong hệ thốngnhận dạng khuôn mặt trong đề tài này

Trang 12

1.4 Cách thức đánh giá kết quả:

Kết quả của chương trình sẽ được đánh giá thông qua các tiêu chí sau đây:

- Tốc độ thực hiện chương trình: Chương trình thực thi nhanh hay chậm

- Độ chính xác của chương trình: Có nhận diện đúng người hay không kể cảtrong các điều kiện: thiếu sáng, mờ ảnh, góc ảnh, phân giải yếu …

- Trải nghiệm người dùng: Chương trình có đáp ứng được kì vọng của ngườidùng hay không

- Sự dễ dàng trong việc triển khai và vận hành

- Tài nguyên sử dụng: Chương trình khi khởi chạy có tiêu tốn nhiều tài nguyênhay không

Trang 13

CHƯƠNG 2: ÁP DỤNG CÁC KĨ THUẬT XỬ LÝ ẢNH CHO BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI

2.1 Mô hình tổng quát của bài toán

Các bước cơ bản trong xử lý ảnh:

Phần thu nhận ảnh: Ảnh có thể nhận qua camera Có thể là

màu hoặc đen trắng với độ phân giải khác nhau

Tiền xử lý: lọc nhiễu, nâng cao chất lượng ảnh

Phân vùng ảnh hay phân đoạn: tách ảnh thành các vùng hoặc

đối tượng quan tâm

Biểu diễn ảnh: Việc chọn các tính chất để thể hiện ảnh gọi làtrích chọn đặc trưng (feature extraction)

Nhận dạng và nội suy ảnh: Nhận dạng ảnh là quá trình xác

định ảnh Quá trình này thường thu được bằng cách so sánh với mẫuchuẩn đã được học (hoặc lưu) từ trước Nội suy là phán đoán theo ýnghĩa trên cơ sở nhận dạng

Cơ sở tri thức: Nhằm giúp quá trình xử lý và phân tích ảnh

Trang 14

theo cách làm của con người.

2.2 Mô hình chi tiết của bài toán

Một hệ thống nhận dạng mặt người thông thường sẽ có các bước sau đây:

Figure 1-Hệ thống nhận dạng khuân mặt

2.3 Chi tiết thuật toán sử dụng

2.3.1 Phát hiện khuôn mặt (face detection)

Bước này sẽ phát hiện và lấy ra tất cả khuôn mặt trong bức ảnh hoặc video.2.3.2 Tiền xử lý ảnh (Preprocessing)

Bước này nhằm lọc nhiễu, nâng cao chất lượng của ảnh, video bao gồm: căn chỉnh ảnh, chuẩn hóa ánh sáng cho phù hợp với điều kiện phát hiện ảnh.2.3.3 Trích rút đặc trưng (Feature extraction)

Trang 15

Ở bước này sử dụng phương pháp trích chọn đặc trưng LBP với ảnh mặt để tríchxuất các thông tin đặc trưng cho ảnh, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector.

Tập nhập dữ liêu người mới (NewUser.py)

Tập đào tạo huấn luyện (TrainModel.py)

Tập nhận dạng (FaceRecognizer.py)

- Tập NewUser.py là tập thực hiện chụp ảnh cho người mới:

Yêu cầu người dùng nhập và ID và Name, sau đó lưu vào DBYêu cầu người dùng đưa mặt vào camera, chụp khoảng 100 ảnh của người dùng và tiến hành lưu trữ tại thư mục dataSet với cấu trúc User.<mã nhân viên>.<số thứ tự>.jpg

Ảnh được lưu trong dataSet như hình dưới:

Figure 2Ảnh được lưu trong dataSet

Trang 16

- Tập TrainModel.py thực hiện train model để học được các khuôn mặt đã chụp:

Đọc thông tin trong csdl về danh sách những người hiện tại.Đọc dữ liệu ảnh từ mục dataset

Train model để nhận dạng khuôn mặt và gán vào các khuôn mặt

- Tập FaceRecognizer.py kiểm thử hệ thống Sau khi đăng kí các khuôn mặt

và danh tính của chúng thì file này làm nhiệm vụ:

Load dữ liệu người từ csdl

Load model phát hiện khuôn mặt và nhận diện khuôn mặt đã train ở tập Train Model ở trên

Đọc ảnh từ camera và hiện thị tên người có mặt trong camera đó

Trang 17

CHƯƠNG 3: CÀI ĐẶT VÀ ĐÁNH GIÁ KẾT QUẢ HỆ THỐNG

3.1 Ngôn ngữ lập trình, thư viện sử dụng , nền tảng lập trình

3.1.1 Ngôn ngữ lập trình: Python

Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đốitượ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ếnkhí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ễnphí cho tất cả các nền tảng chính và có thể được phân phối tự do

Sau đây là các đặc điểm của ngôn ngữ lập trình 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 (oriented)

object-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 nhucầ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 Javacho 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 (scriptinginterface)

Trang 18

- Python dễ dàng kết nối với các thành phần khác: Python có thể kết nối vớicác đối tượng COM, .NET (Ironpython, Python for .net), và CORBA,Java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE)

và nhiều công nghệ kết nối khác Có thể viết các thư viện trên C/C++ đểnhúng vào Python và ngược lại

- Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng: Python có chomọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, và những hệđiều hành khác Thậm chí có cả những phiên bản chạy trên NET, máy ảoJava, và điện thoại di động (Nokia Series 60) Với cùng một mã nguồn sẽchạy giống nhau trên mọi nền tảng

- Python rất đơn giản và dễ học: Python có cộng đồng lập trình rất lớn, hệthống thư viện chuẩn, và cả các thư viện mã nguồn mở được chia sẻ trênmạng

- Python là ngôn ngữ mã nguồn mở: Cài đặt Python dùng giấy phép nguồn

mở nên được sử dụng và phân tối tự do, ngay cả trong việc thương mại.Giấy phép Python được quản lý bởi Python Software Foundation

Lý do lựa chọn ngôn ngữ Python:

+ Đây là ngôn ngữ dễ học, không cầu kì như C, C++

+ Code ngắn gọn

+ Là ngôn ngữ lập trình phổ biến hiện nay nên tiện cho việc học hỏi và sửachữa

3.1.2 Thư viện sử dụng: OpenCV

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầucho xử lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viếtbằng C/C++, vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng

Trang 19

dụng liên quan đến thời gian thực Opencv có các interface cho C/C++, PythonJava vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android Đặc biết thưviện OpenCV rất dễ cài đặt và sử dụng.

Kiểm tra và giám sát tự động

Robot và xe hơi tự lái

3.2 Mã nguồn chi tiết của chương trình:

3.2.1 NewUser.py

import cv2

import sqlite3

Trang 20

id=input('Nh p mã nhân viên:') ậ

name=input('Nh p tên nhân viên;') ậ

print("B t đ u ch p nh nhân viên, nh n q đ thoát!")

insertOrUpdate(id,name)

sampleNum=0

Trang 21

cv2.rectangle(img, (centerW - sizeboxW // 2, centerH - sizeboxH // 2),

(centerW + sizeboxW // 2, centerH + sizeboxH // 2), (255, 255, 255), 5)

# Ghi d li u khuôn m t vào th m c dataSet ữ ệ ặ ư ụ

cv2.imwrite("dataSet/User." + id + '.' + str(sampleNum) + ".jpg", gray[y:y + h, x:x + w])

cv2.imshow('frame', img)

# Check xem có b m q ho c trên 100 nh sample thì thoát ấ ặ ả

Ngày đăng: 05/02/2025, 21:47

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w