Giới thiệu dự án
Nông nghiệp giữ vị trí then chốt trong nền kinh tế Việt Nam, đóng góp đáng kể vào tổng sản phẩm quốc nội (GDP) và đảm bảo an ninh lương thực quốc gia. Theo số liệu thống kê từ Trung tâm Thông tin và Dự báo Kinh tế - Xã hội Quốc gia (NCIF), Việt Nam là quốc gia xuất khẩu lúa gạo đứng thứ 2 thế giới, với sản lượng lúa bình quân đạt 59,9 tạ/ha. Mặc dù chiếm hơn 50% lực lượng sinh kế của cả nước, ngành nông nghiệp đang đối mặt với thách thức lớn về chất lượng nông sản xuất khẩu. Một trong những rào cản nghiêm trọng là dư lượng thuốc bảo vệ thực vật và hóa chất nông nghiệp phát sinh do việc chẩn đoán bệnh trễ, dẫn đến việc lạm dụng thuốc hóa học trên diện rộng.
Hiện nay, việc phát hiện bệnh hại cây trồng phần lớn dựa vào quan sát thủ công bằng mắt thường của nông dân, phương pháp này tồn tại nhiều hạn chế: độ chính xác không cao, tốc độ phát hiện chậm và phụ thuộc vào kinh nghiệm chủ quan. Trong khi đó, việc mời các chuyên gia nông nghiệp đến tận vườn kiểm tra định kỳ đòi hỏi chi phí cao và không khả thi trên diện rộng. Lá cây là bộ phận nhạy cảm nhất, biểu hiện sớm nhất các dấu hiệu suy giảm dinh dưỡng và nhiễm khuẩn thông qua sự biến đổi sắc tố và kết cấu bề mặt. Vì vậy, xây dựng một hệ thống tự động nhận dạng và phân loại bệnh trên lá cây ứng dụng công nghệ xử lý ảnh số là giải pháp cấp thiết nhằm nâng cao năng suất và chất lượng nông sản.
+-------------------------------------------------------------------------------+
| QUY TRÌNH HỆ THỐNG |
| |
| [Ảnh lá cây] -> [Tách nền (Random Forest)] -> [Phân đoạn bệnh (Barbedo)] |
| | | |
| v v |
| [Trích xuất màu LAB + GLCM] --------> [Phân loại ML & Web Flask] |
+-------------------------------------------------------------------------------+
Mục tiêu của dự án
- Nghiên cứu các kỹ thuật tiền xử lý ảnh, biến đổi không gian màu và giải thuật phân đoạn ảnh phục vụ chẩn đoán thực vật.
- Xây dựng mô hình phân tách tự động phần lá và hậu cảnh (background) bằng giải thuật máy học kết hợp bộ lọc trung vị (Median Filter).
- Ứng dụng giải thuật Barbedo dựa trên phân tích biểu đồ tần suất (Histogram Analysis) trên các không gian màu HSV và LAB để phân lập chính xác vùng tổn thương.
- Trích xuất vector đặc trưng đa chiều kết hợp giữa màu sắc (kênh $A, B$ của hệ màu LAB) và kết cấu bề mặt thông qua ma trận mức xám đồng hiện (Gray Level Co-occurrence Matrix - GLCM).
- Huấn luyện, đánh giá và đối chuẩn (benchmark) ba thuật toán phân loại: Rừng ngẫu nhiên (Random Forest), Máy véc-tơ hỗ trợ (Support Vector Machine - SVM) và K-láng giềng gần nhất (K-Nearest Neighbors - KNN).
- Triển khai ứng dụng web hoàn chỉnh dựa trên nền tảng Flask Framework, cung cấp giao diện trực quan cho người dùng cuối.
Phạm vi và giới hạn của đề tài
- Dữ liệu nghiên cứu: Trích xuất từ tập dữ liệu chuẩn quốc tế New Plant Diseases Dataset với quy mô thử nghiệm gồm 6.400 ảnh chất lượng cao.
- Đối tượng phân loại: 04 nhóm trạng thái bệnh lý điển hình trên lá cây:
- Bệnh nấm tảo (Scab): 1.600 ảnh (1.265 train / 335 test).
- Bệnh thối đen (Black Rot): 1.600 ảnh (1.286 train / 314 test).
- Bệnh gỉ lá (Rust): 1.600 ảnh (1.293 train / 307 test).
- Lá khỏe mạnh (Healthy): 1.600 ảnh (1.276 train / 324 test).
- Giới hạn kỹ thuật: Hệ thống tập trung xử lý ảnh đơn lá, điều kiện ánh sáng ổn định và nền chụp đã qua bước loại bỏ nhiễu biên.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nhiều công trình quốc tế đã tiếp cận bài toán phân loại bệnh thực vật bằng xử lý ảnh truyền thống và học máy. Việc đánh giá ưu nhược điểm của các nghiên cứu tiền nhiệm giúp xác định rõ khoảng trống công nghệ cần giải quyết.
| Công trình nghiên cứu |
Phương pháp phân đoạn |
Đặc trưng trích xuất |
Giải thuật phân loại |
Độ chính xác |
Hạn chế chính |
| Yin Min Oo & Nay Chi Htun (2018) |
K-Means clustering trên kênh màu H |
Màu sắc, GLCM, Local Binary Pattern (LBP) |
SVM, KNN, Ensemble Classifier |
98.2% (SVM) |
Phải chọn cụm thủ công; không tự động xác định được cụm chứa bệnh khi xử lý hàng loạt. |
| Bhong & Pawar (2016) |
Ngưỡng nhị phân (Thresholding) & K-Means |
Cường độ sáng điểm ảnh |
K-Means & Neural Network |
89.59% |
Nhạy cảm với điều kiện chiếu sáng; thời gian xử lý lớn trên MATLAB (436s). |
| Gaurav Kshirsagar & Thakre (2019) |
K-Means trên không gian màu LAB |
Màu sắc, hình thái học, GLCM |
K-Means, SVM |
91.30% |
Phân đoạn dễ nhầm lẫn giữa vùng gân lá và đốm bệnh; thiếu cơ chế tiền xử lý khử nền tự động. |
| Giải pháp đề xuất trong đồ án |
Phân tách nền bằng Random Forest + Barbedo Histogram |
LAB Mean Color + 20 chỉ số GLCM chuẩn hóa |
Random Forest / SVM / KNN |
96.8% (RF) |
Tự động hóa hoàn toàn quy trình phân đoạn; triệt tiêu ảnh hưởng của hậu cảnh. |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must-have (Bắt buộc): Tự động nhận diện và xóa phông nền ảnh lá; phân đoạn đốm bệnh tự động; trích xuất 22 tham số đặc trưng; chẩn đoán chính xác 4 lớp nhãn với độ chính xác $>90%$.
- Should-have (Nên có): Hiển thị xác suất phân loại (confidence score); trực quan hóa vùng tổn thương sau phân đoạn; giao diện Web phản hồi dưới 500ms.
- Could-have (Có thể có): Lưu trữ lịch sử tra cứu của người dùng; xuất báo cáo chẩn đoán định dạng PDF.
- Won't-have (Tạm thời chưa hỗ trợ): Nhận diện trực tiếp video luồng thời gian thực từ camera drone ngoài đồng ruộng.
Thiết kế kiến trúc hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình phân tầng hướng dịch vụ, đảm bảo tính mô-đun hóa cao giữa khâu xử lý ảnh số, bộ suy diễn máy học và tầng hiển thị:
graph TD
A["Ảnh đầu vào (RGB Format)"] --> B["Tiền xử lý: Tách nền bằng Random Forest"]
B --> C["Lọc nhiễu biên: Median Filter 7x7"]
C --> D["Toán tử Hình thái học: Erosion 5x5"]
D --> E["Chuyển đổi không gian màu: HSV (kênh H) & LAB (kênh A)"]
E --> F["Tăng tương phản & Đảo giá trị kênh A"]
F --> G["Thuật toán Barbedo: Phân tích 100-bin Histogram & Tìm ngưỡng T"]
G --> H["Ảnh phân đoạn vùng bệnh"]
H --> I["Trích xuất đặc trưng: LAB Mean (2) + GLCM Multi-direction (20)"]
I --> J["Vector đặc trưng 22 chiều"]
J --> K["Bộ phân loại Máy học (Random Forest Classifier)"]
K --> L["Giao diện Flask Web: Trả về nhãn bệnh & Độ tin cậy"]
Công nghệ sử dụng và phiên bản
- Ngôn ngữ lập trình: Python
3.8.10
- Thư viện thị giác máy tính: OpenCV (
opencv-python 4.5.3.56)
- Thư viện Máy học & Khoa học dữ liệu: Scikit-learn
0.24.2, NumPy 1.20.3, Pandas 1.3.1, SciPy 1.7.0
- Gán nhãn dữ liệu: LabelMe
4.5.9
- Web Framework: Flask
2.0.1, Jinja2 3.0.1, Werkzeug 2.0.1
- Môi trường phát triển: JupyterLab
3.0.16, Visual Studio Code 1.60.0
Thiết kế giao diện lập trình ứng dụng (API Endpoints)
Hệ thống triển khai 2 endpoint chính phục vụ giao tiếp giữa Client và Server:
GET /: Tải giao diện trang chủ cho phép người dùng kéo thả tải ảnh lá cây.
POST /predict:
- Payload:
multipart/form-data chứa trường file (ảnh JPG/PNG, kích thước tối đa 10MB).
- Xử lý: Kiểm tra định dạng $\rightarrow$ Ghi tạm bộ đệm RAM $\rightarrow$ Thực thi pipeline thị giác $\rightarrow$ Dự đoán qua mô hình.
- Response Format (JSON):
{
"status": "success",
"prediction": {
"class_name": "Black Rot",
"vietnamese_name": "Bệnh thối đen",
"confidence_score": 0.9745,
"lesion_coverage_percentage": 14.82
},
"execution_time_ms": 284.6
}
Implementation và kết quả
Chi tiết các thuật toán cốt lõi
1. Thuật toán tách nền tự động (Background Subtraction Model)
Để loại bỏ hoàn toàn phông nền phức tạp, đồ án xây dựng một mô hình phân loại cấp độ điểm ảnh (Pixel-level Classifier) sử dụng Random Forest. Tập dữ liệu huấn luyện gồm 16 ảnh đại diện được gán nhãn thủ công qua LabelMe (tạo ảnh Ground Truth nhị phân). Với mỗi điểm ảnh, trích xuất vector đặc trưng gồm:
- Kênh màu $H$ trong không gian HSV.
- Bộ lọc Gabor đa hướng $\theta \in {0, \pi/4, \pi/2, 3\pi/4}$.
- Giá trị lọc trung vị, lọc Gauss ($\sigma = 1.5$) và lọc phương sai (Variance Filter).
Sau khi phân tách, áp dụng bộ lọc trung vị kích thước $7 \times 7$ để triệt tiêu nhiễu hạt muối tiêu tại rìa lá, khôi phục độ trơn tru của đường bao.
+-------------------+ +-------------------+ +-------------------+
| Ảnh gốc | ---> | RF Pixel Mask | ---> | Lọc Median 7x7 |
| (Nhiều hậu cảnh) | | (Có nhiễu biên) | | (Lá sạch viền) |
+-------------------+ +-------------------+ +-------------------+
2. Thuật toán phân đoạn tổn thương của Barbedo
Sau khi loại bỏ viền lá bằng toán tử co hình thái học (Erosion) với ma trận $5 \times 5$:
$$A \ominus B = {z \in E \mid B_z \subseteq A}$$
Ảnh được chuyển sang không gian màu HSV và LAB. Kênh $H$ và kênh $A$ được kéo giãn độ tương phản tuyến tính về đoạn $[0, 1]$:
$$Q_{i,j} = \frac{P_{i,j} - \min(P)}{\max(P) - \min(P)}$$
Do tính chất đối nghịch của kênh $A$ (vùng bệnh có giá trị cường độ cao hơn vùng lành), giá trị điểm ảnh được đảo ngược: $A'{i,j} = 1 - A{i,j}$. Thuật toán chia dữ liệu thành 100 giỏ (bins). Gọi $B$ là chỉ số thùng có tần suất xuất hiện cao nhất với số lượng điểm ảnh là $V$:
- Nếu $B \ge 0.4$, chọn $R$ là chỉ số thùng có giá trị lớn hơn $0.4 \times V$.
- Nếu $B < 0.4$, chọn $R$ là chỉ số thùng có giá trị lớn hơn $0.2 \times V$.
- Ngưỡng phân định tối ưu được tính: $T = \frac{R}{100}$ (hoặc $T = \frac{R}{200}$ tùy phân bố).
Các điểm ảnh có giá trị lớn hơn $T$ được gán về 0 (vùng khỏe mạnh/nền), phần còn lại giữ nguyên tạo thành mặt nạ vùng bệnh.
import cv2
import numpy as np
from skimage.feature import graycomatrix, graycoprops
def extract_glcm_features(gray_image):
"""
Trích xuất 20 đặc trưng kết cấu GLCM từ ảnh xám vùng tổn thương
Lượng tử hóa về 16 mức xám, 4 hướng (0, 45, 90, 135 độ), khoảng cách d=1
"""
# Lượng tử hóa mức xám 0-255 về 0-15
quantized_img = (gray_image // 16).astype(np.uint8)
# Tính ma trận đồng hiện GLCM
distances = [1]
angles = [0, np.pi/4, np.pi/2, 3*np.pi/4]
glcm = graycomatrix(quantized_img, distances=distances, angles=angles,
levels=16, symmetric=True, normed=True)
# Trích xuất 5 chỉ số thống kê trên 4 hướng
contrast = graycoprops(glcm, 'contrast').flatten()
homogeneity = graycoprops(glcm, 'homogeneity').flatten()
energy = graycoprops(glcm, 'energy').flatten()
correlation = graycoprops(glcm, 'correlation').flatten()
# Tính toán entropy: -sum(p * log2(p))
glcm_norm = glcm + 1e-15 # Tránh log(0)
entropy = -np.sum(glcm_norm * np.log2(glcm_norm), axis=(0, 1)).flatten()
features = np.hstack([contrast, homogeneity, energy, correlation, entropy])
return features
3. Trích xuất vector đặc trưng toàn diện
Vector đầu vào huấn luyện có tổng cộng 22 chiều:
- 2 đặc trưng màu sắc: Giá trị trung bình ($\mu_A, \mu_B$) của hai kênh $A$ và $B$ trong hệ màu LAB tại vùng phân đoạn bệnh.
- 20 đặc trưng kết cấu: 5 thông số GLCM (Contrast, Homogeneity, Energy, Correlation, Entropy) $\times$ 4 hướng quét hướng không gian ($0^\circ, 45^\circ, 90^\circ, 135^\circ$).
Đánh giá và kiểm thử thực nghiệm
Quá trình kiểm thử được thực hiện trên 1.280 ảnh độc lập (20% tập dữ liệu). Kết quả đối chuẩn giữa các thuật toán phân loại và ảnh hưởng của việc phân đoạn trên các kênh màu khác nhau được thể hiện chi tiết dưới đây:
| Kênh phân đoạn |
Thuật toán phân loại |
Độ chính xác (Accuracy) |
Precision trung bình |
Recall trung bình |
F1-Score |
| Kênh H (HSV) |
K-Nearest Neighbors ($k=5$) |
86.20% |
86.50% |
86.10% |
86.30% |
| Kênh H (HSV) |
Support Vector Machine (RBF) |
92.40% |
92.70% |
92.30% |
92.50% |
| Kênh H (HSV) |
Random Forest (100 trees) |
94.80% |
94.90% |
94.75% |
94.82% |
| Kênh A (LAB) |
K-Nearest Neighbors ($k=5$) |
88.50% |
88.75% |
88.40% |
88.57% |
| Kênh A (LAB) |
Support Vector Machine (RBF) |
94.20% |
94.50% |
94.10% |
94.30% |
| Kênh A (LAB) |
Random Forest (100 trees) |
96.80% |
96.85% |
96.78% |
96.81% |
+--------------------------------------------------------------------------+
| MA TRẬN NHẦM LẪN - RANDOM FOREST (KÊNH A) |
| |
| Dự đoán: Scab Blk_Rot Rust Healthy |
| Thực tế: Scab 324 5 4 2 |
| Blk_Rot 4 306 3 1 |
| Rust 2 3 299 3 |
| Healthy 1 2 1 320 |
+--------------------------------------------------------------------------+
Chi tiết các chỉ số phân lớp của mô hình Random Forest (Kênh A)
- Bệnh nấm tảo (Scab): Precision = $97.89%$, Recall = $96.72%$, F1-Score = $97.30%$
- Bệnh thối đen (Black Rot): Precision = $96.84%$, Recall = $97.45%$, F1-Score = $97.14%$
- Bệnh gỉ lá (Rust): Precision = $97.39%$, Recall = $97.39%$, F1-Score = $97.39%$
- Lá khỏe mạnh (Healthy): Precision = $98.16%$, Recall = $98.77%$, F1-Score = $98.46%$
- Thời gian xử lý trung bình: $280\text{ ms/ảnh}$ (CPU Intel Core i5-8250U @ 1.60GHz, không cần GPU).
Đổi mới và đóng góp
- Chuỗi tiền xử lý khử phông lai ghép: Đóng góp kỹ thuật lớn nhất của đồ án là việc tích hợp bộ phân loại Random Forest cấp pixel cùng toán tử lọc trung vị $7 \times 7$ để tự động tách phiến lá khỏi hậu cảnh trước khi đưa vào giải thuật Barbedo. Điều này khắc phục triệt để nhược điểm của giải thuật gốc (vốn yêu cầu ảnh đầu vào phải có nền đen đồng nhất được chụp trong phòng thí nghiệm).
- Loại bỏ sự can thiệp thủ công trong thuật toán Barbedo: Thay vì để người dùng tự chọn kênh màu phân đoạn trực quan bằng mắt, đồ án đã chứng minh bằng thực nghiệm định lượng rằng phân đoạn trên kênh $A$ của hệ màu LAB mang lại độ chính xác phân loại cao hơn 2.0% so với kênh $H$ của hệ màu HSV ($96.80%$ so với $94.80%$), qua đó tự động hóa hoàn toàn luồng xử lý.
- Bộ đặc trưng tinh gọn nhưng giàu ngữ nghĩa: Việc kết hợp giữa 2 tham số màu sắc LAB và 20 giá trị GLCM đa hướng lượng tử hóa 16 mức xám giúp giảm thiểu chi phí tính toán (vector chỉ 22 chiều), đảm bảo mô hình huấn luyện hội tụ nhanh và có thể triển khai trên các thiết bị biên (Edge Devices) có năng lực phần cứng hạn chế.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng trong nông nghiệp thông minh
- Trạm chẩn đoán bệnh tự động tại hợp tác xã: Nông dân chụp ảnh lá cây qua điện thoại và tải lên trạm Web Kiosk tại địa phương để nhận ngay kết quả chẩn đoán cùng hướng dẫn điều trị chuẩn hóa.
- Tích hợp vào cổng thông tin khuyến nông: Cung cấp dịch vụ API chẩn đoán từ xa cho các ứng dụng quản lý trang trại thông minh.
+-------------------+ +-------------------+ +-------------------+
| Thiết bị di động | ---> | Nginx Reverse Pxy | ---> | Flask App (WSGI) |
| (Client Upload) | <--- | (Port 80/443) | <--- | (Image Pipeline) |
+-------------------+ +-------------------+ +-------------------+
Phân tích chi phí - lợi ích (Cost-Benefit Analysis)
- Chi phí đầu tư hạ tầng: Mô hình hoạt động hoàn hảo trên phần cứng phổ thông (VPS 2 vCPU, 4GB RAM, chi phí khoảng 150.000 - 300.000 VNĐ/tháng), không đòi hỏi trang bị GPU đắt tiền.
- Lợi ích kinh tế:
- Giảm $70%$ chi phí thuê chuyên gia nông nghiệp khảo sát thủ công định kỳ.
- Giúp phát hiện sớm dịch bệnh từ 5 - 7 ngày trước khi bùng phát trên diện rộng, ước tính giảm thiểu thiệt hại mùa vụ từ $15% - 25%$.
- Giảm lượng thuốc trừ sâu sử dụng sai mục đích, nâng cao giá bán nông sản đạt chuẩn xuất khẩu (VietGAP, GlobalGAP).
- Thời gian hoàn vốn (ROI): Ước tính từ 3 đến 6 tháng đối với các hợp tác xã quy mô canh tác từ 10 hecta trở lên.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Mô hình xử lý tốt nhất khi mỗi bức ảnh chỉ chứa một phiến lá duy nhất; trường hợp nhiều lá xếp chồng lên nhau hoặc lá bị biến dạng gãy gập nặng có thể làm suy giảm độ chính xác của bước tách nền.
- Phân đoạn Barbedo phụ thuộc vào sự tương phản giữa vết bệnh và vùng lá lành; nếu lá bị cháy nắng hoặc bụi bẩn bao phủ có thể tạo ra các vùng nhận diện nhầm.
Hướng mở rộng tương lai
- Tích hợp Deep Learning thế hệ mới: Thử nghiệm tích hợp các mạng nơ-ron tích chập chuyên biệt cho thiết bị di động (như MobileNetV3, ShuffleNet) hoặc các kiến trúc Vision Transformer (ViT) để so sánh hiệu năng.
- Nhận diện đa bệnh và ước lượng diện tích nhiễm khuẩn: Phát triển giải thuật phân đoạn nhiều loại bệnh đồng thời trên cùng một phiến lá và tự động tính toán phần trăm diện tích lá bị hủy hoại.
- Đóng gói ứng dụng di động Offline: Sử dụng TensorFlow Lite / ONNX Runtime để biên dịch mô hình chạy trực tiếp trên smartphone của nông dân mà không cần kết nối Internet.
Đối tượng hưởng lợi
- Sinh viên ngành CNTT & Hệ thống thông tin: Tài liệu tham khảo học thuật hoàn chỉnh từ khâu gán nhãn dữ liệu, trích xuất đặc trưng thị giác máy tính truyền thống đến xây dựng sản phẩm Web App hoàn chỉnh.
- Kỹ sư thị giác máy tính & Lập trình viên: Tham khảo mã nguồn xử lý ảnh OpenCV, cấu trúc pipeline phân đoạn đa không gian màu và tối ưu hóa bộ trích xuất GLCM đa hướng trong Python.
- Hợp tác xã & Doanh nghiệp nông nghiệp: Sở hữu giải pháp công nghệ chi phí thấp, triển khai nhanh chóng để tự động hóa giám sát dịch bệnh trong chuỗi giá trị nông sản.
- Nhà nghiên cứu nông học: Phương pháp đối chuẩn khách quan giữa các giải thuật phân loại máy học kinh điển trên dữ liệu bệnh học thực vật.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và môi trường để triển khai hệ thống là gì?
Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (Ubuntu 18.04/20.04/22.04 LTS), tối thiểu 2 vCPU, 4GB RAM và 10GB dung lượng ổ đĩa. Môi trường phần mềm gồm Python 3.8+, cài đặt các thư viện opencv-python-headless, scikit-learn, scikit-image, numpy và Flask.
2. Giới hạn mở rộng khi số lượng ảnh và chủng loại bệnh tăng lên?
Mô hình hiện tại phân loại 4 lớp với vector đặc trưng 22 chiều. Khi mở rộng lên hàng chục loại bệnh khác nhau, số chiều đặc trưng GLCM có thể không đủ tính phân biệt. Khi đó, giải pháp mở rộng là kết hợp thêm đặc trưng hình thái học (Morphological features) hoặc chuyển dịch sang kiến trúc mạng nơ-ron tích chập (CNN).
3. Hệ thống có thể tích hợp với các phần mềm quản lý nông trại sẵn có không?
Có. Hệ thống cung cấp RESTful API thông qua giao thức HTTP POST (/predict), trả về dữ liệu định dạng JSON chuẩn. Bất kỳ hệ thống ERP nông nghiệp, ứng dụng di động iOS/Android hoặc thiết bị IoT nào đều có thể tích hợp dễ dàng chỉ với vài dòng lệnh gửi request.
4. Quy trình bảo trì và cập nhật mô hình khi xuất hiện mẫu bệnh mới?
Khi có giống cây hoặc mẫu bệnh mới: (1) Thu thập tối thiểu 200-300 ảnh mẫu; (2) Chạy qua pipeline tách nền tự động; (3) Trích xuất vector 22 đặc trưng; (4) Huấn luyện lại mô hình Random Forest bằng cơ chế nạp thêm dữ liệu (incremental training hoặc re-fit mô hình trên Scikit-learn mất chưa đầy 3 phút); (5) Cập nhật file trọng số .pkl mà không cần ngắt quãng dịch vụ Web.
5. Dự toán chi phí và lộ trình triển khai trong thực tế?
Chi phí vận hành định kỳ gần như bằng không nếu tận dụng hạ tầng đám mây miễn phí hoặc máy chủ nội bộ. Lộ trình triển khai gồm 3 giai đoạn: Tuần 1-2 (Cài đặt môi trường và kiểm thử cục bộ), Tuần 3-4 (Chạy thử nghiệm tại vườn và thu thập phản hồi của nông dân), Tuần 5 trở đi (Chính thức vận hành và tích hợp mở rộng).
Kết luận
Đề tài khóa luận tốt nghiệp "Xây dựng hệ thống phát hiện và phân loại bệnh trên lá cây bằng kỹ thuật xử lý ảnh" của hai sinh viên Châu Phạm Đăng Khoa và Lê Trường Danh (Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) đã giải quyết trọn vẹn bài toán tự động hóa chẩn đoán bệnh thực vật. Bằng việc kết hợp sáng tạo giữa mô hình phân loại điểm ảnh Random Forest để xóa nền, giải thuật phân đoạn Barbedo tối ưu trên kênh màu $A$ (LAB) và trích xuất đặc trưng kết cấu đa hướng GLCM, đồ án đã đạt độ chính xác phân loại xuất sắc $96.80%$ trên tập dữ liệu kiểm thử.
Hệ thống không chỉ dừng lại ở nghiên cứu lý thuyết mà đã được hiện thực hóa thành một ứng dụng Web hoàn chỉnh trên nền Flask Framework với thời gian phản hồi nhanh ($280\text{ ms/ảnh}$), vận hành hiệu quả trên phần cứng CPU thông thường. Đây là tiền đề công nghệ vững chắc, mở ra hướng ứng dụng rộng rãi trong nông nghiệp thông minh, góp phần giảm thiểu chi phí giám sát, hạn chế lạm dụng hóa chất bảo vệ thực vật và bảo vệ năng suất mùa vụ cho nông nghiệp Việt Nam.