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

5.4 KiB

Paleiskite savo objektų detektorių iš IoT įrenginio - Wio Terminal

Kai jūsų objektų detektorius bus paskelbtas, jį galėsite naudoti iš savo IoT įrenginio.

Nukopijuokite vaizdų klasifikatoriaus projektą

Dauguma jūsų atsargų detektoriaus kodo yra tokia pati kaip vaizdų klasifikatoriaus, kurį sukūrėte ankstesnėje pamokoje.

Užduotis - nukopijuokite vaizdų klasifikatoriaus projektą

  1. Prijunkite savo ArduCam prie Wio Terminal, vadovaudamiesi 2-osios gamybos projekto pamokos žingsniais.

    Taip pat galite pritvirtinti kamerą vienoje pozicijoje, pavyzdžiui, pakabindami kabelį virš dėžutės ar skardinės arba pritvirtindami kamerą prie dėžutės su dvipuse lipnia juosta.

  2. Sukurkite visiškai naują Wio Terminal projektą naudodami PlatformIO. Pavadinkite šį projektą stock-counter.

  3. Pakartokite žingsnius iš 2-osios gamybos projekto pamokos, kad užfiksuotumėte vaizdus iš kameros.

  4. Pakartokite žingsnius iš 2-osios gamybos projekto pamokos, kad iškviestumėte vaizdų klasifikatorių. Dauguma šio kodo bus panaudota objektų aptikimui.

Pakeiskite kodą iš klasifikatoriaus į vaizdų detektorių

Kodas, kurį naudojote vaizdams klasifikuoti, yra labai panašus į kodą, skirtą objektams aptikti. Pagrindinis skirtumas yra URL, kurį gavote iš Custom Vision, ir skambučio rezultatai.

Užduotis - pakeiskite kodą iš klasifikatoriaus į vaizdų detektorių

  1. Pridėkite šią include direktyvą failo main.cpp viršuje:

    #include <vector>
    
  2. Pervardykite funkciją classifyImage į detectStock, tiek funkcijos pavadinimą, tiek jos iškvietimą funkcijoje buttonPressed.

  3. Virš funkcijos detectStock deklaruokite slenkstį, kad atmestumėte aptikimus su maža tikimybe:

    const float threshold = 0.3f;
    

    Skirtingai nuo vaizdų klasifikatoriaus, kuris grąžina tik vieną rezultatą kiekvienai žymai, objektų detektorius grąžina kelis rezultatus, todėl tie, kurių tikimybė maža, turi būti atmesti.

  4. Virš funkcijos detectStock deklaruokite funkciją, skirtą apdoroti prognozes:

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

    Ši funkcija priima prognozių sąrašą ir išveda jas į serijinį monitorių.

  5. Funkcijoje detectStock pakeiskite for ciklo, kuris iteruoja per prognozes, turinį šiuo:

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

    Šis ciklas iteruoja per prognozes, lygindamas tikimybę su slenksčiu. Visos prognozės, kurių tikimybė didesnė už slenkstį, pridedamos į list ir perduodamos funkcijai processPredictions.

  6. Įkelkite ir paleiskite savo kodą. Nukreipkite kamerą į objektus lentynoje ir paspauskite C mygtuką. Rezultatus pamatysite serijiniame monitoriuje:

    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%
    

    💁 Gali tekti pritaikyti threshold reikšmę, kad ji atitiktų jūsų vaizdus.

    Galėsite pamatyti užfiksuotą vaizdą ir šias reikšmes Predictions skirtuke Custom Vision.

    4 pomidorų pastos skardinės lentynoje su prognozėmis: 35.8%, 33.5%, 25.7% ir 16.6%

💁 Šį kodą galite rasti code-detect/wio-terminal aplanke.

😀 Jūsų atsargų skaičiavimo programa buvo sėkminga!


Atsakomybės atsisakymas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.