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

5.6 KiB

Llama a tu detector de objetos desde tu dispositivo IoT - Wio Terminal

Una vez que tu detector de objetos haya sido publicado, puede ser utilizado desde tu dispositivo IoT.

Copia el proyecto del clasificador de imágenes

La mayor parte de tu detector de inventario es igual al clasificador de imágenes que creaste en una lección anterior.

Tarea - copia el proyecto del clasificador de imágenes

  1. Conecta tu ArduCam a tu Wio Terminal, siguiendo los pasos de la lección 2 del proyecto de manufactura.

    También podrías querer fijar la cámara en una posición estable, por ejemplo, colgando el cable sobre una caja o lata, o fijando la cámara a una caja con cinta adhesiva de doble cara.

  2. Crea un proyecto nuevo para Wio Terminal usando PlatformIO. Llama a este proyecto stock-counter.

  3. Repite los pasos de la lección 2 del proyecto de manufactura para capturar imágenes desde la cámara.

  4. Repite los pasos de la lección 2 del proyecto de manufactura para llamar al clasificador de imágenes. La mayor parte de este código será reutilizado para detectar objetos.

Cambia el código de un clasificador a un detector de imágenes

El código que usaste para clasificar imágenes es muy similar al código para detectar objetos. La principal diferencia es la URL que se llama, que obtuviste de Custom Vision, y los resultados de la llamada.

Tarea - cambia el código de un clasificador a un detector de imágenes

  1. Agrega la siguiente directiva de inclusión al inicio del archivo main.cpp:

    #include <vector>
    
  2. Renombra la función classifyImage a detectStock, tanto el nombre de la función como la llamada en la función buttonPressed.

  3. Encima de la función detectStock, declara un umbral para filtrar cualquier detección que tenga una baja probabilidad:

    const float threshold = 0.3f;
    

    A diferencia de un clasificador de imágenes que solo devuelve un resultado por etiqueta, el detector de objetos devolverá múltiples resultados, por lo que cualquier resultado con baja probabilidad debe ser filtrado.

  4. Encima de la función detectStock, declara una función para procesar las predicciones:

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

    Esto toma una lista de predicciones y las imprime en el monitor serial.

  5. En la función detectStock, reemplaza el contenido del bucle for que recorre las predicciones con lo siguiente:

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

    Esto recorre las predicciones, comparando la probabilidad con el umbral. Todas las predicciones que tienen una probabilidad mayor que el umbral se agregan a una list y se pasan a la función processPredictions.

  6. Sube y ejecuta tu código. Apunta la cámara hacia objetos en una estantería y presiona el botón C. Verás la salida en el monitor serial:

    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%
    

    💁 Puede que necesites ajustar el threshold a un valor apropiado para tus imágenes.

    Podrás ver la imagen que se tomó y estos valores en la pestaña Predictions en Custom Vision.

    4 latas de pasta de tomate en una estantería con predicciones para las 4 detecciones de 35.8%, 33.5%, 25.7% y 16.6%

💁 Puedes encontrar este código en la carpeta code-detect/wio-terminal.

😀 ¡Tu programa de contador de inventario fue un éxito!


Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Si bien nos esforzamos por garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de ningún malentendido o interpretación errónea que surja del uso de esta traducción.