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

5.6 KiB

Roep je objectdetector aan vanaf je IoT-apparaat - Wio Terminal

Zodra je objectdetector is gepubliceerd, kan deze worden gebruikt vanaf je IoT-apparaat.

Kopieer het project van de beeldclassifier

Het grootste deel van je voorraaddetector is hetzelfde als de beeldclassifier die je in een eerdere les hebt gemaakt.

Taak - kopieer het project van de beeldclassifier

  1. Verbind je ArduCam met je Wio Terminal, volgens de stappen uit les 2 van het productieproject.

    Je kunt er ook voor kiezen om de camera in een vaste positie te plaatsen, bijvoorbeeld door de kabel over een doos of blik te hangen, of de camera met dubbelzijdige tape aan een doos te bevestigen.

  2. Maak een gloednieuw Wio Terminal-project met PlatformIO. Noem dit project stock-counter.

  3. Herhaal de stappen uit les 2 van het productieproject om beelden van de camera vast te leggen.

  4. Herhaal de stappen uit les 2 van het productieproject om de beeldclassifier aan te roepen. Het grootste deel van deze code zal opnieuw worden gebruikt om objecten te detecteren.

Wijzig de code van een classifier naar een objectdetector

De code die je gebruikte om beelden te classificeren lijkt erg op de code om objecten te detecteren. Het belangrijkste verschil is de URL die wordt aangeroepen, die je hebt verkregen van Custom Vision, en de resultaten van de oproep.

Taak - wijzig de code van een classifier naar een objectdetector

  1. Voeg de volgende include-richtlijn toe aan de bovenkant van het bestand main.cpp:

    #include <vector>
    
  2. Hernoem de functie classifyImage naar detectStock, zowel de naam van de functie als de oproep in de functie buttonPressed.

  3. Verklaar boven de functie detectStock een drempelwaarde om detecties met een lage waarschijnlijkheid eruit te filteren:

    const float threshold = 0.3f;
    

    In tegenstelling tot een beeldclassifier die slechts één resultaat per tag retourneert, zal de objectdetector meerdere resultaten retourneren, dus alle met een lage waarschijnlijkheid moeten worden gefilterd.

  4. Verklaar boven de functie detectStock een functie om de voorspellingen te verwerken:

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

    Deze functie neemt een lijst met voorspellingen en print ze naar de seriële monitor.

  5. Vervang in de functie detectStock de inhoud van de for-lus die door de voorspellingen loopt met het volgende:

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

    Deze lus doorloopt de voorspellingen en vergelijkt de waarschijnlijkheid met de drempelwaarde. Alle voorspellingen met een waarschijnlijkheid hoger dan de drempelwaarde worden toegevoegd aan een list en doorgegeven aan de functie processPredictions.

  6. Upload en voer je code uit. Richt de camera op objecten op een plank en druk op de C-knop. Je zult de uitvoer zien in de seriële monitor:

    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%
    

    💁 Mogelijk moet je de threshold aanpassen naar een geschikte waarde voor jouw beelden.

    Je zult het beeld dat is genomen kunnen zien, en deze waarden in het tabblad Predictions in Custom Vision.

    4 blikken tomatenpuree op een plank met voorspellingen voor de 4 detecties van 35,8%, 33,5%, 25,7% en 16,6%

💁 Je kunt deze code vinden in de map code-detect/wio-terminal.

😀 Je voorraadtelprogramma was een succes!


Disclaimer:
Dit document is vertaald met behulp van de AI-vertalingsservice Co-op Translator. Hoewel we streven naar nauwkeurigheid, dient u zich ervan bewust te zijn dat geautomatiseerde vertalingen fouten of onnauwkeurigheden kunnen bevatten. Het originele document in zijn oorspronkelijke taal moet worden beschouwd als de gezaghebbende bron. Voor cruciale informatie wordt professionele menselijke vertaling aanbevolen. Wij zijn niet aansprakelijk voor eventuele misverstanden of verkeerde interpretaties die voortvloeien uit het gebruik van deze vertaling.