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
-
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ä.
-
Luo täysin uusi Wio Terminal -projekti käyttämällä PlatformIO:ta. Nimeä projekti
stock-counter
. -
Toista vaiheet valmistusprojektin oppitunnin 2 ohjeiden mukaisesti kuvien ottamiseksi kamerasta.
-
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
-
Lisää seuraava include-direktiivi
main.cpp
-tiedoston alkuun:#include <vector>
-
Nimeä
classifyImage
-funktio uudelleendetectStock
-funktioksi, sekä funktion nimi että kutsubuttonPressed
-funktiossa. -
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.
-
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.
-
Korvaa
detectStock
-funktion sisällä ennusteita läpikäyvänfor
-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äänprocessPredictions
-funktiolle. -
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.
💁 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ä.