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

đồ án cơ sở xây dựng hệ thống chấm công bằng nhận diện khuôn mặt

28 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 hệ thống chấm công bằng nhận diện khuôn mặt
Tác giả Võ Anh Kiệt
Người hướng dẫn Đặng Như Phú
Trường học Trường Đại học Nguyễn Tất Thành
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án cơ sở
Năm xuất bản 2023
Thành phố TP. HCM
Định dạng
Số trang 28
Dung lượng 5,05 MB

Nội dung

Mang lại rất nhiều ứng dụng trong đời sống: xử lí hìnhảnh, trình đọc tự động, phát hiện các đối tượng, nhận diện khuôn mặt, xe tự lái,… Trong đó, nhận diện đối tượng Object Detection là

Trang 1

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNHKHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN CƠ SỞ

Tên đề tài:XÂY DỰNG HỆ THỐNG CHẤM CÔNG

BẰNG NHẬN DIỆN KHUÔN MẶT

Giảng viên hướng dẫn: ĐẶNG NHƯ PHÚSinh viên thực hiện: VÕ ANH KIỆTMSSV: 2100010701

Khoá: 21Ngành/ chuyên ngành: TRÍ TUỆ NHÂN TẠO

TP HCM, 28 tháng 9 năm 2023

Trang 2

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNHKHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN CƠ SỞ

Tên đề tài:XÂY DỰNG HỆ THỐNG CHẤM CÔNG

BẰNG NHẬN DIỆN KHUÔN MẶT

Giảng viên hướng dẫn: ĐẶNG NHƯ PHÚSinh viên thực hiện: VÕ ANH KIỆTMSSV: 2100010701

Khoá: 21Ngành/ chuyên ngành: TRÍ TUỆ NHÂN TẠO

TP HCM, 28 tháng 9 năm 2023

Trang 3

NHIỆM VỤ ĐỒ ÁNMục tiêu

 Tìm hi u và áp d ng các kỹỹ thu t c b n c a Trí tu nhân t o đ d đoánể ụ ậ ơ ả ủ ệ ạ ể ựd a trên các ỹêếu tốế c a đâầu vào.ự ủ

 Hi u để ược quỹ trình xâỹ d ng mố hình, huâến luỹ n và đánh giá mố hình trongự ệTrí tu nhân t o.ệ ạ

 Xâỹ d ng mố hình h c máỹ c b n (ví d : hốầi quỹ tuỹêến tính) đ d đoán d aự ọ ơ ả ụ ể ự ựtrên các ỹêếu tốế đã ch n.ọ

3 Huấn luyện và đánh giá mô hình: Tách t p d li u thành t p huâến luỹ n và t p ki m tra.ậ ữ ệ ậ ệ ậ ể Huâến luỹ n mố hình trên t p huâến luỹ n và đánh giá hi u suâết trên t p ki m ệ ậ ệ ệ ậ ể

tra.4 Thực hiện ứng dụng:

 Xâỹ d ng ng d ng đ n gi n cho phép ngự ứ ụ ơ ả ười dùng nh p thống tin và d ậ ựđoán kêết qu ả

5 Báo cáo đồ án:

i

Trang 4

 Viêết báo cáo vêầ quỹ trình th c hi n, kêết qu đ t đự ệ ả ạ ược và đánh giá mố hình. Chu n b thuỹêết trình đ trình bàỹ kêết qu đốầ án.ẩ ị ể ả

Tiến độ dự kiến

 Tuâần 1-2: Nghiên c u lý thuỹêết và thu th p d li u.ứ ậ ữ ệ Tuâần 3-4: Tiêần x lý d li u và xâỹ d ng mố hình d đoán.ử ữ ệ ự ự Tuâần 5-6: Huâến luỹ n và đánh giá mố hình.ệ

 Tuâần 7-8: Xâỹ d ng ng d ng và tốếi u hóa.ự ứ ụ ư Tuâần 9-10: Hoàn thi n báo cáo đốầ án và n i dung thuỹêết trình.ệ ộ

ii

Trang 5

LỜI CẢM ƠN

Trong quá trình làm đồ án này, em đã gặp không ít những khó khăn và trở ngạido vốn kiến thức còn hạn chế Dù bận rộn nhiều công việc nhưng các Thầy Cô vẫngiành nhiều thời gian và tâm huyết trong việc hướng dẫn em Thầy Cô luôn quan tâm,chỉ bảo và sửa chữa những vấn đề quan trọng giúp em định hướng và làm việc theoquan điểm đúng đắn, chính sự tận tâm và nhiệt huyết của thầy đã giúp em có được tinhthần, một niềm tin và khối lượng kiến thức phong phú để đến ngày hôm nay, đồ án cơsở của em đã được hoàn thành

Với tất cả tấm lòng biết ơn sâu sắc, em xin chân thành gửi lời cảm ơn đến Bangiám hiệu cùng toàn thể quý Thầy Cô trường Đại học Nguyễn Tất Thành, các Thầy Côkhoa Công nghệ thông tin, chuyên ngành Trí tuệ nhân tạo đã tận tình hướng dẫn – giúpđỡ em trong suốt quá trình học tập tại trường, đặc biệt là Thầy Đặng Như Phú – Giảngviên hướng dẫn đồ án

Sau cùng em xin cảm ơn gia đình, người thân luôn bên cạnh ủng hộ và độngviên, cảm ơn tất cả bạn bè đã gắn bó và cùng học tập, giúp đỡ em trong suốt thời gianqua, cũng như trong suốt quá trình hoàn thành đồ án này

Chân thành cảm ơn!

iii

Trang 6

LỜI MỞ ĐẦU

Trong thời đại hiện nay, xã hội chúng ta bước vào cuộc cách mạng công nghiệp4.0, có cốt lõi là công nghệ thông tin và các thiết bị máy móc thông minh để phục vụnhu cầu đời sống con người và tăng năng suất lao động Để các thiết bị máy móc nàytrở nên thật sự thông minh thì con người chúng ta cần phải dạy cho chúng biết nhậnbiết và xử lí các sự vật, sự việc trong thực tế để đạt được mục đích trong công việc Từđó, chúng ta cần phát triển các chương trình có thể giúp máy tính nhận diện được đốitượng ngoài xã hội đời thực

Thị giác máy tính (Computer Vision) là một trong những lĩnh vực của khoa họcmáy tính và nghiên cứu trí tuệ Mang lại rất nhiều ứng dụng trong đời sống: xử lí hìnhảnh, trình đọc tự động, phát hiện các đối tượng, nhận diện khuôn mặt, xe tự lái,…

Trong đó, nhận diện đối tượng (Object Detection) là mộ đề tài rất được quantâm hiện nay bởi khả năng ứng dụng cao, dữ liệu dễ chuẩn bị và kết quả ứng dụngnhiều

Vì vậy, em quyết định làm đồ án về Object Detection là “Ứng dụng mô hình

YOLO để nhận diện khuôn mặt” Ở đây, em chọn sử dụng mô hình YOLO – You

only look once – tốc độ thực thi rất nhanh, đạt được việc nhận diện đối tượng trongthời gian thực

Em xin chân thành gửi lời cảm ơn tới Thầy Đặng Như Phú đã có những nhậnxét, hướng dẫn và góp ý khách quan để em có thể hoàn thành báo cáo này một cáchchỉnh chu và tốt nhất Trong quá trình tìm hiểu và làm báo cáo sẽ không tránh khỏinhững sai sót, em mong nhận được sự thông cảm và góp ý thêm của quý Thầy Cô

Em xin chân thành cảm ơn!

iv

Trang 7

Phân tích yêu cầu 5

2.1 Giới thiệu về YOLO 5

Trang 8

Kết luận và hướng phát triển 13

Trang 9

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

TRUNG TÂM KHẢO THÍ

KỲ THI KẾT THÚC HỌC PHẦNHỌC KỲ: 3 NĂM HỌC: 2022 - 2023PHIẾU CHẤM THI TIỂU LUẬN/ĐỒ ÁN

Môn thi: ĐỒ ÁN CỞ SỞ TRÍ TUỆ NHÂN TẠO Lớp học phần: 010107601705Sinh viên thực hiện: VÕ ANH KIỆT MSSV: 2100010701

Đề tài tiểu luận/báo cáo của sinh viên :Phần đánh giá của giảng viên (căn cứ trên thang rubrics của môn học):

Tiêu chí(theoCĐR HP)

tối đaĐiểm

đạtđược

Cấu trúc của báo cáo

1Các nội

dung thành phần

6Lập luận

2Kết luận

0.5Trình bày

Trang 10

DANH MỤC BẢNG

Bảng 5-1: Những hạn chế của mô hình YOLO trong việc nhận diện khuôn mặt 14

viii

Trang 11

DANH MỤC HÌNH

Hình 1-1: Học máy 1

Hình 1-2: Nhận dạng đối tượng trong một bức ảnh 2

Hình 1-3: Ứng dụng trí tuệ nhân tạo trong lĩnh vực y tế 2

Hình 1-4: Dự đoán trong Machine Learning 3

Hình 1-5: Biological neurons to Artificial neurons 3

Hình 1-6: Kiến trúc mạng nơ-ron nhân tạo 4

Hình 2-1: Mốc thời gian của các biến thể YOLO 5

Hình 2-2: Kiến trúc mạng YOLO 5

Hình 2-3: Cách YOLO hoạt động 6

Hình 5-1: Hình ảnh minh họa khi chạy được chương trình 13

ix

Trang 12

KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT

ANN (Artificial Neural Network) Mạng nơ-ron nhân tạoAI (Artificial Intelligence) Trí tuệ nhân tạoCNN (Convolutional Neural Netwrok) Mạng nơ-ron tích chập

YOLO (You Only Look Once) Bạn chỉ nhìn một lần

x

Trang 13

CHƯƠNG 1Cơ sở lý thuyết

1.1 Học máy1.1.1 Học máy là gì?

Học máy là một lĩnh vực trong trí tuệ nhân tạo (AI) nghiên cứu và phát triển cácthuật toán và mô hình để cho máy tính có khả năng học từ dữ liệu và tự động cải thiệnhiệu suất của chúng theo thời gian Thay vì được lập trình cụ thể để giải quyết mộtnhiệm vụ, máy tính được huấn luyện sử dụng các thuật toán học máy để phân tích dữliệu, tìm ra mẫu và rút ra kết luận từ đó Học máy có thể áp dụng cho nhiều lĩnh vựckhác nhau như xử lý ngôn ngữ tự nhiên, nhận diện hình ảnh, dự báo tài chính, hay điềukhiển tự động

Hình 1-1: Học máy

1.1.2 Ứng dụng của học máy1.1.2.1 Nhận dạng hình ảnh (Image Recognition)

Nhận dạng hình ảnh là một trong những ứng dụng phổ biến nhất của MachineLearning Có nhiều tình huống để phân loại đối tượng trong một hình ảnh kỹ thuật số.Ví dụ, trường hợp ảnh đen trắng thì sẽ sử dụng phép đo mức xám của từng pixel, còntrong ảnh màu thì lại sử dụng phép đo lường cường độ của ba màu khác nhau tạo nên 1pixel

Machine Learning cũng được ứng dụng để phát hiện khuôn mặt trong ảnh Cómột danh mục riêng cho mỗi người trong cơ sở dữ liệu hình ảnh của nhiều người.Machine Learning cũng được ứng dụng trong nhận dạng chữ viết để phân biệt chữ viết

1

Trang 14

tay hay chữ in Chúng ta cần phân đoạn một đoạn văn bản thành các hình ảnh nhỏ hơn,mỗi hình ảnh chứa một ký tự.

Hình 1-2: Nhận dạng đối tượng trong một bức ảnh

1.1.2.2 Chuẩn đoán trong y học (Medical Diagnosis)

Machine Learning có thể sử dụng trong các kỹ thuật và công cụ chuẩn đoánbệnh Nó được sử dụng để phân tích các biểu hiện lâm sàng và kết hợp chúng để tiênđoán về sự tiến triển của bệnh tật để thông tin tới bác sĩ để lập kế hoạch diều trị vàtheo dõi bệnh nhân Nó cũng có thể giúp tích hợp các hệ thống trong lĩnh vực chămsóc sức khỏe

Hình 1-3: Ứng dụng trí tuệ nhân tạo trong lĩnh vực y tế

2

Trang 15

1.1.2.3 Dự đoán (Prediction)

Machine Learning cũng được sử dụng trong các hệ thống dự đoán Ví dụ nhưviệc cho vay của ngân hàng, để tính xác suất xảy ra lỗi, hệ thống cần phân loại dữ liệucó sẵn theo nhóm Nó được xác định bởi một bộ quy tắc được quy định bởi các nhàphân tích Sau khi được phân loại xong, ta có thể tính xác suất về lỗi có thể xảy ra.Những tính toán này có thể áp dụng trên nhiều lĩnh vực và mục đích khác nhau

Hình 1-4: Dự đoán trong Machine Learning

1.2 Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN)1.2.1 ANN là gì?

Là một mô hình tính toán được lấy cảm hứng từ cấu trúc và hoạt động của hệthống nơ-ron trong não người Nó là một mô hình mấy học sâu (deep learning) đượcsử dụng để giải quyết các bài toán cụ thể (nhận dạng, phát hiện, dự đoán, suy diễn,…)

Hình 1-5: Biological neurons to Artificial neurons

3

Trang 16

ANN có khả năng tự điều chỉnh và tìm ra các biểu diễn phức tạp của dữ liệu,cho phép xử lý rất nhiều loại thông tin khác nhau Chúng được áp dụng thành côngtrong rất nhiều ứng dụng như nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên, dự đoánchuỗi thời gian và nhiều lĩnh vực khác.

Trang 17

CHƯƠNG 2Phân tích yêu cầu

2.1 Giới thiệu về YOLO

YOLO (You Only Look Once) là mô hình phát hiện đối tượng phổ biến đượcbiết đến với tốc độ nhanh và độ chính xác cao Mô hình này lần đầu tiên được giớithiệu bởi Joseph Redmon và cộng sự vào năm 2016 Kể từ đó đến nay, đã có nhiềuphiên bản của YOLO, một trong những phiên bản gần đây nhất là YOLO v7

Hình 2-1: Mốc thời gian của các biến thể YOLO

- Detection head: Sau khi thông tin đã được rút trích từ backbone network,detection head tiếp tục xử lý để nhận diện và phát hiện vị trí của các đốitượng trong ảnh Detection head bào gồm các lớp tích chập và kết nối đầyđủ để tạo ra các bounding box (hộp giới hạn) cho từng đối tượng cần nhậndiện

Hình 2-2: Kiến trúc mạng YOLO

5

Trang 18

2.3 Cách hoạt động của YOLO

Quá trình hoạt động của YOLO bao gồm các bước:- Chuẩn bị dữ liệu: Ảnh được chia thành các ô vuông có kích thước cố định

Mỗi ô vuông sẽ chứa thông tin về các điểm ảnh và thông tin liên quan khác.- Phát hiện: Mô hình YOLO sử dụng một CNN (Convolutional NeuralNetwork) để phát hiện các vùng quan tâm trong ảnh CNN này được huấnluyện để nhận diện các đặc tính của đối tượng, ví dụ: biên, hình dạng,texture,…

- Phân loại: Sau khi phát hiện được vùng quan tâm, YOLO sử dụng một thuậttoán phân loại để xác định loại của từng vùng quan tâm, ví dụ: người,phương tiện, động vật,…

- Tinh chỉnh: YOLO điều chỉnh lại các dự đoán bàn đầu để cải thiện độ chínhxác Điều này bao gồm việc điều chỉnh vị trí và kích thước của các hộp giớihạn (bounding boxes) để phù hợp với đối tượng thực tế

Hình 2-3: Cách YOLO hoạt động

6

Trang 19

CHƯƠNG 3Xây dựng mô hình

3.1 Xây dựng NewUser.py

import cv2

import sqlite3

cam =cv2.VideoCapture(0detector=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Hàm c p nh t tên và ID vào CSDLậậdefinsertOrUpdate(id, name): conn=sqlite3.connect("FaceBaseNew.db") cursor=conn.execute('SELECT * FROM People WHERE ID='+str(id)) isRecordExist=

forrowincursor: isRecordExist =1 break

ifisRecordExist==1 cmd="UPDATE people SET Name=' "+str(name)+" ' WHERE ID="+str(id) else:

cmd="INSERT INTO people(ID,Name) Values("+str(id)+",' "+str(name)+" ' )"

conn.execute(cmd) conn.commit() conn.close()

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=

while(True): ret, img =cam.read() # L t nh cho đ b ngậ ảỡ ịược img =cv2.flip(img,1

# K khung gi a màn hình đ ngẻữểười dùng đ a m t vào khu v c nàyưặự

7

Trang 20

centerW =img.shape[1] //2 sizeboxW =300;

sizeboxH =400; cv2.rectangle(img, (centerW -sizeboxW//2, centerH -sizeboxH//2), (centerW +sizeboxW//2, centerH +sizeboxH//2), (255, 255, 255), 5

# Đ a nh v nh xámư ảề ả gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Nh n di n khuôn m tậệặ faces =detector.detectMultiScale(gray, 1.3, 5 for (x, y, w, h) infaces:

# V hình ch nh t quanh m t nh n đẽữậặậược cv2.rectangle(img, (x, y), (x +w, y +h), (255, 0, 0), 2 sampleNum =sampleNum +1

# Ghi d li u khuôn m t vào th m c dataSetữệặư ụ cv2.imwrite("dataSet/User." +id +'.' +str(sampleNum) +".jpg", gray[ : +h, x x: +w])

cv2.imshow('frame', img) # Check xem có b m q ho c trên 100 nh sample thì thoátấặả ifcv2.waitKey(100) &0xFF==ord('q'):

break elifsampleNum>100: break

recognizer =cv2.face.LBPHFaceRecognizer_create()detector=cv2.CascadeClassifier("haarcascade_frontalface_default.xml")

def getImagesAndLabels(path): # L y t t c các file trong th m cấấảư ụ imagePaths=os.path.join(path,) for fin os.listdir(path)] #create empth face list

faceSamples=[] #create empty ID list Ids=[]

#now looping through all the image paths and loading the Ids and the images

8

Trang 21

if (imagePath[-:]=="jpg"): print(imagePath[-:]) #loading the image and converting it to gray scale pilImage=Image.open(imagePath).convert('L') #Now we are converting the PIL image into numpy array imageNp=np.array(pilImage,'uint8')

#getting the Id from the image Id=int os(.path.split(imagePath)[-].split(".")[1]) # extract the face from the training image sample faces=detector.detectMultiScale(imageNp) #If a face is there then append that in the list as well as Id of it

for (x y w h, , ,) infaces: faceSamples.append(imageNp[ :y y h+, :x x w+]) Ids.append(Id)

returnfaceSamples Ids,

# L y các khuôn m t và ID t th m c dataSetấặừư ụfaceSamples Ids, =getImagesAndLabels('dataSet')# Train model đ trích xu t đ c tr ng các khuôn m t và gán v i t ng nahan ểấặưặớừviên

recognizer.train(faceSamples, np.array(Ids))

# L u modelưrecognizer.save('recognizer/trainner.yml')print("Trained!")

3.3 Xây dựng FaceRecognizer.py

import cv2import numpy asnp

from PIL import Image

import pickle

import sqlite3

# Kh i t o b phát hi n khuôn m tởạộệặfaceDetect=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# Kh i t o b nh n di n khuôn m tởạộậệặrecognizer =cv2.face.LBPHFaceRecognizer_create()recognizer.read('recognizer/trainner.yml')

id=#set text stylefontface =cv2.FONT_HERSHEY_SIMPLEX

9

Trang 22

fontcolor= (0 255,,)fontcolor1= (0 0 255, ,)# Hàm l y thông tin ngấười dùng qua IDdefgetProfile(id):

conn=sqlite3.connect("FaceBaseNew.db") cursor=conn.execute("SELECT * FROM People WHERE ID="+str(id)) profile=None

forrowincursor: profile=row conn.close() returnprofile# Kh i t o cameraởạcam=cv2.VideoCapture(0;

while(True): # Đ c nh t cameraọ ảừ ret img,=cam.read(); # L t nh cho đ b ngậ ảỡ ịược img =cv2.flip(img, 1

# V khung ch nh t đ đ nh v vùng ngẽữậể ịịười dùng đ a m t vàoưặ centerH =img.shape[0] //2

centerW =img.shape[1] //2 sizeboxW =300;

sizeboxH =400; cv2.rectangle(img, (centerW -sizeboxW//2, centerH -sizeboxH//2), (centerW +sizeboxW//2, centerH +sizeboxH//2), (255, 255, 255), 5

# Chuy n nh v xámể ảề gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# Phát hi n các khuôn m t trong nh cameraệặả faces=faceDetect.detectMultiScale(gray,1.3, )5; # L p qua các khuôn m t nh n đặặậược đ hi n thông tinểệ for( , , ,x y w h) infaces:

# V hình ch nh t quanh m tẽữậặ cv2.rectangle(img,(x y,),(x w+,y h+),(255 0 0, ,),2

# Nh n di n khuôn m t, tr ra 2 tham s id: mã nhân viên và dist (d ậệặảốộsai khác)

id dist,=recognizer.predict(gray y y h[ :+, :x x w+]) profile=None

10

Ngày đăng: 04/09/2024, 17:50

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

TÀI LIỆU LIÊN QUAN

w