Objektumok észlelése az ESP32-CAM segítségével

Detecting Objects with the ESP32-CAM

Az ESP32-CAM egy nagy teljesítményű, olcsó mikrokontroller, beépített kameramodullal, amely képes képeket rögzíteni és élő videókat streaming. A feldolgozási képességek kihasználásával és a külső gépi tanulási könyvtárak vagy keretek integrálásával engedélyezheti az objektumok észlelését közvetlenül az ESP32-CAM-on. Ez az oktatóanyag az alapvető objektum-észlelés beállításán keresztül az ESP32-CAM-szal előre kiképzett modellek segítségével.


Mire lesz szüksége

  1. ESP32-CAM modul
  2. FTDI programozó (USB-soros adapter)
  3. Jumper vezetékek
  4. Kenyérlemez (opcionális)
  5. Egy számítógép, amelyen az Arduino IDE telepített
  6. Edge impulzus vagy tensorflow lite objektumdetektálási modellekhez

1. lépés: Az Arduino IDE beállítása

1. Telepítse az ESP32 tábla csomagot

  1. Nyissa meg az Arduino IDE -t.

  2. Elindul Irat > Preferenciák.

  3. A "További Board Manager URLS" mezőben adja hozzá:

    https://dl.espressif.com/dl/package_esp32_index.json
    
  4. Kattintás RENDBEN.

  5. Elindul Szerszámok > Bizottság > Táblák menedzser.

  6. Keressen az "ESP32" -re, és telepítse a csomagot az Espressif Systems segítségével.

2. Telepítse a szükséges könyvtárakat

  • Telepítse az "ESP32 kamera" könyvtárat.
  • Az objektumdetektálási modellekhez telepítse a "TensorFlow Lite Micro" (vagy hasonló könyvtárakat).

2. lépés: Az ESP32-CAM bekötése

ESP32-CAM PIN FTDI programozó csap
GND GND
5 V -os VCC (5V)
U0R Tx
U0T RX
GND GND (IO0 - GND a villogáshoz)

Fontos: Csatlakoztassa az IO0 tűt a GND-hez, hogy az ESP32-CAM-ot flash módba tegye.


3. lépés: Az alapvető objektum -észlelési vázlat feltöltése

1. Válassza ki a táblát és a portot

  1. Elindul Szerszámok > Bizottság és válasszon Ai-thinker ESP32-CAM.
  2. Alatt Szerszámok, válassza ki a helyes Comport Az FTDI programozójához.

2. A kód előkészítése

Használjon egy alapvető példát egy előre kiképzett objektumdetektálási modell (például a TensorFlow Lite modell) betöltéséhez. Az alábbiakban egy mintarészlet található az objektum észlelésének integrálására:

#include <esp_camera.h>
#include <TensorFlowLite_ESP32.h>

// Replace with your specific model and labels
#include "model.h"
#include "labels.h"

void setup() {
  Serial.begin(115200);

  // Initialize the camera
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;

  if (!esp_camera_init(&config)) {
    Serial.println("Camera initialized successfully!");
  } else {
    Serial.println("Camera initialization failed!");
    while (1);
  }

  // Load the TensorFlow Lite model
  TfLiteStatus model_status = tflite::InitModel(model);
  if (model_status != kTfLiteOk) {
    Serial.println("Failed to initialize the model");
    while (1);
  }
}

void loop() {
  // Capture a frame
  camera_fb_t *frame = esp_camera_fb_get();
  if (!frame) {
    Serial.println("Camera capture failed");
    return;
  }

  // Run object detection
  tflite::RunInference(frame->buf, frame->len);

  // Display detected objects
  for (int i = 0; i < NUM_CLASSES; i++) {
    float confidence = tflite::GetConfidence(i);
    if (confidence > 0.5) {
      Serial.print("Detected: ");
      Serial.print(labels[i]);
      Serial.print(" with confidence: ");
      Serial.println(confidence);
    }
  }

  esp_camera_fb_return(frame); // Free the frame buffer
  delay(200);
}

3. Töltse fel a kódot

  1. Nyomja meg a Visszaállít gomb az ESP32-CAM-on, míg az IO0 csatlakozik a GND-hez.
  2. Kattintás Feltöltés az Arduino Ide -ben.
  3. Miután a feltöltés befejeződött, válassza le az IO0 -t a GND -ből, és nyomja meg a Visszaállít ismét gomb.

4. lépés: Az objektumdetektálási eredmények elérése

  1. Nyissa meg a soros monitort (Szerszámok > Soros monitor) és állítsa be az adatátviteli sebességet 115200.
  2. Tekintse meg az észlelt tárgyakat és azok megbízhatósági pontszámait a soros monitorban.
  3. Bővítheti ezt az eredmények megjelenítésével egy webes felületen, HTML használatával, vagy integrálva az olyan tárgyak internetein, mint az MQTT.

5. lépés: Az objektum észlelésének javítása

  • Modell optimalizálás: Használjon Edge Impulse vagy TensorFlow Lite-t az ESP32-CAM számára optimalizált egyedi modellek kiképzéséhez.
  • Webes felület: Fokozza a projektet az észlelt objektumok közvetlenül a böngésző felületén történő megjelenítésével.
  • IOT integráció: Küldje el az észlelési eredményeket a felhőalapú szolgáltatásoknak további feldolgozási vagy riasztási rendszerekhez.

Hibaelhárítás

  • Túl nagy modell: Győződjön meg arról, hogy a modell mérete illeszkedik az ESP32-CAM memóriájába.
  • A kamerát nem észlelték: Ellenőrizze a vezetékeket, és ellenőrizze, hogy a kamera biztonságosan csatlakoztatva van -e.
  • Alacsony pontosság: Képzze meg vagy finomítsa a modellt relevánsabb adatokkal.

Az objektumdetektálás alkalmazása az ESP32-CAM segítségével

  1. Biztonsági kamerák mozgással vagy objektum észlelésével
  2. Intelligens otthoni automatizálás (például szállítások vagy háziállatok észlelése)
  3. Ipari megfigyelő és számláló rendszerek
  4. Vadon élő állatok megfigyelése és kutatása

Következtetés

Sikeresen beállította az alapvető objektumdetektálást az ESP32-CAM segítségével. Ez a hatalmas modul, a gépi tanulási modellekkel kombinálva, végtelen lehetőségeket nyit meg a valós alkalmazások számára. Kísérletezzen különböző modellekkel, javítsa a pontosságot, és bővítse a funkcionalitást a projekt igényeinek megfelelően!

Hagyj egy megjegyzést

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.