5.0 KiB
Kutsu oma objektidetektorit IoT-seadmest - Wio Terminal
Kui sinu objektidetektor on avaldatud, saab seda kasutada IoT-seadmest.
Kopeeri pildiklassifitseerimise projekt
Enamik sinu laoseisu detektori koodist on sama, mis pildiklassifitseerija, mille lõid eelmises õppetükis.
Ülesanne - kopeeri pildiklassifitseerimise projekt
-
Ühenda oma ArduCam Wio Terminaliga, järgides samme tootmisprojekti 2. õppetükist.
Võid ka kaamera fikseerida ühte kindlasse asendisse, näiteks riputades kaabli üle kasti või purgi, või kinnitades kaamera kasti külge kahepoolse teibiga.
-
Loo täiesti uus Wio Terminali projekt, kasutades PlatformIO-d. Nimeta see projekt
stock-counter. -
Korda samme tootmisprojekti 2. õppetükist, et kaamerast pilte jäädvustada.
-
Korda samme tootmisprojekti 2. õppetükist, et kutsuda pildiklassifitseerijat. Enamik sellest koodist kasutatakse uuesti objektide tuvastamiseks.
Muuda kood klassifitseerijast objektidetektoriks
Kood, mida kasutasid piltide klassifitseerimiseks, on väga sarnane koodile, mis tuvastab objekte. Peamine erinevus on URL, mida kutsutakse (saadud Custom Visionist), ja kõne tulemused.
Ülesanne - muuda kood klassifitseerijast objektidetektoriks
-
Lisa järgmine include-direktiiv
main.cppfaili algusesse:#include <vector> -
Nimeta funktsioon
classifyImageümberdetectStock, nii funktsiooni nimi kui ka kõnebuttonPressedfunktsioonis. -
Deklareeri
detectStockfunktsiooni kohal lävend, et filtreerida välja tuvastused, mille tõenäosus on madal:const float threshold = 0.3f;Erinevalt pildiklassifitseerijast, mis tagastab ainult ühe tulemuse iga sildi kohta, tagastab objektidetektor mitu tulemust, seega tuleb madala tõenäosusega tulemused välja filtreerida.
-
Deklareeri
detectStockfunktsiooni kohal funktsioon ennustuste töötlemiseks: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); } }See võtab ennustuste loendi ja prindib need seeriamonitorile.
-
Asenda
detectStockfunktsioonis ennustuste läbikäimise tsükli sisu järgmisega: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);See tsükkel käib läbi ennustused, võrreldes tõenäosust lävendiga. Kõik ennustused, mille tõenäosus on kõrgem kui lävend, lisatakse
list-i ja edastatakseprocessPredictionsfunktsioonile. -
Laadi üles ja käivita oma kood. Suuna kaamera riiulil olevatele objektidele ja vajuta C-nuppu. Näed väljundit seeriamonitoril:
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%💁 Võid vajadusel kohandada
thresholdväärtust, et see sobiks sinu piltidega.Näed tehtud pilti ja neid väärtusi Predictions vahekaardil Custom Visionis.
💁 Selle koodi leiad code-detect/wio-terminal kaustast.
😀 Sinu laoseisu loendamise programm oli edukas!
Lahtiütlus:
See dokument on tõlgitud AI tõlketeenuse Co-op Translator abil. Kuigi püüame tagada täpsust, palume arvestada, et automaatsed tõlked võivad sisaldada vigu või ebatäpsusi. Algne dokument selle algses keeles tuleks pidada autoriteetseks allikaks. Olulise teabe puhul soovitame kasutada professionaalset inimtõlget. Me ei vastuta selle tõlke kasutamisest tulenevate arusaamatuste või valesti tõlgenduste eest.
