You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/it/5-retail/lessons/2-check-stock-device/wio-terminal-object-detecto...

5.7 KiB

Chiama il tuo rilevatore di oggetti dal tuo dispositivo IoT - Wio Terminal

Una volta pubblicato il tuo rilevatore di oggetti, potrà essere utilizzato dal tuo dispositivo IoT.

Copia il progetto del classificatore di immagini

La maggior parte del tuo rilevatore di oggetti è simile al classificatore di immagini che hai creato in una lezione precedente.

Attività - copia il progetto del classificatore di immagini

  1. Collega la tua ArduCam al Wio Terminal, seguendo i passaggi descritti nella lezione 2 del progetto di produzione.

    Potresti anche voler fissare la fotocamera in una posizione stabile, ad esempio, appendendo il cavo sopra una scatola o una lattina, oppure fissando la fotocamera a una scatola con del nastro biadesivo.

  2. Crea un nuovo progetto Wio Terminal utilizzando PlatformIO. Chiama questo progetto stock-counter.

  3. Ripeti i passaggi descritti nella lezione 2 del progetto di produzione per catturare immagini dalla fotocamera.

  4. Ripeti i passaggi descritti nella lezione 2 del progetto di produzione per chiamare il classificatore di immagini. La maggior parte di questo codice verrà riutilizzata per rilevare oggetti.

Modifica il codice da classificatore a rilevatore di immagini

Il codice che hai utilizzato per classificare le immagini è molto simile a quello per rilevare oggetti. La principale differenza è l'URL che viene chiamato, ottenuto da Custom Vision, e i risultati della chiamata.

Attività - modifica il codice da classificatore a rilevatore di immagini

  1. Aggiungi la seguente direttiva include all'inizio del file main.cpp:

    #include <vector>
    
  2. Rinomina la funzione classifyImage in detectStock, sia il nome della funzione che la chiamata nella funzione buttonPressed.

  3. Sopra la funzione detectStock, dichiara una soglia per filtrare eventuali rilevamenti con una bassa probabilità:

    const float threshold = 0.3f;
    

    A differenza di un classificatore di immagini che restituisce un solo risultato per tag, il rilevatore di oggetti restituirà più risultati, quindi quelli con una bassa probabilità devono essere filtrati.

  4. Sopra la funzione detectStock, dichiara una funzione per elaborare le previsioni:

    void processPredictions(std::vector<JsonVariant> &predictions)
    {
        for(JsonVariant prediction : predictions)
        {
            String tag = prediction["tagName"].as<String>();
            float probability = prediction["probability"].as<float>();
    
            char buff[32];
            sprintf(buff, "%s:\t%.2f%%", tag.c_str(), probability * 100.0);
            Serial.println(buff);
        }
    }
    

    Questa funzione prende una lista di previsioni e le stampa sul monitor seriale.

  5. Nella funzione detectStock, sostituisci il contenuto del ciclo for che scorre tra le previsioni con il seguente:

    std::vector<JsonVariant> passed_predictions;
    
    for(JsonVariant prediction : predictions) 
    {
        float probability = prediction["probability"].as<float>();
        if (probability > threshold)
        {
            passed_predictions.push_back(prediction);
        }
    }
    
    processPredictions(passed_predictions);
    

    Questo ciclo scorre tra le previsioni, confrontando la probabilità con la soglia. Tutte le previsioni con una probabilità superiore alla soglia vengono aggiunte a una list e passate alla funzione processPredictions.

  6. Carica ed esegui il tuo codice. Punta la fotocamera verso oggetti su uno scaffale e premi il pulsante C. Vedrai l'output sul monitor seriale:

    Connecting to WiFi..
    Connected!
    Image captured
    Image read to buffer with length 17416
    tomato paste:   35.84%
    tomato paste:   35.87%
    tomato paste:   34.11%
    tomato paste:   35.16%
    

    💁 Potresti dover regolare la threshold a un valore appropriato per le tue immagini.

    Sarai in grado di vedere l'immagine scattata e questi valori nella scheda Predictions in Custom Vision.

    4 lattine di concentrato di pomodoro su uno scaffale con previsioni per i 4 rilevamenti di 35.8%, 33.5%, 25.7% e 16.6%

💁 Puoi trovare questo codice nella cartella code-detect/wio-terminal.

😀 Il tuo programma per il conteggio delle scorte è stato un successo!

Disclaimer (Avvertenza):
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un traduttore umano. Non siamo responsabili per eventuali incomprensioni o interpretazioni errate derivanti dall'uso di questa traduzione.