Hệ thống phần mềm Nhận dạng và ước lượng calo trong thực phẩm - được thiết kế theo kiến trúc client/server (Hình 3.1).
Hệ thống gồm 3 phần chính - Thiết bị Android (client);
- Giao thức HTTP (Công cụ Postman); - Server.
Phần 1 Thiết bị Android là một ứng dụng trên điện thoại thông minh, có giao diện người dùng giúp quản lý tương tác người dùng với ứng dụng, các hoạt động đầu vào như chụp hình, chọn hình ảnh từ thư viện điện thoại thông minh gửi lên server
và hiển thị kết quả do server gửi về, hiển thị các dữ liệu như bảng lịch, thông tin về calo, tên thực phẩm, tổng số calo người dùng nạp vào trong ngày.
Phần 2 Giao thức HTTP Công cụ Postman được sử dụng để tạo ra các request giúp trao đổi dữ liệu từ client và server.
Phần 3 là phần server thực hiện logic xử lý các yêu cầu từ client, như quản lý và phân phối các luồng xử lý độc lập, đảm bảo hiệu năng và chất lượng tính toán nhận dạng và ước lượng cho nhiều client trong cùng một thời điểm.
Server còn là nơi quản lý cơ sở dữ liệu, bao gồm mô hình nhận dạng và mô hình tính toán calo từ hình ảnh gửi lên từ client, các ảnh gửi lên được lưu trong cơ sở dữ liệu về tên gọi, lượng calo. Các lượng calo được tính toán lưu tại server theo từng ngày, gửi về người dùng, giúp người dùng có thể kiểm soát lượng calo nạp vào mỗi ngày.
Quá trình hoạt động của mô hình được thể hiện như Hình 3.2. Trong đó các bước thực hiện của server và client từ lúc khởi động ban đầu tới lúc kết thúc
- Client (Ứng dụng nhận dạng và ước lượng calo trên điện thoại thông minh) (1) Người dùng khởi động ứng dụng;
(2) Người dùng thực hiện chụp ảnh thực phẩm trên đĩa bằng camera của điện thoại, hoặc chọn ảnh đã chụp trước đó được lưu trong thư viện ảnh;
(3) Ảnh chụp được mã hóa, nén lại và gửi tới máy chủ;
(4) Ứng dụng đợi nhận kết quả nhận dạng từ máy chủ gửi về và hiển thị cho người dùng.
- Chương trình server
(1) Chương trình được khởi động và nạp các thư viện cần thiết;
(2) Chương trình nạp mô hình nhận dạng đã được huấn luyện trước đó; (3) Chương trình nạp mô hình tính toán calo;
(4) Giao thức gửi, nhận dữ liệu giữa ứng dụng phía client và chương trình server được cấu hình;
(5) Một loại các luồng xử lý được khởi tạo, đặt trạng thái ban đầu là trạng thái rỗi;
(6) Khi có ứng dụng client kết nối tới, chương trình kiểm tra trong danh sách các luồng xử lý và chọn một luồng đang ở trạng thái rỗi để nhận và tính toán dữ liệu do client gửi tới;
(7) Trong luồng xử lý
- Bắt đầu quá trình tính toán nhận dạng, cờ trạng thái là “bận”; - Thực hiện giải nén dữ liệu thành dữ liệu ảnh gốc;
- Sử dụng mô hình đã nạp để nhận dạng thực phẩm; - Sử dụng mô hình tính toán calo để tính toán calo; - Trả kết quả nhận dạng về cho ứng dụng client; - Kết thúc quá trình tính toán.
(8) Khi luồng xử lý đã hoàn thành quá trình tính toán nhận dạng và ước lượng calo trong thực phẩm, chương trình giải phóng luồng xử lý bằng cách cập nhật lại trạng thái hiện tại của luồng.