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

5.3 KiB

Kutsu objektintunnistinta IoT-laitteestasi - Wio Terminal

Kun objektintunnistin on julkaistu, sitä voidaan käyttää IoT-laitteestasi.

Kopioi kuvantunnistusprojekti

Suurin osa varastotunnistimestasi on sama kuin aiemmassa oppitunnissa luomasi kuvantunnistin.

Tehtävä - kopioi kuvantunnistusprojekti

  1. Yhdistä ArduCam Wio Terminaliisi seuraamalla valmistusprojektin oppitunnin 2 ohjeita.

    Saatat myös haluta kiinnittää kameran yhteen paikkaan, esimerkiksi ripustamalla kaapelin laatikon tai tölkin päälle tai kiinnittämällä kameran laatikkoon kaksipuolisella teipillä.

  2. Luo täysin uusi Wio Terminal -projekti käyttämällä PlatformIO:ta. Nimeä projekti stock-counter.

  3. Toista vaiheet valmistusprojektin oppitunnin 2 ohjeiden mukaisesti kuvien ottamiseksi kamerasta.

  4. Toista vaiheet valmistusprojektin oppitunnin 2 ohjeiden mukaisesti kutsuaksesi kuvantunnistinta. Suurin osa tästä koodista käytetään uudelleen objektien tunnistamiseen.

Muuta koodi tunnistimesta objektintunnistimeksi

Koodi, jota käytit kuvien luokitteluun, on hyvin samanlainen kuin objektien tunnistamiseen käytettävä koodi. Suurin ero on Custom Visionista saatu URL-osoite ja kutsun tulokset.

Tehtävä - muuta koodi tunnistimesta objektintunnistimeksi

  1. Lisää seuraava include-direktiivi main.cpp-tiedoston alkuun:

    #include <vector>
    
  2. Nimeä classifyImage-funktio uudelleen detectStock-funktioksi, sekä funktion nimi että kutsu buttonPressed-funktiossa.

  3. Julista detectStock-funktion yläpuolella kynnysarvo, jolla suodatetaan pois kaikki tunnistukset, joiden todennäköisyys on alhainen:

    const float threshold = 0.3f;
    

    Toisin kuin kuvantunnistin, joka palauttaa vain yhden tuloksen per tunniste, objektintunnistin palauttaa useita tuloksia, joten kaikki alhaisen todennäköisyyden tulokset täytyy suodattaa pois.

  4. Julista detectStock-funktion yläpuolella funktio ennusteiden käsittelemiseksi:

    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ämä ottaa ennustelistan ja tulostaa sen sarjamonitoriin.

  5. Korvaa detectStock-funktion sisällä ennusteita läpikäyvän for-silmukan sisältö seuraavalla:

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

    Tämä käy läpi ennusteet ja vertaa todennäköisyyttä kynnysarvoon. Kaikki ennusteet, joiden todennäköisyys ylittää kynnysarvon, lisätään list-muuttujaan ja välitetään processPredictions-funktiolle.

  6. Lataa ja suorita koodisi. Suuntaa kamera hyllyllä oleviin esineisiin ja paina C-painiketta. Näet tulokset sarjamonitorissa:

    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%
    

    💁 Saatat joutua säätämään threshold-arvoa sopivaksi kuvillesi.

    Näet otetun kuvan ja nämä arvot Predictions-välilehdessä Custom Visionissa.

    4 tomaattipyreetölkkiä hyllyllä ennusteilla, joissa tunnistusten todennäköisyydet ovat 35.8%, 33.5%, 25.7% ja 16.6%

💁 Löydät tämän koodin code-detect/wio-terminal -kansiosta.

😀 Varastolaskurisi ohjelma onnistui!


Vastuuvapauslauseke:
Tämä asiakirja on käännetty käyttämällä tekoälypohjaista käännöspalvelua Co-op Translator. Vaikka pyrimme tarkkuuteen, huomioithan, että automaattiset käännökset voivat sisältää virheitä tai epätarkkuuksia. Alkuperäinen asiakirja sen alkuperäisellä kielellä tulisi pitää ensisijaisena lähteenä. Kriittisen tiedon osalta suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa väärinkäsityksistä tai virhetulkinnoista, jotka johtuvat tämän käännöksen käytöstä.