Differences

This shows you the differences between two versions of the page.

Link to this comparison view

priot:laboratoare:10 [2024/12/16 17:12]
jan.vaduva
priot:laboratoare:10 [2025/01/14 01:54] (current)
alexandru.bala [Detectarea obiectelor cu FOMO]
Line 16: Line 16:
  
 Pași: Pași:
-  - Descarcă firmware-ul alternativ din repository-ul ​GitHub ​al proiectului.+  - Descarcă firmware-ul alternativ din repository-ul ​[[https://​github.com/​Mjrovai/​ESP32-TinyML/​blob/​main/​ESP32-CAM_Code/​espressif-esp32-cam-ai-thinker.zip|Github]] ​al proiectului.
   - Deschide fișierul zip și execută programul de încărcare firmware pentru sistemul tău de operare.   - Deschide fișierul zip și execută programul de încărcare firmware pentru sistemul tău de operare.
   - Asigura-te ca ai toate dependentele instalate   - Asigura-te ca ai toate dependentele instalate
-      * python -m pip install pyserial>​=3.4 +      ​* **python -m pip install pyserial>​=3.4** 
-      * python -m pip install esptool>​=3.3 +      ​* **python -m pip install esptool>​=3.3** 
-  - Utilizează '​edge-impulse-daemon'​ pentru a conecta ESP32-CAM la Edge Impulse Studio. +      * **[[https://​nodejs.org/​dist/​v22.12.0/​node-v22.12.0-x64.msi|node.js v22.12.0]]** 
-  - Pentru a rula Edge Impulse pe placa de dezvoltare, execută comanda '​edge-impulse-run-impulse'​.+      * **npm install -g edge-impulse-cli --force** 
 +  - Utilizează '**edge-impulse-daemon**' pentru a conecta ESP32-CAM la Edge Impulse Studio. 
 +  - Pentru a rula Edge Impulse pe placa de dezvoltare, execută comanda '**edge-impulse-run-impulse**'.
   - Odată conectat, poți captura imagini suplimentare pentru dataset-ul tău sau utiliza funcția de clasificare live după antrenarea modelului.   - Odată conectat, poți captura imagini suplimentare pentru dataset-ul tău sau utiliza funcția de clasificare live după antrenarea modelului.
 +
 +==== Detectarea obiectelor cu FOMO ====
 +Acum că avem o cameră embedded funcțională,​ este timpul să trecem la detectarea obiectelor. În loc de clasificare simplă a imaginilor, vom antrena un model de detectare a obiectelor folosind FOMO (Faster Objects, More Objects). Această tehnică este optimizată pentru TinyML și funcționează excelent pe dispozitive cu resurse limitate, cum ar fi ESP32-CAM.
 +
 +Obiectiv:
 +Dorim să detectăm și să diferențiem trei obiecte:
 +
 +  * Măr
 +  * Banană
 +  * Cartof
 +
 +=== Pregătirea dataset-ului ===
 +Pentru detectarea obiectelor, avem nevoie de un dataset etichetat, care să conțină imagini cu mere, banane și cartofi. O sursă excelentă este Kaggle, unde poți găsi dataset-uri de înaltă calitate, cum ar fi:
 +
 +[[https://​www.kaggle.com/​datasets/​kritikseth/​fruit-and-vegetable-image-recognition?​resource=download|Fruit and Vegetable Image Recognition Dataset]]
 +
 +Acest dataset include o varietate de fructe și legume. Pentru acest proiect, concentrează-te doar pe categoriile pe care dorim să le detectăm.
 +
 +<​note>​Descarcă dataset-ul și asigură-te că include imagini cu cele trei obiecte (mere, banane, cartofi).</​note>​
 +
 +Încarcă aceste imagini în Edge Impulse Studio, în secțiunea Data Acquisition.
 +
 +Pentru pregătirea dataset-ului pentru detectarea obiectelor, va trebui să etichetezi imaginile folosind bounding boxes. Edge Impulse Studio oferă un instrument integrat pentru etichetarea și definirea regiunilor de interes (ROIs) pentru fiecare obiect din imagini.
 +
 +=== Design-ul impulsului pentru FOMO ===
 +Un impuls în Edge Impulse constă din trei pași principali:
 +  - Preprocesare:​ Redimensionarea și normalizarea imaginilor.
 +  - Extracția caracteristicilor:​ Extrage caracteristicile spațiale pentru detectarea obiectelor.
 +  - Blocul de învățare:​ Utilizarea unui model FOMO pentru detectarea obiectelor.
 +
 +== De ce FOMO? ==
 +FOMO (Faster Objects, More Objects) este un model de detectare a obiectelor optimizat pentru dispozitive edge. Acesta oferă:
 +  - Performanță în timp real pe dispozitive cu putere de calcul redusă, necesitând memorie minimă (RAM și ROM) pentru inferență.
 +  - O abordare unică, care detectează locațiile și numărul obiectelor fără a necesita modele mari.
 +
 +=== Configurarea impulsului ===
 +  * Preprocesarea imaginilor
 +    * Redimensionează imaginile la 96x96 pixeli.
 +<note tip>​Convertește-le în Grayscale (opțional) pentru a economisi memorie.</​note>​
 +  * Blocul de învățare:​
 +
 +<note tip>​Utilizează modelul FOMO (MobileNetV2 0.35) disponibil în Edge Impulse Studio.</​note>​
 +  * Salvează parametrii și continuă cu antrenarea.
 +
 +==== Antrenarea modelului de detectare a obiectelor ====
 +În timpul antrenării,​ modelul FOMO va detecta obiecte învățând modele din dataset-ul etichetat. Spre deosebire de clasificarea simplă a imaginilor, detectarea obiectelor se concentrează pe:
 +
 +  * Detectarea prezenței obiectelor într-o imagine.
 +  * Identificarea locațiilor aproximative utilizând o abordare bazată pe grilă, care este eficientă din punct de vedere al resurselor.
 +Augmentarea datelor:
 +
 +Edge Impulse aplică augmentarea datelor pentru a îmbunătăți performanța modelului, introducând variații în datele de antrenament,​ cum ar fi:
 +
 +  * Răsturnări aleatorii.
 +  * Decupări.
 +  * Ajustări ale luminozității.
 +
 +=== Implementarea ====
 +După ce modelul este antrenat, acesta poate fi implementat ca o bibliotecă Arduino compatibilă cu ESP32-CAM.
 +
 +  * Exportă modelul din Edge Impulse Studio ca bibliotecă .zip Arduino.
 +
 +  * Deschide Arduino IDE:
 +
 +    * Mergi la Sketch > Include Library > Add .ZIP Library.
 +    * Adaugă biblioteca descărcată.
 +
 +  * Deschide sketch-ul de exemplu furnizat de Edge Impulse: FOMO Object Detection > esp32 > esp32_camera
 +    * Modifică sketch-ul și selectează pin-urile corecte ale camerei:
 +
 +<​code>​ #define CAMERA_MODEL_AI_THINKER ​  </​code>​
 +
 +  * Încarcă codul pe ESP32-CAM.
 +
 +=== Testarea modelului ===
 +După implementarea codului, ESP32-CAM va:
 +
 +  - Captura o fotografie cu camera.
 +  - Realiza detectarea obiectelor utilizând modelul FOMO.
 +  - Afișa obiectele detectate și probabilitățile lor în Serial Monitor.
 +
 +=== Rezultate și optimizare ===
 +Modelul FOMO cu MobileNetV2 0.35 oferă performanțe excelente pentru detectarea obiectelor în timp real pe ESP32-CAM. Timpul de inferență este minim, asigurând o detectare lină fără a depăși limitele de memorie ale dispozitivului.
 +
 +Pentru optimizare suplimentară:​
 +
 +Ia în considerare utilizarea bibliotecii ESP NN de la Edge Impulse pentru a accelera inferența și a reduce latența.
 +Optimizează utilizarea memoriei în codul final pentru a elibera RAM suplimentar pentru modele mai mari, dacă este necesar.
  
priot/laboratoare/10.1734361920.txt.gz · Last modified: 2024/12/16 17:12 by jan.vaduva
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0