Báo cáo đồ án PBL5 - Kỹ thuật máy tínhđã ứng dụng các công nghệ trí tuệ nhân tạo trong việc phân tích và xử lý hình ảnh, API từ Django REST Framework trong việc giao tiếp giữa server và
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO ĐỒ ÁN PBL5 - KỸ THUẬT MÁY TÍNH
HỆ THỐNG MỞ KHÓA CỬA TỰ ĐỘNG SỬ DỤNG NHẬN DẠNG
KHUÔN MẶTGIẢNG VIÊN HƯỚNG DẪN: TS Bùi Thị Thanh Thanh
Trang 2Báo cáo đồ án PBL5 - Kỹ thuật máy tính
đã ứng dụng các công nghệ trí tuệ nhân tạo trong việc phân tích và xử lý hình ảnh, API
từ Django REST Framework trong việc giao tiếp giữa server và ứng dụng di động,ESP8266, ESP32 Cam để chụp ảnh, xây dựng ứng dụng di động với React Native đểhiển thị camera thời gian thực, lịch sử các lần nhận diện và điều khiển đóng mở cửa.Sau khi tiến hành và thực hiện đề tài, hệ thống đã sử dụng ổn và hiệu quả Tuy nhiên,vẫn còn một số thiếu sót Trong thời gian đến, nhóm sẽ cố gắng hoàn thiện sản phẩmtốt nhất có thể
Trang 3BẢNG PHÂN CÔNG NHIỆM VỤ
Sinh viên
Ngô Lê Gia Hưng
Quách Minh Nhật
Nguyễn Mạnh Đức
Trang 4Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 5DANH MỤC HÌNH ẢNH
Hình 1: Sơ đồ tổng quan hệ thống
Hình 2: Sơ đồ hoạt động tổng quan
Hình 3: Mô hình RESTful API
Hình 4: Sơ đồ hoạt động RESTful API
Hình 5: Django REST Framework
Hình 6: Sơ đồ hệ thống nhận diện khuôn mặt
Hình 7: Loss function
Hình 8: Norm 1 và norm 2 trong không gian hai chiều
Hình 9: Logo React Native
Hình 17: Giao diện đăng nhập
Hình 18: Giao diện đăng ký
Hình 19: Giao diện màn hình chính
Hình 20: Giao diện xem camera và điều khiển cửa
Hình 21: Giao diện danh sách lịch sử các lần nhận diện
Hình 22: Giao diện chi tiết lịch sử nhận diện
Hình 23: Giao diện thông tin người dùng
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 6Báo cáo đồ án PBL5 - Kỹ thuật máy tính
MỤC LỤC
TÓM TẮT ĐỒ ÁN
BẢNG PHÂN CÔNG NHIỆM VỤ
DANH MỤC HÌNH ẢNH
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN
1 Giới thiệu
1.1 Giới thiệu sản phẩm:
1.2 Mục tiêu:
1.3 Các vấn đề cần giải quyết
CHƯƠNG 2: GIẢI PHÁP
2 Các giải pháp
2.1 Sơ đồ tổng quan của hệ thống
2.2 Sơ đồ hoạt động tổng quan
2.3 Linh kiện sử dụng
2.4 Giải pháp truyền thông
2.5 Giải pháp phát hiện và nhận diện khuôn mặt
2.5.1 Tổng quan về hệ thống nhận diện:
2.5.2 Face Detector
2.5.3 Face Encoder
2.5.4 Face identifier
2.6 Giải pháp ứng dụng di động
2.6.1 Bài toán
2.6.2 Công nghệ sử dụng
2.6.3 Biểu đồ usecase hệ thống
2.6.4 Server
CHƯƠNG 3: KẾT QUẢ
3 Tổng quan kết quả đạt được
3.1 Kết quả thực tế
3.1.1 Quá trình thực hiện và kết quả phân tích và nhận diện khuôn mặt
3.1.2 Ứng dụng di động
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4 Kết luận và hướng phát triển
4.1 Đánh giá sản phẩm
4.2 Hướng phát triển
LỜI CẢM ƠN
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng
Trang 7TÀI LIỆU THAM KHẢO 27
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng
Trang 8Báo cáo đồ án PBL5 - Kỹ thuật máy tính
• Xử lý ảnh từ Camera của ESP32 và dữ liệu trước đó
• Kết nối và cài đặt ESP8266
• Xây dựng hệ thống phân tích và nhận diện khuôn mặt
• Lập trình và viết mã nguồn cho các chức năng
• Ghép nối các phần và chạy thử từ đó điều chỉnh mô hình
Vấn đề
Phần cứng
Phát hiện khuôn mặt
Nhận diện khuôn mặt
Trang 9Ứng dụng
Server
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 10Báo cáo đồ án PBL5 - Kỹ thuật máy tính
2.2 Sơ đồ hoạt động tổng quan
Hình 2: Sơ đồ hoạt động tổng quan Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 11Module CP2102
Trang 12Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 14Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 3: Mô hình RESTful API
• Các thành phần của RESTful API
API (Application Programming Interface) là một tập các quy tắc và cơ chế màtheo đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thànhphần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu
dữ liệu phổ biến như JSON hay XML
REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu,một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giaotiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tinngười dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE,… đến một URL
để xử lý dữ liệu
RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụngweb để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụngphổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau
Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTPmethod (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụngweb để quản các resource RESTful không quy định logic code ứng dụng và không giớihạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể
sử dụng để thiết kế một RESTful API
• Phương thức RESTful hoạt động:
Hình 4: Sơ đồ hoạt động RESTful API Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 15REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên
sẽ sử dụng những phương thức HTTP riêng
❖ GET (SELECT): Trả về một Resource hoặc một danh sách Resource
❖ POST (CREATE): Tạo mới một Resource.
❖ PUT (UPDATE): Cập nhật thông tin cho Resource.
❖ DELETE (DELETE): Xoá một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng vớiCreate, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
• Giới thiệu về Django REST Framework:
Hình 5: Django REST Framework
Django REST Framework là một framework được cài vào Django, có đầy đủchức năng, đủ sức mạnh để tạo ra các Web APIs mạnh mẽ nhằm làm cầu nối cho các hệthống khác nhau như giữa các client với server Client ở đây là web, mobile, tablet,…server ở đây là Django, database MySQL,…
Django REST Framework hỗ trợ giao thức truyền tải dữ liệu HTTP thông quacác phương thức như Post, Get, Put, Delete
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 16Báo cáo đồ án PBL5 - Kỹ thuật máy tính
2.5 Giải pháp phát hiện và nhận diện khuôn mặt
có cấu trúc khác nhau và đảm nhiệm vai trò khác nhau trong task
MTCNN có 3 lớp mạng khác biệt, tượng trưng cho 3 stage chính là P-Net, R-Net
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 17và O-Net Đầu vào của MTCNN là 1 bức ảnh một người hoặc một tập thể Đầu ra của MTCNN là vị trí khuôn mặt và các điểm trên mặt như: mắt, mũi, miệng…
SIAM NETWORK: Là kiến trúc mạng mà khi bạn đưa vào mô hình 2 bức ảnh,
sau đó mô hình sẽ trả lời câu hỏi: 2 bức hình đó có thuộc về cùng một người hay không?Thay vì dự đoán trực tiếp bức ảnh đó là thuộc về ai, thì sẽ nhận vào 2 bức ảnh và nóixem nó có cùng một loại hay không?
Ví dụ: muốn phân loại người A với một bức ảnh, ta chỉ cần đưa bức ảnh củangười A đó cùng với bức ảnh chụp được cần phân loại, khi 2 bức ảnh đi qua model thì sẽtrả về kết quả xem chúng có cùng người hay khác loại với nhau
Input của mạng Siam là hai bức ảnh bất kì, Output là hai vector đặc trưng của bứcảnh Mà vector đặc trưng biểu diễn ở dạng số học nên có thể sử dụng chúng để kiểm traxem độ tương đồng giữa các bức ảnh bằng cách đưa vào một loss function Hàm lossthường được dùng là một norm bậc 2
LOSS FUNCTION: Với 2 vectơ tương ứng với biểu diễn của 2 ảnh input, ta đưa
vào hàm loss function để đo lường sự khác biệt giữa chúng Thông thường hàm lossfunction là một hàm chuẩn bậc 2
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 18Báo cáo đồ án PBL5 - Kỹ thuật máy tính
TRIPLE LOSS: Ta chọn 3 bức ảnh trong đó sẽ có 1 bức ảnh làm chính (Anchor
Image), bên cạnh đó sẽ có 1 bức ảnh giống (Positive) và một bức ảnh khác (Negative)với bức ảnh Anchor Kí hiệu lần lượt là A,P,N
Hàm loss function là tối thiểu hóa khoảng cách giữa 2 ảnh khi chúng là Negative
và tối đa hóa khoảng cách khi chúng là Positive Như vậy chúng ta cần lựa chọn các bộ 3ảnh sao cho:
d(A,P) lớn Điều này cũng tương tự như bạn lựa chọn một ảnh của mình hồi nhỏ so vớihiện tại để thuật toán học khó hơn Nhưng nếu nhận biết được thì nó sẽ thông minh hơn
d(A,N) nhỏ Điều này tương tự như việc thuật toán phân biệt được ảnh của một người anh
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 19( , , ) = ∑ (|| ( ) − ( )|| − || ( ) − ( )|| + , 0)
=0
Khi áp dụng Triple loss ta có thể tạo ra các biểu diễn vectơ tốt nhất cho mỗi bứcảnh, phân biệt các ảnh Negative rất giống ảnh Positive Và ta luôn phải xác định (A,P)thuộc cùng một người và N được chọn ngẫu nhiên từ người khác
THUẬT TOÁN FACENET: Facenet chính là một dạng siam network có tác
dụng biểu diễn các bức ảnh trong một không gian Euclide n chiều (thường là 128 hoặc512) sao cho khoảng cách giữa các vector embedding càng nhỏ, mức độ tương đồnggiữa chúng càng lớn
Các thuật toán nhận diện trước đây đều biểu diễn khuôn mặt bằng một vectorembedding thông qua một layer bottle neck có tác dụng giảm chiều dữ liệu Hạn chế củacác thuận toán trước đây là:
❖ Số lượng chiều embedding tương đối lớn (thường >= 1000) và ảnh hưởng tới tốc độ của thuật toán
❖ Hàm loss function chỉ đo lường khoảng cách giữa 2 bức ảnhFacenet đã giải quyết cả 2 vấn đề trên bằng các hiệu chỉnh nhỏ nhưng mang lại hiệu quả lớn:
chiều dữ liệu xuống chỉ còn 128 chiều Do đó quá trình suy diễn và dự báo nhanh hơn vàđồng thời độ chính xác vẫn được đảm bảo
❖ Sử dụng loss function là hàm triplot loss có khả năng học được đồng thời
sự giống nhau giữa 2 bức ảnh cùng nhóm và phân biệt các bức ảnh không cùng nhóm
Do đó hiệu quả hơn rất nhiều so với các phương pháp trước đây
2.5.4 Face identifier
Face identifier là một quá trình mà hệ thống dùng để nhận dạng một gương mặt
đó là ai hay thuộc về một nhãn nào đó, sau khi đã trích xuất được đặc trưng của gươngmặt thành vector 128 chiều hoặc 512 chiều
Sử dụng khoảng cách Euclid để đo khoảng cách giữa các vector và cho ra nhãn,xác định gương mặt
KHÔNG GIAN EUCLIDE N-CHIỀU: Không gian vectơ (hay còn gọi là không
gian tuyến tính) là một tập hợp của các đại lượng gọi là vector, một đại lượng có thể cộng
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 20Báo cáo đồ án PBL5 - Kỹ thuật máy tính
và nhân bởi một số, được gọi là vô hướng
Một không gian vector n-chiều với các khái niệm về khoảng cách và góc thỏa mãn các quan hệ Euclide được gọi là không gian Euclide n-chiều
Sau này, Siam network dựa trên base network là một Convolutional neural
network đã được loại bỏ output layer có tác dụng encoding ảnh thành vector embedding
CHUẨN NORM CỦA VECTOR:
❖ Khái niệm:
Trong không gian một chiều, việc đo khoảng cách giữa hai điểm đã rất quen thuộc:
lấy trị tuyệt đối của hiệu giữa hai giá trị đó
Trong không gian hai chiều, tức mặt phẳng, chúng ta thường dùng khoảng cáchEuclid để đo khoảng cách giữa hai điểm Khoảng cách này chính là cái chúng ta thường
nói bằng ngôn ngữ thông thường là đường chim bay.
Đôi khi, để đi từ một điểm này tới một điểm kia, con người chúng ta không thể đibằng đường chim bay được mà còn phụ thuộc vào việc đường đi nối giữa hai điểm códạng như thế nào nữa
Việc đo khoảng cách giữa hai điểm dữ liệu nhiều chiều, tức hai vector, là rất cầnthiết trong Machine Learning Chúng ta cần đánh giá xem điểm nào là điểm gần nhất củamột điểm khác; chúng ta cũng cần đánh giá xem độ chính xác của việc ước lượng Đó là
Giả sử các vectors x=[x1;x2;…;xn], y=[y1;y2;…;yn]
Với p là một số bất kỳ không nhỏ hơn 1, hàm số sau đây:
||x||p = ( |x1|p + |x2|p + …|xn|p )1/pVậy, khi:
- p = 2 ta có norm 2 ( đường màu xanh trên đồ thị)
- p = 1 ta có norm 1 là tổng các trị tuyệt đối của từng phần tử của x (đường màu
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 21Hình 8: Norm 1 và norm 2 trong không gian hai chiều 2.5.5 Các pretrain model
Hầu hết khi xây dựng một thuật toán nhận diện khuôn mặt sẽ không cần phải train lại
mô hình facenet mà tận dụng lại các mô hình pretrain sẵn có Bạn sẽ không cần phải tốnthời gian và công sức nếu không có đủ tài nguyên và dữ liệu Đó cũng là lý do tôi cho rằngviệc xây dựng mô hình nhận diện khuôn mặt ở thời điểm hiện tại rất dễ dàng
Những mô hình pretrain được huấn luyện trên các dữ liệu lên tới hàng triệu ảnh
Do đó có khả năng mã hóa rất tốt các bức ảnh trên không gian 128 chiều Việc còn lạicủa chúng ta là sử dụng lại mô hình, tính toán embedding véc tơ và huấn luyệnembedding véc tơ bằng một classifier đơn giản để phân loại classes
• Một số bộ dữ liệu public về face
Hai bộ dữ liệu về face phổ biến nhất, được sử dụng nhiều trong các bài báo và nghiên cứu về face recognition
CASIA-WebFace: Bộ dữ liệu bao gồm gần 500k ảnh được thu thập từ khoảng
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 22Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Bảng 4: Các pretrain model phổ biến 2.6 Giải pháp ứng dụng di động
- React Native là framework chính để phát triển ứng dụng di động
- Webview để xem camera realtime qua ip của ESP32Cam
- Ứng dụng di động lấy dữ liệu từ các URL remote từ REST APIs của Server
- Firebase Authentication: Quản lý đăng ký đăng nhập tài khoản
- AsyncStorage: Lưu trữ data vào bộ nhớ khi mất internet
Hình 9: Logo React Native
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 232.6.3 Biểu đồ usecase hệ thống
Hình 10: Biểu đồ Usecase 2.6.4 Server
Trang 24Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 11: Cơ sở dữ liệu
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 25CHƯƠNG 3: KẾT QUẢ
3 Tổng quan kết quả đạt được
Sau quá trình xây dựng PBL5 với những mục tiêu cũng như những vấn đề đặt raban đầu, nhóm đã cố gắng hoàn thiện sản phẩm đúng với yêu cầu và thời gian đặt ra của
đề tài với các nội dung như sau:
- Nắm được kiến thức cơ bản về kỹ thuật máy tính
- Nắm được các kiến thức về phát hiện và nhận diện khuôn mặt để điều khiểnCamera
- Tương ứng với những kết quả nhận diện được người dùng có thể điều khiển,xem và quản lý camera để đóng mở cửa
3.1 Kết quả thực tế
3.1.1 Quá trình thực hiện và kết quả phân tích và nhận diện khuôn mặt Quá trình xây dựng mô hình:
• Cài đặt thư viện và các phần mềm cần thiết:
❖ Cài đặt Visual Studio
❖ Tải thư viện OpenCV
❖ Tải thư viện Tensorflow
❖ Tải pretrain model
• Chuẩn bị dữ liệu: Thu thập dữ liệu dataset từ các bạn trong lớp học, cókích thước và size ảnh bất kì Mỗi bạn 30 bức ảnh Ảnh chụp khuôn mặt, gốc mặt khácnhau, chỉ có 1 khuôn mặt cụ thể, rõ rang của bạn đó trong bức ảnh Đặt tên folder chứaảnh của từng bạn bằng tên của chính bạn đó
Hình 12: Bộ dữ liệu Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Trang 26Báo cáo đồ án PBL5 - Kỹ thuật máy tính
• Xử lý dữ liệu: Dữ liệu thu thập được ở trên là dữ liệu ảnh chụp khuônmặt nhưng có ngoại cảnh xung quanh, tiến hành detect khuôn mặt bằng modelMTCNN và crop ảnh để thu được khuôn mặt cụ thể của từng đối tượng
Hình 13: Ảnh được crop cụ thể của đối tượng
• Chuẩn hóa dữ liệu và lưu trữ: Dữ liệu thu được đang ở dạng ảnh (jpg,
png,…) Sử dụng model Facenet, chuyển hóa dữ liệu ảnh về vector 512 chiều Lưu trữ
dữ liệu ở dạng file npy và lưu trữ đối tượng
Hình 14: Vector các ảnh
• Test: Phần test thực hiện các bước:
chiều).
Trang 27toán cần thiết để tính toán và xác định, định danh khuôn mặt cần test.
Kết quả nhận diện khuôn mặt:
Hình 15: Kết quả nhận diện khuôn mặt
Chú thích: Ảnh sử dụng detect được 1 người, khoảng cách Euclid nhỏ nhất cóđược là 0.60715 Xác định đây là ảnh của Đạt, với xác suất là 93%
Kết quả chi tiết:
Hình 16: Kết quả 50 lần test
Với việc chọn ngưỡng phù hợp, ảnh test có độ sáng đầy đủ (sử dụng camera ESP32-CAM), độ nhòa, mờ ít => Độ chính xác thu được cho 50 lần test là 88% Sai sốrơi vào các trường hợp : camera bị rung, nhòa, mờ, độ sáng thấp
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt