Các công nghệ hiện nay Ngày nay công nghệ nhận dạng khuôn mặt được quan tâm và được coi là một lĩnh vực quan trọng trong khoa học nhận dạng là do nhu cầu ứng dụng nhận dạng khuôn mặt tro
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
PHAM NGUYEN TAN PHAT - 20521739
KHOA LUAN TOT NGHIEP
NHAN DIEN KHUON MAT REAL-TIME DUNG
HOG-SVM VA UNG DUNG TRONG VIEC DIEU KHIEN CUA
PHONG
REAL-TIME FACE RECOGNITION USING HOG-SVM ARCHITECTURE FOR ROOM DOOR APPLICATION
CU NHAN NGANH KY THUAT MAY TINH
GIANG VIEN HUONG DAN
PGS.TS VU DUC LUNG
Th.S PHAN DINH DUY
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn Ban giám hiệu, quý Thầy Côcủa trường Đại Học Công Nghệ Thông Tin, đặc biệt là các thầy cô trong Khoa KỹThuật Máy Tính đã tận tình giảng dạy, hết lòng truyền đạt kiến thức, kinh nghiệmquý báo cho chúng em trong suốt thời gian qua
Với những kiến thức được thầy cô trong khoa Kỹ thuật Máy tính truyền dạytrong suốt 4 năm qua, nhóm em đã có thể tự tin làm một đề tài với nhiều kiến thứckhác nhau và học được những kiến thức mới Bên cạnh đó, dé có thé hoàn thành tốt
dé tài là sự chỉ dẫn tận tâm của thầy PGS.TS Vũ Đức Lung va thay ThS Phan DinhDuy Chúng em xin chân thành bày tỏ sự biết ơn sâu sắc đến thầy Thạc sĩ Phan ĐìnhDuy và Phó Giáo Sư Tiến Si Vũ Đức Lung — Khoa Kỹ Thuật Máy Tính đã tận tinh
và giúp đỡ chúng em trong quá trình thực hiện đề tài
Chúc quý thay cô khoa Kỹ thuật Máy tính - trường Dai học Công nghệ Thôngtin luôn đi đầu trong công tác giáo dục đại học ở trường và là người định hướng tậntâm cho nhiều thế hệ sinh viên Cảm ơn thầy cô đã luôn đồng hành và dẫn dắt sinhviên chúng em từ những ngày mới bước chân vào giảng đường đại học cho đến nay
Đó là cả một hành trình dài và nhiều bài học quý giá mà chúng em học được
Một lần nữa xin gửi quý thầy cô lời biết ơn chân thành nơi chúng em! Chúcthầy Duy và thầy Lung gặt hái nhiều thành công hơn nữa trong công tác giảng dạy
và gia đình nhiêu sức khỏe!
Sinh viên thực hiện
Phạm Nguyễn Tan Phát
Khoa Kỹ Thuật Máy Tính Lớp MTCL.2 2020
Trang 31.5 _ Ý nghĩa thực tiễn đề tài -¿©25:2c+22x22E22EEE2EE2211221.221eEkcrrrrrrki 61.6 Cấu trúc của báo cáo Khóa luận -:- ¿2 St+E+EEEE+ESEEEEEEeEErkrkererkereree 7Chương2 CO SỞ LÝ THUYÊT 2-52 2+ESEEE2EE+EE£EE2EE2EEEEEEEEEEEEErkerrerree 8
2.1 Thi giác máy tính — Computer V1SIOI . 5 5< + +3 +<s*++£+*eexeeeeeeeesesss 8
2.1.1 Tông qiữi ma» te m / / 8 2.1.2 Thư viện xử lý ảnh - - c + v11 ng ng ng rệt 9 2.2 Machine LearnIng c1 11911991 91v vn kg rry 11
2.2.1 Định nghia cece cesccecesesseceeeseceseceeeeseceeeseceeeceeeseeeeeseeeeeeeeeeees 11
2.2.4 Un-Supervised LearnIng - - -s «+ xxx ng ng 13 2.2.5 ClaSSIÍICALIOH - Ăn TH TH HH HH Hàn ng 13 2.2.6 CÏuSf€TINE Ăn HH TH TH HH TH TH Hàng 13 2.2.7 Dimenslonality redUCfIOI - -ó- 5< + SE ESEksrkreesrrseee 13 2.3 Convolutional Neural Network (CNN) cccccccccesssccesssssececcesssceeceeesseees 13
Trang 42.3.2 ConvolÏu(iOnal - 7c 2313011111111 vn 55555111 rer 14
2.3.3 Cấu trúc mạng CNN -¿©-+¿+-++2E++EEtSEESEEerkerkrrrkrrrree 152.3.4 Các tham số của CNN eecsseecsseecssseeeessneeessneesssnieesssneessaneeessneetee 18
2.5.2.2 Điều chỉnh và đối chiếu khuôn mặt ¿ c-e¿ 22
2.5.2.3 Mã hóa khuôn mặt (Encoding Faces$) - «+ ss«++s<++s+ 23 2.5.2.4 Tìm tên của người sau khi mã hóa - «+ +-«++s++++ 25
2.6.1 Tổng quan về Internet of Thỉngs - 2 2 2 +2 ++£zz£z£zxzez 25
2.6.1.1 Hiệu suất thiết bị cccccccrttrerrrrrrrrrrirrrrrrriee 27
2.8.1 HyperText Transfer Protocol (HTTP) - «+- «<< xseesseeseess 32
2.8.2 Các thành phan của HTTTP 2-2 s+2£+EE+EE+EE+EE£EzEzErrsrreree 33
Trang 52.8.2.2 HTTP — R€SpOIS€S - Ăn ng ng rườn 34
Chương 3 THIET KE HE THÓNG 2¿©+2©5+++++£x++£x++zxzrxzzsee 36
3.1 So đồ hệ thống :- + tt 2k E2 EE1211221211211211211211211 1.111 cxe 36
3.1.1.1 _ Tổng quan giao diện -¿- 2: ©-+¿©2++2++v2E+tEEterxrerkeerkesrei 36
3.1.1.3 Gửi dit liệu lên Database -©5¿©cs+cxcczvrxrrxrrreerxeee 39
3.1.1.4 Gửi mã phòng sang ESP32 dé ghi thẻ RFID - 4I3.1.2 Hệ thống nhận dạng :- 2+ +©E+EE#EE+EESEEEEEEEEEEEEEEEEErrrrrrrei 45
3.1.2.1 ESP32 đọc ghi thẻ ©ccccccccceerkeereesree 45
3.2 Phan cing 4> <@ / 49
3.3 Phân mm say ~ven / ⁄⁄ 49
4.1 _ Cài đặt hệ thống :-©2+-22+22222EEEE21E221221 22121121 504.2 Kết quả sau khi đăng ký người dùng trên hệ thống -: 514.3 Kết quả định danh khuôn mặt trên Jetson Nano - -+-«+ «+2 52
4.4 Giao diện người dùng - «+ kg ngư 54
Chương 5 KẾT LUẬN DE TÀI VÀ HƯỚNG PHAT TRIÉN - - 55
5.1 Hạn chế đề tài - + ©52+EE‡EE 2 2EEEE1211271711211211111 211111 crxe 55
5.1.1 OL (<1 | 555.1.2 Nhược diGM ieee cecccccccsssessscssscssesssessssssscssscssecssscsscssecssecsscssscsseessecsses 555.2 Hướng phát triển đề tài -:- + xxx EE1211221211211211 21121 1.cxe 55
Trang 6DANH MỤC HÌNH
Hình 1-1 Bảng thống kê về độ chính xác, số lượng tham số cần thiết và tốc độ xử lývới các biến thé của MobileFaceNet và ShuffleNet trên 2 bộ dữ liệu LEW và
Ag©DB-3 ch nà HH TH Hà KH HH HH TH HH HH HHTEERELkErkkrrke 3
Hình 1-2 Bảng thống kê thời gian ra mắt các loss function -.ccceeeee 4
Hình 1-3 Bảng thống kê độ chính xác của từng loss function - 4
Hình 2-1 Mơ tả ảnh dưới gĩc nhìn của máy tính -c-eseccxeerrrxsrrrxrrrreerre 9
Hình 2-2 Mơ hình input và output thơng qua xử lý các hàm -. -‹ - 11
Hình 2-3 Biểu đồ hàm số regression .-:icccccvtrriteevvvttrrreevrtrrrrrsrerrrrrrreere 12
Hình 2-4 Sliding Window trong CNN cccHHHHHre 14
Hình 2-5 Mơ tả cách hoạt động của mỗi Kernel với ảnh Input - 15
Hình 2-6 Mơ hình fully connected Ïay€r -‹ ccs<cccessreerrreserkerrrsrrrerrrrrrrree 16
Hình 2-7 Mơ hình convolutional layer liên kết trong CNN - 17Hình 2-8 Parameter của filter dùng để lọc ảnh -ccseecccetrrcceerre 17Hình 2-9 Biểu đồ phân loại SVM 2 elass -. 22ieecetreeceetrrererrrrreerrrreerrre 19
Hình 2-10 Ảnh Input được chia nhỏ thành từng Cells -css+: 20
Hình 2-11 Mũi tên chỉ hướng từ sáng đến tội đại diện cho gradient 20Hình 2-12 Kết quả sau khi xử lý gradient - +-eceerreecerrreceerrrrecrrrreree 21Hình 2-13 Trích xuất khuơn mặt dựa trên mẫu cĩ sẵn -.-se+ 21
Hình 2-14 68 landmarks trên mỗi khuơn mặt ta cần tìm - 22
Hình 2-15 Ảnh đặc trưng của khuơn mặt sau khi tách ra -e «e-‹«e+ 23
Hith 2-16 66)9I5000 177.7 24
Hình 2-17 128 đo lường sau khi trải qua quá trình huấn luyện 25
Hình 2-18 Internet of TÏhings - s-5c+scxeersrrtstrttrrttrrtkkrtrrrrirrrirrrirrrrrrrrrree 26
Hình 2-19 Sự gia tăng của giao tiếp máy-máy - -ccssrecceerrrererrrreeerre 26
Hình 2-20 Bảng so sánh giao thức truyền tải khơng dây s - 27
Hình 2-21 Thời gian đáp ứng cho ứng dụng IỌTỈ e-ccc-ererxesrsrvrrrrxeee 28
Hình 2-22 Logo FirebasSe -sxccrt th HH1 re 29
Trang 7Hình 2-23 Cấu trúc cơ bản của hệ thống RFID -.c -cccsesccccvescerceer 30 Hình 2-24 Quy trình hoạt động hệ thống RFID -cc c-cccccvecceeerre 31 Hình 2-25 Sơ đồ hoạt động của giao thức HTTTP -5ccccccvveeeeeeerrree 32
Hình 2-26 Thông tin trong một gói tin Request gửi đến Server 33Hình 2-27 Một số chức năng của HTTP ReqUu€st -e c-+csereereexsrkserrrrk 34
Hình 3-1 Tổng quan sơ đồ hệ thống -c-cveceeccccvxveeerrerrrrrrrrrrrrrrrrrree 36 Hình 3-2 Quá trình và tiểu trình của một ứng dụng khi chạy 37
Hình 3-9 Thiết lập UART bên ứng dụng giao diện -ccssxcccessee 42Hình 3-10 Xử lý lỗi và hiển thị lên UI -2-+eccetrreceetrrecertrrceerrrreerrre 43Hình 3-11 Thiết lập UART bên ESP32 -222.+cccStrrervrtrrerrtrrrrrrrrrrrrrrre 43
Hình 3-12 Thiết lập SPI và khởi tạo Key mặc định « -e<e-ceeereeeee 44
Hình 3-13 Sơ đồ kết nói chân từ ESP32 sang MEFRC522 .ccceerrcee 44
Hình 3-14 Sử dụng hàm từ thư viện MFRC522 dé ghi thé từ - 45
Hình 3-15 Sơ đồ tổng quan xử ý đọc thẻ RFID từ ESP32 46
Hình 3-16 So đồ tổng quan quá trình tạo file phân loại SVM 47Hình 3-17 Sơ đồ tổng quan Jetson Nano chạy -cc-ericeecceerrreecevrrrrreeeerr 48
Hình 4-1 Thông tin người dùng trên firebase -c-+©cceerrrxeerrrxerrrrrerrrrrree 51
Hình 4-2 Ảnh người dùng trên firebase -ccccrrcececvrtrrreerrrrrrrrerrrrrrrrrrerr 51Hình 4-3 Quy trình huấn luyện ảnh khuôn mặt -:ir+eccceetrrrescert 52
Hình 4-4 FPS và độ chính xác khi nhận diện khuôn mặt unknown 53
Hình 4-5 FPS và độ chính xác khi nhận diện khuôn mặt sau khi train 53
Hình 4-6 Giao diện đăng ký người dùng -ssccccxeesrxxrrrreerrrrrrrrrrrrrrrrrrrree 54 Hình 4-7 Giao diện người dùng đăng nhập -5cceccceerrrkierrrkrrrrrrrrrrrree 54
Trang 8DANH MỤC BANGBang 1 So đồ chân kết nối ESP32
Bang 2 Thống kê sé ảnh sau khi train
Trang 9DANH MỤC TU VIET TATFPS Frame per second
SVM Support Vector Machine
RFID Radio Frequency Identification
HOG Histogram of Oriented Gradients
CNN Convolutional Neural Network
DCNN Deep Convolutional Neural Network
Trang 10TÓM TẮT KHÓA LUẬN
Hiện nay, các công nghệ nghiên cứu xử lý ảnh đã và đang được quan tâm và
phát triển mạnh Đi kèm theo đó là các ứng dụng áp dụng thành tựu của xử lý ảnh.Một trong những đề tài nổi bật và thu hút nhiều sự chú ý đó là nhận diện khuôn mặt.Nội dung chính của đề tài sẽ tập trung vào Histogram of Oriented Gradients (HOG)
để giải quyết vấn đề Tạo ra một hệ thống nhận diện khuôn mặt với độ chính xác >80% và tốc độ xử lý trên 5 FPS Sau đó, nhóm sẽ tiễn hành train một model trích xuấtcác đặc trưng ảnh với dữ liệu thu thập từ nhiều nguồn và so sánh với các model hiện
có và lưu trữ thông tin vê cơ sở dữ liệu.
Trang 11Chương 1 TONG QUAN ĐÈ TÀI
1.1 Các công nghệ hiện nay
Ngày nay công nghệ nhận dạng khuôn mặt được quan tâm và được coi là một lĩnh
vực quan trọng trong khoa học nhận dạng là do nhu cầu ứng dụng nhận dạng khuôn
mặt trong nhiều lĩnh vực như: kinh tế, điều tra tội phạm, bảo mật, Nói một cách dễ
hiểu, công nghệ nhận dạng khuôn mặt là công nghệ cho phép nhận dạng một người
cụ thé từ ảnh hoặc một đoạn video Cách thức làm việc của công nghệ này là so sánhhình ảnh khuôn mặt với những hình ảnh sẵn có trong cơ sở dữ liệu để đưa ra kết quả
Các thuật toán về xử lý nhận diện khuôn mặt đã và đang được phát triển khá rộng rãivới nhiều hướng giải quyết và thuật toán khác nhau Tuy nhiên có thé khái quát quá
trình xử lý này vê 4 bước như sau:
- _ Xác định vi trí khuôn mặt có trong ảnh.
- Xuấtra các đặc trung của khuôn mặt
- So sánh với các anh trong bộ dữ liệu.
- _ Xuất ra định danh khuôn mặt
Đối với con người, việc nhận diện khuôn mặt diễn ra thường xuyên trong cuộc sống,con người dé dàng nhận ra các khuôn mặt cũng như xác định đối tượng mỗi khi gặpphải đối tượng khác Nhưng dé máy tính có thé làm được việc tương tự như con ngườithì cần phải giải quyết rất nhiều bài toán cấp cao và thuật toán xử lý phù hợp để tiến
hành từng bước xử lý Vì vậy các khái niệm machine learning, deep learning và neural
network được sinh ra để đáp ứng nhu cầu xử lý ảnh của con người Các neural network
luôn được quan tâm và phát triển dé đạt kết quả tốt nhất về tốc độ xử lý và độ chính
xác Mỗi mạng neural network có cách thức xử lý và cách hoạt động khác nhau Ngoài
ra, các yêu tô của môi trường luôn là van đề cần được lưu tâm vì gây ảnh hưởng trực
tiếp đến kết quả thu được từ các mạng Vì vậy, xây dựng hệ thống nhận diện khuôn
mặt dé hỗ trợ cho hệ thống IoT sẽ gặp nhiều khó khăn và phức tạp
Trang 121.2 Các nghiên cứu tương tự
Nhắc đến nhận diện khuôn mặt tức là xử lý và biến đổi ảnh dé thu được khuôn mặtmong muốn trong từng khung hình Vì vậy các thuật toán luôn được nghiên cứu vàphát triển dé phục vụ và tối ưu quá trình xử lý ảnh Ké từ 1991, sự ra đời của các đặctrưng Haar dé nhận diện khuôn mặt trở thành nền tảng dé xây dựng các công nghệnhận dạng khuôn mặt khác nhau Các lĩnh vực nghiên cứu có thể ké đến là Holistic,
Local handcraft, Shallow Learning và Deap Learning,
Các phương thức tiếp cận kề trên đều có các ưu điểm và nhược điểm về kha năng giải
quyết bài toán, tốc độ xử lý và độ chính xác Tuy nhiên các mạng Deep NeuralNetwork ngày càng trở nên phô biến hơn Với các cải thiện từ phần cứng và đặc biệt
là GPU, phương pháp Deep learning tiến dần về việc mô hình hóa bộ não con người
và từ đó mang lại các kết quả tốt hơn Ngoài ra, các mô hình mạng dần được thu gọn
về mặt tham số xử lý, dữ liệu cần thiết đề train và test mà vẫn luôn đạt độ chính xác
Hình 1-1 Bang thống kê về độ chính xác, số lượng tham số cần thiết và tốc độ xử lý
với các biến thé của MobileFaceNet và ShuffleNet trên 2 bộ dữ liệu LFW va
AgeDB-30
Ngoài ra, để các mạng DCNN đạt kết quả cao nhất, thuộc tính Deep Learning cầnđược phát huy và tính toán một cách hiệu quả nhất Chính vì thế Loss function hỗ trợ
Trang 13các mạng tính toán và cập nhập các tham số có khả năng học (learnable parameter)
hay còn gọi là weights trong các mạng DCNN.
Other methods -® State-of-the-art methods
Hình 1-2 Bảng thống kê thời gian ra mắt các loss function
Trang 14Có thé thấy Arcface ra đời cùng thời điểm với Cosface tuy nhiên lại hiểu quả hơn
Cosface và các phương pháp khác trong việc tính toán và cập nhật loss từ đó có thé
phân tách các lớp dữ liệu một cách tối ưu nhất
Tuy nhiên, triển khai các phương pháp trên có thê tốn nhiều tài nguyên và gặp giớihạn về phần cứng Vì vậy, một giải pháp là chọn các phương pháp bậc thấp như HOG
(Histogram of Oriented Gradients), SIFT (Scale-Invariant Feature Transform), SURF
(Speeded-Up Robust Features) Các giải pháp này sé giúp cho phan cứng tính toán
đơn giản, dữ liệu cân được huân luyện ít và đem lại hiệu suât và độ ôn định cao hơn.
1.3 Giải pháp đề xuất
IoT là một mạng lưới vạn vật được kết nối với nhau bằng Internet Vì vậy nhóm sẽ
xây dựng một mô hình JoT thu gọn với sensor quét thẻ từ thông qua ESP32 Với sự
hỗ trợ từ Internet của ESP32, các thông tin từ sensor có thể truyền tải và lưu trữ tạinhiều nơi, ví hạn như cloud, server, các dạng database ESP32 không chỉ hỗ trợ kếtnối internet mà còn có thé hoạt động như một MCU để xử lý tín hiệu đầu vào và đầu
ra Vì thé, em sẽ tiếp cận với hệ thống IoT xoay quanh ESP32 đề nhận, xử lý và truyềnthông tin cần thiết
Dựa vào các công trình nghiên cứu đã được công bô, em sẽ xây dựng một mô hình
nhận diện khuôn mặt theo một mô hình gồm 4 bước:
- Bước 1: Xác định khuôn mặt trong ảnh bằng các bounding box, sau đó cắt ảnh
khuôn mặt từ các bounding box thu được.
-_ Bước 2: Truyền ảnh khuôn mặt đã được cắt qua các lớp mạng neural network trích
xuất vector 128 đặc trưng ảnh
- Bước 3: So sánh vector đặc trưng của ảnh khuôn mặt vừa trích xuất với các vector
đặc trưng từ bộ dữ liệu đã được xây dựng trước.
- Bước 4: Xuất ra định danh và độ tin cậy
Trang 151.4 Mục tiêu và giới hạn đề tài
1.4.1 Mục tiêu đề tài
Mục tiêu: thực hiện một mô hình IoT đơn giản để tiếp nhận các thông tin cơ bản vềthế giới và quản lý thông tin bằng IoT Platform Ngoài ra xây dựng một hệ thống
nhận diện khuôn mặt và định danh hỗ trợ cho IoT Cu thé:
- Tim hiểu, khảo sát về các hệ thống IOT platform khác nhau Kết quả mong
muốn tìm được một platform thuận tiện cho việc sử dụng cũng như truyền đạt
và quản lý.
- Tim hiểu về các thuật toán xử lý bounding box và nhận diện khuôn mặt
- Tim hiểu và nghiên cứu về các mạng neural network tạo thành 128 đặc trưng
ảnh từ các anh input.
- Nghiên cứu và tiến hành tạo file phân loại và định danh
- FPS mong muốn dat từ 5FPS trở lên
Phạm vi: Thử nghiệm và ứng dụng các thuật toán nhận diện và phân loại định danh
trên dữ liệu thu vào từ camera và truyền thông tin định danh về cơ sở dữ liệu
1.4.2 Giới hạn đề tài
Bài toán gặp một vài khó khăn khi train model là dữ liệu cần thiết dé train quá lớn
dé thu thập, tài nguyên phan cứng bị giới hạn Em sẽ sử dụng một số dữ liệu tựkiếm và đữ liệu có sẵn trên mạng dé tiền hành huấn luyện Ngoài ra, vì dữ liệu lớnnên quá trình truyền dữ liệu qua mạng nẻual network sẽ tốn nhiều thời gian Cuốicùng là các yếu tô khách quan như thời tiết, mật đó sáng, dữ liệu huấn luyện không
đủ sẽ là hạn chế của đề tài khi nhận diện và phát hiện khuôn mặt
1.5 Ý nghĩa thực tiễn đề tài
Đề tài này sẽ là một phần quan trọng trong hệ thong quan lý nhân su, diém danh hocsinh, trong tương lai, giải quyết hoàn toàn các yêu tố về con người cũng như nhữngbat tiện trong việc định danh truyền thống Ngoài ra yếu tố Machine Learning vaDeep Learning có thể áp dụng trên các dt liệu từ hệ thống IoT dé tạo ra một hệ thống
Trang 16điêu chỉnh các điêu kiện xung quanh nơi ở, nơi làm việc, phù hợp với nhu câu sử
dụng của mỗi người.
1.6 Câu trúc của báo cáo Khóa luận
Phần còn lại của Khóa luận tốt nghiệp được tô chức như sau, trong Chương 2 nhóm
sẽ trình bày những cơ sơ lý thuyết liên quan đến đề tài Khóa luận Chương 3 nhómtrình bày chỉ tiết các kiến trúc và phương pháp liên quan đến quy trình xây dựng hệthống IoT, hệ thống nhận dạng khuôn mặt và định danh Chương 4 nhóm sẽ trình bày
các thực nghiệm, kết quả thu được từ việc train, test model và đánh gia Cuối cùng
Chương 5 nhóm đưa ra kết luận và hướng phát triển
Trang 17Chương 2 CƠ SỞ LÝ THUYET
2.1 Thị giác máy tính - Computer Vision
động, phân loại thông qua hình ảnh quan sát được.
Thi giác máy tính là một bộ phan quan trọng trong nhóm Trí tuệ nhân tạo Hoạt
động chính bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích
và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hìnhảnh và nhiều hơn vậy Thị giác máy tính được ứng dụng rộng rãi trong thực tế cuộcsống của chúng ta Camera được đặt trên nhiều thiết bị như điện thoại, máy tính,máy anh, 6 tô hoặc các hệ thông giám sát, quan sát trong các khu vực ngoài trời,trong nhà, trong giao thông Có thé thay rằng, máy tinh đã có được cái nhìn gầnnhư một con người qua một sỐ ứng dụng như nhận diện, tìm kiếm, phân loại, pháthiện, trích xuất hình anh của các chủ thé tập trung theo nhu cau của con người Mộttrong những hoạt động dễ thấy nhất là nhận diện và trích xuất thông tin của chủthé Các hệ thống máy móc hiện nay đã có thé phát hiện chính xác gần như tuyệtđối nhờ vào các thuật toán, công cụ hỗ trợ, công nghệ áp dụng được nghiên cứu kỹlưỡng Điều đó góp phần làm cho máy tính ngày càng có một cái nhìn cụ thể, chính
xác và nhanh chóng hơn bao giờ hết Thị giác máy tính thực sự đã đạt được nhữngbước tiến rõ rệt trong nghiên cứu khoa học hiện tại Trong báo cáo này, nhóm sẽ
tập trung vào những nghiên cứu về phát hiện khuôn mặt, một trong những ứng
dụng quan trọng của Thị giác máy tính.
Trang 18Khi con người nhìn vào một bức ảnh họ có thé nhận diện được mọi vật thé, khôngnhư điều hầu hết các máy tính “thấy” được Một bức ảnh được thể hiện bang cácpixel chứa giá tri màu sắc Đối với ảnh xám, máy tính đọc ảnh dưới dạng một matrận 1 chiều với các pixel mang các giá trị từ 0-255 Đối với ảnh màu, máy tínhnhận vào một ma trận 3 chiều với mỗi chiều là 1 ma tran pixel chứa giá tri của 3
mau Red — Green — Blue.
Và dé thực hiện việc đọc ghi, tương tác và xử lý trên ảnh, nhóm sử dụng thư việnđược xây dụng trên nền ngôn ngữ lập trình Python hỗ trợ mạnh mẽ và tốc độ xử lýtối ưu nhất là Opencv
2.1.2 Thư viện xử lý ảnh
Thư viện Opencv là một thư viện đa nền tang được sử dụng dé phát triển các ứngdụng về thị giác máy tính theo thời gian thực Thư viện này tập trung chủ yếu về
xử lý ảnh, quay video và phân tích các đặc trưng ảnh với các ứng dụng tiêu biểu
như là nhận diện khuôn mặt và nhận diện vật thé,
Các đặc trưng của thư viện Opencv:
- Doc và lưu anh.
- Doc và lưu video.
Trang 19- _ Xử lý ảnh (lọc ảnh, biến đổi ảnh).
- _ Tiến hành nhận diện các đặc trưng ảnh.
- Nhận diện các đối tượng cụ thể như khuôn mặt, mắt, phương tiện trong ảnh
hoặc video.
Opencv được phát triển trên ngôn ngữ C++, sau đó, hỗ trợ thêm các ngôn ngữPython và Java OpenCV có thể chạy trên nhiều hệ điều hành khác nhau như
Windows, Linux, OSx, FreeBSD,
a Các module chính của thư viện Opencv
Các module sau đây là các module chính của Opencv:
b Chức năng lõi (Core functionality):
Module này xử lý các dang data cơ bản như Scalar, point, range, dùng để xây
dựng các ứng dụng Opencv.
c Xử lý ảnh:
Module này đảm nhận nhiều hoạt động về xử lý ảnh như là lọc ảnh, biến đổi các
ảnh về hình học, chuyên đôi mau sac, biéu do,
Module bao gồm các thuật toán về hình học, hiệu chỉnh âm thanh camera, đo đạc
và ước tính các đối tượng nhất định, và xây dựng các thuộc tính 3D
ø Feature2d:
10
Trang 20Module này thực hiện các hoạt động liên quan khái niệm nhận diện các đặc trưng
Machine Learning là một ngành học nghiên cứu về cách giúp cho máy tính điện tử
có được khả năng có thê học tập mà không cần phải được lập trình một cách tỉ mỉ
trước đó.
Dưới góc nhìn của Machine Learning, mọi bài toán đều có input và output, ở giữacủa quy trình đó là một hàm Hàm là một tập hợp các quy tắc được dùng dé cácphan tử ở tập nguồn đến các phan tử ở tập đích sao cho mỗi một phan tử ở tập
nguồn chỉ có một và chỉ một phan tử ở tập đích Trong đó, khi tất cả các phần tử
của cả hai tập đều là đạng số học, người ta gọi đó là hàm số
f:X oY
y=x-5
Hình 2-2 Mô hình input va output thông qua xử lý các ham
Cùng với sự phát triển của Computer Vision, nhiệm vụ của người làm Machine
Learning ở một mức cơ bản là giúp máy tính điện tử tìm ra được hàm quan hệ giữa
11
Trang 21tập input và tap output Machine Learning chia các bài toán ra làm 2 loại chính là Supervised Learning (học có giám sát) và Un-Supervised Learning (học không giám sát)
2.2.2 Supervised Learning
Học có giám sát là việc có san một tập nguồn và một tập đích tương ứng dé làm cơ
sở xây dựng lên model mong muốn Sự kết hợp bởi hai tập này gọi là tập train Dữ
liệu mới sẽ được sử dụng để train lại nhằm cải thiện model hiện tại Điều này chính
là mô tả cho khái niệm học có giám sát.
2.2.3 Regression
Hồi quy là những gi có tính liên tục và nối tiếp nhau Khi tập đích trong tap train làmột dữ liệu có tính liên tục không thể phân thành nhóm là một dữ liệu cụ thé thìbài toán được xếp vào dang hồi quy Bài toán tiêu biéu cho dang này thường được
ví dụ là tính toán giá cả sản phẩm dựa trên thông số trước đó, hay dự đoán biến
Trang 222.2.4 Un-Supervised Learning
Học không giám sát là khi chỉ có tập nguồn mà không có tập đích Khi dữ liệu lớn,mặc dù không thể dự đoán được tập đích nhưng bù lại thì có thể thực hiện phânnhóm hay làm giảm độ phức tạp của dữ liệu Điều này đặc biệt có ích trong việclưu trữ hoặc xử lí dé liệu trong tương lai (đưa về bài toán học có giám sát khi đã có
dụ bài toán phân loại bình luận là quảng cáo nhưng hoàn toàn không ai đánh dấu
bình luận đó là quảng cáo hay không Việc phân loại lúc này đơn giản dựa trên các
bình luận giống nhau, cách ghi, nguồn gửi, nội dung, tần suất, cách thức gửi,
Convolutional Neural Network (mạng Nơ-ron tích chập) là một trong những mô
hình Deep Learning giúp xây dựng hệ thống thông minh với độ chính xác cao như
hệ thống xử lý ảnh lớn như Facebook, Google, Apple, đã đưa vào sản phẩm hay
13
Trang 23những chức năng thông minh như nhận diện định danh khuôn mặt, CNN cũng
thường được dùng trong các bài toán nhận dang vật thé trong ảnh
2.3.2 Convolutional
Convolved
Feature
Hinh 2-4 Sliding Window trong CNN
Các tang tích chập trong CNN thực hiện phép tính bang cách sử dung một cửa sốtrượt (sliding window) trên một ma tran đầu vào Cửa sé trượt này còn được gọi là
kernel, hay bộ lọc (filter), là một ma trận nhỏ có kích thước được xác định trước, thường là 3x3 hay 5x5 tùy theo bộ lọc.
Sliding Window hay gọi là kernel, filter hoặc feature detect là một ma trận có kích
thước nhỏ như 3x3 hay 5x5 Convolution hay tích chập là nhân từng phần tử bên
14
Trang 24trong ma trận 3x3 với ma trận bên trái Kết quả được một ma trận gọi là Convoled
feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 3x3 bên trái.
Mạng CNN được xây dựng từ các lớp Convolution, trong đó mỗi lớp thực hiện
phép tích chập trên dữ liệu đầu vào Các lớp này được xếp chồng lên nhau để tạo
ra một mạng có khả năng trích xuất và học các đặc trưng từ dữ liệu Sau khi phéptích chập, các lớp trong mạng CNN sử dụng các hàm kích hoạt phi tuyến như ReLU(Rectified Linear Unit) hay tanH để tạo ra thông tin trừu tượng cho các lớp tiếptheo Điều này có nghĩa là mỗi lớp trong mạng CNN xử lý dữ liệu đầu vào và tạo
ra các biểu diễn trừu tượng của nó Các lớp sau có thé sử dụng các biểu diễn này
để hiểu và học các đặc trưng phức tạp và trừu tượng hơn từ dữ liệu
15
Trang 25Trong mạng truyền ngược (feedforward neural network), mỗi neural đầu vào (input
node) gửi thông tin cho mỗi neural đầu ra trong các lớp tiếp theo Nghĩa là mỗi
neural trong một lớp được kết nối với tất cả các neural trong lớp tiếp theo Mô hìnhnày còn được gọi là mạng kết nối day đủ (fully connected layer) hoặc mạng
Hình 2-6 Mô hình fully connected layer
Trái ngược lại, trong mang CNN, các layer liên kết với nhau thông qua convolution
Layer tiếp theo trong mạng CNN là kết quả của phép tích chập (convolution) được
áp dụng lên layer trước đó Điều này tạo ra các kết nối giữa các layer Thay vì mỗineural trong lớp tiếp theo kết nối với tất cả neural trong lớp trước đó như trong
mạng truyền ngược, mỗi neural trong lớp tiếp theo của mạng CNN được tạo ra từ
kết quả của bộ lọc (filter) được áp dụng lên một vùng ảnh cục bộ của neural trong
lớp trước đó.
16
Trang 26Hình 2-7 Mô hình convolutional layer liên kết trong CNNMỗi một lớp được sử dụng các filter với thông số khác nhau, thông thường có hàngnghìn các filter và kết hợp kết quả của chúng lại Ngoài ra còn có một số loại layerđược sử dụng trong mang CNN dé giảm kích thước trung gian và tăng tính tổng
quát của các đặc trưng Pooling layer thường loại bỏ thông tin không quan trọng
hay nhiễu và chỉ giữ lại thông tin hữu ích.
vas “sae ol 07011]
Hình 2-8 Parameter cua filter dùng dé lọc ảnh
Trong quá trình huấn luyện mang CNN, các giá trị của các filter được tự động hocthông qua các công cụ tối ưu hóa như gradient descent Mang CNN sẽ có gắng tìm
ra các thông số tối ưu cho các filter, theo một thứ tự nhất định, đề trích xuất các đặc
17
Trang 27trưng từ dit liệu Tùy theo đặc trưng mà filter sẽ có ma trận tương ứng dé tách đặc
trưng đó, thường theo thứ tự rawpixel -> edges -> shapes -> facial -> high-level
features Layer cuối cùng được dùng dé xác định và gán nhãn cho anh
2.3.4 Các tham số của CNN
- Sô convolution layer: càng nhiêu layer thì có thê sẽ trích xuât được nhiêu đặc trưng từ ảnh, cải hiện được độ chính xác, nhưng sẽ tiêu hao rât nhiêu tài nguyên
phần cứng
- Filter size: thường là 3x3 hoặc 5x5
- Pooling size: thường là 2x2 hay 4x4
2.3.5 Deep learning
Khác với machine learning, deep learning là kiên trúc có kha năng tự học, tự tách
các đặc trưng từ các anh input, không cân sự can thiệp từ con người Ngoài ra, mọi
dir liệu dau vào déu quan trọng đôi với machine learning, với deep learning, trong
khi tác đặc trưng kiến trúc có thê bỏ qua các đặc trưng không cần thiết
Ví dụ, mạng neural có thể tự động tìm hiểu các đặc trưng như hình dạng của tai,mũi, mắt, v.v., mà không cần sự can thiệp từ con người Điều này cho phép mạngneural xử lý các đặc trưng không cần thiết như nhiễu, nền và tập trung vào nhữngđặc trưng quan trọng đề phân loại chó và mèo một cách chính xác
Mặc dù vậy, deep learning có những vấn đề là lượng lớn dữ liệu đầu vào không lồ
và cần phải huấn luyện model nhiều lần dé đạt kết quả tốt nhất Việc xoay vòng dit
liệu mỗi lần train sẽ tốn một khoảng thời gian dài để model hoàn thiện.
Chính vì thế mà trong đề tài này, em sử dụng machine learning để ứng dụng vào
thực tế thay vì dùng deep learning
18
Trang 282.4 Support Vector Machine (SVM)
Support Vector Machine sử dung các mặt siêu phăng (hyperplane) dé chia dit liệu từhai lớp khác nhau Trong đó, biên là khoảng cách lớn nhất có thé tir đữ liệu của 1class đến mặt siêu phang
Class B
Hình 2-9 Biéu đồ phân loại SVM 2 classTuy nhiên, SVM chi phân loại đữ liệu và không biết độ chính xác là bao nhiêu Vithế, ta sử dung Logistic Regression dé tinh độ tinh cậy (confidence) với hàm mục tiêuxác định trong bài toán one-vs-rest Sau khi train, ta sẽ có hai hệ số A và B để tính độ
2.5.2 Cấu trúc HOG
Bản chất của HOG là sử dụng thông tin về sự phân bố của các cường độ gradient(intensity gradient) hay hướng biên (edge directins) dé mô tả đối tượng trong anh.Quá trình này bao gồm 4 bước:
19
Trang 292.5.2.1 Tìm khuôn mặt
Quá trình này bắt đầu bằng việc chia nhỏ một bức ảnh thành các vùng con,
Hình 2-10 Ảnh Input được chia nhỏ thành từng Cells
Với mỗi một Cell, ta tính toán một histogram về các hướng của gradient chocác điểm nằm trong Cell đó bằng cách ghép các histogram lại với nhau, ta có
thê tạo ra gradients hiên thị chiêu từ sáng đên tôi của toàn ảnh.
Tuy nhiên, việc lưu trữ gradient cho từng điểm ảnh mang riêng lẻ mang lại quánhiều chỉ tiết, ta chỉ cần nhìn thay dòng chảy cơ ban của độ sáng-tối ở mức cao
dé có thé nhìn thấy mẫu cơ bản Nên chúng ta chia thành các Cells hình vuôngkích thước 16x16 Trong mỗi hình vuông, ta sẽ tính số lượng gradient chỉ vào
20
Trang 30từng hướng chính (hướng trên, hướng trên-phải, hướng phải, ) Sau đó, ta sẽ
thay thé hình vuông đó trong ảnh bằng các hướng mũi tên có đô mạnh nhất
Hình 2-12 Kết quả sau khi xử lý gradient
Để tìm được khuôn mặt trong bức anh HOG, ta chỉ cần làm là tìm một phần củaảnh trông giống với khuôn mẫu HOG đã được trích xuất từ nhiều khuôn mặthuấn luyện khác
HOG version of our image
Hình 2-13 Trích xuất khuôn mặt dựa trên mẫu có sẵnVới cách làm này, ta có thé dé dàng tìm khuôn mặt ở bat kỳ anh
21
Trang 312.5.2.2 Điều chỉnh và đối chiếu khuôn mặt
Dé giải quyết van dé này, ta sẽ cô gắng biến đổi mỗi hình anh sao cho mắt vamôi luôn nằm ở cùng một vị trí trong anh Điều này sẽ giúp việc so sánh dễdàng hơn các khuôn mặt Ta sẽ sử dụng một thuật toán gọi là ước lượng điểmđặc trưng của khuôn mặt (face landmark estimation) Có nhiều cách dé làmđược điều này, trong đề tài này, ta sẽ sử dụng một phương pháp được phát minhnăm 2024 bởi Vahid Kazemi và Josephine Sullivan Ý tưởng đơn giản là chúng
ta sẽ tạo ra 68 điểm cụ thé(goi là landmarks) có trên mỗi khuôn mặt ví dụ như
đỉnh cằm, viền ngoài mỗi mắt, Sau đó, ta sẽ huấn luyện máy học dé tim racác điểm đặc trưng này trong bất kỳ khuôn mặt nào
Hình 2-14 68 landmarks trên mỗi khuôn mặt ta cần tim
Bây giờ đã biết vi trí của khuôn mặt, ta sẽ xoay chuyền, tỉ lệ và cắt ảnh dé đảm
bảo mắt và miệng được căn giữa một cách tốt nhất Đơn giản là chỉ sử dụng cácbiến đổi cơ bản của ảnh để duy trì các đường song song (gọi là affine
transformations)
22
Trang 32Hình 2-15 Anh đặc trưng của khuôn mặt sau khi tách ra
2.5.2.3 Mã hóa khuôn mặt (Encoding Faces)
Phương pháp đơn giản dé nhận diện 2 khuôn mặt là so sánh trực tiếp khuôn mặtchưa biết với tất cả các hình ảnh đã gán nhãn trước đó của những người khác.Khi chúng ta tìm thấy khuôn mặt đã được gắn nhãn trước đó trông rất giống
với khuôn mặt chưa biệt của chúng ta, thì đó chăc chăn là một người.
Tuy nhiên, có một vấn đề rất lớn với phương pháp đó Một trang web như
Facebook với hàng tỷ người dùng và ngàn tỷ ảnh không thể lặp lại qua từng
khuôn mặt đã được gan nhãn trước đó dé so sánh với mỗi bức ảnh mới được
tải lên Điều đó sẽ mất quá nhiều thời gian Họ cần có khả năng nhận dạng
khuôn mặt trong vai mili giây, chứ không phải trong vai giờ.
Điều chúng ta cần là một cách dé trích xuất một vài đo lường cơ bản từ mỗi
khuôn mặt Sau đó, chúng ta có thể đo lường khuôn mặt chưa biết của chúng
ta theo cùng cách và tìm ra khuôn mặt đã biết có các đo lường gần nhất Ví
dụ, chúng ta có thé đo kích thước của mỗi tai, khoảng cách giữa hai mắt, độ
đài của cái mũi.
Vậy đâu là cách đo lường đáng tin cậy ? Các nhà nghiên cứu đã phát hiện ra
rằng phương pháp chính xác nhất là dé máy tính tự tìm hiểu những đo lường
cần thu thập Deep Learning (học sâu) thực hiện tốt hơn cong người trong
việc xác định những phần quan trọng cần đo lường trên khuôn mặt
Giải pháp là huấn luyện mang Neural tích chập (DCNN) Nhung thay vì huấn
luyện đê nhận dạng như đã nêu phía trên, ta chỉ cân huân luyện đê nó tạo ra
23