Giới thiệu dự án

Theo Báo cáo Hiện trạng Môi trường Quốc gia, Việt Nam phát sinh khoảng 28 triệu tấn rác thải sinh hoạt mỗi năm, trong đó tỷ lệ thu gom và xử lý đạt khoảng 85%, phần còn lại bị thải bỏ trực tiếp ra môi trường hoặc chôn lấp không hợp vệ sinh. Tại các đô thị và khu công nghiệp, khâu phân loại rác tại nguồn đóng vai trò then chốt nhưng vẫn chủ yếu phụ thuộc vào phương pháp thủ công, dẫn đến hiệu suất thấp, chi phí nhân công cao và nguy cơ phơi nhiễm bệnh nghề nghiệp cho công nhân môi trường.

Vấn đề cốt lõi (Problem Statement) nằm ở chỗ các hệ thống phân loại tự động truyền thống dựa trên cảm biến quang học đơn thuần hoặc cơ khí khó có khả năng phân biệt chính xác các loại rác thải có hình dạng biến dạng, bám bẩn hoặc xếp chồng lấn lên nhau (như chai nhựa dập nát, vỏ hộp sữa Tetra Pak 6 lớp, lon kim loại và chai lọ thủy tinh).

Đồ án tập trung nghiên cứu và xây dựng giải pháp phân loại rác thải tự động thông qua hình ảnh và video thời gian thực bằng mô hình mạng nơ-ron tích chập (Convolutional Neural Networks - CNN) tiên tiến YOLOv8.

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

  1. Xây dựng và chuẩn hóa bộ dữ liệu hình ảnh rác thải gồm 1.771 ảnh phân bố trên 4 nhóm chính: Nhựa, Kim loại, Chai lọ thủy tinh và Vỏ hộp sữa.
  2. Thiết lập quy trình tiền xử lý, gán nhãn tự động và bán tự động định dạng YOLO thông qua công cụ MakeSense.ai.
  3. Huấn luyện, tinh chỉnh (fine-tuning) và đánh giá mô hình học sâu YOLOv8 trên nền tảng điện toán đám mây Google Colab (GPU T4/TPU).
  4. Tối ưu hóa ngưỡng tin cậy (Confidence Threshold) nhằm cân bằng giữa độ chính xác (Precision) và độ nhạy (Recall), phục vụ nhận diện trên luồng video HD thời gian thực.

Phạm vi nghiên cứu giới hạn ở việc phát hiện 4 nhóm phế liệu tái chế phổ biến trong điều kiện nền đơn sắc và môi trường thực nghiệm có kiểm soát ánh sáng, làm tiền đề cho việc tích hợp vào các trạm phân loại rác thông minh (Smart Waste Bins).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các giải pháp quản lý và phân loại rác thải hiện nay tồn tại nhiều ưu và nhược điểm khi so sánh về chi phí, tốc độ và tính chính xác:

Phương pháp Ưu điểm Nhược điểm Chi phí vận hành Khả năng mở rộng
Phân loại thủ công Linh hoạt, không yêu cầu công nghệ phức tạp Nguy hiểm cho sức khỏe, năng suất thấp, dễ sai sót Rất cao (nhân công liên tục) Kém
Cảm biến cận hồng ngoại (NIR) Tốc độ quét nhanh, nhận biết cấu trúc polymer tốt Chi phí đầu tư phần cứng đắt đỏ, không phân loại được rác tối màu/đen Cao (bảo trì cơ khí & quang học) Trung bình
Thị giác máy tính (YOLOv8) Nhận diện đa lớp trong thời gian thực, chi phí phần cứng thấp, dễ nâng cấp qua phần mềm Đòi hỏi tập dữ liệu đa dạng, phụ thuộc điều kiện ánh sáng Thấp (chỉ cần Camera + Edge AI / GPU) Rất cao

Phân tích yêu cầu chức năng theo mô hình MoSCoW:

  • Must have (Bắt buộc): Nhận diện chính xác 4 lớp đối tượng (Nhựa, Kim loại, Chai lọ, Vỏ hộp sữa); hỗ trợ đầu vào ảnh tĩnh và luồng video; xuất ra bounding box cùng nhãn và điểm tin cậy.
  • Should have (Nên có): Lọc nhiễu dự đoán qua ngưỡng Confidence Score ($\ge 0.50$); tốc độ suy luận đạt tối thiểu 30 FPS trên GPU phổ thông.
  • Could have (Có thể có): Giao diện dashboard thống kê số lượng rác thải theo thời gian thực; xuất log tọa độ phục vụ cánh tay robot gắp rác.
  • Won't have (Chưa hỗ trợ): Phân tích quang phổ hóa học bên trong thành phần rác thải hữu cơ/vô cơ vi mô.

Thiết kế hệ thống

Kiến trúc luồng xử lý dữ liệu và suy luận của hệ thống được mô hình hóa qua sơ đồ sau:

graph TD
    A[Nguồn dữ liệu: Ảnh tĩnh / Camera Video HD] --> B[Tiền xử lý: Resize 640x640, Chuẩn hóa Màu]
    B --> C[YOLOv8 Backbone: Trích xuất đặc trưng đa tầng]
    C --> D[YOLOv8 Neck: PAN-FPN Tổng hợp thông tin đa tỉ lệ]
    D --> E[YOLOv8 Decoupled Head: Phân tách Regression & Classification]
    E --> F[Hậu xử lý: Non-Maximum Suppression NMS & Confidence Filtering]
    F --> G[Kết quả: Bounding Box, Label, Confidence Score]

Technology Stack và phiên bản sử dụng:

  • Ngôn ngữ lập trình: Python 3.10.12
  • Deep Learning Framework: PyTorch 2.2.0+cu121, Torchvision 0.17.0
  • Object Detection Library: Ultralytics YOLOv8 (v8.1.0)
  • Computer Vision & Xử lý ảnh: OpenCV 4.9.0, Pillow 10.2.0, NumPy 1.24.3
  • Môi trường phát triển tích hợp (IDE): PyCharm Professional 2023.3, Google Colaboratory (NVIDIA Tesla T4 16GB VRAM)
  • Công cụ gán nhãn: MakeSense.ai

Cấu trúc tệp dữ liệu tổ chức theo chuẩn YOLO:

dataset/
├── data.yaml
├── train/
│   ├── images/ (*.jpg)
│   └── labels/ (*.txt: <class_id> <x_center> <y_center> <width> <height>)
└── val/
    ├── images/
    └── labels/

Trong đó các lớp được mã hóa: 0: Nhựa, 1: Kim loại, 2: Chai lọ, 3: Vỏ hộp sữa.

Methodology

Dự án áp dụng quy trình phát triển lặp (Iterative Engineering Lifecycle):

  1. Giai đoạn 1 - Data Engineering (Tuần 1 - Tuần 4): Thu thập 1.771 ảnh từ nguồn Pinterest, lọc dữ liệu trùng lặp, tiến hành chuẩn hóa kích thước và gán nhãn đa đối tượng qua MakeSense.ai.
  2. Giai đoạn 2 - Model Exploration & Training (Tuần 5 - Tuần 10): Cấu hình hyperparameters trên Google Colab, đào tạo mô hình 100 epochs với tối ưu hóa SGD/AdamW.
  3. Giai đoạn 3 - Evaluation & Tuning (Tuần 11 - Tuần 14): Đánh giá ma trận nhầm lẫn (Confusion Matrix), phân tích Box Loss, Class Loss, DFL Loss; tinh chỉnh tham số NMS IoU threshold và Confidence threshold.
  4. Giai đoạn 4 - Deployment & Video Testing (Tuần 15 - Tuần 18): Chạy thực nghiệm trên luồng video HD từ điện thoại thông minh, hoàn thiện báo cáo và tài liệu kỹ thuật.

Bảng phân tích rủi ro và giải pháp khắc phục:

Rủi ro kỹ thuật Mức độ Biện pháp giảm thiểu
Mất cân bằng dữ liệu lớp (Vỏ hộp sữa: 161 ảnh vs Kim loại: 703 ảnh) Cao Áp dụng kỹ thuật Data Augmentation (Mosaic, Flip, Scaling) tự động trong YOLOv8
Overfitting do tập dữ liệu nền đơn sắc Trung bình Sử dụng Regularization, Early Stopping và DropBlock tích hợp
Hiện tượng False Positive khi nhận diện vật thể bị che khuất Trung bình Tăng ngưỡng Confidence lên mức $\ge 0.55$ trong file cấu hình suy luận

Implementation và kết quả

Development process

Quá trình huấn luyện sử dụng framework Ultralytics với mô hình nền yolov8n.pt / yolov8s.pt để tận dụng Transfer Learning, giúp rút ngắn thời gian hội tụ trên tập dữ liệu tùy chỉnh.

Mã nguồn khởi tạo quá trình huấn luyện (train.py):

from ultralytics import YOLO
import torch

def train_custom_yolo():
    # Kiểm tra tính sẵn sàng của GPU CUDA
    device = '0' if torch.cuda.is_available() else 'cpu'
    print(f"Bắt đầu huấn luyện trên thiết bị: {device}")

    # Tải mô hình YOLOv8 pretrained
    model = YOLO("yolov8s.pt")

    # Cấu hình siêu tham số và khởi chạy training
    results = model.train(
        data="data.yaml",
        epochs=100,
        imgsz=640,
        batch=16,
        workers=4,
        device=device,
        optimizer="AdamW",
        lr0=0.001,
        lrf=0.01,
        mosaic=1.0,
        save=True,
        project="waste_detection_run",
        name="yolov8_waste_model"
    )

if __name__ == "__main__":
    train_custom_yolo()

Mã nguồn thực thi suy luận trên luồng video và lọc ngưỡng tin cậy (detect.py):

import cv2
from ultralytics import YOLO

def run_inference_video(video_path, model_weight_path, conf_thresh=0.50):
    # Load mô hình đã được fine-tune
    model = YOLO(model_weight_path)
    cap = cv2.VideoCapture(video_path)
    
    assert cap.isOpened(), "Không thể mở tệp video đầu vào."

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break

        # Dự đoán với ngưỡng Confidence và Non-Maximum Suppression (NMS)
        results = model.predict(source=frame, conf=conf_thresh, iou=0.45, verbose=False)
        
        # Vẽ Bounding Box và Annotation lên Frame
        annotated_frame = results[0].plot()

        cv2.imshow("Waste Classification - YOLOv8 Realtime", annotated_frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    run_inference_video(video_path="test_waste_video.mp4", model_weight_path="best.pt", conf_thresh=0.52)

Hệ thống tính toán hàm mất mát bao gồm ba thành phần chính:

  1. Bounding Box Loss ($L_{box}$): Sử dụng Complete IoU (CIoU) đo lường sự trùng khớp về diện tích, khoảng cách tâm và tỷ lệ khung hình giữa Ground Truth và Box dự đoán.
  2. Classification Loss ($L_{cls}$): Sử dụng Binary Cross-Entropy (BCE) trên từng lớp nhãn.
  3. Distribution Focal Loss ($L_{dfl}$): Tối ưu hóa phân bố vị trí biên của bounding box, đặc biệt hiệu quả với các vật thể bị biến dạng hoặc mờ nhòe.

$$\mathcal{L}{Total} = \lambda{box} \mathcal{L}{CIoU} + \lambda{cls} \mathcal{L}{BCE} + \lambda{dfl} \mathcal{L}_{DFL}$$

Testing và validation

Tập dữ liệu 1.771 mẫu được phân chia theo tỷ lệ 80% Training (1.417 ảnh) và 20% Validation (354 ảnh).

Chi tiết phân bố tập dữ liệu gốc:

  • Nhựa: 402 ảnh
  • Kim loại: 703 ảnh
  • Chai lọ thủy tinh: 512 ảnh
  • Vỏ hộp sữa: 161 ảnh

Diễn biến hội tụ của các chỉ số hiệu năng qua 100 Epochs:

  • Train/Box Loss: Giảm đều từ $4.85$ xuống xấp xỉ $0.78$.
  • Train/Cls Loss: Giảm từ $14.62$ xuống tiệm cận $0.35$, chứng minh mô hình phân biệt tốt các đặc trưng thị giác riêng biệt giữa kim loại sáng bóng và vỏ hộp sữa đa lớp.
  • Train/Dfl Loss: Giảm từ $2.30$ xuống $0.85$.
  • Validation Box/Cls Loss: Đường cong loss kiểm thử duy trì xu hướng giảm ổn định, không xuất hiện hiện tượng phân kỳ (divergence) - biểu hiện của việc kiểm soát tốt overfitting.

Bảng kết quả đo lường độ chính xác sau 100 Epochs:

Lớp đối tượng (Class) Precision (P) Recall (R) mAP@0.5 mAP@0.5:0.95
Tất cả các lớp (All) 0.874 0.841 0.868 0.612
Nhựa (Plastic) 0.852 0.820 0.845 0.587
Kim loại (Metal) 0.915 0.887 0.910 0.664
Chai lọ (Glass Bottles) 0.881 0.835 0.872 0.621
Vỏ hộp sữa (Milk Cartons) 0.848 0.822 0.845 0.576

Phân tích ma trận nhầm lẫn (Confusion Matrix)

Dựa trên ma trận nhầm lẫn chuẩn hóa:

  • Lớp Kim loại đạt độ chính xác dự đoán cao nhất (True Positive $> 91%$) nhờ các đặc tính phản chiếu ánh sáng và bề mặt kim loại đặc trưng.
  • Lớp Vỏ hộp sữa có sự nhầm lẫn nhẹ ($5.8%$) sang lớp Nhựa do một số mẫu vỏ hộp sữa có bao bì in phủ màng nilon bóng.
  • Việc áp dụng bộ lọc Confidence Threshold ở mức $\ge 0.50$ loại bỏ hoàn toàn các nhận diện nhầm lẫn với nền (Background FP), giữ vững độ tin cậy khi nhận diện trên video.

Đổi mới và đóng góp

Cải tiến kỹ thuật của kiến trúc đề xuất

So với các giải pháp phân loại rác thế hệ cũ sử dụng mạng hai giai đoạn (Faster R-CNN) hoặc YOLO thế hệ cũ (YOLOv4/YOLOv5):

  1. Cơ chế phát hiện không dùng mỏ neo (Anchor-Free Detection): YOLOv8 loại bỏ hoàn toàn việc tính toán tập anchor box định sẵn. Đầu phát hiện (Decoupled Head) dự đoán trực tiếp khoảng cách từ tâm đến các cạnh của bounding box, giúp tăng tốc độ suy luận thêm $22%$ và nâng cao khả năng phát hiện các mẩu rác có kích thước méo mó bất định.
  2. Khối tích chập cải tiến C2f Module: Thay thế khối C3 bằng C2f (Cross-Stage Partial bottleneck with two convolutions), tăng cường đường truyền gradient và khả năng học biểu diễn đặc trưng sâu mà không làm tăng tham số tính toán (FLOPs).
  3. Phân loại chuyên sâu vật liệu đa lớp: Đồ án đưa lớp Vỏ hộp sữa (cấu tạo 6 lớp: 75% giấy, 25% nhôm và nhựa) thành một lớp định danh độc lập, hỗ trợ trực tiếp các dây chuyền thu gom tái chế vỏ hộp giấy chuyên dụng vốn chưa được các nghiên cứu trước đây phân tách rõ ràng.

Bảng so sánh hiệu năng thực nghiệm giữa các mô hình trên cùng tập dữ liệu rác thải:

Mô hình Tốc độ (FPS trên GPU T4) mAP@0.5 (%) Kích thước trọng số (MB) Số lượng tham số (Params)
Faster R-CNN (ResNet-50) 14.2 FPS 79.4% 168.0 MB 41.5M
SSD (MobileNetV2) 42.0 FPS 71.2% 27.5 MB 6.8M
YOLOv5s 58.5 FPS 82.3% 14.1 MB 7.2M
YOLOv8s (Đề xuất đồ án) 64.8 FPS 86.8% 22.5 MB 11.2M

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong đời sống

  1. Thùng rác thông minh tích hợp Edge AI (Smart Segregation Bins):

    • Camera góc rộng đặt tại cửa tiếp nhận rác kết nối với bo mạch nhúng (NVIDIA Jetson Orin Nano / Raspberry Pi 5 kết hợp Google Coral NPU).
    • Khi người dùng đưa rác vào vùng quét, mô hình thực thi suy luận trong $< 25$ ms, kích hoạt servo mở đúng ngăn chứa rác tương ứng (Nhựa/Kim loại/Thủy tinh/Hộp giấy).
  2. Dây chuyền phân loại tự động tại nhà máy xử lý rác:

    • Camera lắp trên băng chuyền công nghiệp với tốc độ di chuyển $0.5 - 1.0$ m/s.
    • Hệ thống phát hiện vị trí vật thể, truyền tọa độ $(x, y)$ qua giao thức TCP/IP Socket hoặc ROS (Robot Operating System) để điều khiển cánh tay robot song song (Delta Robot) gắp phế liệu chính xác.

Ước tính hiệu quả kinh tế (ROI Analysis)

  • Chi phí đầu tư giải pháp Edge AI: Khoảng $12.000.000$ VNĐ cho một trạm phân loại (gồm Camera HD công nghiệp, Bo mạch Jetson Orin Nano 8GB, nguồn và vỏ bảo vệ IP65).
  • Tiết kiệm chi phí vận hành: Giảm $70%$ nhân công phân loại thô tại băng chuyền, loại bỏ chi phí y tế và bảo hộ do phơi nhiễm chất thải độc hại.
  • Thời gian hoàn vốn (ROI): Dự kiến $8 - 10$ tháng cho một cơ sở xử lý rác quy mô vừa ($50$ tấn/ngày).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Độ đa dạng của nền ảnh: Bộ dữ liệu 1.771 ảnh chủ yếu chụp trên phông nền đơn sắc (trắng/trung tính), dẫn đến độ chính xác có thể suy giảm khi đưa vào môi trường thực tế có nền gạch hoa phức tạp hoặc ánh sáng yếu ($< 50$ Lux).
  • Vật thể biến dạng nghiêm trọng: Các lon nhôm bị cán dẹp hoàn toàn hoặc mảnh vỡ thủy tinh vụn nhỏ đôi khi bị bỏ sót (False Negative).
  • Chưa tích hợp Object Tracking: Hiện tại mô hình chỉ phát hiện trên từng khung hình độc lập, chưa theo dõi quỹ đạo (tracking ID qua ByteTrack/DeepSORT) để đếm số lượng phế liệu di chuyển liên tục trên băng tải.

Hướng phát triển tương lai

  • Mở rộng tập dữ liệu lên $> 10.000$ mẫu với ảnh chụp thực tế tại các bãi tập kết rác trong nhiều điều kiện thời tiết và độ ẩm khác nhau.
  • Tích hợp mô hình phân đoạn thể hiện (Instance Segmentation - YOLOv8-seg) để trích xuất chính xác đường biên đa giác của rác thải, phục vụ lực hút/kẹp chính xác của tay gắp robot.
  • Chuyển đổi mô hình sang định dạng TensorRT engine và OpenVINO nhằm tối ưu hóa lượng tử hóa INT8, tăng tốc độ suy luận lên $> 100$ FPS trên thiết bị biên nhúng.

Đối tượng hưởng lợi

  • Sinh viên và Học viên: Nắm vững quy trình toàn diện từ xử lý dữ liệu thực nghiệm, gán nhãn, đến huấn luyện và đánh giá mô hình thị giác máy tính với kiến trúc SOTA YOLOv8.
  • Lập trình viên và Kỹ sư AI: Tham khảo cấu trúc mã nguồn suy luận tối ưu trên video, phương pháp xử lý ma trận nhầm lẫn và kỹ thuật cân bằng loss weights.
  • Doanh nghiệp xử lý môi trường: Sở hữu mô hình khả thi để tự động hóa quy trình phân loại rác, nâng cao tỷ lệ tái chế phế liệu và giảm phát thải carbon ra môi trường.
  • Nhà nghiên cứu học thuật: Cung cấp số liệu thực nghiệm đo lường hiệu năng của mạng CNN Anchor-Free trên nhóm rác thải rắn hỗn hợp tại Việt Nam.

Câu hỏi thường gặp

1. Cấu hình phần cứng tối thiểu để triển khai mô hình là gì?

Đối với môi trường suy luận (Inference), mô hình chỉ yêu cầu CPU Intel Core i5 thế hệ 8 hoặc bo mạch nhúng ARM64 (Raspberry Pi 4 với 4GB RAM khi chạy bản lượng tử hóa NCNN/ONNX, đạt 10-15 FPS). Nếu triển khai camera công nghiệp tốc độ cao ($> 60$ FPS), khuyến nghị sử dụng bo mạch NVIDIA Jetson Nano / Orin Nano hoặc GPU máy tính để bàn tương đương GTX 1650 4GB VRAM trở lên.

2. Mô hình xử lý như thế nào khi các loại rác bị xếp chồng lấn lên nhau?

YOLOv8 sử dụng cơ chế Feature Pyramid Network kết hợp kỹ thuật Non-Maximum Suppression (NMS) với ngưỡng IoU tùy biến (mặc định $0.45$). Khi hai vật thể chồng lấn, mô hình trích xuất đặc trưng biên ở các độ phân giải khác nhau và phân tách bounding box độc lập dựa trên tâm đối tượng.

3. Tại sao chọn YOLOv8 thay vì các phiên bản YOLOv5 hoặc YOLOv7?

YOLOv8 tích hợp cấu trúc Anchor-Free và Decoupled Head giúp việc huấn luyện nhanh hơn, ít tham số thừa hơn. Đồng thời, hàm mất mát Distribution Focal Loss (DFL) giúp mô hình ước lượng tọa độ hộp bao chính xác hơn đối với các vật thể không có dạng hình học cố định như rác thải nhựa dập nát.

4. Chi phí đào tạo mô hình trên Google Colab có tốn kém không?

Quá trình huấn luyện 1.771 ảnh qua 100 epochs trên Google Colab sử dụng phiên bản miễn phí (GPU NVIDIA T4 16GB) chỉ mất khoảng $45 - 60$ phút, hoàn toàn không phát sinh chi phí hạ tầng.

5. Làm thế nào để phân biệt chai nhựa trong suốt và chai thủy tinh trong suốt?

Mô hình học các đặc trưng vi mô về độ phản xạ ánh sáng (specular reflection), độ dày của cổ chai và khúc xạ quang học. Khi gán nhãn và tăng cường độ tương phản (Contrast Augmentation), mô hình phân biệt tốt bề mặt khúc xạ gắt của thủy tinh so với bề mặt mờ dẻo của nhựa PET.


Kết luận

Đồ án tốt nghiệp "Phát hiện rác thải bằng mô hình học sâu YOLOv8" của sinh viên Nguyễn Mạnh Chính dưới sự hướng dẫn của TS. Hồ Thị Hương Thơm đã giải quyết thành công bài toán tự động hóa nhận diện và phân loại rác thải rắn sinh hoạt. Với độ chính xác mAP@0.5 đạt $86.8%$ và tốc độ xử lý vượt trội $64.8$ FPS, hệ thống chứng minh tính khả thi cao trong việc ứng dụng vào các giải pháp trạm trung chuyển rác thông minh và dây chuyền tái chế công nghiệp, đóng góp thiết thực vào công cuộc chuyển đổi số ngành quản lý tài nguyên và bảo vệ môi trường bền vững.