Chương 3. MỘT MÔ HÌNH ỨNG DỤNG KIẾN TRÚC PHẦN MỀM TRÊN NỀN
3.3. Thiết kế hệ thống
3.3.1. Mô hình tổng thể chức năng hệ thống
Hình 3.10: Mô hình tổng thể chức năng hệ thống 3.3.2. Mô hình phân rã chức năng
Hình 3.11: Mô hình phân rã chức năng
46 3.3.3. Kiến trúc hệ thống
Hình 3.12: Kiến trúc hệ thống
Các thành phần dịch vụ Azure được sử dụng trong hệ thống:
- Service bus: Máy tính liên tục chụp ảnh từ camera và tiến hành xử lý hình ảnh.
Khi phát hiện khuôn mặt trên ảnh, máy tính sẽ gửi 1 bản tin lên queue FaceRecognition trên Service bus. Đồng thời máy tính cũng thực hiện lưu 1 ảnh có chứa khuôn mặt lên Blob.
- Azure functions app: được kích hoạt theo trigger của service bus, mỗi khi có 1 bản tin được lưu vào queue. Function app sẽ gọi đến dịch vụ nhận diện và xác thực khuôn mặt Face ID để xác định xem ảnh được nhận diện là của ai.
o Azure Functions là dịch vụ cho chạy các đoạn code có độ phức tạp của nghiệp vụ không cao trên cloud mà không muốn bận tâm tới các thành phần khác liên quan trong ứng dụng cũng như hạ tầng để chạy được function này.
o Hỗ trợ nhiều ngôn ngữ lập trình khác nhau như C#, F#, Node.js, PHP hay Phython
o Có khả năng nhanh chóng tích hợp với các dịch vụ khác của Azure như Azure Storage, Azure Mobile Apps, Azure Event Hubs, …
47
o Với Azure Functions thay vì phải trả một con số cố định và không hề rẻ để thuê server để chạy function của bạn thì với gói Consumption của Azure Functions, bạn chỉ cần phải trả cho thời gian mà function của bạn chạy mà thôi.
- Face ID APIs: dịch vụ nhận diện và xác thực khuôn mặt của Microsoft
o FaceID là 1 dịch vụ thuộc Microsoft Cognitive Services, trong đó bao gồm một bộ các API ứng dụng trí tuệ nhân tạo thông minh, cho phép lập trình viên phát triển các ứng dụng phát hiện, nhận diện khuôn mặt một cách nhanh chóng.
o Ngoài việc phát hiện khuôn mặt trong ảnh thì API này cũng trả về các thuộc tính của khuôn mặt như tuổi, giới tính, trạng thái cảm xúc,…
Ngoài ra, Face API còn cho phép so sánh 2 khuôn mặt có phải là của cùng một người hay không.
o Face ID có thể phát hiện tối đa 64 khuôn mặt trên 1 bức hình từ 1 file ảnh được upload hoặc từ 1 file đã có trên web
o Kích thước file ảnh có thể phát hiện khuôn mặt từ 1Kb đến 4Mb
- Blob storage: Sử dụng để lưu trữ hình ảnh training ban đầu của nhân viên và hình ảnh nhận được từ các camera.
o Blob cung cấp dịch vụ lưu trữ dữ liệu không cấu trúc trên Azure, có thể là file ảnh, file video, file văn bản,…
o Block blob: dùng để lưu trữ text hoặc file có sẵn. 1 single block blob có thể chứa đến 50000 blocks và mỗi block có thể lên đến 100Mb, nên tổng dung lượng của 1 single block blob có thể lên đên 4.75 TB
o Append blob: cũng giống như block blob nhưng được tối ưu hóa cho việc thêm dữ liệu vào blob liên tục, nên nó thường được sử dụng để lưu các file logging. Dung lượng của 1 single append blob có thể lên đến 195GB (4Mb x 50000)
o Page blob: dung lượng có thể lên đến 1 TB - Azure SQL: Lưu trữ cơ sở dữ liệu của hệ thống.
o Azure SQL được xây dựng trên phần mềm quản lý cơ sở dữ liệu Microsoft SQL Server.
o Azure SQL được host trên các trung tâm dữ liệu của Microsoft và được lưu trữ phân tán trên rất nhiều nodes. Azure SQL sẽ lưu trữ cơ sở dữ liệu thành nhiều bản copy, do đó nếu có vấn đề gì thì có thể khởi phục lại dữ liệu một cách đơn giản
48
o Azure SQL giúp bảo vệ dữ liệu bằng cách bắt buộc các kết nối tới đều phải thực hiện mã hóa (SSL/TLS)
- Redis Cache: Lưu trữ dữ liệu trong bộ nhớ đệm nhằm cải thiện hiệu năng của hệ thống
- Notification Hubs: Mỗi khi nhận diện được hình ảnh của nhân viên, một notify sẽ được gửi tới ứng dụng mobile thông qua Notification Hubs.
- Web app service: Triển khai trang frontend của hệ thống
o Là dịch vụ trên Microsoft Azure được xây dựng để tối ưu cho việc hosting website. App service hỗ trợ rất nhiều ngôn ngữ lập trình như Java, PHP, Node.js, Python và .Net.
o Azure app service hỗ trợ việc tự động scale hệ thống và tự động load balance bằng cách tăng giảm số lượng các instances một cách tự động khi số lượng request đến hệ thống tăng hoặc giảm.
o Azure app service cung cấp tính năng giám sát hệ thống, người quản trị có thể xem các thống kê về hiệu năng của hệ thống theo thời gian thực.
- API app service: Triển khai trang backend của hệ thống. Chứa các API làm việc với frontend và ứng dụng Mobile
- Azure CDN: Lưu trữ các file tĩnh như: Javascript, Css, html, ảnh.
49 3.3.4. Quy trình xử lý dữ liệu ảnh khi nhận diện
Hình 3.13: Quy trình xử lý ảnh khi nhận diện
Quy trình thực hiện xử lý ảnh nhận diện nhân viên khi xuất hiện trước camera được thực hiện theo các bước sau:
50
- Camera chụp ảnh: Sử dụng giao thức RTSP để kết nối tới luồng stream từ Camera, định kỳ thực hiện capture ảnh từ camera theo tần suất 6 frames/ 1 giây.
- Xử lý phát hiện khuôn mặt: Sử dụng thư viện Windows.Media.FaceAnalysis được cung cấp sẵn của nền tảng Windows Universal App để phát hiện khuôn mặt trên ảnh đã chụp.
- Loại bỏ ảnh có vị trí không thay đổi: Nếu vị trí của khuôn mặt trên ảnh không có sự thay đổi so với ảnh trước đó thì có thể phán đoán rằng vẫn là 1 người và không cần nhận diện lại nữa.
- Crop vùng ảnh chứa khuôn mặt: Chỉ lấy các vùng chứa hình ảnh khuôn mặt trên ảnh.
- Loại bỏ những khuôn mặt có kích thước nhỏ: Loại bỏ những ảnh có kích thước quá nhỏ, không có khả năng nhận diện được.
- Giảm kích thước file ảnh: Giảm kích thước file ảnh chứa khuôn mặt, để tăng tốc độ nhận diện khuôn mặt.
- Gửi ảnh lên FaceID APIs để xác thực: Sau khi thực hiện xác thực được khuôn mặt dựa trên ảnh vừa gửi và tập dữ liệu nhận diện của nhân viên đã có, FaceID API sẽ trả về personId và độ tin cây, dựa trên độ tin cậy có thể quyết định người được nhận diện là ai.
3.4. Xây dựng chương trình thử nghiệm