CHƯƠNG 4 THỰC NGHIỆM VÀ KẾT QUẢ
4.3. Quy trình thực nghiệm lần 1
4.3.8. Triển khai ứng dụng
Hình 4.27: Tổng quát hệ thống triển khai lần 1.
4.3.8.1. Tạo API với các mơ hình có tỉ lệ chính xác cao.
Sau khi so sánh kết quả của tất cả mơ hình sau khi đào tạo, ta có thể rút ra được 3 mơ hình có tỷ lệ dự đốn chính xác cao nhất đó là:
• Xception 🥇 91,30%.
• DenseNet201 🥈 87,92%.
• InceptionV3 🥉 86,75%.
Sau khi đã xác định và tạo ra các mơ hình, chúng ta sẽ ứng dụng tạo ra các API tích hợp để sử dụng được cho nhiều nền tảng khác nhau. Để tích hợp ứng dựng phân loại phong cách thiết kế nội thất, chúng ta sẽ tạo một Web Server chứa API Gateway và Web App chịu trách nhiệm phân phối API và đồng thời một website đơn giản dùng để dự đoán phong cách thiết kế nội thất.
Để xây dựng Web Server nhóm đã xây dựng trên nền tảng web tối giản và khơng phụ thuộc nền vào các thư viện bên ngồi. Bên cạnh đó chúng ta có những thư viện đi kèm để sử dụng các mơ hình đã huấn luyện, xử lý ảnh và các nhiệm vụ khác gồm: Keras, Tensorflow, Pillow…
Trang | 94
• Xây dựng các lớp cho từng mơ hình, ở các file: ModelDenseNet201.py, ModelInceptionV3.py, ModelXception.py.
- Áp dụng Singleton Pattern trên mỗi lớp để gọi mơ hình khi gần thiết, giúp tránh phải gọi một phiên bản mới của mơ hình, bởi khi gọi mơ hình mất một khoảng thời gian khá lâu, đồng thời sẽ chiến nhiều dung lượng bộ nhớ khi gọi.
- Có các hàm như sau trên đồng thời các lớp là: Hàm tạo, Hàm có nhiệm vụ nhận lấy đường dẫn đến mơ hình, Hàm tạo ra mơ hình mới có trọng số ban đầu của “imagenet” của Keras và Hàm gọi mơ hình.
• Xây dựng lớp tổng qt: ModelGeneral.py. Có có thuộc tính tinh chỉnh như kích thước ảnh đầu vào, đường dẫn của các mơ hình,…Trong đó có các hàm chức năng như sau: Hàm đọc nhãn để trả về kết quả dự đoán, Hàm gọi lại tạo các mơ hình ban đầu, Hàm chỉ định các trọng số cho mơ hình, Hàm trả về kết quả dự đốn.
• Các file HDF5 chứa thông tin trọng số mơ hình: WeightsDensenet201.h5, WeightsInceptionV3.h5, WeightsXception.h5.
• Cung cấp các API như sau:
- Phương thức GET – “https://<tên miền>/”: Sẽ trả về một giao diện website đơn giản cho phép người dùng sử dụng tải ảnh lên và dự đoán là loại phong cách thiết kế nào. Và website có giao diện như sau:
Trang | 95
Hình 4.28: Giao diện web cho người dùng cuối (sản phẩm quy trình lần 1).
- Phương thức POST – “https://<tên miền>/”: Phương thức sẽ yêu cầu thêm 1 file ảnh. Kết quả trả về là json với các thành phần: Kết quả dự đốn của 3 loại mơ hình và tỷ lệ từng nhãn là bao nhiêu, trạng thái thành công hay thất bại và các nhãn.
Trang | 96
Hình 4.29: Phương thức POST lấy trồn bộ kết quả (API tạo trong quy trình lần 1).
- Phương thức POST – “https://<tên miền>/<tên mơ hình>”: Gần như giống với phườn thức POST lấy toàn bộ kết quả, phương thức này chp phép lấy kết quả của duy nhất 1 mơ hình.
Trang | 97
4.3.8.2. Triển khai API lên Google App Engine.
Bước 1: Truy cập https://console.cloud.google.com/ - Chọn New project. Nhập tên
project và ID, sau đó tiến hành tạo project.
Hình 4.31: Tạo sự án mới trên Google Cloud PlatForm.
Bước 2: Sau khi hoàn thành bước 1, chúng ta tiến hành clone project từ github về
Google Cloud Shell Machine.
Trang | 98
Bước 3: Tạo file cấu hình app.yaml cho App Engine.
Hình 4.33: Tạo file cấu hình để deploy ứng dụng app.yaml.
Bước 4: Mở thư mục gốc chứa file cấu hình và file main.py.
Hình 4.34: Truy cập thư mục gốc để khởi chạy deploy.
Bước 5: Tiến hành deploy lên Google App Engine từ Google Cloud Shell Machine.
Hình 4.35: Deploy ứng dụng.
Sau khi hồn thành các bước trên, ta đã có một Website trực quan có chức
Trang | 99
4.3.8.3. Tạo ứng dụng điện thoại với Flutter.
Khi đã hoàn thành nhiệm vụ cài đặt Web Server trên Google Cloud Platform. Lúc này ta đã có một website đơn giản dùng để phân loại phong cách thiết kế. Nhiệm vụ tiếp theo là ứng dụng thực tế hơn đó là xây dựng một ứng dụng có thể tiếp cận người dùng nhanh nhất có thể đó là chiếc điện thoại thông minh. Để xây dựng ứng dụng trên điện thoại, nhóm đã tìm hiểu về một nền tảng khá mới, bởi nó đã được phát hành cách đây 3 năm, vào tháng 5 năm 2017, là một SDK phát triển ứng dụng di động nguồn mở được tạo ra bởi Google. Nó được sử dụng để phát triển ứng ứng dụng cho Android và iOS, cũng là phương thức chính để tạo ứng dụng cho Google Fuchsia. Nền tảng này có tên là Flutter.
Việc xây dựng một ứng dụng trên một nền tảng khá mới trong một thời gian ngắn là một thách thức khá lớn cho nhóm, nhưng nhóm đã thực hiện được một ứng dụng khá hồn chỉnh và có các đặc tính như bên dưới:
Trang | 100 Ứng dụng có các màn hình chào mừng như sau:
Hình 4.36: Màn hình chào của ứng dụng. Hình 4.37: Màn hình trang chủ của ứng dụng. Hình 4.38: Màn hình kết quả của ứng dụng.
Sau khi mở ứng dụng lên ta sẽ vào được màn hình chính có giao diện như trên.
Màn hình tiếp theo là trang chủ của ứng dụng cho người dùng có các thao tác chọn ảnh từ thư viện hoặc trực tiếp chụp ảnh từ máy ảnh hiện có của điện thoại.
Sau khi nhấn nút “PREDICT” thì ứng dụng sẽ gọi lại API trước đó đã cài đặt và hiển thị kết quả bằng biểu đồ và kết quả dự đoán.
Trang | 101