Bối cảnh và vấn đề nghiên cứu
Lý do chọn đề tài và bối cảnh thực tiễn
Sự gia tăng nhanh chóng của lượng chất thải rắn sinh hoạt đang đặt ra áp lực lớn đối với công tác bảo vệ môi trường và quản lý đô thị. Dẫn liệu từ Báo cáo hiện trạng môi trường quốc gia năm 2019 cho thấy, 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ý chỉ đạt khoảng 85%. Lượng rác thải còn lại chưa được thu gom triệt để, bị thải bỏ bừa bãi ra môi trường tự nhiên, gây ô nhiễm đất, nước, không khí và đe dọa đa dạng sinh học.
Thực tế công tác quản lý rác thải hiện nay phần lớn vẫn thực hiện thủ công; rác thải chưa được phân loại triệt để tại nguồn mà thu gom lẫn lộn rồi vận chuyển đến các bãi tập kết. Tại bãi tập kết, việc phân loại thủ công tiềm ẩn nhiều rủi ro sức khỏe cho công nhân và gây ô nhiễm thứ cấp. Trong khi đó, các thành phần rác thải có thể tái chế như vỏ chai nhựa, kim loại, thủy tinh và vỏ hộp sữa nếu được nhận diện và tách riêng kịp thời sẽ mang lại giá trị kinh tế và giảm áp lực lên các bãi chôn lấp. Đề tài "Phát hiện rác thải (vd: rác thải nhựa, chai lọ, vỏ hộp sữa bỏ đi cần phân loại)" được thực hiện nhằm ứng dụng công nghệ học sâu (Deep Learning) và thị giác máy tính để xây dựng mô hình phát hiện, phân loại tự động các nhóm rác thải tái chế phổ biến.
Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu tổng quát của đề tài là xây dựng mô hình học sâu có khả năng tự động phát hiện và phân loại các loại rác thải khác nhau trên ảnh tĩnh và video, phục vụ cho quá trình tiền phân loại rác thải tự động. Để đạt được mục tiêu này, các nhiệm vụ nghiên cứu được xác định cụ thể theo văn bản gồm:
- Tìm hiểu tổng quan về bài toán phát hiện đối tượng (Object Detection) và kiến trúc mô hình học sâu YOLOv8.
- Thu thập dữ liệu hình ảnh rác thải và tiến hành gán nhãn dữ liệu chuẩn hóa để phục vụ huấn luyện mô hình.
- Cài đặt môi trường, cấu hình và tiến hành huấn luyện mô hình phát hiện đối tượng rác thải bằng YOLOv8.
- Kiểm thử, đánh giá hiệu năng mô hình trên các tập dữ liệu ảnh tĩnh và video thực nghiệm, từ đó đưa ra nhận xét và kiến nghị.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Các thuật toán phát hiện đối tượng một giai đoạn thuộc họ YOLO (tập trung vào phiên bản YOLOv8) và các loại rác thải tái chế phổ biến bao gồm 4 nhóm chính: rác thải nhựa (túi nilon, chai nhựa, cốc nhựa...), kim loại (sắt, nhôm, vỏ lon...), chai lọ (thủy tinh, nhựa) và vỏ hộp sữa (cấu tạo giấy - nhôm - nhựa).
- Phạm vi không gian và dữ liệu: Bộ dữ liệu gồm 1.771 ảnh thu thập từ thư viện ảnh Pinterest (dạng ảnh phông nền trắng) và các video độ phân giải cao (HD) được quay trực tiếp bằng điện thoại di động trong điều kiện thực tế.
- Phạm vi thời gian: Đồ án được giao thực hiện từ ngày 13 tháng 01 năm 2024 và hoàn thành nghiệm thu vào tháng 05 năm 2024. Địa điểm thực tập gắn liền với quá trình thực hiện đề tài là Công ty Cổ phần Hạ tầng Viễn thông Việt Nam (CMC Telecom).
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình sử dụng
Nghiên cứu dựa trên nền tảng lý thuyết của thị giác máy tính và mạng nơ-ron tích chập (Convolutional Neural Networks - CNN):
- Phát hiện đối tượng (Object Detection): Tác giả tổng quan sự phát triển của các phương pháp phát hiện đối tượng, phân biệt giữa phương pháp hai giai đoạn (như R-CNN, Faster R-CNN sử dụng mạng đề xuất vùng Region Proposal Network) và phương pháp một giai đoạn (One-stage detectors như SSD, YOLO).
- Quá trình phát triển của họ mô hình YOLO (You Only Look Once): Văn bản hệ thống hóa quá trình cải tiến từ YOLOv1 (2016), YOLOv2/YOLO9000 (tích hợp huấn luyện trên COCO và ImageNet, đạt 76.8 mAP ở 67 FPS), YOLOv3 (dự đoán đa tỷ lệ, multi-label classification), YOLOv4 (tăng cường dữ liệu Mosaic, Self-Adversarial Training, Bag of Freebies), YOLOv5, YOLOv6 (mô-đun BiC, Anchor-Aided Training), YOLOv7 (đạt 56.8% AP ở tốc độ trên 30 FPS trên GPU V100) đến YOLOv8.
- Mô hình YOLOv8: Là kiến trúc mới nhất của Ultralytics tại thời điểm nghiên cứu. YOLOv8 sử dụng cấu trúc chia tách không neo (Anchor-free Split Head), tối ưu hóa cấu trúc xương sống (Backbone) và cổ (Neck) để trích xuất đặc trưng đa tầng, giúp cân bằng giữa độ chính xác và tốc độ suy luận theo thời gian thực.
Phương pháp nghiên cứu
Đồ án sử dụng kết hợp các phương pháp nghiên cứu thực nghiệm kỹ thuật:
- Phương pháp thu thập và tiền xử lý dữ liệu: Thu thập dữ liệu hình ảnh đơn lẻ từ internet, tiến hành chọn lọc, làm sạch và phân loại sơ bộ theo 4 nhóm đối tượng.
- Phương pháp gán nhãn dữ liệu (Data Labeling): Sử dụng công cụ gán nhãn bán tự động MakeSense.ai để đóng khung giới hạn (bounding box) cho từng vật thể rác thải trong ảnh, trích xuất tọa độ chuẩn hóa và mã lớp tương ứng theo định dạng huấn luyện của YOLO.
- Phương pháp huấn luyện mô hình (Model Training): Thực hiện kỹ thuật học chuyển giao (Transfer Learning) dựa trên các trọng số đã được tiền huấn luyện của YOLOv8, chạy tối ưu hóa qua 100 chu kỳ lặp (epochs).
- Phương pháp kiểm thử và đánh giá: Đánh giá định lượng thông qua các hàm mất mát (Box Loss, Class Loss, DFL Loss), các chỉ số thống kê (Precision, Recall, mAP50) và ma trận nhầm lẫn (Confusion Matrix). Đánh giá định tính trên tập ảnh tĩnh đơn vật thể, đa vật thể và video thời gian thực.
Nguồn dữ liệu
Nguồn dữ liệu hình ảnh phục vụ huấn luyện được trích xuất từ thư viện ảnh Pinterest, tập trung vào hình ảnh các loại rác thải trên phông nền trắng. Dữ liệu kiểm thử video được thu thập thực tế bằng camera điện thoại di động ở định dạng HD.
Thiết kế và triển khai hệ thống
Kiến trúc mô hình YOLOv8
Mô hình phát hiện rác thải được xây dựng dựa trên kiến trúc 3 thành phần chính của YOLOv8:
- Xương sống (Backbone): Tiếp nhận dữ liệu đầu vào và thực hiện trích xuất các đặc trưng không gian từ cơ bản đến phức tạp thông qua các lớp tích chập liên tiếp.
- Cổ (Neck): Kết nối xương sống với đầu ra, chịu trách nhiệm kết hợp và tinh chỉnh các bản đồ đặc trưng ở nhiều tỷ lệ khác nhau nhằm tăng cường khả năng phát hiện vật thể ở nhiều kích thước.
- Đầu ra (Head): Sử dụng cấu trúc tách biệt không neo (Anchor-free) để trực tiếp tính toán xác suất phân loại (Class probability) và hồi quy tọa độ hộp giới hạn (Bounding box regression) cho từng rác thể được tìm thấy.
Môi trường và công cụ phát triển
Hệ thống được thiết lập và triển khai trên các công cụ và nền tảng:
- Ngôn ngữ lập trình: Python, tận dụng cú pháp linh hoạt và hệ sinh thái thư viện xử lý dữ liệu, học máy chuyên sâu.
- Môi trường phát triển tích hợp (IDE): PyCharm (phát triển bởi JetBrains) được sử dụng để quản lý mã nguồn, cấu hình môi trường ảo và đồng bộ hóa phiên bản.
- Môi trường tính toán đám mây: Google Colaboratory (Google Colab), cung cấp hạ tầng phần cứng với GPU và TPU miễn phí, hỗ trợ tăng tốc độ tính toán cho các phép toán ma trận trong quá trình huấn luyện và lưu trữ dữ liệu trực tiếp qua Google Drive.
- Công cụ gán nhãn: MakeSense.ai, công cụ chạy trực tiếp trên nền tảng web, hỗ trợ gán nhãn nhanh bounding box và xuất ra định dạng file văn bản (.txt) chứa mã lớp và tọa độ vị trí vật thể.
Dữ liệu huấn luyện và quy trình gán nhãn
Tổng số lượng dữ liệu thu thập gồm 1.771 tệp hình ảnh, được phân bổ vào 4 lớp đối tượng:
| Tên lớp (Class) |
Số lượng ảnh |
Đặc điểm đối tượng |
| Kim loại |
703 |
Vỏ lon, sắt vụn, đồ dùng kim loại có ánh kim |
| Chai lọ |
512 |
Chai lọ chất liệu thủy tinh, nhựa trong suốt hoặc có màu |
| Nhựa |
402 |
Túi nilon, cốc nhựa, đồ chơi cũ, vật dụng nhựa tổng hợp |
| Vỏ hộp sữa |
161 |
Bao bì giấy tiệt trùng 6 lớp (75% giấy, 25% nhôm và nhựa) |
| Tổng cộng |
1.771 |
Ảnh phông nền trắng |
Quy trình gán nhãn trên MakeSense.ai tạo ra các tệp nhãn tương ứng cho từng ảnh. Mỗi dòng trong tệp nhãn thể hiện thông tin lớp đối tượng cùng các tham số tọa độ tâm (x_center, y_center), chiều rộng (width) và chiều cao (height) đã được chuẩn hóa trong khoảng từ 0 đến 1.
Nội dung chính theo từng chương
Mở đầu và Đặt vấn đề: Thực trạng rác thải và bài toán nhận dạng tự động
Phần mở đầu tập trung phân tích thực trạng lượng rác thải sinh hoạt tăng cao tại Việt Nam (28 triệu tấn/năm theo báo cáo 2019) và những hạn chế của phương pháp xử lý thủ công. Tác giả phân loại chi tiết các dạng rác thải trong đời sống (rác hữu cơ, rác vô cơ, rác nguy hại, rác thải điện tử e-waste, rác thải y tế, rác thải xây dựng). Đồng thời, chương này tổng quan hai hướng tiếp cận nhận dạng rác thải: phương pháp đặc trưng (phân tích đặc tính vật lý, hóa học, cảm biến IoT, công nghệ AR) và phương pháp mạng nơ-ron (mạng hồi quy RNN xử lý dữ liệu chuỗi/âm thanh, mạng tích chập CNN xử lý hình ảnh), từ đó xác định việc sử dụng mạng tích chập kết hợp gán nhãn ảnh là giải pháp phù hợp nhất cho bài toán phân loại tự động.
Chương 2: Mô hình hệ thống phân loại rác thải
Chương 2 trình bày cơ sở chi tiết về các nhóm vật liệu rác thải cần nhận dạng cùng cấu tạo kỹ thuật của chúng (đặc biệt là cấu trúc 6 lớp của vỏ hộp sữa gồm 75% giấy và 25% nhôm, nhựa; đặc tính khó phân hủy của rác thải nhựa; khả năng tái chế của chai lọ thủy tinh và kim loại). Tác giả phân tích các giải pháp xử lý rác thải hiện nay như phân loại tại nguồn, chôn lấp (landfill), đốt thiêu hủy thủ công, đốt rác phát điện và sản xuất phân hữu cơ (compost).
Nội dung trọng tâm của chương là phân tích cơ chế hoạt động của các mạng phát hiện đối tượng, tập trung sâu vào tiến trình phát triển của các phiên bản YOLO từ YOLOv1 đến YOLOv8. Tác giả chỉ rõ sự khác biệt của YOLO so với các mô hình trước đó là khả năng xử lý khung hình một lần duy nhất (one-stage), kết hợp trích xuất đặc trưng và dự đoán vị trí/phân lớp trong cùng một mạng nơ-ron duy nhất, mang lại tốc độ xử lý vượt trội phù hợp cho các bài toán thời gian thực.
Chương 3: Cài đặt, thử nghiệm, đánh giá
Chương 3 mô tả toàn bộ quá trình thiết lập môi trường thực nghiệm, công cụ hỗ trợ và các kết quả đạt được. Quá trình huấn luyện mô hình YOLOv8 được thực hiện trên Google Colab với bộ dữ liệu 1.771 ảnh đã gán nhãn. Quá trình kiểm thử được tiến hành trên cả ảnh tĩnh (một vật thể, nhiều vật thể) và video thực tế. Tác giả phân tích sự biến thiên của các đồ thị hàm mất mát và các chỉ số thống kê hiệu năng, ma trận nhầm lẫn qua 100 epochs, đồng thời đưa ra những đánh giá về mối quan hệ giữa ngưỡng tin cậy (Confidence threshold) và độ chính xác phân loại của mô hình.
Kết quả và đóng góp
Kết quả định lượng và thực nghiệm
Quá trình huấn luyện mô hình YOLOv8 qua 100 chu kỳ lặp (epochs) ghi nhận các kết quả biến thiên của các hàm mất mát và chỉ số đánh giá:
| Nhóm chỉ số |
Tên chỉ số |
Xu hướng và giá trị ghi nhận trong văn bản |
| Mất mát huấn luyện (Train Loss) |
Train/Box Loss |
Dao động trong khoảng từ 0 đến 5 qua 100 epochs |
|
Train/Cls Loss |
Giảm mạnh từ khoảng 15 xuống tiệm cận 0 |
|
Train/Dfl Loss |
Bắt đầu từ khoảng 2 và giảm dần theo các epoch |
| Mất mát kiểm định (Val Loss) |
Val/Box Loss |
Dao động nhẹ và ổn định quanh giá trị 5 |
|
Val/Cls Loss |
Giảm từ mức 10 xuống xấp xỉ 0 |
| Chỉ số hiệu năng (Metrics) |
Precision (B) |
Tăng trưởng từ mức 0 lên mức cao |
|
Recall (B) |
Có xu hướng tăng đều từ 0 lên mức cao |
|
mAP50 (B) |
Tăng mạnh từ 0 và đạt độ hội tụ ổn định |
Về kết quả nhận diện thực tế:
- Đối với ảnh tĩnh: Mô hình nhận diện chính xác loại chất liệu rác thải trên cả ảnh chứa một vật thể đơn lẻ và ảnh chứa nhiều vật thể rác thải phức tạp.
- Đối với video: Thử nghiệm trên video HD quay bằng điện thoại cho kết quả khả thi, mô hình nhận diện tương đối chính xác các loại rác thải xuất hiện trong khung hình theo thời gian thực dù đôi lúc còn sai sót nhỏ do góc quay hoặc tốc độ chuyển động.
- Về ngưỡng tin cậy (Confidence): Ma trận nhầm lẫn cho thấy các trường hợp dự đoán chính xác đều đạt giá trị Confidence cao. Tác giả kiến nghị khi khởi chạy tiến trình nhận dạng (
detect.py), cần thiết lập ngưỡng Confidence ở mức cao để loại bỏ các trường hợp dự đoán sai lệch có điểm số thấp.
Giải pháp và kiến nghị của tác giả
- Ứng dụng mô hình YOLOv8 vào các hệ thống tự động hóa phân loại rác thải tại các nhà máy xử lý hoặc thùng rác thông minh.
- Khi triển khai thực tế, cần điều chỉnh ngưỡng Confidence linh hoạt: đặt ngưỡng cao khi dữ liệu hình ảnh đầu vào có chất lượng tốt, rõ nét và giảm dần tỷ lệ thuận khi chất lượng dữ liệu đầu vào kém hoặc khi vật thể bị che khuất.
- Cần tiếp tục mở rộng quy mô dữ liệu huấn luyện để nâng cao tính khái quát hóa của mô hình trong nhiều điều kiện môi trường thực tế khác nhau.
Đóng góp của đề tài
Đồ án đã chứng minh tính khả thi của việc ứng dụng mô hình thị giác máy tính thế hệ mới (YOLOv8) vào bài toán phân loại rác thải tại Việt Nam. Bằng việc xây dựng thành công tập dữ liệu 1.771 ảnh gán nhãn cho 4 nhóm rác thải tái chế chính và tối ưu quy trình huấn luyện trên nền tảng đám mây, đề tài cung cấp một giải pháp kỹ thuật thực nghiệm hoàn chỉnh, có khả năng xử lý nhanh và độ chính xác khả quan trên cả dữ liệu ảnh tĩnh lẫn video thực tế.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được ghi nhận
- Đặc điểm dữ liệu huấn luyện: Tập dữ liệu 1.771 ảnh thu thập từ Pinterest chủ yếu là ảnh chụp vật thể trên phông nền trắng đồng nhất, chưa bao quát được các bối cảnh nền phức tạp, môi trường ánh sáng yếu hoặc rác thải bị biến dạng, bám bẩn trong thực tế.
- Kích thước mẫu giữa các lớp chưa đồng đều: Lớp rác thải vỏ hộp sữa chỉ có 161 ảnh, ít hơn đáng kể so với lớp kim loại (703 ảnh) và chai lọ (512 ảnh), có thể ảnh hưởng đến khả năng nhận diện cân bằng giữa các lớp.
- Độ ổn định trên video: Khi nhận diện rác thải qua video quay thực tế bằng điện thoại, hệ thống đôi lúc còn xuất hiện sai sót và nhầm lẫn ở các khung hình có chuyển động nhanh hoặc góc quay bị che khuất.
Hướng nghiên cứu tiếp
- Bổ sung và đa dạng hóa tập dữ liệu huấn luyện với các hình ảnh rác thải chụp trực tiếp tại các bãi tập kết, môi trường tự nhiên với nhiều điều kiện phông nền và ánh sáng khác nhau.
- Tối ưu hóa mô hình để tăng cường độ chính xác và giảm thiểu sai sót khi xử lý luồng video thời gian thực.
- Nghiên cứu tích hợp mô hình đã huấn luyện vào các thiết bị phần cứng nhúng (IoT) hoặc hệ thống phân loại tự động tích hợp băng chuyền cơ khí.
Giá trị tham khảo
Tài liệu đồ án có giá trị tham khảo thiết thực cho các đối tượng:
- Sinh viên ngành Công nghệ thông tin, Khoa học dữ liệu, Kỹ thuật phần mềm: Là tài liệu tham khảo cụ thể về quy trình triển khai một bài toán thị giác máy tính hoàn chỉnh (từ thu thập dữ liệu, gán nhãn bằng MakeSense.ai, xây dựng môi trường trên PyCharm/Google Colab, đến huấn luyện và đánh giá mô hình YOLO).
- Người nghiên cứu các đề tài về phân loại rác thải và tự động hóa môi trường: Cung cấp cơ sở lý thuyết về phân loại các nhóm rác thải tái chế, cấu trúc vật liệu và phương pháp luận áp dụng mô hình một giai đoạn (YOLOv8) để xử lý dữ liệu đa phương tiện.
- Phần đáng tham khảo nhất: Quy trình cấu hình và huấn luyện mô hình YOLOv8 trên Google Colab; phương pháp thiết lập và phân tích các chỉ số đánh giá (Loss, Precision, Recall, mAP50, Confusion Matrix) cùng kinh nghiệm điều chỉnh ngưỡng Confidence khi thực hiện suy luận trên ảnh và video.
Câu hỏi thường gặp
1. Đồ án phân loại rác thải thành những nhóm đối tượng cụ thể nào và số lượng dữ liệu của từng nhóm ra sao?
Đồ án phân loại rác thải thành 4 nhóm đối tượng (class) với tổng số 1.771 ảnh:
- Nhóm Kim loại: 703 ảnh
- Nhóm Chai lọ: 512 ảnh
- Nhóm Nhựa: 402 ảnh
- Nhóm Vỏ hộp sữa: 161 ảnh
2. Tác giả sử dụng công cụ nào để gán nhãn dữ liệu và tệp nhãn xuất ra chứa những thông tin gì?
Tác giả sử dụng công cụ trực tuyến MakeSense.ai. Tệp nhãn xuất ra có định dạng văn bản (.txt), trong đó mỗi dòng chứa thông tin về mã lớp đối tượng (class index) và các thông số tọa độ vị trí của hộp giới hạn (bounding box) bao gồm tọa độ tâm x, y cùng chiều rộng và chiều cao đã được chuẩn hóa.
3. Môi trường tính toán nào được sử dụng để huấn luyện mô hình và số lượng epoch là bao nhiêu?
Mô hình YOLOv8 được huấn luyện trên nền tảng điện toán đám mây Google Colaboratory (Google Colab) nhằm tận dụng hạ tầng xử lý GPU/TPU miễn phí, kết nối lưu trữ với Google Drive. Quá trình huấn luyện được thực hiện qua 100 chu kỳ lặp (epochs).
4. Kết quả hàm mất mát và các chỉ số đánh giá mô hình sau 100 epochs biến thiên như thế nào?
Sau 100 epochs, Train/Box Loss dao động từ 0 đến 5; Train/Cls Loss giảm mạnh từ 15 xuống gần 0; Train/Dfl Loss giảm dần từ mức 2. Về tập kiểm định, Val/Box Loss ổn định quanh mức 5 và Val/Cls Loss giảm từ 10 về 0. Các chỉ số Precision(B), Recall(B) và mAP50(B) đều có xu hướng tăng mạnh từ 0 lên mức cao và hội tụ ổn định.
5. Tác giả đưa ra khuyến nghị gì về việc thiết lập ngưỡng tin cậy (Confidence threshold) khi chạy file nhận dạng?
Tác giả khuyến nghị nên đặt ngưỡng Confidence ở mức cao khi chạy tệp nhận dạng (detect.py) để lọc bỏ các dự đoán sai lệch có điểm số thấp. Khi dữ liệu đầu vào có chất lượng cao, vật thể rõ ràng thì duy trì ngưỡng lớn; chỉ giảm dần ngưỡng khi chất lượng hình ảnh/video đầu vào bị suy giảm hoặc khi mô hình không bắt được đối tượng.
Kết luận
Đồ án tốt nghiệp của sinh viên Nguyễn Mạnh Chính đã nghiên cứu và triển khai thành công mô hình học sâu YOLOv8 cho bài toán phát hiện, phân loại 4 nhóm rác thải tái chế phổ biến (nhựa, kim loại, chai lọ, vỏ hộp sữa) dựa trên bộ dữ liệu 1.771 ảnh. Kết quả thực nghiệm qua 100 epochs cho thấy mô hình có tốc độ xử lý nhanh, đạt độ chính xác cao trên ảnh tĩnh và mức độ nhận diện khả quan trên luồng video độ nét cao. Mặc dù còn hạn chế về độ phong phú của bối cảnh dữ liệu phông nền trắng, đồ án đã cung cấp một quy trình kỹ thuật hoàn chỉnh và mở ra tiềm năng ứng dụng thiết thực cho các hệ thống phân loại rác tự động trong tương lai.