CHƯƠNG 4 THỰC NGHIỆM VÀ KẾT QUẢ
4.5. Quy trình thực nghiệm lần 2
4.5.9. Triển khai API
Nhóm đã triển khai API trên 2 nền tảng đó là Flask và FastAP, ta cùng so sánh hai nền tảng này trước khi tiến hành triển khai:
Bảng 4.13: Bảng so sánh hai nền tảng Flask và FastAPI.
Flask FastAPI
Là nền tảng mini dùng để xây dựng web. Bộ khung tối giản dựa trên starlette và pydantic.
Hiệu suất khá tốt nhưng nếu thêm các
chức năng mở rộng có thể giảm hiệu suất Hiệu suất rất cao. Rất linh hoạt trong việc triển khai, không
phụ thuộc vào các bộ cục hay dự án có sẵn
Rất linh hoạt trong khi lập trình, khơng hạn chế người dùng trong một dự án cụ thể.
Được hỗ trợ bởi Flask-RESTful, Flask-
Classful… Cho phép người phát triển xây dựng các REST API nhanh chóng. Bảo mật cao với các phương pháp phổ
biến như CSRF, XSS…
Cung cấp một số công cụ bảo mật trong module fastapi.security
Được phổ biến rộng rãi trên nhiều nền tảng.
Chưa được phổ biến trên nhiều nền tảng nên còn nhiều hạn chế trong việc phát triển ứng dụng.
Nhóm thực mã code với trình tự như sau:
• Tạo một class “Predictor”, khởi tạo các gì trị đường dẫn và các tham số như kích thước ảnh đầu vào.
• Tạo hàm tải ảnh từ url, có thể tham khảo thêm thư viện imageio, thư viên này hỗ trợ ta lấy ảnh từ url.
• Tiếp theo ta sẽ xử lý ảnh với các thư viện Pillow, trong hàm này ta sẽ xử lý ảnh như sau:
- Sử dụng hàm đọc ảnh để tải ảnh về.
- Dùng thư viện Pillow để chuyển ảnh sang dạng mảng sau đó sẽ tiến hành cắt theo khung nhất định. Tùy vào kích thước anh mà ta sẽ xử lý cắt theo (Quy trình thay đổi kích thước ảnh đã đề cập ở mục Tiền xử lý dữ liệu.)
Trang | 146 Thay vì cắt theo bước nhảy ta sẽ dựa vào kích thước của ảnh cụ thể. Ví dụ cho cắt ảnh như sau:
Hình 4.97: Ảnh minh họa muốn dự đốn.
Hình 4.98: Ảnh mình họa muốn dự đốn sau khi thay đổi kích thước.
Trang | 147
• Sau khi có những ảnh đã cắt ta bắt đầu bình thường hóa (normalization) đưa giá trị của ảnh từ [0, 1].
• Xây dựng hàm để dự đốn trên tập có số lượng ảnh cần dự đốn.
• Xây dựng hàm Soft voting để sử dụng phương pháp biểu quyết tổng hợp cải thiện hiệu suất dự đốn kết quả.
Hình 4.100: Mơ hình hoạt động của API.
Nhóm đã thực hiện API trên cả hai nền tả là Flask và FastAPI. Và được triển khai hosting trên các nền tả và có các đặc điểm sau:
Trang | 148
• Nếu triển khai trên máy tính cục bộ cả hai nền tảng đều có tốc độ chạy rất nhanh và đối với nền tảng FastAPI có hỗ trợ cơ chế bất đồng độ nên có phần nhỉnh hơn về mặt tốc độ.
• Một số nền tảng đã thử nghiệm API:
Bảng 4.14: Bảng thực nghiệm so sánh độ hiệu năng API trên các nền tảng.
Nền tảng Flask FastAPI
Local Computer Hoạt động tốt. Hoạt động tốt.
Heroku Hoạt động tốt.
(giới hạn về bộ nhớ)
Hoạt động tốt. (giới hạn về bộ nhớ) PythonAnyWhere Hoạt động tốt
(giới hạn về bộ nhớ) Chưa thực nghiệm. Google App Engine Hoạt động khá tốt. Không hoạt động. Google Compute Engine
(VPS)
Hoạt động tốt nhất.
(Sử dụng IIS) Chưa thực nghiệm.
Sử dụng phương án sử dụng VPS (máy ảo gần với môi trường như máy
Trang | 149