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

5.8 KiB

Rufen Sie Ihren Objektdetektor von Ihrem IoT-Gerät aus - Wio Terminal

Sobald Ihr Objektdetektor veröffentlicht wurde, kann er von Ihrem IoT-Gerät aus verwendet werden.

Kopieren Sie das Bildklassifizierungsprojekt

Der Großteil Ihres Lagerdetektors ist identisch mit dem Bildklassifizierer, den Sie in einer vorherigen Lektion erstellt haben.

Aufgabe - Kopieren Sie das Bildklassifizierungsprojekt

  1. Verbinden Sie Ihre ArduCam mit Ihrem Wio Terminal, indem Sie die Schritte aus Lektion 2 des Fertigungsprojekts befolgen.

    Sie könnten die Kamera auch in einer festen Position befestigen, zum Beispiel, indem Sie das Kabel über eine Schachtel oder Dose hängen oder die Kamera mit doppelseitigem Klebeband an einer Schachtel befestigen.

  2. Erstellen Sie ein brandneues Wio Terminal-Projekt mit PlatformIO. Nennen Sie dieses Projekt stock-counter.

  3. Wiederholen Sie die Schritte aus Lektion 2 des Fertigungsprojekts, um Bilder mit der Kamera aufzunehmen.

  4. Wiederholen Sie die Schritte aus Lektion 2 des Fertigungsprojekts, um den Bildklassifizierer aufzurufen. Der Großteil dieses Codes wird wiederverwendet, um Objekte zu erkennen.

Ändern Sie den Code von einem Klassifizierer zu einem Objektdetektor

Der Code, den Sie verwendet haben, um Bilder zu klassifizieren, ist sehr ähnlich zu dem Code, der Objekte erkennt. Der Hauptunterschied ist die URL, die Sie von Custom Vision erhalten haben, und die Ergebnisse des Aufrufs.

Aufgabe - Ändern Sie den Code von einem Klassifizierer zu einem Objektdetektor

  1. Fügen Sie die folgende Include-Direktive oben in die Datei main.cpp ein:

    #include <vector>
    
  2. Benennen Sie die Funktion classifyImage in detectStock um, sowohl den Namen der Funktion als auch den Aufruf in der Funktion buttonPressed.

  3. Deklarieren Sie oberhalb der Funktion detectStock eine Schwelle, um alle Erkennungen mit einer niedrigen Wahrscheinlichkeit herauszufiltern:

    const float threshold = 0.3f;
    

    Im Gegensatz zu einem Bildklassifizierer, der nur ein Ergebnis pro Tag zurückgibt, liefert der Objektdetektor mehrere Ergebnisse. Daher müssen alle mit einer niedrigen Wahrscheinlichkeit herausgefiltert werden.

  4. Deklarieren Sie oberhalb der Funktion detectStock eine Funktion, um die Vorhersagen zu verarbeiten:

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

    Diese Funktion nimmt eine Liste von Vorhersagen und gibt sie im seriellen Monitor aus.

  5. Ersetzen Sie in der Funktion detectStock den Inhalt der for-Schleife, die durch die Vorhersagen iteriert, mit folgendem:

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

    Diese Schleife durchläuft die Vorhersagen und vergleicht die Wahrscheinlichkeit mit der Schwelle. Alle Vorhersagen, die eine höhere Wahrscheinlichkeit als die Schwelle haben, werden zu einer list hinzugefügt und an die Funktion processPredictions übergeben.

  6. Laden Sie Ihren Code hoch und führen Sie ihn aus. Richten Sie die Kamera auf Objekte in einem Regal und drücken Sie die C-Taste. Sie werden die Ausgabe im seriellen Monitor sehen:

    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%
    

    💁 Möglicherweise müssen Sie die threshold auf einen geeigneten Wert für Ihre Bilder anpassen.

    Sie können das aufgenommene Bild und diese Werte im Predictions-Tab in Custom Vision sehen.

    4 Dosen Tomatenmark auf einem Regal mit Vorhersagen für die 4 Erkennungen von 35,8 %, 33,5 %, 25,7 % und 16,6 %

💁 Sie finden diesen Code im Ordner code-detect/wio-terminal.

😀 Ihr Lagerzählprogramm war ein Erfolg!

Haftungsausschluss:
Dieses Dokument wurde mit dem KI-Übersetzungsdienst Co-op Translator übersetzt. Obwohl wir uns um Genauigkeit bemühen, beachten Sie bitte, dass automatisierte Übersetzungen Fehler oder Ungenauigkeiten enthalten können. Das Originaldokument in seiner ursprünglichen Sprache sollte als maßgebliche Quelle betrachtet werden. Für kritische Informationen wird eine professionelle menschliche Übersetzung empfohlen. Wir übernehmen keine Haftung für Missverständnisse oder Fehlinterpretationen, die sich aus der Nutzung dieser Übersetzung ergeben.