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/sk/5-retail/lessons/2-check-stock-device/wio-terminal-object-detecto...

5.3 KiB

Zavolajte svoj detektor objektov z IoT zariadenia - Wio Terminal

Keď je váš detektor objektov publikovaný, môžete ho používať zo svojho IoT zariadenia.

Skopírujte projekt klasifikátora obrázkov

Väčšina vášho detektora zásob je rovnaká ako klasifikátor obrázkov, ktorý ste vytvorili v predchádzajúcej lekcii.

Úloha - skopírujte projekt klasifikátora obrázkov

  1. Pripojte svoju ArduCam k Wio Terminalu podľa krokov z lekcie 2 výrobného projektu.

    Môžete tiež upevniť kameru do jednej polohy, napríklad zavesením kábla cez krabicu alebo plechovku, alebo pripevnením kamery na krabicu pomocou obojstrannej lepiacej pásky.

  2. Vytvorte úplne nový projekt pre Wio Terminal pomocou PlatformIO. Nazvite tento projekt stock-counter.

  3. Zopakujte kroky z lekcie 2 výrobného projektu na zachytenie obrázkov z kamery.

  4. Zopakujte kroky z lekcie 2 výrobného projektu na zavolanie klasifikátora obrázkov. Väčšina tohto kódu bude znovu použitá na detekciu objektov.

Zmeňte kód z klasifikátora na detektor obrázkov

Kód, ktorý ste použili na klasifikáciu obrázkov, je veľmi podobný kódu na detekciu objektov. Hlavný rozdiel je v URL, ktoré ste získali z Custom Vision, a výsledkoch volania.

Úloha - zmeňte kód z klasifikátora na detektor obrázkov

  1. Pridajte nasledujúci direktív na začiatok súboru main.cpp:

    #include <vector>
    
  2. Premenujte funkciu classifyImage na detectStock, a to ako názov funkcie, tak aj volanie vo funkcii buttonPressed.

  3. Nad funkciou detectStock deklarujte prahovú hodnotu na filtrovanie detekcií s nízkou pravdepodobnosťou:

    const float threshold = 0.3f;
    

    Na rozdiel od klasifikátora obrázkov, ktorý vracia iba jeden výsledok na značku, detektor objektov vráti viacero výsledkov, takže tie s nízkou pravdepodobnosťou je potrebné filtrovať.

  4. Nad funkciou detectStock deklarujte funkciu na spracovanie predikcií:

    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);
        }
    }
    

    Táto funkcia vezme zoznam predikcií a vytlačí ich do sériového monitora.

  5. Vo funkcii detectStock nahraďte obsah cyklu for, ktorý prechádza predikciami, nasledujúcim:

    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);
    

    Tento cyklus prechádza predikciami a porovnáva pravdepodobnosť s prahovou hodnotou. Všetky predikcie s pravdepodobnosťou vyššou ako prahová hodnota sa pridajú do zoznamu a odovzdajú funkcii processPredictions.

  6. Nahrajte a spustite svoj kód. Namierte kameru na objekty na poličke a stlačte tlačidlo C. Výstup uvidíte v sériovom monitore:

    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%
    

    💁 Možno budete musieť upraviť hodnotu threshold na vhodnú hodnotu pre vaše obrázky.

    Budete môcť vidieť obrázok, ktorý bol zachytený, a tieto hodnoty na karte Predictions v Custom Vision.

    4 plechovky paradajkového pretlaku na poličke s predikciami pre 4 detekcie: 35.8%, 33.5%, 25.7% a 16.6%

💁 Tento kód nájdete v priečinku code-detect/wio-terminal.

😀 Váš program na počítanie zásob bol úspešný!


Upozornenie:
Tento dokument bol preložený pomocou služby AI prekladu Co-op Translator. Hoci sa snažíme o presnosť, prosím, berte na vedomie, že automatizované preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho rodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.