مشروع متكامل لتصنيف النفايات إلى 8 فئات مختلفة باستخدام نموذج YOLOv8-CLS، مصمم للعمل بكفاءة عالية على أجهزة NVIDIA Jetson Nano.
تأكد من أن جهازك يعمل بنظام JetPack 4.6 أو أحدث.
# تثبيت المكتبات المطلوبة
pip3 install -r requirements_jetson.txtيجب تحويل النموذج إلى صيغة TensorRT على الجهاز نفسه لضمان أقصى سرعة:
python3 scripts/export_tensorrt.pyفتح الكاميرا والبدء في التصنيف:
python3 scripts/inference_jetson.py- المعمارية: YOLOv8n-CLS (Nano Classification Model).
- عدد المعاملات (Parameters): ~1.4 مليون معامل (خفيف جداً).
- حجم الدخل: 224x224 RGB.
- التنسيقات المدعومة: PyTorch (.pt), ONNX (.onnx), TensorRT (.engine).
- المنصات المستهدفة: NVIDIA Jetson Nano, Edge Devices.
تم اختبار النموذج على وحدة معالجة رسوميات RTX 3050 ومقارنتها بالنتائج المتوقعة على Jetson Nano:
| المقياس (Metric) | PyTorch (RTX 3050) | ONNX (RTX 3050) | TensorRT (Jetson Nano - Est.) |
|---|---|---|---|
| الدقة (Accuracy) | 92.34% | 92.34% | 92.1% - 92.3% |
| زمن الاستجابة (Latency) | 7.81 ms | 2.66 ms | 15.0 - 25.0 ms |
| الإطارات (FPS) | 128 FPS | 376 FPS | 40 - 60 FPS |
-
تحضير البيانات:
- استخدام مجموعة بيانات TrashNet مع إضافة فئات مخصصة (Organic, Aluminum) من Kaggel.
- موازنة البيانات (Data Balancing) لضمان 550 صورة لكل فئة لتجنب الانحياز.
- تقسيم البيانات بنسبة 70% للتدريب، 15% للتحقق، و15% للاختبار النهائي.
-
التحسينات (Augmentation):
- استخدام تقنيات (HSV augmentation, Degrees, Translate, Scale, Flip).
- إضافة تقنيات متقدمة مثل (Mixup, Mosaic, Copy-paste) لزيادة صلابة النموذج.
-
عملية التدريب:
- المحسن (Optimizer):
AdamWمع معدل تعلم0.001. - عدد الدورات (Epochs): 100 دورة مع خاصية التوقف المبكر (Early Stopping) بعد 15 دورة بدون تحسن.
- حجم الدفعة (Batch Size): 32.
- المحسن (Optimizer):
scripts/: تحتوي على ملفات التدريب، الاختبار، والتحويل.models/: مكان حفظ ملفات الـ Engine الخاصة بـ Jetson.data/processed/: البيانات المنظمة والمقسمة.results/: تقارير الأداء ومصفوفة الارتباك.
PET, Aluminum, Cardboard, Paper, Glass, Metal, Organic, Non-Recyclable
- wesam Badr Alluhaybi
- Ayman Mohamed Alshamrani
- Faisal Ali Ageeli
تم تطوير المشروع وتدريبه باستخدام وحدة معالجة الرسوميات RTX 3050.