Một trong những ứng dụng tiềm năng của công nghệ nhận diện khuôn mặt là trong việc điểm danh và theo dõi sự hiện diện của cá nhân trong các ngữ cảnh khác nhau.. Hệ thống này sẽ kết hợp s
Trang 1
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH : CÔNG NGHỆ KỸ THUẬT ĐIỆN - ĐIỆN TỬ
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ
ĐỀ TÀI:
THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐIỂM DANH TỰ ĐỘNG SỬ DỤNG KỸ THUẬT XỬ LÝ ẢNH
Giảng viên hướng dẫn: ThS PHẠM THỊ THẢO KHƯƠNG
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH : CÔNG NGHỆ KỸ THUẬT ĐIỆN – ĐIỆN TỬ
CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ
ĐỀ TÀI:
THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐIỂM DANH TỰ ĐỘNG SỬ DỤNG KỸ THUẬT XỬ LÝ ẢNH
Giảng viên hướng dẫn ThS PHẠM THỊ THẢO KHƯƠNG
Trang 3(Dành cho người hướng dẫn)
Trang 5Tên đề tài: THIẾT KẾ MÔ HÌNH HỆ THỐNG ĐIỂM DANH TỰ ĐỘNG SỬ DỤNG KỸ THUẬT XỬ LÝ ẢNH
Họ và tên sinh viên 1: LÊ XUÂN SƠN Mã sinh viên: 1911505120146
Họ và tên sinh viên 2: ĐẶNG HỒNG QUÂN Mã sinh viên: 1911505120142
Lớp sinh hoạt: 19D2 Trong thời đại số hóa ngày nay, việc phát triển các giải pháp công nghệ thông tin có khả năng tối ưu hóa quản lý và giám sát đã trở nên ngày càng quan trọng Một trong những ứng dụng tiềm năng của công nghệ nhận diện khuôn mặt là trong việc điểm danh và theo dõi sự hiện diện của cá nhân trong các ngữ cảnh khác nhau Điều này có thể có lợi cho nhiều lĩnh vực khác nhau, từ giáo dục và doanh nghiệp đến tổ chức chính phủ, bằng cách giúp tối ưu thời gian và tài nguyên Đề tài đặt ra mục tiêu phát triển và triển khai một hệ thống nhận diện điểm danh bằng khuôn mặt, nhằm giải quyết những thách thức liên quan đến việc điểm danh truyền thống, đồng thời khai thác tiềm năng của công nghệ nhận diện khuôn mặt Hệ thống này sẽ kết hợp sự tiện lợi của việc điểm danh tự động với độ chính xác cao của nhận diện khuôn mặt Do đó, nhóm thực
hiện đồ án chọn đề tài: “Thiết kế mô hình hệ thống điểm danh tự động sử dụng kỹ
thuật xử lý ảnh”
Tóm tắt nội dung:
Chương 1: Cơ sở lý thuyết Đây là chương cũng cố lý thuyết nền tảng về kỹ thuật và
công nghệ liên quan
Chương 2: Thiết kế hệ thống và thi công hệ thống Xác định những yêu cầu của việc
điểm danh hiện nay từ đó vận dụng những kiến thức cơ sở ở chương 1 để thiết kế mô hình hệ thống điểm danh tự động
Chương 3: Kết quả và nhận xét hệ thống
Trang 6KHOA ĐIỆN – ĐIỆN TỬ Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Giảng viên hướng dẫn: ThS Phạm Thị Thảo Khương
1 Tên đề tài:
Thiết kế mô hình hệ thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh
2 Các số liệu, tài liệu ban đầu:
− Camera thu thập hình ảnh đầu vào − Bo mạch điều khiển chính: Raspberry Pi 4, màn hình hiển thị
3 Nội dung chính của đồ án:
Mục tiêu chính của đề tài này là thiết kế, phát triển và triển khai một hệ thống nhận diện điểm danh bằng khuôn mặt có khả năng xác định và ghi nhận sự hiện diện của người dùng trong một nhóm người Hệ thống này sẽ cung cấp một cách tiện lợi để quản lý và giám sát việc điểm danh, giảm thiểu các khả năng sai sót và tối ưu hóa quá trình Nhóm sẽ thực hiện các nội dung như sau:
− Tìm hiểu về Raspberry Pi 4 − Tìm hiểu về xử lý ảnh − Các kỹ thuật nhận dạng khuôn mặt − Xây dựng chương trình điểm danh tự động − Viết báo cáo
Trang 7LỜI NÓI ÐẦU
Lời đầu tiên, em xin chân thành gửi lời cảm ơn sâu sắc đến ThS Phạm Thị
Thảo Khương, người đã đồng hành, dẫn dắt và hướng dẫn em trong quá trình hình
thành và phát triển đề tài tốt nghiệp này
Theo đó em muốn gửi gắm lòng biết ơn đến các quý thầy cô trong Khoa Điện –
Điện Tử, Trường Đại học Sư Phạm Kỹ Thuật Đà Nẵng đã luôn tạo điều kiện thuận
lợi, môi trường học tập tốt nhất cho em Giúp em xây dựng vững chắc nền tảng kiến thức chuyên ngành mà mình đang hướng đến
Cảm ơn sự giúp đỡ của giảng viên nhóm chúng em chắc rằng cuốn đồ án này cũng không tránh khỏi những thiếu sót trong khi làm cũng như trong suốt quá trình chúng em thực hiện đồ án này, chúng em rất cảm ơn nếu nhận được những ý kiến đóng góp của khoa, giảng viên và cùng với tất cả các bạn đọc để chúng em ngày càng hoàn thiện hơn
Cuối cùng, chúng em xin chân thành cảm ơn các thầy cô và bạn bè, đã luôn tạo điều kiện, quan tâm, ủng hộ, giúp đỡ, động viên chúng em trong suốt quá trình học tập và hoàn thành đồ án tốt nghiệp
Chúng em xin chân thành cảm ơn!
Trang 8Tên sinh viên: Lê Xuân Sơn sinh viên lớp: 19D2
Chúng em xin cam đoan các kết quả được trình bày trong đồ án này là thành quả nghiên cứu của chúng em trong suốt thời gian qua và chưa từng xuất hiện trong công bố hay sao chép của tác giả khác dưới sự định hướng và hướng dẫn của cô ThS.Phạm Thị Thảo Khương Các thông tin trích dẫn trong đồ án được chỉ rõ, nguồn gốc rõ ràng và được phép công bố Các kết quả đạt được chính xác và trung thực Toàn bộ nội dung trong báo cáo không quá 80% là sao chép Nếu có bất kỳ vi phạm nào, em xin chịu hoàn toàn trách nhiệm và chịu mọi sự kỷ luật của khoa và nhà trường
Chúng em xin cam đoan đã thực hiện chỉnh sửa, bổ sung theo đúng yêu cầu của giáo viên phản biện và Hội đồng chấm
Sinh viên thực hiện {Chữ ký, họ và tên sinh viên}
Lê Xuân Sơn Đặng Hồng Quân
Trang 9MỤC LỤC
NHẬN XÉT ĐỒ ÁN TỐT NGHIỆPNHẬN XÉT CỦA NGƯỜI PHẢN BIỆNTÓM TẮT
1.1.1.Giới thiệu chung 5
1.1.2.Phân loại Raspberry Pi 5
1.1.3.Hệ điều hành và phần mềm chạy được trên Raspberry Pi 6
1.1.4.Phần cứng của Raspberry Pi 4 7
1.1.5.Mô tả chân raspberry pi 9
1.2.Tổng quan về nhận diện khuôn mặt 13
1.3.Phân tích bài toán nhận diện khuôn mặt 13
1.4.Nghiên cứu đối tượng và phạm vi nhận diện khuôn mặt 14
1.4.1.Đối tượng 14
1.4.2.Phạm vi nghiên cứu 14
1.5.Công cụ nghiên cứu 14
1.5.1.Python 14
1.5.2.Thư viện OpenCV 15
1.5.3.Môi trường lập trình Pycharm 17
Trang 101.5.5.Firebase 19
1.5.6.USB Camera 20
1.6.Nghiên cứu nhận dạng khuôn mặt 21
1.6.1.Vấn đề nhận dạng 21
1.6.2.Kiến trúc của một hệ thống nhận dạng mặt người 21
1.6.3.Các hướng tiếp cận trong phát hiện khuôn mặt 22
1.6.4.Phương pháp 22
CHƯƠNG 2: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG 35
2.1.Giới thiệu 35
2.2.Thiết kế thi công phần cứng 35
2.2.1.Thiết kế sơ đồ khối hệ thống 35
2.2.2.Sơ đồ kết nối hệ thống 36
2.2.3.Thư viện tkinter của python 38
2.3.Thi công phần mềm 40
2.3.1.Lưu đồ thuật toán 40
2.3.2.Lưu đồ thuật toán giao diện lập lịch 41
2.3.3.Lưu đồ thuật toán giao diện add data 42
2.3.4.Lưu đồ thuật toán giao diện download 42
Trang 113.1.6.Kết quả điểm danh 56
3.2.Nhận xét – đánh giá mô hình hệ thống 57
KẾT LUẬN – HƯỚNG PHÁT TRIỂN 59
TÀI LIỆU THAM KHẢO 61PHỤ LỤC
Trang 12Hình 1.11 Thư viện Opencv 16
Hình 1.12 Cấu trúc cơ bản của Opencv 16
Hình 1.13 Môi trường lập trình Pycharm 17
Hình 1.14 Cơ sở dữ liệu Database 18
Trang 13Hình 1.25 Hàm phi tuyến 26
Hình 1.26 Hoạt động ReLU 26
Hình 1.27 Max pooling 27
Hình 1.28 Các lớp trong YOLO 30
Hình 1.29 Sơ đồ kiến trúc mạng YOLO 31
Hình 1.30 Hoạt động của YOLO 32
Hình 1.31 Output của YOLO 33
Hình 2.9 List danh sách tùy chọn 39
Hình 2.10 Lưu đồ thuật toán chương trình điểm danh 40
Hình 2.11 Lưu đồ thuật toán lập lịch điểm danh 41
Hình 2.12 Lưu đồ thuật toán add data 42
Hình 2.13 Lưu đồ thuật toán Download file điểm danh 43
Hình 2.14 Chọn hệ điều hành và thẻ nhớ 44
Hình 2.15 Tạo tệp trống để cấu hình Wifi 44
Hình 2.16 Thay đôi tên và mật khẩu Wifi 44
Hình 2.17 Địa chỉ IP của Raspberry Pi 45
Hình 2.18 Dùng địa chỉ IP để truy cập 45
Hình 2.19 Giao diện Raspbian nhìn từ máy tính 46
Hình 2.20 Các file chứa dữ liệu 47
Hình 2.21 Đưa dữ liệu lên google drive 48
Hình 2.22 Câu lệnh kết nối 48
Hình 2.23 Cài đặt thư viện 48
Hình 2.24 Sửa file cấu hình 48
Hình 2.25 Lệnh train 48
Hình 2.26 Kết quả sau khi huấn luyện 49
Hình 2.27 Mức độ nhầm lẫn 49
Trang 14Hình 2.29 Phân biệt ảnh thật giả 50
Hình 3.1 Giao diện lập lịch và dowload kết quả 51
Hình 3.2 Chọn thứ 51
Hình 3.3 Chọn giờ và phút bắt đầu điểm danh 52
Hình 3.4 Chọn giờ và phút kết thúc điểm danh 52
Hình 3.5 Chọn danh sách điểm danh 52
Hình 3.6 Kết quả sau khi lập lịch 53
Hình 3.7 Thông báo trùng lịch 53
Hình 3.8 Dữ liệu được tạo trên Firebase 53
Hình 3.9 Nhập tên file kết quả 54
Hình 3.10 Thông báo lỗi 54
Hình 3.11 Giao diện add data 54
Hình 3.12 Nhập thông tin sinh viên 55
Hình 3.13 Hình ảnh được lưu trên Database 55
Hình 3.14 Thông tin được lưu trên Database 55
Hình 3.15 Quá trình điểm danh 56
Hình 3.16 Phát hiện sinh viên ngoài danh sách 56
Hình 3.17 Kết quả lưu trên firebase 56
Hình 3.18 Kết quả lưu file excel 57
Trang 15STT Ký hiệu chử viết tắt Tên tiếng anh Tên tiếng việt
thời
tiếp
Trang 16MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ và không ngừng tiến bộ của khoa học kỹ thuật thì xử lý ảnh đang là một trong những đề tài được quan tâm và phát triển Xử lý ảnh đang được ứng dụng rất nhiều vào thực tiển cuộc sống, bên cạnh đó cùng với sự phổ biến của kit Raspberry Pi có kích thước nhỏ gọn được ví là máy tính thu nhỏ nên có rất nhiều đề tài nghiên cứu và ứng dụng nó vào trong thực tế Hiện nay việc điểm danh trên các lớp, trường học thường được thực hiện bằng cách mặt đối mặt từng bước rất thủ công làm mất rất nhiều thời gian cho một tiết học trên lớp, cùng với đó là việc các cá nhân cũng lợi dụng việc số lượng người đông trong lớp để có thể điểm danh thay thế cho bạn bè nên người quản lý không thể tránh được những sai sót Từ thực trạng đó chúng tôi đưa ra giải pháp là kết hợp xử lý ảnh để ứng dụng vào việc điểm danh một cách tự động
Qua thực trạng đó nhóm muốn xây dựng một hệ thống điểm danh tự động để giảm bớt những sai sót trong kiểu điểm danh truyền thống Đồng thời tiếp cận, bổ sung các kiến thức mới, cũng như củng cố lại những kỹ năng kiến thức trong suốt quá trình
học tập tại trường Do đó, nhóm thực hiện đồ án chọn đề tài: “Thiết kế mô hình hệ
thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh”
Mục tiêu của đề tài là xây dựng hệ thống điểm danh khuôn mặt qua camera với đầu vào là những hình ảnh chứa khuôn mặt cần được nhận diện thông qua quá trình xử lý ảnh sẽ cho ra kết quả là tên, thời gian và số lần phát hiện sau đó dữ liệu sẽ được lưu thành một file và gửi về cho người quản lý
Bố cục của đề tài gồm 3 chương:
Chương 1: Cơ sở lý thuyết
Giới thiệu về Raspberry Pi 4 và xử lý ảnh Các phần cứng được sử dụng trong đề tài cũng như trên mô hình Giới thiệu về thuật toán nhận diện và điểm danh
Chương 2: Thiết kế và thi công hệ thống
Phân tích, xây dựng sơ đồ khối, sơ đồ phần cứng, thiết kế chương trình cho hệ thống điểm danh qua hình ảnh được viết trên Raspberry Pi 4 Thiết kế hệ thống thi công mô hình, lưu đồ, đưa ra giải thuật và chương trình
Chương 3: Kết quả và nhận xét hệ thống
Nêu các kết quả đạt được khi thực hiện chương trình, phân tích, nhận xét, đánh giá kết quả thực thi được, những hình ảnh của hệ thống, đưa ra những thông số đánh
Trang 17TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu chung
Nội dung phần này trình bày về mục tiêu, nội dung nghiên cứu, lý do chọn đề tài, phạm vi ứng dụng của hệ thống và một số hệ thống điểm danh tự động hiện nay
Đặt vấn đề
Tại Việt Nam hiện nay, điểm danh thủ công vẫn tồn tại trong nhiều lĩnh vực và gặp phải nhiều hạn chế đáng kể, sau đây là một số vấn đề phổ biến của việc điểm danh thủ công Thứ nhất, tốn nhiều thời gian: việc ghi danh thủ công mất rất nhiều thời gian của người quản lý và nhân viên, điều này đặc biệt đáng ngại khi phải quản lý một lượng lớn nhân viên hoặc học sinh nhất là đối với sinh viên khi một tiết học chỉ có khoảng 45 phút Thứ hai, sai sót: con người không tránh khỏi sai sót trong quá trình điểm danh thủ công, và những sai sót nhỏ có thể gây ra rắc rối và mất thời gian trong việc điều tra và sửa chữa Thứ ba, bảo mật yếu: dữ liệu điểm danh thủ công thường được ghi vào danh sách giấy hoặc bảng tính, dễ dàng bị mất hoặc truy cập trái phép Thứ tư, khó quản lý từ xa: trong mô hình làm việc từ xa hoặc quản lý nhân viên ở nhiều địa điểm khác nhau, việc điểm danh thủ công trở nên phức tạp và khó kiểm soát Cuối cùng, nó không hiệu quả trong tình huống khẩn cấp: trong trường hợp cần kiểm tra và quản lý người có mặt tại một khu vực cụ thể trong tình huống khẩn cấp, việc điểm danh thủ công không đảm bảo tính nhanh chóng và chính xác Qua thực trạng đó, nhóm muốn xây dựng một hệ thống điểm danh tự động, để phần nào đó giảm bớt các hạn chế ở trên Đồng thời tiếp cận, bổ sung các kiến thức mới, cũng như cũng cố lại những kỹ năng kiến thức đã học trong suốt quá trình học tập tại trường
Do đó, nhóm thực hiện đồ án chọn đề tài: “Thiết kế hệ thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh” Nghiên cứu này nhằm mục tiêu phát hiện khuôn mặt và ghi danh liên tục một cách tự động giúp tiết kiệm thời gian, tăng tính chính xác, và nâng cao mức độ bảo mật Điều này làm cho việc quản lý nhân viên, học sinh, sinh viên trở nên dễ dàng và hiệu quả hơn
Một số hệ thống điểm danh tự động hiện nay
Hiện nay trên thế giới, có nhiều hệ thống điểm danh tự động bằng công nghệ xử lý ảnh Có thể kể đến một số hệ thống như sau:
Face Recognition Attendance Systems (Hệ thống điểm danh bằng nhận diện khuôn mặt): Các hệ thống này sử dụng camera để quét khuôn mặt của người tham gia và so sánh nó với cơ sở dữ liệu dữ liệu khuôn mặt đã được lưu trữ Nếu kết quả trùng khớp, hệ thống sẽ tự động ghi nhận sự hiện diện
Trang 18Mobile Attendance Apps (Ứng dụng điểm danh di động): Các ứng dụng di động sử dụng tích hợp camera trên điện thoại để cho phép người dùng tự điểm danh bằng cách chụp ảnh khuôn mặt của họ Hệ thống sẽ sau đó xác minh và ghi nhận sự hiện diện dựa trên ảnh này
Time and Attendance Software (Phần mềm chấm công): Một số phần mềm chấm công cho doanh nghiệp đã tích hợp tính năng nhận diện khuôn mặt Nhân viên hoặc những người cần điểm danh có thể sử dụng máy tính hoặc thiết bị đầu cuối để chấm công bằng cách đưa khuôn mặt vào camera
Kiosk Attendance Systems (Hệ thống điểm danh trạm tự động): Hệ thống này thường được sử dụng trong các cơ sở giáo dục và doanh nghiệp Người tham gia đưa khuôn mặt vào trạm điểm danh, và hệ thống sẽ tự động xác minh danh tính và ghi nhận sự hiện diện
Access Control Systems (Hệ thống kiểm soát truy cập): Ngoài việc kiểm soát truy cập vào tòa nhà hoặc khu vực an ninh, hệ thống kiểm soát truy cập cũng thường tích hợp tính năng nhận diện khuôn mặt để theo dõi và ghi nhận người vào và ra khỏi khu vực
Các hệ thống này giúp giảm thiểu sai sót, tăng tính chính xác và nâng cao tính hiệu quả trong việc điểm danh, đặc biệt trong các môi trường đòi hỏi quản lý nhiều người hoặc yêu cầu tính bảo mật cao Tuy nhiên, cần lưu ý về các vấn đề liên quan đến quyền riêng tư và bảo mật dữ liệu khi sử dụng các hệ thống này và chi phí lắp đặt cũng đáng quan ngại
Mục đích đề tài
Với các phương pháp điểm danh truyền thống hiện nay việc mất một khoảng thời gian khá lớn để có thể hoàn thành việc điểm danh là điều khó tránh khỏi, kèm với đó là những rũi ro thiếu sót Xuất phát từ nhu cầu thực tế đó, chúng ta cần các giải pháp để giải quyết một phần nào đó về các nhu cầu thực tế trên
Mục tiêu của đề tài “Thiết kế hệ thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh” là xây dựng hệ thống điểm danh khuôn mặt qua camera với đầu vào là những hình ảnh chứa khuôn mặt cần được nhận diện thông qua quá trình xử lý ảnh sẽ cho ra kết quả là tên, thời gian và số lần phát hiện sau đó dữ liệu sẽ được lưu thành một file và gửi về cho người quản lý, giúp tiết kiệm thời gian, tăng tính chính xác, và nâng cao mức độ bảo mật Điều này làm cho việc quản lý nhân viên, học sinh, sinh viên trở nên dễ dàng và hiệu quả hơn
Nội dung nghiên cứu
Mục tiêu xây dựng đề tài: “Thiết kế hệ thống điểm danh tự động sử dụng kỹ thuật
Trang 19xử lý ảnh” nhóm sẽ thực hiện những nội dung như sau: • Nội dung 1: Tìm hiểu những kiến thức cơ bản về xử lý ảnh, Raspberry Pi 4, ngôn
ngữ lập trình Python… • Nội dung 2: Tìm hiểu về các kỹ thuật, thuật toán nhận dạng • Nội dung 3: Cài đặt thư viện cho Raspberry Pi
• Nội dung 4: Xây dựng quá trình xử lý ảnh đầu vào • Nội dung 5: Xây dựng chương trình điểm danh tự động • Nội dung 6: Đánh giá kết quả thực hiện
Tính mới của đề tài
Đề tài “Thiết kế mô hình hệ thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh” điểm mới của đề tài là sử dụng máy tính nhúng Raspberry Pi để nhúng chương trình thuật toán YOLOv8 và CNN để xử lý ảnh sau đó hệ thống sẽ sự dụng dữ liệu thu thập được đối chiếu với dữ liệu người dùng cần quản lý sau đó tự động tạo một bảng thông tin điểm danh với các thông tin người quản lý yêu cầu như họ và tên mã sinh viên thời gian điểm danh…tránh tình trạng mất nhiều thời gian mà vẫn đảm bảo tính chính xác cao
Phạm vi ứng dụng
Đề tài “Thiết kế mô hình hệ thống điểm danh tự động sử dụng kỹ thuật xử lý ảnh” có thể có nhiều ứng dụng hữu ích trong nhiều lĩnh vực khác nhau Đối với nền giáo dục hệ thống có thể áp dụng trong các trường học, trường đại học và khóa học trực tuyến để tự động điểm danh học sinh hoặc sinh viên trong lớp học Đối với doanh nghiệp hệ thống giúp cải thiện quản lý chấm công cho nhân viên thay vì dùng máy chấm công hoặc sổ chấm công thủ công, hệ thống có thể tự động chấm công dựa trên hình ảnh Sử dụng trong các sự kiện, hội chợ thương mại, hoặc buổi biểu diễn để theo dõi lượng khách tham dự và kiểm soát truy cập… Đối với mỗi ứng dụng cụ thể, cần điều chỉnh và tùy chỉnh mô hình điểm danh tự động để đảm bảo phù hợp với yêu cầu và môi trường cụ thể Điều này có thể bao gồm việc sử dụng các loại cảm biến khác nhau, kết hợp với xử lý ảnh và thuật toán để đạt được hiệu suất tốt nhất cho từng ứng dụng cụ thể
Trang 20CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Raspberry pi 4
1.1.1 Giới thiệu chung
Raspberry Pi là một máy vi tính rất nhỏ gọn, kích thước hai cạnh chỉ cỡ một cái thẻ ATM, trong đó đã tích hợp mọi thứ cần thiết để bạn sử dụng như một máy tính Bộ xử lý SoC Broadcom BCM2835 của nó bao gồm CPU, GPU, RAM, khe cắm thẻ microSD, WiFi, Bluetooth, Ethernet, HDMI và 4 cổng USB 2.0
Hình 1.1 Board mạch Raspberry Pi 4
Trước khi bắt đầu làm việc với Raspberry Pi, bước đầu tiên cài đặt hệ điều hành bằng cách tải hệ điều hành Raspian vào thẻ nhớ, gắn chuột, bàn phím và màn hình là có thể sử dụng như một máy tính thông thường
Với khả năng tùy biến cao Raspberry Pi có thể biến thành rất nhiều thiết bị từ phần cứng đến phần mềm Raspberry Pi sản xuất bởi OEM: Sony, Qsida, Egoman và được phân phối chính bởi Element14, RS Components và Egoman
Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay Bạn không thể chạy Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không hỗ
trường Desktop và các nhiệm vụ khác Tuy nhiên Raspberry Pi là một thiết bị đa năng đáng ngạc nhiên với nhiều phần cứng có giá thành rẻ nhưng rất hoàn hảo cho những hệ thống điện tử , những dự án DIY, thiết lập hệ thống tính toán rẻ tiền cho những bài học trải nghiệm lập trình…
1.1.2 Phân loại Raspberry Pi
Đã có 4 thế hệ Raspberry Pi: Pi 1, Pi 2, Pi 3 và Pi 4 (thường có một Model A và một Model B trong hầu hết các thế hệ) Model A là một biến thể rẻ hơn, có xu hướng
Trang 21giảm bớt số RAM và các cổng, như USB và Ethernet Có 2 phiên bản model Raspberry Pi bao gồm Model A và Model B, tên các model này dược đặt theo tên BBC Micro Model A có bộ nhớ RAM 256 MB và một cổng USB Model này rẻ hơn và sử dụng ít năng lượng hơn so với Model B Model B có 2 cổng USB, một cổng Ethernet để kết nối với mạng và có bộ nhớ RAM 512MB 2 loại model Raspberry Pi là Model A và Model B đã được nâng cấp lên A + và B + Trên các bản nâng cấp này có một số cải tiến nhỏ, chẳng hạn như tăng số cổng USB và mức tiêu thụ năng lượng được cải thiện, đặc biệt là trong phiên bản B +
Raspberry Pi 4 là phiên bản đầu tiên của Raspberry Pi có sẵn với nhiều cấu hình RAM Các model trước đó đã được nâng cấp với nhiều phiên bản nhỏ (như Pi Zero và Pi Zero W, hoặc Raspberry Pi 3) Bạn có thể chọn ba phiên bản Raspberry Pi 4:
• Raspberry Pi 4 2GB • Raspberry Pi 4 4GB • Raspberry PI 4 8GB
1.1.3 Hệ điều hành và phần mềm chạy được trên Raspberry Pi
Raspberry Pi được thiết kế cho hệ điều hành Linux, và nhiều bản phân phối Linux hiện cũng có phiên bản tối ưu hóa Raspberry Pi Hai trong số các lựa chọn phổ biến nhất là Raspbian Jessie dựa trên hệ điều hành Debian, và Pidora dựa trên hệ điều hành Fedora
Trên thực tế cả 2 tùy chọn này đều hoạt động tốt, lựa chọn Raspbian Jessie hay Pidora là do sở thích của mỗi người Khi khởi động đầu tiên từ thẻ SD, bạn sẽ được cung cấp menu có nhiều phân phối (bao gồm cả Raspbian và Pidora) để lựa chọn
Chúng ta vẫn còn những lựa chọn khác: OpenELEC và RaspBMC là 2 hệ điều hành phân phối dựa trên Linux, nhắm mục tiêu hướng tới sử dụng Raspberry Pi làm trung tâm truyền thông Ngoài ra còn có các hệ thống không phải Linux, chẳng hạn như RISC OS, chạy trên Pi
Có rất nhiều hệ điều hành khác nhau chạy được với Raspberry Pi Tùy theo mục đích và nhu cầu mà bạn lựa chọn cho phù hợp như: Raspberry Pi OS (hệ điều hành khuyên dùng cho các nhu cầu như văn phòng, lập trình, lưu trữ…), Ubuntu, LibreELEC, Windows…
Ở đề tài này nhóm chúng em sử dụng Raspbian đây là bản build Linux dựa trên nền Debian (Gần giống ubuntu) với giao diện LXDE (thay vì GNOME) Có đầy đủ web browser, media player, tools, etc… Nói chung hệ điều hành này dành cho những người muốn dùng Raspberry Pi như một cái PC
Trang 22• Cổng camera MIPI CSI 2 làn
Trang 23• Cổng video tổng hợp và âm thanh stereo 4 cực • H.265 (giải mã 4kp60), H264 (giải mã 1080p60, mã hóa 1080p30) • Đồ họa OpenGL ES 3.0
• Khe cắm thẻ nhớ Micro-SD để tải hệ điều hành và lưu trữ dữ liệu • 5V DC qua đầu nối USB-C (tối thiểu 3A *)
• 5V DC qua đầu cắm GPIO (tối thiểu 3A *) • Bật nguồn qua Ethernet (PoE) (yêu cầu PoE HAT riêng biệt)
Trang 24❖ Công suất tiêu thụ: mức tiêu thụ điện năng tối đa của Pi 4 là khoảng 7,6W khi tải và 3,4W khi không tải
❖ Nguồn điện cung cấp: bộ cấp nguồn USB Type-C, ở mức 5V / 3A
1.1.5 Mô tả chân raspberry pi
Raspberry Pi 4 có thể sử dụng trong hệ thống nhúng để giao tiếp tín hiệu Trong 40 chân GPIO bao gồm:
• 26 chân GPIO Khi thiết lập là input, GPIO có thể được sử dụng như chân interupt, GPIO 14 & 15 được thiết lập sẵn là chân input
• 1UART, 1 I2C, 2 SPI, 1 PWM (GPIO 4) • 2 chân nguồn 5V, 2 chân nguồn 3.3V, 8 chân GND • 2 chân ID EEPROM
Các chân GPIO không chỉ thực hiện các chức năng I/O đơn giản mà còn hỗ trợ giao thức UART, SPI và I2C
Trang 25Hình 1.8 Sơ đồ chân Raspberry Pi
Hình 1.9 GPIO Raspberry Pi
❖ Chân cấp nguồn
Power In: trong Raspberry pi, có hai cách cấp nguồn, một là từ cổng nguồn
USB-C và thứ hai là từ các chân 5V Đầu vào ở chân 5V phải ổn định và theo đúng thông số kỹ thuật Trong trường hợp có điện áp cao hơn, thiết bị có thể bị cháy
Các chân đầu vào 5V sẽ không có cầu chì và bộ điều chỉnh điện áp khi được sử dụng làm đầu vào cấp nguồn, do đó nguồn điện 5V phải theo đúng thông số kỹ thuật để tránh hư hại Chân đầu vào cấp nguồn cho Raspberry Pi 4 được cung cấp bên dưới:
Từ chân 2 đến 6 : 5V Chân 6 : GND
Power Out: có hai loại chân nguồn ra trong Raspberry pi 4 là 3V3 và 5V 5V
được kết nối trực tiếp với cổng USB nhưng 3V3 được kết nối thông qua bộ điều chỉnh điện áp cho ra đầu ra 3V ổn định Tất cả các chân nguồn ra được cung cấp bên dưới:
3V3 – Chân 1, chân 17 5V – Chân 2, chân 6
Ground: Raspberry Pi 4 có nhiều chân ground được kết nối bên trong và các
chân này này có thể làm điểm nối đất chung cho nguồn điện hoặc thiết bị bên ngoài
Trang 26❖ Chân I/O digital
Hầu hết mọi thiết bị đều cần các chân đầu vào và đầu ra để giao tiếp Trong thiết bị này có 28 chân GPIO được sử dụng làm đầu vào và đầu ra digital Các chân GPIO trong bộ điều khiển có một số giá trị mặc định
Các chân GPIO từ 0-9 sẽ ở trạng thái logic cao và các chân GPIO từ 10 trở lên sẽ ở trạng thái logic thấp Tất cả các chân đó trong Raspberry Pi 4 đều được cung cấp ở bảng dưới:
Bảng 1.2 Bảng chân I/O digital
GPIO16 – Chân 36 GPIO17 – Chân 11 GPIO18 – Chân 12 GPIO19 – Chân 35 GPIO20 – Chân 38 GPIO21 – Chân 40 GPIO22 – Chân 15 GPIO23 – Chân 16 GPIO24 – Chân 18 GPIO25 – Chân 22 GPIO26 – Chân 37 GPIO27 – Chân 13
Module giao tiếp dữ liệu nối tiếp Raspberry Pi
❖ Các chân UART trong Raspberry Pi
Có nhiều giao thức nối tiếp và UART là một trong số đó Nó khá phổ biến vì có hệ thống giao tiếp đơn giản và phụ thuộc vào hầu hết các phần mềm Có nhiều chân giao tiếp UART trong Raspberry Pi 4 được đưa ra bên dưới:
Bảng 1.3 Bảng chân UART
Trang 27TXD3 – GPIO5 – Chân 29 RXD3 – GPIO4 – Chân 7
❖ Chân giao tiếp SPI
Một số thiết bị sử dụng giao thức SPI và nó giúp điều khiển nhiều thiết bị bằng cách sử dụng 1 đường truyền dữ liệu duy nhất Trong Raspberry pi 4 có nhiều chân SPI được sử dụng cho giao tiếp SPI Chân SPI của Raspberry Pi 4 được cung cấp bên dưới:
Bảng 1.4 Bảng sơ đồ chân SPI
SPI3 CEO N – GPIO0 – Chân 27
GPIO8 – Chân 24
SPI0 CE0 N – GPIO9 – Chân 21
GPIO10 – Chân 19
GPIO11 – Chân 23
❖ Chân giao tiếp I2C
Raspberry Pi 4 có hỗ trợ giao thức I2C Là giao thức được sử dụng ở một số cảm biến và động cơ Tất cả các chân này được đưa ra bên dưới:
Bảng 1.5 Bảng chân I2C
SDA0 / SDA6 – GPIO0 – Chân 27
SCL0 / SCL6 – GPIO1 – Chân 28
SDA1 / SDA3 – GPIO2 – Chân 3
SCL1 / SCL3 – GPIO3 – Chân 5 SDA3 – GPIO4 –
Chân 7
SCL3 – GPIO5 – Chân 29
SDA4 – GPIO6 – Chân 31
SCL4 – GPIO7 – Chân 26
SDA4 – GPIO8 – Chân 24
SCL4 – GPIO9 – Chân 21
SDA5 – GPIO10 – Chân 19
SCL5 – GPIO11 – Chân 23
❖ Các chân GPIO PWM
Để tạo ra tín hiệu đầu ra xung mong muốn Raspberry Pi 4 có một số chân PWM Các chân này cấp dữ liệu trực tiếp cho các thiết bị ngoại vi điện áp thấp Để tạo ra tín hiệu đầu tiên các chân phải được lập trình trước Tất cả các chân PWM được đưa ra bên dưới:
Trang 28Bảng 1.6 Chân PWM
❖ Các chân SDIO Raspberry Pi
Trong Raspberry Pi 4 có một khe cắm thẻ SD nhưng các cgaab GPIO cũng hỗ trợ khả năng tương thích với thẻ SD Chân SDIO trên thiết bị có thể được sử dụng cho thẻ SD khi có ứng dụng yêu cầu:
Bảng 1.7 Bảng chân SD0CLK
SD0CLK / SD1 CLK – GPIO22 – Chân 15
SD0 CMD / SD1 CMD – GPIO23 – Chân 16
SD0 DATA0 / SD1 DAT0 – GPIO24 – Chân 18 SD0 DAT1 / SD1 DAT1 –
GPIO25 – Chân 22
SD1 DAT2 / SD1 DAT2 – GPIO26 – Chân 37
SD0 DAT3 / SD1 DAT3 – GPIO27 – Chân 13
❖ HDMI
Raspberry Pi 4 có hai cổng micro HDMI, cho phép kết nối hai màn hình riêng biệt Cần cáp micro HDMI-to-HDMI hoặc cáp HDMI-to-HDMI cùng với bộ chuyển đổi micro HDMI-to-HDMI để kết nối Raspberry Pi 4 với màn hình
1.2 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 nhóm chúng em chọn đối tượng là khuôn mặt
1.3 Phân tích bài toán nhận diện khuôn mặt
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)
Trang 291.4 Nghiên cứu đối tượng và phạm vi nhận diện khuôn mặt
1.4.1 Đối tượng
− Các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận dạng khuôn mặt người trên ảnh
− Bộ thư viện xử lý ảnh OpenCv
1.4.2 Phạm vi nghiên cứu
− Tập trung tìm hiểu nhận dạng khuôn mặt (Face Recognition) − Xử lí ảnh thô đưa vào database
1.5 Công cụ nghiên cứu
Để 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 Pycharm
1.5.1 Python
Hình 1.10 Ngôn ngữ 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ã
Python có cấu trúc dữ liệu cao cấp mạnh mẽ và cách tiếp cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và linh động, làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng
❖ Tính năng chính của Python
− Ngôn ngữ lập trình đơn giản, dễ học − Miễn phí, mã nguồn mở
− Khả năng di chuyển − Khả năng mở rộng và có thể nhúng
Trang 30❖ 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 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 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)
❖ Ưu điểm của Python
− Python có cấu trúc đơn giản, rõ ràng và rất dễ học Đây được coi là một trong những ngôn ngữ nên học cho những người mới bắt đầu tiếp cận đến lập trình − Python có mặt trên tất cả các hệ điều hành phổ biến như: Windows, MacOS, MS-
DOS, Unix,… đây cũng thể hiện được sự Đa Năng của ngôn ngữ này − Tương thích với thư viện lớn nhất hiện nay với 400 triệu người sử dụng như data
mining Scikit-learn, Pandas… − Tốc độ xử lý cũng là một trong những lí do tạo nên ưu điểm của Python Ngôn ngữ
này có thể tạo ra những script siêu nhỏ tới những phần mềm lớn như Blender 3D − Cộng đồng mạnh mẽ, Python có một cộng đồng rất lớn và tích cực, với nhiều tài
nguyên học và hỗ trợ trực tuyến
development, data science, machine learning, và nhiều ứng dụng khác
❖ Nhược điểm của Python
− Các cấu trúc của Python đòi hỏi nhiều không gian bộ nhớ hơn, ngôn ngữ này không thể phát huy hết tác dụng trong điều kiện bộ nhớ hạn chế
− Python không phải là ngôn ngữ được ưu tiên để phát triển ứng dụng di động hay trò chơi do tiêu tốn nhiều bộ nhớ hơn và tốc độ xử lý chậm so với ngôn ngữ khác
thường xuất hiện trong thời gian chạy, điều này khiến việc kiểm tra trở nên khó khăn hơn
1.5.2 Thư viện OpenCV
Opencv (Open Computer Vision library) là một thư viện mã nguồn mở hàng đầu cho xử lý về thị giác máy tính, machine learning, xử lý ảnh Opencv do Intel phát triển,
Trang 31được giới thiệu năm 1999 và hoàn thiện thành phiên bản 1.0 năm 2006 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, tạo điều kiện cho mọi người tham gia nghiên cứu và phát triển ứng dụng
Hình 1.11 Thư viện Opencv
Cấu trúc của Opencv được chia làm 5 phấn chính, 4 trong số đó được chia ra trong hình như sau:
Hình 1.12 Cấu trúc cơ bản của Opencv
− CV (Computer vision) là thành phần chứa những xử lý ảnh cơ sở và thuật toán thị giác máy tính mức cao
− MLL (Machine learning library) là thư viện machine learning, cái này bao gồm rất nhiều lớp thống kê và gộp công cụ xử lý
− HingGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh video
− CXCORE chứa cấu trúc và nội dung dữ liệu cơ sở 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 − Đa nền tảng và hiệu suất cao − OpenCV đã được sử dụng rộng rãi
Trang 321.5.3 Môi trường lập trình Pycharm
Hình 1.13 Môi trường lập trình Pycharm
Pycharm là một nền tảng kết hợp được JetBrains phát triển như một IDE (Môi trường phát triển tích hợp) để phát triển các ứng dụng cho lập trình trong Python Một số ứng dụng lớn như Tweeter, Facebook, Amazon và Pinterest sử dụng Pycharm để làm IDE Python
Một trong những ưu thế vượt trội của việc sử dụng PyCharm là nó cung cấp API cho các nhà phát triển và cho phép họ viết các plugin của riêng mình để mở rộng các tính năng Phần mềm này tương thích với Windows, Linux và macOS, hỗ trợ các lập trình viên Python tiết kiệm được rất nhiều thời gian trong lúc viết nhiều ứng dụng một cách hiệu quả
❖ Lợi ích chính của phần mềm Pycharm
Một khía cạnh quan trọng của chương trình là hiểu được nền tảng mã mà bạn đang đưa vào PyCharm đảm bảo bạn có thể khám phá dự án của bạn chỉ với vài thao tác trên phím, nó cung cấp cho bạn một cái nhìn tổng quan về cấu trúc dự án và cho phép bạn truy cập vào các tài liệu có liên quan ngay từ trình soạn thảo Hiểu được một nền tảng code nhanh hơn có nghĩa là thúc đẩy nhanh hơn quá trình phát triển của bạn
❖ Các tính năng chính của Pycharm
− Trình sửa code thông minh − Điều hướng mã
− Tái cấu trúc − Hỗ trợ Windows, macOS và Linux − Hỗ trợ thư viện khoa học Python
❖ Ưu điểm của Pycharm
− Cài đặt PyCharm rất dễ dàng − PyCharm là một IDE dễ sử dụng − Hỗ trợ viết code hóa thông minh − Điều hướng code thuận tiện
Trang 33− Tương thích với các phần mềm tạo script và plug-in khác − Có thể được triển khai trên nhiều nền tảng khác nhau
❖ Nhược điểm của Pycharm
− PyCharm không miễn phí và phiên bản Professional của nó khá đắt − Tính năng tự điền (auto-complete) sẽ không tốt cho các lập trình viên newbie − Yêu cầu tài nguyên hệ thống lớn
− Có thể chậm lại ở những thời điểm nhất định − Các tính năng khác có sẵn tại PyCharm Professional Edition
1.5.4 Cơ sở dữ liệu Database
Database hay cơ sở dữ liệu là một tập hợp có tổ chức của thông tin có cấu trúc hoặc thường được lưu trữ dưới dạng điện tử trong một hệ thống máy tính Cơ sở dữ liệu thường được kiểm soát bởi hệ quản trị cơ sở dữ liệu (DBMS) Cùng với nhau, dữ liệu và DBMS, kết hợp với các ứng dụng được liên kết với chúng, được gọi là một hệ thống cơ sở dữ liệu, thường được rút gọn và gọi là Database
Dữ liệu trong các loại cơ sở dữ liệu phổ biến nhất thường được mô hình hóa thành các hàng và cột trong một loạt bảng để giúp xử lý và truy vấn dữ liệu hiệu quả Sau đó, người ta có thể dễ dàng truy cập, quản lý, sửa đổi, cập nhật, kiểm soát và tổ chức Hầu hết các Database sử dụng ngôn ngữ truy vấn có cấu trúc (SQL) để thiết lập và truy vấn dữ liệu
Hình 1.14 Cơ sở dữ liệu Database
❖ Realtime database
Realtime database là cơ sở dữ liệu theo thời gian thực Nó được lưu trên đám mây để người dùng có thể lưu trữ và đồng bộ tất cả dữ liệu Các dữ liệu được lưu dưới dạng cây Json, tiếp đến chúng được đồng bộ với mọi kết nối theo thời gian thực
❖ Phân loại Database
Theo mục đích sử dụng: − Database dạng file: Là dữ liệu được lưu trữ dưới dạng file Trong đó, định dạng
Trang 34được sử dụng nhiều nhất là *.mdb Foxpro, tiếp đến là text, ascii, *.dbf − Database quan hệ: Là thực thể dữ liệu được lưu trữ trong các bảng Giữa những
thực thể có mối liên hệ với nhau, được gọi là các quan hệ Hiện nay, có một số hệ quản trị hỗ trợ cơ sở dữ liệu nổi tiếng là Oracle, MySQL, MS SQL server, … − Database hướng đối tượng: Là dạng dữ liệu được lưu trong các bảng Tuy nhiên,
điểm khác biệt so với database quan hệ là có bổ sung tính năng hướng đến đối tượng cụ thể như hành vi của đối tượng Bên cạnh đó, mỗi bảng là một lớp dữ liệu, còn một dòng là một đối tượng Một số hệ quản trị hỗ trợ loại database này là Oracle, MS SQL server, Postgres SQL
− Database bán cấu trúc: Là loại dữ liệu được lưu bằng định dạng XML Trong đó, các thẻ tag sẽ mô tả thông tin dữ liệu, đối tượng Ưu điểm của database bán cấu trúc là lưu trữ được nhiều loại dữ liệu
Theo hệ điều hành: − Cơ sở dữ liệu dùng hệ điều hành Linux: MySQL và Mariadb − Cơ sở dữ liệu dùng hệ điều hành Windows: SQL Server và MSSQL
❖ Ưu điểm cơ sở dữ liệu Database
− Giúp giảm tối thiểu trùng lặp thông tin, tăng tính nhất quán và toàn vẹn thông tin − Truy xuất dữ liệu bằng nhiều cách thông qua các câu lệnh đơn giản
− Cho phép nhiều người cùng làm việc trên cùng cơ sở dữ liệu − Ở một phạm vi rộng, có thể thấy cơ sở dữ liệu hiện diện trong tất cả các lĩnh vực
của cuộc sống hàng ngày
❖ Nhược điểm cơ sở dữ liệu Database
− Bắt buộc đảm bảo tính chủ quyền dữ liệu cao vì chúng được chia sẻ ở tần suất lớn − Yêu cầu chú trọng bảo mật quyền khai thác dữ liệu
− Đảm bảo không xảy ra vấn đề tranh chấp dữ liệu
Trang 35di động và web Họ cung cấp rất nhiều công cụ và dịch vụ tiện ích để phát triển ứng dụng nên một ứng dụng chất lượng Điều đó rút ngắn thời gian phát triển và giúp ứng dụng sớm ra mắt với người dùng
Firebase cung cấp cho người dùng các dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây với hệ thống máy chủ cực kỳ mạnh mẽ của Google Chức năng chính của firebase là giúp người dùng lập trình ứng dụng, phần mềm trên các nền tảng web, di động bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
Những tính năng chính của Firebase: − Firebase realtime database là một cơ sở dữ liệu thời gian thực, NoSQL được lưu
trữ đám mây cho phép bạn lưu trữ và đồng bộ dữ liệu − Firebase Authentication là chức năng xác thực người dùng Hiểu một cách đơn
giản, app của bạn cần phải đăng nhập/ đăng ký tài khoản để sử dụng, Firebase cung cấp cho chúng ta chức năng xác thực người dùng bằng email, số điện thoại − Firebase Cloud Storage là một không gian lưu trữ dữ liệu, nó giống như một chiếc
ổ cứng Bạn có thể upload và download các loại file bạn muốn − Cloud Functions Firebase cho phép chúng ta viết những câu truy vấn database lưu
trữ trên cloud
ứng dụng của bạn Cuối cùng nó sẽ đưa ra lời khuyên về lộ trình xây dựng ứng dụng Để làm việc này bạn cần cài đặt SDK (Software Development Kit, cụ thể hơn là FirebaseAnalytics.unitypackage), chức năng phân tích sẽ trở nên khả dụng
1.5.6 USB Camera
Hình 1.16 USB Camera
USB Camera cho máy tính nhúng được sử dụng gắn với cổng USB của máy tính nhúng: Raspberry Pi, Orange Pi, Beaglebone, , để truyền hình ảnh hoặc âm thanh về máy, camera tương thích với hệ điều hành phổ biến trên máy tính nhúng là Linux hoặc có thể gắn với các máy chạy hệ điều hành Windows và không cần phải cài Driver
Thông số kỹ thuật: − Resolution: 800 × 600 (for Video) − Sensor: CMOS
Trang 36− Compatible computer systems: Windows, Linux, − Product size: 38 * 15 * 35mm
1.6 Nghiên cứu nhận dạng khuôn mặt
1.6.1 Vấn đề nhận dạng
Hệ thống nhận dạng mặt người là một hệ thống nhận vào 1 ảnh, 1 đoạn video hoặc từ webcam Qua xử lý, tính toán hệ thống xác định được vị trí mặt người (nếu có) trong ảnh và cho biết đó là người nào trong số những người mà hệ thống đã được biết (qua quá trình học) hoặc là người lạ
Trước khi nhận dạng mặt người, chương trình phải chuẩn bị trước một dữ liệu thô Bao gồm các khuôn mặt của người Tiếp theo là “training” dữ liệu thô để trích xuất các véc tơ đặc trưng (embedding vector) để phục vụ cho việc so sánh sau này Do đó việc chuẩn bị dữ liệu thô ban đầu hết sức quan trọng
Hình 1.17 Hệ thống nhận dạng khuôn mặt
1.6.2 Kiến trúc của một hệ thống nhận dạng mặt người
Một hệ thống nhận dạng mặt người thông thường bao gồm bốn bước xử lý sau: − Phát hiện khuôn mặt (Face Detection)
− Phân đoạn khuôn mặt (Face Alignment or Segmentation) − Trích chọn đặc trưng (Feature Extraction)
− Nhận dạng (Recognition) hay Phân lớp khuôn mặt (Face Clasaification)
Hình 1.18 Các bước trong hệ thống nhận dạng
Trang 37Phát hiện khuôn mặt dò tìm và định vị những vị trí khuông mặt xuất hiện trong ảnh hoặc trên các frame video Phân đoạn khuôn mặt sẽ xác định vị trí mắt mũi, miệng, là các thành phần khác của khuôn mặt và chuyển kết quả này cho bước rút trích đặc trưng Từ những thông tin về các thành phần trên khuôn mặt, chúng ta có thể dễ dàng tính được véc-tơ đặc trưng trong bước rút trích đặc trưng Những véc-tơ đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đã được huấn luyện trước để phân loại khuôn mặt Bên cạnh những bước chính nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống Do một số thông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v, phát hiện khuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ thống Trong đồ án này em tập trung chủ yếu vào các bước phát hiện khuôn mặt.
1.6.3 Các hướng tiếp cận trong phát hiện khuôn mặt
Có nhiều nghiên cứu tìm ra phương pháp xác định khuôn mặt người, từ ảnh xám đến ngày nay là ảnh màu Dựa vào tính chất của các phương pháp này thành bốn hướng tiếp cận chính:
− Hướng tiếp cận dựa trên tri thức: Mã hóa các hiểu biết của con người về các loại khuôn mặt người thành các luật Thường các luật mô tả quan hệ các đặc trưng − Hướng tiếp cận dựa trên đặc trưng không thay đổi: Mục tiêu thuật toán đi tìm các
đặc trưng mô tả cấu trúc khuôn mặt người mà các đặc trưng này sẽ không thay đổi khi tư thế khuôn một, vị trí đặt thiếu bị thu hình hoặc điều kiện ánh sáng thay đổi − Hướng tiếp cận dưa trên so khớp mẫu: Dùng các mẫu chuẩn của khuôn mặt người
(các mẫu này được chọn lựa và lưu trữ) để mô tả cho khuôn mặt người hay các đặc trưng khuôn mặt (các mẫu này phải chọn làm sao cho tách biệt nhau theo tiêu chuẩn mà các tác giả định ra để so sánh)
ở đây được học từ 1 tập ảnh huấn luyện cho trước Sau đó hệ thống sẽ xác định khuôn mặt người Một số tác giả còn gọi hướng tiếp cận này là hướng tiếp cận theo phương pháp học
1.6.4 Phương pháp 1.6.4.1 Phương pháp Deep learning
Deep Learning là tập hợp con của Machine Learning và nó có tác dụng hỗ trợ cho máy tính tự huấn luyện chính nó để có thể thực hiện mọi tác vụ tương tự như con người Điều này chính là giúp máy tính bắt chước con người cách học hỏi và suy nghĩ Mạng nơ-ron nhân tạo chính là động lực chính để phát triển Deep Learning, Deep
Trang 38Learning hiện đang phát triển rất nhanh và được xem là một trong những bước đột phá lớn nhất trong Machine Learning
Thuật toán CNN: Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay
Hình 1.19 Cấu trúc cơ bản của mô hình Convolutional Neural Network (CNN)
CNN phân loại hình ảnh bằng cách lấy một hình ảnh đầu vào, xử lý và phân loại nó theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ) Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng, D: Độ dày) Ví dụ: Một hình ảnh gồm mảng ma trận 6 x 6 x 3 của RGB (3 đề cập đến giá trị RGB) và một hình ảnh của mảng ma trận 4 x 4 x 1 của hình ảnh thang độ xám
Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những mô hình để nhận dạng và phân loại hình ảnh Trong đó, xác định đối tượng và nhận dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi
Hình 1.20 Mảng ma trận RGB
Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào sẽ chuyển nó qua một loạt các lớp tích chập với các bộ lọc (Kernals), tổng hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1
Trang 39đặc điểm từ hình ảnh đầu vào Tích chập duy trì mối quan hệ giữa các pixel bằng cách học các đặc điểm hình ảnh bằng cách sử dụng các ô vuông nhỏ của dữ liệu đầu vào
Đây là một phép toán có 2 đầu vào như ma trận hình ảnh và bộ lọc hoặc hạt nhân • Ma trận hình ảnh (khối lượng) có kích thước (h x w x d)
Hình 1.21 Ma trận hình ảnh nhân nhân hoặc ma trận bộ lọc
Hãy xem xét một 5 x 5 có giá trị pixel hình ảnh là 0, 1 và ma trận bộ lọc 3 x 3 như hiển thị bên dưới
Trang 40❖ Bước nhảy – Stride
Stride là số pixel thay đổi trên ma trận đầu vào Khi stride là 1 thì ta di chuyển các bộ lọc đến 1 pixel mỗi lần Khi stride là 2 thì ta di chuyển các bộ lọc thành 2 pixel cùng một lúc và tiếp tục như vậy Hình dưới là lớp tích chập hoạt động với stride là 2