หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ Arduino® Nicla Vision - Smart Trash Collector

เปลี่ยน Arduino Nicla Vision ให้เป็น edge model ขนาดจิ๋วเพื่อคัดแยกขยะ (plastic, paper, glass, organic, general) และแสดงผลผ่าน RGB LED บนบอร์ดเพื่อช่วยแนะนำการคัดแยกแบบ real time

โปรเจกต์ Arduino® Nicla Vision - Smart Trash Collector
3,162 การดู

รายการอุปกรณ์และเครื่องมือ

1x Nicla Vision
-

แอปพลิเคชันและแพลตฟอร์ม

รายละเอียดและวิธีทำ

การลดปริมาณขยะรีไซเคิลในบ่อฝังกลบมักขึ้นอยู่กับการคัดแยกที่รวดเร็วและแม่นยำ Nicla-SmartTrashCollector เปลี่ยน Arduino Nicla Vision ให้กลายเป็น tiny edge model ที่สามารถคัดแยกขยะ (plastic, paper, glass, organic, general) และควบคุม onboard RGB LED เพื่อช่วยแนะนำการคัดแยกแบบ real time

การ Training และ quantization ของ object-detection model ทำผ่านแพลตฟอร์ม Focoos AI ซึ่งช่วยให้สามารถ export quantized model ในรูปแบบ ONNX format ได้ Format นี้สามารถใช้งานร่วมกับ Z-Ant command line interface ซึ่งช่วยให้สามารถ deployment quantized ONNX model ลงบน Nicla Vision ได้

วิธีการทำงาน

  1. Nicla Vision จะรับภาพ 160×120 RGB frames จาก onboard camera
  2. ภาพจะถูกปรับขนาดเป็น 96×96 (NCHW) และส่งไปยัง 5-class classifier ที่ผ่านการ Training บน Focoos AI
  3. Z-Ant จะจัดการการแปลง ONNX และ memory-mapped XIP flow สำหรับ model weights
  4. Class ที่มีความเป็นไปได้สูงสุดจะไปควบคุม RGB LED (yellow/blue/green/brown/grey) เพื่อแสดงผลตอบกลับทันที

Dataset

Dataset นี้เปิดให้ใช้งานแบบสาธารณะตามลิงก์นี้: https://www.kaggle.com/datasets/ceciliacasarella/waste-classification-dataset โดยเป็นการรวบรวมรูปภาพจากหลายแหล่งข้อมูลเพื่อให้ครอบคลุมหมวดหมู่ของวัสดุต่างๆ อย่างสมดุล

เมื่อดาวน์โหลดไฟล์ Dataset `.zip` เรียบร้อยแล้ว ควรทำการ upload ไปยัง Focoos Platform โดยใช้ตัวเลือก “Add New Dataset” เลือกประเภทงานเป็น Classification และที่สำคัญที่สุดคือเลือก Classification Folder Layout เพื่อให้แน่ใจว่าข้อมูลถูกจัดระเบียบอย่างถูกต้องสำหรับการ training

การตั้งค่า Dataset
ภาพรวมของ Dataset

Train → Export → Deploy

  1. Focoos AI: train, quantize และ export model ในเวอร์ชัน ONNX
  2. Z-Ant: ใช้คำสั่ง `zig build lib …` เพื่อสร้างไฟล์ `libzant.a` จาก ONNX model
  3. Arduino: include library, compile ไฟล์ `.ino` และ flash internal firmware + XIP weights ผ่าน DFU

รายละเอียดเพิ่มเติม

สำหรับขั้นตอนการเรียนรู้วิธีการ train, quantize และ export custom model โดยใช้ Focoos AI สามารถศึกษาได้จากสองลิงก์นี้:

  1. https://focoosai.github.io/focoos/concepts/
  2. https://github.com/MirkoCalvi/tiny_hack/blob/main/docs/quantize_classification.ipynb

การ Training ดำเนินการบน Focoos AI Platform ที่มี GPU support

เมื่อ upload dataset เรียบร้อยแล้ว ขั้นตอนต่อไปคือการกำหนด model ใหม่ สิ่งสำคัญคือต้องแน่ใจว่าประเภทงานยังคงตั้งค่าเป็น “Classification” ระหว่างการกำหนดค่านี้ เลือก nano model ( fai-cls-n-coco ) ซึ่งมีขนาด model ที่เหมาะสมและเข้ากับ RAM ของบอร์ด Nicla Vision ได้ดีที่สุด

การตั้งค่า Model ใหม่

หลังจากกำหนดค่า dataset และ model แล้ว สามารถเริ่มขั้นตอนการ training ใหม่ได้ โดยพารามิเตอร์เฉพาะที่ใช้ในโปรเจกต์นี้มีดังนี้:

การตั้งค่าทั่วไป (General Settings)

  1. Batch size: 8
  1. Evaluation period: 100
  1. Maximum iterations: 5000
  1. Resolution: 96

Optimization

  1. Optimizer: ADAMW
  1. Learning rate: 0.00005
  1. Weight decay: 0.0001
  1. Scheduler: MULTISTEP
  1. Early stopping: เปิดใช้งาน
  1. Patience: 10

การเพิ่มข้อมูล (Data Augmentation)

  1. Crop: ปิดใช้งาน
  2. Horizontal Flip: 0.5
  3. Vertical Flip: 0.5
พารามิเตอร์สำหรับการ Training

Model ที่ผ่านการ training แล้ว

เมื่อได้ ONNX model มาแล้ว ขั้นตอนแรกคือการ clone Z-Ant official repository

ต่อไปนี้คือสิ่งที่จำเป็นต้องมีเพื่อดำเนินการต่อ:

  1. Arduino core: `arduino:mbed_nicla` (ทดสอบกับเวอร์ชัน 4.4.1)
  2. `arduino-cli`, `dfu-util` (เฉพาะกรณีที่ใช้สคริปต์ XIP flashing)
  3. Zig 0.14.x

ให้นำ ONNX model ของคุณ เช่น `my_model.onnx` ไปไว้ที่ `Z-Ant/datasets/models/my_model/my_model.onnx` จากนั้นคุณสามารถใช้คำสั่งต่อไปนี้เพื่อสร้างไฟล์ `libzant.a` ซึ่งจะถูกนำไปไว้ใน Arduino library เพื่อให้ไฟล์ .ino ของ Arduino สามารถเรียกใช้งานได้

  1. zig build lib-gen -Dmodel="YOUR_MODEL" -Dxip=true -Ddynamic -Ddo_export
  2. zig build lib-test -Dmodel="YOUR_MODEL" -Dxip=true -Ddynamic -Ddo_export
  3. zig build lib -Dmodel="YOUR_MODEL" -Dtarget=thumb-freestanding -Dcpu=cortex_m7 -Dxip=true -Doptimize=ReleaseSmall

Library ที่สร้างขึ้นควรถูกคัดลอกไปยัง Arduino Sketch โดยใช้คำสั่งดังนี้:

cp zig-out/YOUR_MODEL/libzant.a examples/Nicla-SmartTrashCollector/ZantLib/src/cortex-m7/

ในการ compile และ flash บอร์ด Nicla จะมี bash script สองตัวที่ต้องปรับปรุงเล็กน้อยตามระบบของคุณ ตัวแรกคือ `flash_nicla_xip.sh` และอีกตัวคือ `compile_and_flash.sh` ทั้งคู่จะอยู่ใน repository ของโปรเจกต์ที่เกี่ยวข้องกับโพสต์นี้ https://github.com/ZantFoundation/Z-Ant/tree/main/examples/Nicla-SmartTrashCollector

กระบวนการ (pipeline) เดียวกันนี้สามารถนำไปปรับใช้กับสถานที่หรือวัสดุอื่นๆ ได้ ผลลัพธ์ที่ได้คือ vision node ขนาดกะทัดรัดและประหยัดพลังงาน ซึ่งง่ายต่อการนำไปทำซ้ำและใช้งานร่วมกับระบบอื่น

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: arduino-nicla-vision-smart-trash-collector-093ce1
2450 บาท
PromptPay QR Code