Các đối tượng nhận diện có thể là con người, khuôn mặt, chó mèo, … Trong đó nhận diện và phát hi n khuôn mệ ặt đang ngày càng phổ ến hơn.. 1.4 M ục tiêu nghiên c u ứ Chúng em mong mu n n
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG V N T I TP.H CHÍ MINH Ậ Ả Ồ
**************
XÂY D NG H Ự Ệ THỐNG ĐIỂM DANH H C SINH Ọ
Nơi thực tập : Công ty C ổ Phần TITKUL
Giảng viên hướng dẫn : Th.S Tr n Anh Tuầ ấn
Sinh viên th c tự ập : Bùi Anh Khôi - 1751120086
Lâm Cao Sáng - 1751120102
Tp.Hồ Chí Minh, tháng 11 năm 2020
Trang 2LỜI CẢM ƠN
Lời đầu tiên chúng em xin g i l i cử ờ ảm ơn đến Khoa Công Ngh Thông Tin ệ –Trường Đại Học Giao Thông Vận Tải Tp.Hồ Chí Minh đã tạo điều kiện cho chúng
em hoàn thành t t khóa th c t p t t nghiố ự ậ ố ệp này Chúng em cũng xin chân thành cảm
ơn Công ty Cổ Phần TitKul cũng như thầy Trần Anh Tuấn đã quan tâm và hướng dẫn chúng em trong su t quá trình th c hiố ự ện đề tài này
Do kinh nghi m và ki n th c chuyên môn còn h n ch cho nên không tránh ệ ế ứ ạ ếkhỏi thi u sót Chúng em r t mong nhế ấ ận đượ ực s góp ý t các thừ ầy cô hướng d n và ẫgiám khảo
Chúng em xin chân thành cảm ơn !
Trang 3LỜI CAM ĐOAN
Chúng em xin cam k t m i n i dung trong báo cáo th c t p là do chúng em t ế ọ ộ ự ậ ựnghiên c u, tìm hi u và th c hiứ ể ự ện
Mọi bài viết, tài liệu cũng như các thư viện chúng em sử dụng ho c nhặ ắc đến trong đồ án thì chúng em s nêu rõ trong ph n tài li u tham kh o Chúng em xin cam ẽ ầ ệ ảđoan những gì chúng em thực hiện trong đồ án là sự thật và nếu có xảy ra gì chúng
em xin ch u trách nghi m v lị ệ ề ời cam đoan c a mình ủ
Sinh viên th c hi n ự ệBùi Anh Khôi & Lâm Cao Sáng
Trang 4NHẬN XÉT C ỦA ĐƠN VỊ THỰ C T ẬP
Trang 5NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Ngày … tháng … năm …
GIÁO VIÊN HƯỚNG D N Ẫ
Trang 6M ỤC LỤ C
CHƯƠNG 1.TỔNG QUAN 5
1.1 Thông tin về đơn vị thực tậ –p Công ty Cổ Phần TitKul 5
1.2 Thông tin về ị v trí th c t p 5 ự ậ 1.3 Tính cấp thiết của đề tài 6
1.3.1 Đặt vấn đề 6
1.3.2 Tầm quan trọng 7
1.3.3 Lý do chọn đề tài 8
1.4 Mục tiêu nghiên cứu 9
1.5 Đối tượng và ph m vi nghiên c u 9 ạ ứ 1.6 Phương pháp nghiên cứu 10
CHƯƠNG 2.CƠ SỞ LÝ THUYẾT 11
2.1 Một số khái ni m 11 ệ 2.1.1 Phát hi n khuôn m t 11 ệ ặ 2.1.2 Canh ch nh khuôn m t 11 ỉ ặ 2.1.3 Mã hóa khuôn mặt 12
2.1.4 So sánh và tìm ra k t qu 12 ế ả 2.2 Các thu t toán áp d ng 12 ậ ụ 2.2.1 Phát hi n khuôn m t 12 ệ ặ 2.2.2 Canh ch nh khuôn m t 18 ỉ ặ 2.2.3 Mã hóa khuôn mặt 19
2.2.4 So sánh và tìm ra k t qu 19 ế ả 2.3 Thuật toán Facenet Version 2 20
2.3.1 Tìm hiểu khái ni m 20 ệ 2.3.2 T p d u 20 ậ ữ liệ 2.3.3 Model đã được huấn luy n 23 ệ 2.3.4 Độ chính xác c a thu t toán 24 ủ ậ 2.4 Áp dụng thư viện face_recogntion 24
Trang 72.4.1 Phát hi n khuôn m t 24 ệ ặ 2.4.2 Huấn luy n d u 26 ệ ữ liệ 2.4.3 Nhận di n khuôn m t 26 ệ ặ 2.4.4 Độ chính xác c a thu t toán 27 ủ ậ
CHƯƠNG 3.PHÂN TÍCH, THIẾT KẾ, TRIỂN KHAI MÔ HÌNH 28
3.1 Phân tích 28
3.1.1 Phân tích lu ng dồ ữ liệu 28
3.1.2 Phần C ng 29 ứ 3.1.3 Màn hình hiển th 30 ị 3.1.4 Camera 30
3.1.5 Máy tính nội bộ 31
3.2 Thiết kế ự d a trên yêu c u 31 ầ 3.2.1 Phân tích yêu c u 31 ầ 3.3 Thiết kế cơ sở ữ liệ d u 35
3.4 Xây dựng Services v i ASP NET Core và MS SQL Server 36 ớ 3.4.1 RESTful web API apps 36
3.4.2 SignalR Core trong ASP NET Core 38
3.4.3 MS SQL Server 39
3.4.4 Entity Framework 41
3.4.5 Môi trường và công c l p trình 44 ụ ậ 3.4.6 Triển khai 45
3.5 Phần m m l y d u 47 ề ấ ữ liệ 3.5.1 Phần m m l y hình nh 48 ề ấ ả 3.5.2 Các thông số cho dữ liệu 51
3.6 C u hình và publish mã ngu n lên IIS trên hấ ồ ệ điều hành Windows 51
3.6.1 T ng quan 51 ổ 3.6.2 Môi trường và công c l p trình 52 ụ ậ 3.6.3 Triển khai 52 3.7 Quản lý mã ngu n v i Git 54 ồ ớ
Trang 83.7.1 T ng quan 54 ổ3.7.2 Môi trường và công cụ ậ l p trình 55 3.8 Triển khai trên website và ng dứ ụng di động 55 3.8.1 Website 55 3.8.2 Ứng dụng trên điện tho i 55 ạCHƯƠNG 4.KẾT LUẬN VÀ HƯ NG PHÁT TRIỂN 57 Ớ4.1 Kết quả đạt được 57 4.2 Kết luận 60 4.2.1 Lợi ích 60 4.2.2 H n ch 60 ạ ế4.3 Hướng phát tri n 61 ểTÀI LIỆU THAM KH O 62Ả
Ảnh 2-1 Ảnh đầu vào 13 Ảnh 2-2 Ảnh đoạ ệnh thực thi 14 n lẢnh 2-3 Kết quả thu được 14 Ảnh 2-4 Ảnh đầu vào 15 Ảnh 2-5 Đoạ ệnh thực thi kết hợp thư viện face_recognition 15 n lẢnh 2-6 Kết quả đạt được 16 Ảnh 2-7 Ảnh đầu vào 17 Ảnh 2-8 Đoạ ệnh thực thi kết hợp thư viện face_recognition 18 n lẢnh 2-9 Kết quả thu được 18
Ảnh 2-10 Sáu mươi tám điểm khác nhau ở trên mặt áp dụng thuật toán Face Landmark Estimation 19 Ảnh 2-11 Thư mục con chứa các b c ảnh về một người 21 ứẢnh 2-12 Thư mục con chứa các b c ảnh về một người 22 ứ
Ảnh 2-13 Ảnh một ngư i 23 ờẢnh 2-14 Kết quả thu được 23 Ảnh 2-15 Đoạ ệnh thực thi 25 n lẢnh 2-16 Kết quả thu được 25 Ảnh 2-17 Kết quả thu được 26 Ảnh 3-1 Luồng dữ liệu 28
Trang 9Ảnh 3-2 Màn hình hiển th ị điểm danh sẽ được lắp đặt ở mỗi cổng trường học 30
Ảnh 4-1 Sơ đồ Use-case của hệ thống 31
Ảnh 4-2 Sơ đồ cơ sở ữ liệu 35 d Ảnh 4-3 Cách hoạt động 37
Ảnh 4-4 SignalR Core 38
Ảnh 4-5 Entity Framework 42
Ảnh 4-6 Kiến trúc hệ thống 43
Ảnh 4-7 Model bằng ngôn ngữ lập trình C# 45
Ảnh 4-8 Model đượ ạo tự ng trên SQL 46 c t độ Ảnh 4-9 Trang web Swagger 46
Ảnh 4-10 Xây dựng SignalR Hubs 47
Ảnh 4-11 Màn hình nền phần mềm 48
Ảnh 4-12 Đăng nhập phần mềm 49
Ảnh 4-13 Thêm ảnh từ ngu n có sẵn 49 ồ Ảnh 4-14 Thêm ảnh từ camera 50
Ảnh 4-15 Hiển th thông tin học sinh 50 ị Ảnh 4-16 Hiển th thông tin học sinh 53 ị Ảnh 4-17 Cấu hình IIS để publish 53
Ảnh 4-18 Publish mã nguồn 54
Ảnh 5-1 Trang chủ website 55
Ảnh 5-2 Giao diện ứng dụng trên điện thoại 56
Ảnh 6-1 Tham gia cuộc thi “D án Đự ổi m i sáng tạo ứng dụng Trí Tuệ nhân tạo ( AI ) ớ TP.HCM 2020” 57
Ảnh 6-2 Trưng bày sản phẩm t i Trung tâm thông tin và thống kê khoa học và công ạ nghệ Tp.HCM 58
Ảnh 6-3 Trưng bày, trình diễn công nghệ hội thảo gi i thiệu công nghệ cớ ần thơ 2020 58 Ảnh 6-4 Tham dự chương trình Ngày Hội Doanh Nghiệp Công Nghệ Thông Tin Và Trí Tuệ Nhân Tạo Thành Ph H Chí Minh 59 ố ồ Ảnh 6-5 Tham gia triễn lãm sản phẩm t i Ngày h i khởi nghiệp đổi m i sáng tạo ạ ộ ớ TechFest Mekong 2020 59
Ảnh 6-6 Tham gia triễn lãm tại Liên hoan tuổi trẻ sáng tạo thành Phố Hồ Chí Minh 60
DANH M C BỤ ẢNG Bảng 4-1 B ng các thả ực thể và di n giễ ải ý nghĩa 36
Trang 10CHƯƠNG 1 TỔNG QUAN 1.1 Thông tin v ề đơn vị thực tậ – p Công ty C ổ Phầ n TitKul
Công ty C ổ Phần TitKul ( TitKul ) là doanh nghi p vệ ừa đi vào hoạt động không lâu
TitKul là công ty hoạt động trong lĩnh vực công ngh thông tin chuyên t o ra ệ ạcác s n phả ẩm đáp ứng nhu c u hi n nay c a cu c sầ ệ ủ ộ ống cũng như là cung cấp các giải pháp của doanh nghiệp khi có yêu cầu Các lĩnh vực mà công ty hướng tới như :
o Văn phòng: 131c Nguyễn Khoái, Phường 1, Qu n 4, Thành ậphố H Chí Minh,Vi t Nam ồ ệ
Trang 112 Người hướng dẫn : ThS.Trần Anh Tuấn - Giảng viên trường Đại học GTVT TP.HCM
1.3 Tính c p thi t cấ ế ủa đề tài
1.3.1 Đặt vấn đề
Cuộc s ng hiố ện nay càng ngày càng phát tri n và công ngh thông tin ngày càng ể ệđáp ứng nhiều nhu cầu hơn và len lỏi vào mọi mặt của cuộc sống Việc học tập, nghiên c u và tìm hi u v ứ ể ề lĩnh vực công nghệ thông tin hi n nay là mệ ột điều thiết yếu cho m i cá nhân trong xã hỗ ội
Lĩnh vực công nghệ thông tin hiện nay rất rộng lớn và có nhiều chuyên ngành khác nhau M i chuyên ngành s ỗ ẽ có đặc điểm và tính chất riêng bi ệt
Ngoài các lĩnh vực thông dụng hiện nay như lập trình website, lập trình ứng dụng, … bên cạnh đó hiện nay đã và đang xuất hiện các lĩnh vực mới như:
Trí tu nhân t o là m t chuyên ngành r ng l n thu c ngành công ngh thông ệ ạ ộ ộ ớ ộ ệtin Trí tu nhân tệ ạo ngày nay đang ngày càng phổ biến t ừ đờ ối s ng hằng ngày đến nghiên c u các vứ ấn đề cấp thiết
Lĩnh vực trí tuệ nhân tạo có thể chia ra nhiều lĩnh vực như Deep Learning, Machine Learning, Computer Vision, …
Trang 12Một trong những lĩnh vực quan tr ng cọ ủa trí tu nhân tệ ạo đang ngày càng được
ứng d ng rộng rãi trong đời sống là th giác máy tính ụ ị
Thị giác máy tính đúng như tên gọ ủi c a nó, chuyên nghành này s áp d ng x ẽ ụ ử
lý hình ảnh hay video để giải quyết các vấn đề cần yêu cầu
Thị giác máy tính gi i quyả ết đượ ấc r t nhi u bài toán hi n nay Mề ệ ột trong nh ng ữbài toán đó là nhận diện đối tượng bất kỳ Các đối tượng nhận diện có thể là con người, khuôn mặt, chó mèo, …
Trong đó nhận diện và phát hi n khuôn mệ ặt đang ngày càng phổ ến hơn biNhận di n và phát hi n khuôn m t ch m i phát triệ ệ ặ ỉ ớ ển và đề ậ c p gần đây do các
kỹ thu t còn h n ch Hiậ ạ ế ện nay độ chính xác cũng như các công nghệ hỗ trợ ngày một nhiều khi n cho vi c th c hi n d ế ệ ự ệ ễ dàng hơn
1.3.2 Tầm quan tr ọng
Áp d ng các công ngh ụ ệ nhận di n khuôn m t vào cu c s ng h ng ngày s giúp ệ ặ ộ ố ằ ẽcho rút ng n thắ ời gian và cũng như là công sức của con người Giúp c i thi n hiả ệ ệu năng và độ chính xác c a viủ ệc làm mong muốn
Hiện nay các ng d ng áp d ng th giác máy tính còn h n ch và ít ph ứ ụ ụ ị ạ ế ổ biến vì nhiều lý do như:
1 Hạn chế về thông tin: Rất khó để tiế p cận các bài báo cáo hay các đề tài nghiên cứu
2 Hạn chế về kỹ thu t: Hiện nay việc nghiên c u và áp d ng thị giác máy ậ ứ ụtính đòi hỏi người nghiên cứu phải có kiến thức vững vàng về chuyên ngành c a mình Sủ ự hiểu biết ngoài chuyên môn như về lĩnh vực toán học, …
3 …
Trang 13Vì v y vi c nghiên c u và áp d ng th giác máy tính vào d án th c t là mậ ệ ứ ụ ị ự ự ế ột phần quan tr ng, giúp th giác máy tính càng ngày càng phọ ị ổ biến trong đờ ống i shằng ngày nói chung và nh n di n khuôn m t nói riêng ậ ệ ặ
1.3.3 Lý do chọn đề tài
Hiện nay việc điểm danh hay ch m công ấ ở các trường h c, công ty hay xí nghiọ ệp đang có nhiều điểm bất cập Dẫn đến s m t mát v kinh t ự ấ ề ế cũng như nguồn nhân lực c a tủ ổ chức đó
Đồng th i, tình hình d ch b nh Covid-ờ ị ệ 19 đang còn diễn bi n ph c t p Vi c tiế ứ ạ ệ ếp xúc tr c ti p hay qua máy chự ế ấm công theo cách điểm danh thông thường s d ẽ ễdàng lây lan d ch b nh Vì v y hị ệ ậ ệ thống điểm danh b ng khuôn m t sằ ặ ẽ giảm tối thiểu tiếp xúc giúp h n ch lây lan d ch b nh ạ ế ị ệ
Việc điểm danh học sinh cũng không tránh khỏi những vấn đề trên Cần tìm cách kh c ph c và c i tiắ ụ ả ến giúp cho nhà trường tối ưu hơn về ngân sách cũng như thời gian
Các điểm bất cập có thể được nhắc tới như: sai sót, nhầm lẫn, tốn kém chỗ lưu trữ, …
1 Khi s ố lượng học sinh đi học c a mủ ột trường vào m t thộ ời điểm quá đông khiến cho người điểm danh sẽ không thể nhớ hết những học sinh mình
đã điểm danh hay quên những học sinh chưa được điểm danh gây ra sai sót
2 Khi điểm danh xong nhà trường luôn phải lưu trữ lại bằng giấy và phải
có một không gian lưu trữ để có thể lưu trữ ại các thông tin đã điểm ldanh Vi c này khi n cho t n kém chi phí v m t gi y tệ ế ố ề ặ ấ ờ cũng như tốn kém không gian lưu trữ
Trang 143 Đôi khi việc điểm danh đầu gi s chi m m t th i gian riêng c a các hờ ẽ ế ấ ờ ủ ọc sinh
4 …
Vì những điểm b t c p trên Chúng em quyấ ậ ết định áp d ng công ngh ụ ệ nhận diện khuôn m t vào viặ ệc điểm danh học sinh khi đi học
1.4 M ục tiêu nghiên c u ứ
Chúng em mong mu n nghiên cố ứu đề tài ngày giúp việc điểm danh khi h c sinh ọ
đi học ở các trường học sẽ nhanh chóng, ít tốn kém và mang lại độ chính xác cao hơn
Hệ thống có khả năng thông báo đến ph huynh h c sinh thông qua ng d ng ụ ọ ứ ụ
di động m t cách ngay l p t c Giúp ph huynh h c sinh n m b t ngay trình trộ ậ ứ ụ ọ ắ ắ ạng của h c sinh và có cách gi i quy t phù họ ả ế ợp
Ngoài ra, chúng em còn mong mu n không ch áp d ng ố ỉ ụ ở trường h c mà còn ọ
có th áp d ng các doanh nghi p hay công ty v a và nh Các tể ụ ở ệ ừ ỏ ổ chức này có thể thực hiện điểm danh đi làm hằng ngày m t cách nhanh chóng, giúp ít t n kém ộ ốchi phí cho t ổ chức đó
Trong quá trình nghiên c u và tìm hiứ ểu Chúng em cũng mong muốn h c họ ỏi thêm nhi u công ngh về ệ ề lĩnh vực đang nghiên cứu cũng như các kỹ thu t liên ậquan giúp c i thiả ện hệ thống
Trong quá trình th c hiự ện chúng em cũng mong muốn h c h i thêm cách hoọ ỏ ạt động và làm việc ở các doanh nghiệp để có th kinh nghi m và hi u bi t ể ệ ể ế
1.5 Đối tượng và phạm vi nghiên c u ứ
Tìm hi u ngôn ng l p trình Python ể ữ ậ
Tìm hi u ngôn ng lể ữ ập trình C#
Trang 15Tìm hi u và áp d ng các công nghể ụ ệ nhận di n khuôn mệ ặt đã có trên thị trường vào đề tài nghiên cứu.
Nâng c p thu t toán và tùy biấ ậ ến để áp dụng vào d án nếu có ự
Tìm hi u và ng d ng vào h ể ứ ụ ệ thống HR c a công ty TitKul ủ
1.6 Phương pháp nghiên cứu
Tìm hi u các thu t toán nh n di n khuôn m t, phát ể ậ ậ ệ ặ hiện khuôn m ặt
Áp d ng các công ngh và thu t toán có sụ ệ ậ ẵn đưa vào hệ thống
Tìm hi u các dể ự án đã có sẵn để đưa ra những s l a ch n phù h p cho d án ự ự ọ ợ ựnghiên cứu
Trang 16CHƯƠNG 2 CƠ SỞ LÝ THUY T Ế
lý nhi u và liên tề ục như vậy s khi n cho hẽ ế ệ thống chậm dẫn đến h ệ thống không còn hoạt động tốt và ngược lại
2.1.2 Canh ch nh khuôn m t ỉ ặ
Ở bước số hai, khi khuôn mặt được nhận di n sẽ ở nhiệ ều góc độ khác nhau không đồng nhất do đó dẫn đến việc mã hóa và nh n diậ ện khó khăn hơn Đôi khi khuôn mặt nhận diện được sẽ nằm nghiêng hay ánh sáng bị thiếu, … Nên canh ch nh l i các tỉ ạ ọa độ, độ to nhỏ, … và đưa về một chuẩn nhất định để có thể mang l i k t qu t t nhạ ế ả ố ất Khi đó cần áp dụng các thuật toán để canh ch nh lỉ ại
cả khuôn m t và các thành ph n khuôn m t v ặ ầ ặ ề đúng dạng chuẩn đó
Trang 172.2.1.1 Thu ật toán Haar Cascade
Thuật toán Haar Cascade dùng để phát hiện đối tượng, c ụ thể ở đây là phát hiện khuôn mặt được đưa ra bởi Paul Viola và Michael Jones trong báo cáo khoa hở ọc
“Rapid Object Detection using a Boosted Cascade of Simple Features” vào năm
2001
Trang 18Haar Cascade s dẽ ựa vào Machine Learning để phát hiện đối tượng Thu t toán ậ
sẽ có các dữ liệu đúng về đối tượng cần phát hiện và dữ liệu sai về đối tượng cần phát hi n T ệ ừ những d ữ liệu đã có để có thể phát hiện ra đối tượng
Để có thể s dụng thuật toán này cho phát hi n khuôn m t ta c n chuẩn bị hai ử ệ ặ ầthư mục khác nhau Thư mục thứ nhất là chứa những bức hình có khuôn mặt của con người Thư mục th hai s ứ ẽ chứa nh ng b c hình không có khuôn m t c a con ữ ứ ặ ủngười
Từ hai thư mục trên ta d dàng hu n luyễ ấ ện để ạ t o ra m t b dộ ộ ữ liệu giúp cho việc phát hi n khuôn m t ệ ặ
Hiện nay chúng ta đã có sẵn các dữ liệu Haar Cascade được huấn luyện với số lượng hình nh r t lả ấ ớn và có độ chính xác cao
Để ử ụ s d ng và nh n diậ ện được khuôn m t b ng thu t toán Haar Cascade chúng ta ặ ằ ậ
có th k t h p vể ế ợ ới thư viện OpenCV của ngôn ng l p trình Python ữ ậ
Để tải các t p Haar Cascade được cung c p t thư viện OpenCV Chúng ta có ệ ấ ừthể tìm qua trang web:
Trang 19Ảnh 2-2 Ảnh đoạn lệnh thực thi
• Kết quả đạt được:
Ảnh 2-3 Kết qu ả thu được Nhưng khi áp dụng và thực nghi m vào th c t thì thu t toán còn x y ra sai sót ệ ự ế ậ ả
và khó mang vào áp d ng v i d án lụ ớ ự ớn đòi hỏi độ chính xác cao
2.2.1.2 Thu ật toán CNN
CNN trong tiếng anh là Convolutional Neural Network hay còn được g i là ọmạng neural tích chập là m t mô hình c a Deep Learning Hiộ ủ ện nay mạng CNN được s d ng r t là nhi u ử ụ ấ ề
Mạng CNN có th s dể ử ụng để phát hiện v t th , c ậ ể ụ thể trong là nh n diđồ án ậ ện khuôn m t mang lặ ại độ chính xác cao Chu n b hai ẩ ị thư mục dữ liệu giống như
Trang 20thuật toán Haar Cascade để huấn luyện Một thư mục gồm các ảnh có khuôn mặt người Một thư mục g m các ồ ảnh không có khuôn mặt người Hi n nay t p d ệ ậ ữ liệu
về khuôn mặt người đã được t ng h p r t là nhi u ổ ợ ấ ề cho nên người sử d ng d dàng ụ ễ
áp dụng
Sau đó có thể kết hợp với thư viện Tensorflow và một số thư viện liên quan để
huấn luyệ Trong n đồ án này s s dẽ ử ụng thư viện face_recognition có sẵn để ỗ h trợ thực hiện nhanh hơn
Trang 21Ảnh 2-6 Kết qu ả đạt được Khi áp dụng thư viện face_recognition v i thu t toán CNN thì sớ ậ ẽ có độ chính xác khá cao nhưng việc x lý thì l i rử ạ ất ch m Có ậ thể áp dụng GPU để tăng tốc độ
xử lý nhanh hơn
2.2.1.3 Thu ật toán HOG
Thuật toán HOG được đề xuất bởi 2 nhà nghiên cứu là Dalad và Triggs Được giới thiệu năm 2005 ở ộ h i ngh CVPR ( Conference on Computer Vision Pattern ịRecognition )
Thuật toán HOG đã được tích hợp với thư viện face_recognition
Các bước phát hi n khuôn m ệ ặt:
1 Đầu tiên đưa bức ảnh v h ề ệ màu màu xám để tiện nh n di n Vi c nh n diậ ệ ệ ậ ện khuôn m t chúng ta không cặ ần đến màu s c c a bắ ủ ức ảnh nên không c n phầ ải
để hệ màu thông thường
2 Sau đó thuật toán sẽ quét tất cả các điểm ảnh có trong bức ảnh Với từng điể ảm nh m t sẽ dùng tới các điểm ảnh xung quanh Với thu t toán HOG ộ ậkết hợp thư viện face_recognition sẽ chọn một ô điểm ảnh và bốn ô điểm ảnh xung quanh
Trang 223 Kết qu mong muả ốn đạt được là t o ra m t muạ ộ ỗi tên đi từ điểm có ánh sáng sáng hơn đế ối hơn.n t C lứ ặp đi lặp lại như vậy cho đến h t khung hình hay ếbức ảnh
4 Sau đó thuật toán sẽ so sánh với các dữ liệu có sẵn đã được huấn luyện từ trước và so sánh để phát hiện ra khuôn mặt
Sau khi áp d ng thu t toán vào phát hi n khuôn mụ ậ ệ ặt chúng em thấy có độ chính xác cao hơn cũng như không bị quá ảnh hưởng bởi ánh sáng
Với ngôn ng l p trình ữ ậ Python đã hỗ trợ thư viện face_recognition, có tích hợp sẵn thu t toán HOG Khi áp d ng do thu t toán không th s d ng GPU nên có ậ ụ ậ ể ử ụtốc độ xử lý sẽ chậm hơn khi có GPU
Ví d và k t qu ụ ế ả đạt được:
• Ảnh đầu vào:
Ảnh 2-7 Ảnh đầu vào
• Đoạn l nh th c hi n b ng trình so n th o mệ ự ệ ằ ạ ả ặc định c a Python: ủ
Trang 23Ảnh 2-8 Đoạn l nh th c thi kệ ự ết hợp thư viện face_recognition
• Kết quả thu được:
Trang 24Ảnh 2- 10 Sáu mươi tám điểm khác nhau ở trên m t áp d ng thu t toán Face ặ ụ ậ
Landmark Estimation
Sau đó có hình dáng của khuôn mặt, độ dài giữa các mắt, độ dài giữa muỗi và miệng, … Từ d ữ liệu này thuật toán s s d ng các công th c toán hẽ ử ụ ứ ọc để biến đổi khuôn m t v ặ ề hình dáng tương ứng
2.2.3 Mã hóa khuôn m t ặ
Ở bước đã có khuôn mặt đã phát hiện, đã loại bỏ nhiễu và canh ch nh phù h p ỉ ợ
Áp dụng thư viện face_recognition của Python để mã hóa khuôn m t Thuặ ật toán s mã hóa khuôn m t thành m t m ng mẽ ặ ộ ả ột trăm hai mươi tám giá tr Viị ệc
mã hóa này m t khá là nhi u thấ ề ời gian cũng như sức m nh cạ ủa máy tính đang dùng Việc dành nhi u th i gian cho vi c mã hóa càng nhiề ờ ệ ều thì có độ chính xác càng cao
2.2.4 So sánh và tìm ra k t qu ế ả
Tùy vào t ng thu t toán khác nhau s có các cách so sánh tính toán khác nhau ừ ậ ẽ
Ở trong đồ sán ẽ s dụng thu t toán KNN ( K nearest neighbor ) ử ậ –
Với m i khuôn mỗ ặt ở ậ t p dữ liệu ban đầu đã được hu n luy n s có m t giá tr ấ ệ ẽ ộ ị
x và y tương ứng Các khuôn mặt cùng một người sẽ có các tọa độ x và y sẽ rất
Trang 25gần nhau Có bao nhiêu bức ảnh được hu n luyấ ện ban đầu s có b y nhiêu tẽ ấ ọa độtương ứng Các tọa độ từ các bức ảnh của một người sẽ có các tọa độ x và y gần nhau và n m thành t ng c m hoằ ừ ụ ặc đôi khi dữ liệu có th b nhiể ị ễu.
Để tính toán s s dẽ ử ụng tham s k là số ố người hàng xóm g n nhầ ất có nghĩa là k điểm g n nh t với tầ ấ ọa độ x và y của khuôn mặt Sau đó thuật toán sẽ so sánh và tìm ra k t qu phù hế ả ợp
Khi s d ng thu t toán KNN có r t nhiử ụ ậ ấ ều ưu điểm cũng như khuyết điểm ới V
ưu điểm thì thu t toán KNN s d dàng d ậ ẽ ễ ự đoán kết qu m i m t cách nhanh chóng ả ớ ộVới nhược điểm thì thuật toán KNN dễ bị sai khi giá trị k nhỏ nằm trong vùng nhiễu và do phải tính toán kho ng cách giả ữa các điểm nên thuật toán càng chạy chậm khi giá tr k càng cao ị
2.3 Thuật toán Facenet Version 2
2.3.1 Tìm hi u khái ni m ể ệ
MTCNN là t ừ viết t t c a Multi-task Cascaded Convolutional Networks M ng ắ ủ ạMTCNN bao g m 3 l p CNN x p ch ng lên nhau M i l p s có c u trúc khác ồ ớ ế ồ ỗ ớ ẽ ấnhau và đảm nhi m các nhi m v khác nhau ệ ệ ụ
Kết qu sau khi áp d ng thuả ụ ật toán MTCNN đầu ra sẽ trả v k t quề ế ả các điểm trên mặt như: mắt, mũi, miệng, …
Thuật toán Facenet s luôn luôn hu n luy n và nh n di n nh ng tẽ ấ ệ ậ ệ ữ ấm ảnh có kích thước gi ng nhau và nhố ất định
Để nh n di n khuôn mặt đó là ai thì thuật toán s áp d ng thu t toán SVM ậ ệ ẽ ụ ậ
2.3.2 Tập d u ữ liệ
Để có th áp d ng thu t toán Facenet chúng ta c n có d u ể ụ ậ ầ ữ liệ huấn luy n t ệ ừ đầu vào là các b c hình ch a khuôn m t cứ ứ ặ ủa người muốn phát hiện
Trang 26Trước khi hu n luy n nên t o mấ ệ ạ ột thư mục chứ ấa t t cả các thư mục con Trong từng thư mục con sẽ lưu trữ các bức ảnh về đúng một người Tránh để xảy ra sai sót khi m t ộ người có cùng hai thư mục con
Các ảnh được hu n luy n nên là các bấ ệ ức ảnh th ng nh t v d ng chuố ấ ề ạ ẩn như loại ảnh png hay jpg Ảnh được hu n luy n không quá nh và không quá l n Vi c mấ ệ ỏ ớ ệ ột bức ảnh quá chi ti t hay nh raw s mang l i tế ả ẽ ạ ốc độ ử x lý ch m cho thu toán ậ ật
Số lượng bức ảnh trong một thư mục con càng nhiều thì thời gian huấn luyện càng lâu nhưng khi nhận diện có kh ả năng sẽ tăng độ chính xác cao hơn
Ảnh 2- 11Thư mục con ch a các bứ ức ảnh về một người
Sau khi áp d ng thu t toán hu n luy n dụ ậ ấ ệ ữ liệu Ta sẽ thu được các bức ảnh ch ỉ
có khuôn m t cặ ủa người đó
Trang 27Ảnh 2- 12Thư mục con ch a các bứ ức ảnh về một người
Số lượng ảnh m c trung bình s mang l i k t qu tứ ẽ ạ ế ả ốt hơn Số lượng ảnh c a mủ ột người nên có khoảng hơn ba trăm t m hình ấ ở nhi u góc cề ạnh, hướng, ánh sáng, …
Số lượng ảnh quá lớn cũng gây nên việc tăng dung lượng lưu trữ nhưng chỉ xảy
ra ở thời kỳ đầu c a hủ ệ thống Sau này khi s d ng hử ụ ệ thống chỉ c n s dầ ử ụng dữliệu đã được hu n luyấ ện
Ví d v m t b c hình có khuôn m t cụ ề ộ ứ ặ ủa người muốn hu n luy n ấ ệ
Trang 28Ảnh 2- 13Ảnh một người Sau khi được huấn luy n phát hiệ ện khuôn măt Ta thu được khuôn mặt như sau:
Ảnh 2- 14Kết qu ả thu được
Hiện nay có hai model đã được huấn luy n sệ ẵn mang l i k t qu t t : ạ ế ả ố
• 20180408-102900 T p d ậ ữ liệu được sử dụng là CASIA-Webface
• 20180402-114759 T p d ậ ữ liệu được sử dụng là VGGFace2
Trang 292.3.4 Độ chính xác c a thu t toán ủ ậ
Thuật toán có độ chính xác khá là cao Độ chính xác của thuật toán tùy thuộc vào nhi u y u tề ế ố khác nhau như ánh sáng, màu sắc hay độ tương phản lúc nhận diện
Để tăng độ chính xác khi nhận di n cệ ần ánh sàng đầy đủ Ánh sáng không được quá chói hay quá sáng Phông nền đành sau ít đối tượng hay vật có hình giống khuôn mặt người Phông n n có th m t màu thì s mang l i k t qu tề ể ộ ẽ ạ ế ả ốt hơn Khi áp d ng thu t toán này vào th c ti n cho thụ ậ ự ễ ấy độ chính xác m c trung ở ứbình Có th áp d ng vào th c tiể ụ ự ễn nhưng chưa đạt những vấn đề ớ v i yêu c u cao ầ
Dễ b ịnhận di n sai ệ
2.4 Áp dụng thư viện face_recogntion
Thư viện face_recognition đã hỗ trợ hầu hết các bước trong công nghệ nhận diện khuôn m t ặ
Thư viện được vi t và xây d ng b i r t nhi u lế ự ở ấ ề ập trình viên khác nhau Thư viện face_recognition xây d ng tự ừ thư viện dlib Thư viện dlib là thư viện c a ngôn ủngữ ậ l p trình C++ dành cho Deep Learning hay Machine Learning, Theo báo cáo của thư viện thì thư viện này có độ chính xác khá cao Trong điều ki n thích ệhợp có th ể đạt hơn 90%
Thư viện face_recognition cũng hỗ trợ k t n i và nh n di n trên các thi t b ế ố ậ ệ ế ị như ipcamera, raspberry- pi
Thư viện được đánh hơn 30 nghìn sao trên github và được nhiều người s d ng ử ụ
2.4.1 Phát hi n khuôn m t ệ ặ
Thuật toán cung c p r t nhiấ ấ ều phương pháp để phát hiện khuôn m ặt
Như đã đề cập trong các phần trước của đề tài Chúng ta có thể áp dụng các kỹ thuật như HOG, MTCNN, …
Trang 312.4.2 Huấn luy n d u ệ ữ liệ
Với đề tài chúng em sử dụng dữ liệu khuôn m t c a b dặ ủ ộ ữ liệu VGGFACE2 Chúng em đã sử dụng kho ng d u khuôn m t cả ữ liệ ặ ủa 500 ngườ ớ ấi v i r t nhi u bề ức ảnh khác nhau v tề ừng người một
Thời gian hu n luy n b d ấ ệ ộ ữ liệu kéo dài khoảng hai mươi bốn tiếng Chúng em cũng đã thử huấn luyện một người m i vào b d ớ ộ ữ liệu sau đó dữ liệu mới cần thời gian nhiều hơn trước để huấn luyện Đây cũng là một khó khăn khi áp dụng thuật toán này
Sau khi hu n luy n xong chúng ta s có m file Chúng ta có th s d ng file ấ ệ ẽ ột ể ử ụnày m t cách d dàng và mang ộ ễ ở b t k ấ ỳ đâu nếu mu n Không c n ph i hu n luyố ầ ả ấ ện lại khi lắp đặt hay chuy n sang máy khác ể
2.4.3 Nhận diện khuôn mặt
Áp d ng giao di n và h ụ ệ ệ thống vào nh n di n khuôn m ậ ệ ặt
Ảnh 2- 17Kết qu ả thu được
Trang 322.4.4 Độ chính xác c a thu t toán ủ ậ
Khi áp d ng vào th c t cho th y thuụ ự ế ấ ật toán đạt yêu cầu cao v chính xác ề độ
Có th ể nhận di n chính xác v i t p d ệ ớ ậ ữ liệu có nhiều người
Để tăng độ chính xác cần tăng thời gian huấn luyện t p d ậ ữ ệu ban đầu Khi linhận di n có th ệ ể tăng độ chính xác bằng cách tăng các tham số của thuật toán Việc tăng các tham số này sẽ giúp tăng độ chính xác nhưng lại giảm hiệu năng của chương trình
Thư viện khi được áp d ng trong nghiên c u và theo báo cáo c a tác gi ụ ứ ủ ả đã kiểm định thì có độ chính xác rất cao đôi khi đạt trên 90%
Cũng như thuật toán Facenet Version 2 vi c có mệ ột không gian để nhận diện tốt s giúp cho vi c nh n diẽ ệ ậ ện đúng hơn và cũng như giúp tăng độ chính xác
Trang 33CHƯƠNG 3 PHÂN TÍCH, THI T K , TRI N KHAI MÔ HÌNH Ế Ế Ể
Học sinh là tác nhân chính trong d án ự
Khi học sinh đi học đến trường m i cỞ ỗ ổng trường sẽ đượ ắp đặt camera đểc lbắt khuôn m t c a h c sinh ặ ủ ọ
Khi có h c sinh xu t hi n trong camera H ọ ấ ệ ệ thống s quét và phát hiẽ ện được các khuôn m t có trong khung hình ặ