Trên đây là dự án giữa kì đối với môn học "Nhập môn trí tuệ nhân tạo". Trong dự án này, chúng em thực hiện nhiệm vụ xem xét một ảnh xem đó là ai bằng cách sử dụng mô hình đã được lưu dưới dạng file có đuôi '.pkl'
Thành viên nhóm:
Khuất Đăng Sơn 20002159 (C) (github_link)
Nguyễn Thị Thanh 20002164 (github_link)
Trần Thiên Cường 20002109 (github_link)
Cấu trúc các thư mục:
- UI: Đây là thư mục chứa các file code html, css, javascript dùng để tạo nên giao diện người dùng cũng như liên kết với server được viết bằng Flask
- Model: Đây là thư mục chứa các python notebook cho việc xây dựng nên mô hình cũng như chứa các tập dữ liệu dùng để huấn luyện
- Server: Thư mục chứa file server.py và các file liên quan để tạo nên webserver cũng như chứa model và file json đã được tạo ra từ folder Model
Công nghệ được sử dụng:
- Python: Sử dụng version 3.9
- Numpy: Dùng để thao tác với mảng và các con số
- Pandas: Dùng để visualize các loại bảng cũng như thao tác với các file
- Matplotlib + Opencv: Sử dụng để hiển thị hình ảnh cũng như cắt ghép ảnh vào các folder khác nhau
- sklearn: Phục vụ việc xây dựng mô hình học máy cũng như tìm ra mô hình tốt nhất
- Google Colab: Sử dụng để tiện hơn trong việc xây dựng mô hình
- Vscode: Dùng trong việc code html, css, javascript
Lưu đồ
-
Lưu đồ tổng quan
-
Lưu đồ xây dựng mô hình machine learning
- Mô hình chuẩn dựa trên CRISP-DM (Reference_Link)
Quy trình phát triển
- Bước 1: Data Collecting (Thu thập dữ liệu)
- Bước 2: Data Cleaning (Áp dụng kỹ thuật lọc ảnh haarcascade để nhận diện được khuôn mặt trong từng bức ảnh)
- Bước 3: Feature Engineering (Trích chọn đặc trưng - Áp dụng Wavelet Transform để lọc ra những đặc trưng có ý nghĩa quan trọng để đưa vào việc huần luyện mô hình học máy)
- Bước 4: Build Model (Đầu tiên, thử với svm(Support Vector Machine) sau đó sử dụng GridSearchCV áp dụng với 4 thuật toán học máy (KNN, Random Forest, SVM và Logistic Regression) với các tham số khác nhau để chọn ra được mô hình có điểm số tốt nhất (đáp ứng cả tập train và tập test))
- Bước 5: Build Flask Server (Viết 1 server sử dụng thư viện Flask và đưa mô hình học máy đã được huấn luyện ở trên vào Server đó)
- Bước 6: Build UI (Viết code html, css, javascript để tạo ra giao diện người dùng cũng như là phần front-end để giao tiếp với back-end (Webser đã được tạo ra từ bước trước đó) --> Tạo ra được 1 web hoạt động được ổn định)
Cách thức cài đặt và hoạt động của web app
1. Cách thức cài đặt
1.1. Các gói phần mềm cần cài
-
Để có thể chạy được dự án trước hết chúng ta cần cài python version 3.9 thông qua đường link sau : https://www.python.org/
-
Sau đó đi vào thư mục Model. Ở đó mở git bash (Có thể cài tại đây) lên và gõ câu lệnh sau:
pip install -r requirements.txt
-
Sau khi cài đặt các gói thư viện thành công. Truy cập vào thư mục Server chạy file server.py thông qua câu lệnh sau:
python server.py
Kết quả chạy được:
Starting Python Flask Server for Student Image Classification
loading server artifacts...start
Loading server artifacts...done
* Serving Flask app 'server'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
1.2 Chạy chương trình
-
Sau khi thực hiện các bước như trên thì chúng ta truy cập vào folder UI mở file app.html lên sẽ được kết quả như sau
- Sau khi kéo ảnh vào ô "Drop File here or click to upload" và ấn vào nút classify chúng ta sẽ được kết quả như sau
Kết luận
-> Như vậy trong dự án trên nhóm chúng em đã làm được một ứng dụng khá thú vị khi có sự kết hợp giữa việc kết hợp học máy và tích hợp được vào 1 web app. Mặc dù web app phía trên của chúng em vẫn chưa được hoàn chỉnh, việc nhận diện nhiều lúc vẫn còn nhầm lẫn mặc dù mô hình đưa ra có thể thấy có độ chính xác khá cao nhưng mà đối với việc đưa vào thực tế vẫn chưa được ổn. Thông qua dự án trên chúng em đã có cái nhìn tổng thể hơn về quy trình để từ một mô hình học máy đưa đến tay người dùng khó khăn như thế nào. Không chỉ là việc biết về machine learning cũng như các thuật toán của chúng mà chúng ta còn phải biết tích hợp các công nghệ đưa ra sản phẩm cuối cùng đến tay người dùng.
- Trong tương lai sau khi đã tinh chỉnh xong mọi thứ, trang web đã hoạt động được hoàn hảo thì chúng em cũng tính đến bước cuối cùng đó là đẩy lên cloud, tạo ra 1 web chính thức và đưa được đến tay người dùng.
Tài liệu tham khảo
- Sport Celebrity Image Classification Playlist (author: Code Basic) (https://www.youtube.com/playlist?list=PLeo1K3hjS3uvaRHZLl-jLovIjBP14QTXc)
- Link github (https://github.com/codebasics/py/tree/master/DataScience/CelebrityFaceRecognition)
- What is Fourier Transform (author: 3Blue1Brown) (https://www.youtube.com/watch?v=spUNpyF58BY&t=423s)
- Feature Engineering là gì? (https://viblo.asia/p/feature-engineering-phan-1-vai-tro-cua-feature-engineering-voi-viec-xay-dung-mo-hinh-hoc-may-co-ban-ve-dac-trung-cua-du-lieu-1Je5E420lnL)