Demo project nhận diện tên cây cảnh bằng AI

Trong bối cảnh công nghệ trí tuệ nhân tạo phát triển mạnh mẽ, việc ứng dụng AI vào đời sống hằng ngày đã trở nên phổ biến hơn bao giờ hết. Một trong những lĩnh vực được quan tâm nhiều là nông nghiệp và cây cảnh – nơi việc nhận diện đúng loại cây, giống cây đóng vai trò vô cùng quan trọng cho chăm sóc, nuôi trồng và thương mại hóa. Xuất phát từ nhu cầu đó, dự án “Hệ thống nhận diện cây cảnh bằng AI chạy Local sử dụng Flask” được xây dựng như một demo kỹ thuật nhằm kiểm chứng khả năng nhận diện hình ảnh bằng mô hình học sâu (Deep Learning).

Mặc dù ở giai đoạn hiện tại dự án mới dừng lại ở chức năng nhận diện tên các loại cây cảnh dựa trên ảnh chụp, chưa tích hợp phần tư vấn cách trồng hay chăm sóc, nhưng mô hình đã hoàn thiện đủ mức để chạy được trên máy tính cá nhân (Local) thông qua giao diện web đơn giản dựa trên Flask. Dự án đóng vai trò như một thử nghiệm thực tế cho việc áp dụng AI vào phân loại hình ảnh, giúp người dùng nắm bắt quy trình triển khai một sản phẩm AI hoàn chỉnh từ huấn luyện mô hình cho đến xây dựng ứng dụng web dùng được.


Video demo nhận diện tên cây cảnh bằng AI

Mục tiêu của dự án

Mục tiêu tổng quan

Mục tiêu chính của dự án là xây dựng một ứng dụng AI đơn giản có khả năng:

  • Nhận ảnh từ người dùng (qua trình duyệt web)

  • Xử lý ảnh bằng TensorFlow / Keras

  • Dự đoán và trả về tên loại cây cảnh trong ảnh

  • Chạy hoàn toàn trên máy tính cá nhân mà không phụ thuộc máy chủ cloud

Dự án được xây dựng với tiêu chí:

  • Nhẹ, dễ cài đặt

  • Hiểu được quy trình AI từ A tới Z

  • Có thể mở rộng, nâng cấp sau

Giới hạn của dự án

Vì đây chỉ là phiên bản demo kỹ thuật nên hệ thống chưa tích hợp:

  • Thông tin hướng dẫn tưới nước

  • Thông tin chăm sóc từng loại cây

  • Phân tích bệnh, sâu hại

  • Gợi ý phân bón

Hệ thống ở mức đáp ứng chức năng cốt lõi: nhận diện loại cây cảnh từ ảnh.


Cấu trúc hệ thống và kiến trúc tổng thể

Hệ thống được xây dựng theo mô hình 3 lớp đơn giản:

  1. Frontend (Giao diện web) – HTML đơn giản

  2. Backend API – Flask phục vụ dự đoán

  3. Model AI – mô hình Keras đã được huấn luyện

Cấu trúc thư mục

Mặc dù dự án chưa hoàn thiện đủ dữ liệu để tạo mô hình, cấu trúc thư mục được thiết kế sẵn nhằm chuẩn hóa quy trình:
  • app.py: ứng dụng Flask xử lý request

  • utils.py: hàm load model và dự đoán

  • plant_model.h5: mô hình AI đã huấn luyện

  • wrong_predictions/: thư mục lưu ảnh tạm

Kiến trúc này đảm bảo khả năng mở rộng dễ dàng trong tương lai.


Quy trình xây dựng mô hình AI nhận diện cây

Thu thập dữ liệu hình ảnh

Để huấn luyện mô hình nhận diện cây cảnh, cần một tập dữ liệu đủ lớn và đa dạng. Các nguồn phổ biến:

  • Các bộ dataset công khai trên Kaggle

  • Ảnh tự thu thập

  • Ảnh chụp thực tế trong môi trường nhiều ánh sáng khác nhau

Mỗi loại cây đại diện cho một class trong bài toán classification.

Tiền xử lý dữ liệu

Dữ liệu hình ảnh được chuẩn hóa theo quy trình:

  • Resize về kích thước cố định: 224×224

  • Chuyển đổi giá trị pixel về dạng 0–1

  • Augmentation (nếu cần):

    • Xoay, lật, tăng giảm sáng

    • Tăng độ đa dạng của dữ liệu

Chọn mô hình học sâu

Vì mục tiêu là demo chạy Local nên mô hình ưu tiên:

  • Nhẹ

  • Tốc độ nhanh

  • Dễ triển khai

Các mô hình phù hợp:

  • MobileNetV2

  • EfficientNetB0

  • ResNet50 (nhưng nặng và chậm hơn)

Thông thường dùng MobileNetV2 để cân bằng tốc độ và độ chính xác.

Huấn luyện mô hình

Huấn luyện mô hình bằng Keras:

  • Optimizer: Adam

  • Loss: Categorical Crossentropy

  • Epoch: từ 20–50 tuỳ dữ liệu

Sau khi training xong, mô hình được lưu lại thành:

plant_model.h5

Đây chính là file mà Flask sẽ load lên để sử dụng khi người dùng upload ảnh.


Xây dựng Web Flask chạy Local

Chức năng chính

  • Giao diện web cho phép upload ảnh

  • Gửi ảnh tới API /identify

  • API xử lý ảnh, đưa vào model

  • Trả về kết quả dự đoán tên cây

Luồng hoạt động

  1. Người dùng mở trình duyệt → vào đường dẫn http://127.0.0.1:7860

  2. Upload một file ảnh

  3. Flask nhận ảnh → lưu tạm

  4. Gọi hàm predict_plant() để phân loại

  5. Backend trả kết quả

  6. Giao diện hiển thị tên loại cây

Dù đơn giản nhưng quy trình này mô phỏng đầy đủ cách một hệ thống AI hoạt động trong môi trường thực tế.


Chi tiết về file app.py

Ứng dụng Flask được thiết kế:

  • Nhỏ gọn

  • Dễ hiểu

  • Có 2 endpoint chính:

    • / → Trang upload

    • /identify → API nhận diện

Điều này giúp tách biệt UI và logic xử lý AI.


Chi tiết file utils.py

utils.py chịu trách nhiệm:

  • Load mô hình .h5 vào RAM

  • Tiền xử lý hình ảnh

  • Chạy model.predict

  • Trả về kết quả

Việc tách riêng file giúp:

  • Backend nhẹ, dễ bảo trì

  • Có thể thay model mới mà không sửa nhiều code


Đánh giá dự án hiện tại

Điểm mạnh của dự án

✔ Chạy Local, không cần internet

Toàn bộ mô hình AI, xử lý ảnh, server Flask đều chạy trong máy cá nhân, không phụ thuộc cloud.

✔ Dễ triển khai và học theo

Quy trình đơn giản nhưng đầy đủ:

  • Tạo model

  • Load model

  • API Flask

  • Upload file

  • Predict

Đây là cấu trúc mà 90% các dự án AI thực tế sử dụng.

✔ Có thể mở rộng

Dự án dễ nâng cấp:

  • Thêm nhiều loại cây

  • Nâng cấp lên API REST chuẩn

  • Kết nối giao diện React hoặc Flutter

  • Gộp nhiều module AI khác nhau

Hạn chế của phiên bản hiện tại

❌ Chưa có hướng dẫn tưới nước, chăm sóc

Hệ thống chỉ đoán tên cây chứ chưa đưa ra thông tin chăm sóc.

❌ Chưa tối ưu tốc độ load model

Mỗi lần khởi động Flask phải load lại model từ file .h5.

❌ Giao diện đơn giản

Chỉ có form upload ảnh, chưa có UI đẹp hay mobile-friendly.


Định hướng phát triển tương lai

1. Tích hợp hướng dẫn chăm sóc

Sau khi nhận diện được cây, hệ thống có thể:

  • Gợi ý tần suất tưới nước

  • Điều kiện ánh sáng

  • Nhiệt độ

  • Loại phân bón phù hợp

Dữ liệu có thể lưu trong:

  • JSON

  • MySQL

  • Firestore

2. Xây dựng cơ sở dữ liệu bệnh cây

Người dùng có thể upload ảnh lá bệnh, AI phân tích:

  • Vàng lá

  • Đốm nâu

  • Thối rễ

  • Thiếu ánh sáng

3. Chuyển sang mobile app

Có thể tích hợp:

  • Flutter

  • React Native

  • AI on-device (TensorFlow Lite)

4. Tối ưu mô hình

  • Convert .h5 sang .tflite giúp chạy nhanh gấp 5 lần

  • Giảm kích thước bằng quantization

5. Triển khai lên server thật

Dùng:

  • VPS

  • Docker

  • Nginx reverse proxy

Ứng dụng lúc đó có thể phục vụ hàng trăm người dùng.


Kết luận

Dự án “Hệ thống nhận diện cây cảnh bằng AI chạy Local với Flask” là một bước thử nghiệm quan trọng giúp hiểu rõ quy trình:

  • Thu thập và chuẩn hóa dữ liệu hình ảnh

  • Huấn luyện mô hình Deep Learning

  • Lưu và triển khai mô hình

  • Xây dựng API nhận diện ảnh

  • Tạo giao diện web đơn giản để demo

Mặc dù dự án ở thời điểm hiện tại mới dừng lại ở khả năng nhận diện tên cây cảnh, chưa bao gồm phần hướng dẫn chăm sóc, nhưng đã thể hiện đầy đủ quy trình xây dựng một sản phẩm AI hoàn chỉnh ở mức cơ bản. Nhờ chạy hoàn toàn Local, dự án phù hợp cho sinh viên, người học AI hoặc các doanh nghiệp nhỏ muốn thử nghiệm công nghệ trí tuệ nhân tạo trước khi xây dựng hệ thống lớn.

Be the first to comment

Leave a Reply

Your email address will not be published.


*