Después de crear un modelo de AutoML Vision Edge y exportarlo a un depósito de Google Cloud Storage, puedes usar los servicios de RESTful con tus modelos de AutoML Vision Edge y con imágenes de Docker de TF Serving.
Qué compilarás
Los contenedores de Docker pueden ayudarte a implementar modelos de Edge con facilidad en diferentes dispositivos. Puedes ejecutar modelos de Edge si llamas a las API de REST desde los contenedores en el lenguaje que prefieras, con el beneficio adicional de no tener que instalar dependencias o buscar las versiones correctas de TensorFlow.
En este instructivo, podrás experimentar paso a paso la ejecución de modelos de Edge en dispositivos que usan contenedores de Docker.
En este instructivo, se te guiará a través de tres pasos:
- Obtener contenedores ya compilados
- Ejecutar contenedores con modelos de Edge para iniciar las API de REST
- Realizar predicciones
Muchos dispositivos solo tienen CPU, mientras que otros pueden tener GPU para obtener predicciones más rápidas. Por lo tanto, brindamos instructivos con contenedores de CPU y GPU ya compilados.
Objetivos
En esta introducción detallada, usarás muestras de códigos para realizar lo siguiente:
- Obtener el contenedor de Docker
- Iniciar las API de REST mediante contenedores de Docker con modelos de Edge
- Hacer predicciones para obtener resultados analizados
Antes de comenzar
Para completar este instructivo, sigue estos pasos:
- Entrena un modelo exportable de Edge. Sigue la Guía de inicio rápido sobre modelos de dispositivos de Edge para entrenar un modelo de Edge.
- Exporta un modelo de AutoML Vision Edge. Este modelo se entrega con contenedores como API de REST.
- Instala Docker. Este es el software necesario para ejecutar contenedores de Docker.
- Instala el controlador y Docker de NVIDIA (opcional). Si tienes dispositivos con GPU y deseas obtener predicciones más rápidas, puedes realizar este paso opcional.
- Prepara imágenes de prueba. Estas imágenes se enviarán en solicitudes para obtener resultados analizados.
En la siguiente sección, se encuentran los detalles para instalar el software necesario y exportar modelos.
Exporta un modelo de AutoML Vision Edge
Después de entrenar un modelo de Edge, puedes exportarlo a diferentes dispositivos.
Los contenedores admiten modelos de TensorFlow, que se denominan saved_model.pb
en la exportación.
Si quieres exportar un modelo de AutoML Vision Edge para contenedores, selecciona la pestaña Container (Contenedor) en la IU y, luego, exporta el modelo a ${YOUR_MODEL_PATH} en Google Cloud Storage. Este modelo exportado se entrega más adelante con contenedores como API de REST.
Para descargar el modelo exportado de forma local, ejecuta el siguiente comando.
En el ejemplo anterior, se ilustra lo siguiente:
- ${YOUR_MODEL_PATH}: Es la ubicación del modelo en Google Cloud Storage (por ejemplo,
gs://my-bucket-vcm/models/edge/ICN4245971651915048908/2020-01-20_01-27-14-064_tf-saved-model/
). - ${YOUR_LOCAL_MODEL_PATH}: Es la ruta local en la que deseas descargar el modelo (por ejemplo,
/tmp
).
gsutil cp ${YOUR_MODEL_PATH} ${YOUR_LOCAL_MODEL_PATH}/saved_model.pb
Instala Docker
Docker es un software que se usa para implementar y ejecutar aplicaciones dentro de contenedores.
Instala Docker Community Edition (CE) en tu sistema. Lo usarás para entregar modelos de Edge como API de REST.
Instala el controlador y el DOCKER de NVIDIA (opcional, solo para GPU)
Algunos dispositivos tienen GPU para proporcionar predicciones más rápidas. Se proporciona el contenedor de Docker de GPU compatible con GPU de NVIDIA.
Para ejecutar contenedores de GPU, debes instalar el controlador de NVIDIA y el Docker de NVIDIA en tu sistema.
Ejecuta inferencias de modelos mediante CPU
En esta sección, se brindan instrucciones paso a paso para ejecutar inferencias de modelos mediante contenedores de CPU. Usa el Docker instalado a fin de obtener y ejecutar el contenedor de CPU para entregar los modelos de Edge exportados como API de REST y, luego, envía solicitudes de una imagen de prueba a las API de REST si quieres obtener resultados analizados.
Extrae la imagen de Docker
Primero, usa Docker para obtener un contenedor de CPU ya compilado. Este contenedor ya cuenta con el entorno completo para entregar modelos de Edge exportados, que aún no contiene modelos de Edge.
El contenedor de CPU ya compilado se almacena en Google Container Registry. Antes de solicitar el contenedor, configura una variable de entorno para su ubicación en Google Container Registry:
export CPU_DOCKER_GCS_PATH=gcr.io/cloud-devrel-public-resources/gcloud-container-1.14.0:latest
Después de configurar la variable de entorno para la ruta de acceso de Container Registry, ejecuta la siguiente línea de comandos a fin de obtener el contenedor de CPU:
sudo docker pull ${CPU_DOCKER_GCS_PATH}
Ejecuta el contenedor de Docker
Después de obtener el contenedor existente, ejecuta este contenedor de CPU para que entregue las inferencias del modelo de Edge con las API de REST.
Antes de iniciar el contenedor de CPU, debes establecer las variables del sistema:
- ${CONTAINER_NAME}: Es una string que indica el nombre del contenedor cuando se ejecuta, por ejemplo,
CONTAINER_NAME=automl_high_accuracy_model_cpu
. - ${PORT}: Es un número que indica el puerto en tu dispositivo, para luego aceptar llamadas a la API de REST, como
PORT=8501
.
Después de configurar las variables, ejecuta Docker en la línea de comandos para que entregue inferencias del modelo de Edge con las API de REST:
sudo docker run --rm --name ${CONTAINER_NAME} -p ${PORT}:8501 -v ${YOUR_MODEL_PATH}:/tmp/mounted_model/0001 -t ${CPU_DOCKER_GCS_PATH}
Una vez que el contenedor se ejecuta de forma correcta, las API de REST ya pueden entregarse en http://localhost:${PORT}/v1/models/default:predict
. En la siguiente sección, se detalla cómo enviar solicitudes de predicción a esta ubicación.
Envía una solicitud de predicción
Ahora que el contenedor se está ejecutando de forma correcta, puedes enviar una solicitud de predicción en una imagen de prueba a las API de REST.
Línea de comandos
El cuerpo de la solicitud de línea de comandos contiene image_bytes
codificados en base64 y una string key
para identificar la imagen determinada. Consulta el tema Codifica en Base64 para obtener más información sobre la codificación de imágenes. El formato del archivo JSON de solicitud es el siguiente:
/tmp/request.json
{ "instances": [ { "image_bytes": { "b64": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "key": "your-chosen-image-key" } ] }
Después de crear un archivo JSON de solicitud local, puedes enviar tu solicitud de predicción.
Usa el siguiente comando para enviar la solicitud de predicción:
curl -X POST -d @/tmp/request.json http://localhost:${PORT}/v1/models/default:predictRespuesta
Debería ver un resultado similar al siguiente:
{ "predictions": [ { "detection_multiclass_scores": [ [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00240907, 0.00173151, 0.00134027, 0.00287125, 0.00130472, 0.00242674], [0.00227344, 0.00124374, 0.00147101, 0.00377446, 0.000997812, 0.0029003], [0.00132903, 0.000844955, 0.000537515, 0.00474253, 0.000508994, 0.00130466], [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00110534, 0.000204086, 0.000247836, 0.000553966, 0.000193745, 0.000359297], [0.00112912, 0.000443578, 0.000779897, 0.00203282, 0.00069508, 0.00188044], [0.00271052, 0.00163364, 0.00138229, 0.00314173, 0.00164038, 0.00332257], [0.00227907, 0.00217116, 0.00190553, 0.00321552, 0.00233933, 0.0053153], [0.00271052, 0.00163364, 0.00138229, 0.00314173, 0.00164038, 0.00332257], [0.00250274, 0.000489146, 0.000879943, 0.00355569, 0.00129834, 0.00355521], [0.00227344, 0.00124374, 0.00147101, 0.00377446, 0.000997812, 0.0029003], [0.00241205, 0.000786602, 0.000896335, 0.00187016, 0.00106838, 0.00193021], [0.00132069, 0.00173706, 0.00389183, 0.00536761, 0.00387135, 0.00752795], [0.0011555, 0.00025022, 0.000221372, 0.000536889, 0.000187278, 0.000306398], [0.00150242, 0.000391901, 0.00061205, 0.00158429, 0.000300348, 0.000788659], [0.00181362, 0.000169843, 0.000458032, 0.000690967, 0.000296295, 0.000412017], [0.00101465, 0.000184, 0.000148445, 0.00068599, 0.000111818, 0.000290155], [0.00128508, 0.00108775, 0.00298983, 0.00174832, 0.00143594, 0.00285548], [0.00137702, 0.000480384, 0.000831485, 0.000920624, 0.000405788, 0.000735044], [0.00103369, 0.00152704, 0.000892937, 0.00269693, 0.00214335, 0.00588191], [0.0013324, 0.000647604, 0.00293729, 0.00156629, 0.00195253, 0.00239435], [0.0022423, 0.00141206, 0.0012649, 0.00450748, 0.00138766, 0.00249887], [0.00125939, 0.0002428, 0.000370741, 0.000917137, 0.00024578, 0.000412881], [0.00135186, 0.000139147, 0.000525713, 0.00103053, 0.000366062, 0.000844955], [0.00127548, 0.000989318, 0.00256863, 0.00162545, 0.00311682, 0.00439551], [0.00112912, 0.000443578, 0.000779897, 0.00203282, 0.00069508, 0.00188044], [0.00114602, 0.00107747, 0.00145, 0.00320849, 0.00211915, 0.00331426], [0.00148326, 0.00059548, 0.00431389, 0.00164703, 0.00311947, 0.00268343], [0.00154313, 0.000925034, 0.00770769, 0.00252789, 0.00489518, 0.00352332], [0.00135094, 0.00042069, 0.00088492, 0.000987828, 0.000755847, 0.00144881], [0.0015994, 0.000540197, 0.00163212, 0.00140327, 0.00114474, 0.0026556], [0.00150502, 0.000138223, 0.000343591, 0.000529736, 0.000173837, 0.000381887], [0.00127372, 0.00066787, 0.00149515, 0.00272799, 0.00110033, 0.00370145], [0.00144503, 0.000365585, 0.00318581, 0.00126475, 0.00212631, 0.00204816], [0.00132069, 0.00173706, 0.00389183, 0.00536761, 0.00387135, 0.00752795], [0.00198057, 0.000307024, 0.000573188, 0.00147268, 0.000757724, 0.0017142], [0.00157535, 0.000590324, 0.00190055, 0.00170627, 0.00138417, 0.00246152], [0.00177169, 0.000364572, 0.00183856, 0.000767767, 0.00121492, 0.000916481] ], "detection_classes": [5.0, 2.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 5.0, 4.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 5.0, 2.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0], "num_detections": 40.0, "image_info": [320, 320, 1, 0, 320, 320], "detection_boxes": [ [0.457792, 0.0, 0.639324, 0.180828], [0.101111, 0.0, 0.89904, 0.995376], [0.447649, 0.314644, 0.548206, 0.432875], [0.250341, 0.733411, 0.3419, 0.847185], [0.573936, 0.0933048, 0.766472, 0.208054], [0.490438, 0.194659, 0.825894, 0.563959], [0.619383, 0.57948, 0.758244, 0.694948], [0.776185, 0.554518, 0.841549, 0.707129], [0.101111, 0.0, 0.89904, 0.995376], [0.431243, 0.0917888, 0.850772, 0.617123], [0.250883, 0.13572, 0.780518, 0.817881], [0.327646, 0.878977, 0.607503, 0.989904], [0.573936, 0.0933048, 0.766472, 0.208054], [0.37792, 0.460952, 0.566977, 0.618865], [0.373325, 0.575019, 0.463646, 0.642949], [0.27251, 0.0714827, 0.790764, 0.77176], [0.725154, 0.561221, 0.849777, 0.702165], [0.37549, 0.558988, 0.460575, 0.626821], [0.265563, 0.248368, 0.785451, 0.977509], [0.605674, 0.597553, 0.760419, 0.744799], [0.400611, 0.327271, 0.487579, 0.424036], [0.48632, 0.980808, 0.606008, 0.997468], [0.542414, 0.0588853, 0.752879, 0.200775], [0.490438, 0.194659, 0.825894, 0.563959], [0.368839, 0.115654, 0.741839, 0.587659], [0.467101, 0.985155, 0.588853, 0.997708], [0.755204, 0.561319, 0.836475, 0.676249], [0.409855, 0.302322, 0.773464, 0.587772], [0.351938, 0.934163, 0.587043, 0.99954], [0.27758, 0.72402, 0.334137, 0.846945], [0.29875, 0.601199, 0.381122, 0.679323], [0.64637, 0.566566, 0.767553, 0.67331], [0.372612, 0.596795, 0.457588, 0.666544], [0.438422, 0.989558, 0.578529, 0.998366], [0.586531, 0.499894, 0.879711, 0.845526], [0.608476, 0.644501, 0.759154, 0.827037], [0.352501, 0.477601, 0.710863, 0.948605], [0.466184, 0.953443, 0.668056, 0.996681], [0.547756, 0.00152373, 0.722814, 0.150687], [0.759639, 0.548476, 0.866864, 0.722007] ], "detection_scores": [0.877304, 0.839354, 0.824509, 0.579912, 0.461549, 0.306151, 0.268687, 0.197998, 0.181444, 0.17856, 0.152705, 0.148958, 0.14726, 0.135506, 0.128483, 0.12234, 0.105697, 0.105665, 0.0941569, 0.0891062, 0.0845169, 0.0810551, 0.0794339, 0.0784486, 0.0771784, 0.0770716, 0.075339, 0.0716749, 0.0715761, 0.07108, 0.0705339, 0.0693555, 0.0677402, 0.0644643, 0.0631491, 0.062369, 0.0619523, 0.060859, 0.0601122, 0.0589799], "detection_classes_as_text": ["Tomato", "Salad", "Tomato", "Tomato", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Seafood", "Salad", "Seafood", "Seafood", "Seafood", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Tomato", "Salad", "Seafood", "Seafood", "Tomato", "Seafood", "Seafood", "Tomato", "Tomato", "Tomato", "Tomato", "Seafood", "Seafood", "Tomato", "Seafood", "Seafood", "Tomato", "Tomato"], "key": "1" } ] }
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de la detección de objetos de AutoML Vision, consulta las bibliotecas cliente de la detección de objetos de AutoML Vision. Para obtener más información, consulta la documentación de referencia de la API de detección de objetos de AutoML Vision Python.
Para autenticarte en la detección de objetos de AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ejecuta inferencias de modelos mediante contenedores de GPU (opcional)
En esta sección, se muestra cómo ejecutar inferencias de modelos mediante contenedores de GPU. Este proceso es muy similar a ejecutar inferencias de modelos mediante una CPU. Las diferencias principales son la ruta de acceso de los contenedores de GPU y la forma en que estos se inician.
Extrae la imagen de Docker
Primero, usa Docker para obtener un contenedor de GPU ya compilado. Este contenedor ya cuenta con el entorno para entregar modelos de Edge exportados con GPU, que aún no contiene modelos de Edge ni controladores.
El contenedor de CPU ya compilado se almacena en Google Container Registry. Antes de solicitar el contenedor, configura una variable de entorno para su ubicación en Google Container Registry:
export GPU_DOCKER_GCS_PATH=gcr.io/cloud-devrel-public-resources/gcloud-container-1.14.0-gpu:latest
Ejecuta la siguiente línea de comandos para obtener el contenedor de GPU:
sudo docker pull ${GPU_DOCKER_GCS_PATH}
Ejecuta el contenedor de Docker
En este paso, se ejecuta el contenedor de GPU para entregar inferencias del modelo de Edge con las API de REST. Debes instalar el controlador y Docker de NVIDIA como se menciona más arriba. También debes establecer las siguientes variables del sistema:
- ${CONTAINER_NAME}: Es una string que indica el nombre del contenedor cuando se ejecuta, por ejemplo,
CONTAINER_NAME=automl_high_accuracy_model_gpu
. - ${PORT}: Es un número que indica el puerto en tu dispositivo, para luego aceptar llamadas a la API de REST, como
PORT=8502
.
Después de configurar las variables, ejecuta Docker en la línea de comandos para que entregue inferencias del modelo de Edge con las API de REST:
sudo docker run --runtime=nvidia --rm --name "${CONTAINER_NAME}" -v \ ${YOUR_MODEL_PATH}:/tmp/mounted_model/0001 -p \ ${PORT}:8501 -t ${GPU_DOCKER_GCS_PATH}
Una vez que el contenedor se esté ejecutando de forma correcta, las API de REST se pueden entregar en http://localhost:${PORT}/v1/models/default:predict
. En la siguiente sección, se detalla cómo enviar solicitudes de predicción a esta ubicación.
Envía una solicitud de predicción
Ahora que el contenedor se está ejecutando de forma correcta, puedes enviar una solicitud de predicción en una imagen de prueba a las API de REST.
Línea de comandos
El cuerpo de la solicitud de línea de comandos contiene image_bytes
codificados en base64 y una string key
para identificar la imagen determinada. Consulta el tema Codifica en Base64 para obtener más información sobre la codificación de imágenes. El formato del archivo JSON de solicitud es el siguiente:
/tmp/request.json
{ "instances": [ { "image_bytes": { "b64": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "key": "your-chosen-image-key" } ] }
Después de crear un archivo JSON de solicitud local, puedes enviar tu solicitud de predicción.
Usa el siguiente comando para enviar la solicitud de predicción:
curl -X POST -d @/tmp/request.json http://localhost:${PORT}/v1/models/default:predictRespuesta
Debería ver un resultado similar al siguiente:
{ "predictions": [ { "detection_multiclass_scores": [ [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00240907, 0.00173151, 0.00134027, 0.00287125, 0.00130472, 0.00242674], [0.00227344, 0.00124374, 0.00147101, 0.00377446, 0.000997812, 0.0029003], [0.00132903, 0.000844955, 0.000537515, 0.00474253, 0.000508994, 0.00130466], [0.00233048, 0.00207388, 0.00123361, 0.0052332, 0.00132892, 0.00333592], [0.00110534, 0.000204086, 0.000247836, 0.000553966, 0.000193745, 0.000359297], [0.00112912, 0.000443578, 0.000779897, 0.00203282, 0.00069508, 0.00188044], [0.00271052, 0.00163364, 0.00138229, 0.00314173, 0.00164038, 0.00332257], [0.00227907, 0.00217116, 0.00190553, 0.00321552, 0.00233933, 0.0053153], [0.00271052, 0.00163364, 0.00138229, 0.00314173, 0.00164038, 0.00332257], [0.00250274, 0.000489146, 0.000879943, 0.00355569, 0.00129834, 0.00355521], [0.00227344, 0.00124374, 0.00147101, 0.00377446, 0.000997812, 0.0029003], [0.00241205, 0.000786602, 0.000896335, 0.00187016, 0.00106838, 0.00193021], [0.00132069, 0.00173706, 0.00389183, 0.00536761, 0.00387135, 0.00752795], [0.0011555, 0.00025022, 0.000221372, 0.000536889, 0.000187278, 0.000306398], [0.00150242, 0.000391901, 0.00061205, 0.00158429, 0.000300348, 0.000788659], [0.00181362, 0.000169843, 0.000458032, 0.000690967, 0.000296295, 0.000412017], [0.00101465, 0.000184, 0.000148445, 0.00068599, 0.000111818, 0.000290155], [0.00128508, 0.00108775, 0.00298983, 0.00174832, 0.00143594, 0.00285548], [0.00137702, 0.000480384, 0.000831485, 0.000920624, 0.000405788, 0.000735044], [0.00103369, 0.00152704, 0.000892937, 0.00269693, 0.00214335, 0.00588191], [0.0013324, 0.000647604, 0.00293729, 0.00156629, 0.00195253, 0.00239435], [0.0022423, 0.00141206, 0.0012649, 0.00450748, 0.00138766, 0.00249887], [0.00125939, 0.0002428, 0.000370741, 0.000917137, 0.00024578, 0.000412881], [0.00135186, 0.000139147, 0.000525713, 0.00103053, 0.000366062, 0.000844955], [0.00127548, 0.000989318, 0.00256863, 0.00162545, 0.00311682, 0.00439551], [0.00112912, 0.000443578, 0.000779897, 0.00203282, 0.00069508, 0.00188044], [0.00114602, 0.00107747, 0.00145, 0.00320849, 0.00211915, 0.00331426], [0.00148326, 0.00059548, 0.00431389, 0.00164703, 0.00311947, 0.00268343], [0.00154313, 0.000925034, 0.00770769, 0.00252789, 0.00489518, 0.00352332], [0.00135094, 0.00042069, 0.00088492, 0.000987828, 0.000755847, 0.00144881], [0.0015994, 0.000540197, 0.00163212, 0.00140327, 0.00114474, 0.0026556], [0.00150502, 0.000138223, 0.000343591, 0.000529736, 0.000173837, 0.000381887], [0.00127372, 0.00066787, 0.00149515, 0.00272799, 0.00110033, 0.00370145], [0.00144503, 0.000365585, 0.00318581, 0.00126475, 0.00212631, 0.00204816], [0.00132069, 0.00173706, 0.00389183, 0.00536761, 0.00387135, 0.00752795], [0.00198057, 0.000307024, 0.000573188, 0.00147268, 0.000757724, 0.0017142], [0.00157535, 0.000590324, 0.00190055, 0.00170627, 0.00138417, 0.00246152], [0.00177169, 0.000364572, 0.00183856, 0.000767767, 0.00121492, 0.000916481] ], "detection_classes": [5.0, 2.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 4.0, 2.0, 4.0, 4.0, 4.0, 5.0, 4.0, 5.0, 5.0, 4.0, 5.0, 5.0, 4.0, 5.0, 2.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 4.0, 4.0, 5.0, 4.0, 4.0, 5.0, 5.0], "num_detections": 40.0, "image_info": [320, 320, 1, 0, 320, 320], "detection_boxes": [ [0.457792, 0.0, 0.639324, 0.180828], [0.101111, 0.0, 0.89904, 0.995376], [0.447649, 0.314644, 0.548206, 0.432875], [0.250341, 0.733411, 0.3419, 0.847185], [0.573936, 0.0933048, 0.766472, 0.208054], [0.490438, 0.194659, 0.825894, 0.563959], [0.619383, 0.57948, 0.758244, 0.694948], [0.776185, 0.554518, 0.841549, 0.707129], [0.101111, 0.0, 0.89904, 0.995376], [0.431243, 0.0917888, 0.850772, 0.617123], [0.250883, 0.13572, 0.780518, 0.817881], [0.327646, 0.878977, 0.607503, 0.989904], [0.573936, 0.0933048, 0.766472, 0.208054], [0.37792, 0.460952, 0.566977, 0.618865], [0.373325, 0.575019, 0.463646, 0.642949], [0.27251, 0.0714827, 0.790764, 0.77176], [0.725154, 0.561221, 0.849777, 0.702165], [0.37549, 0.558988, 0.460575, 0.626821], [0.265563, 0.248368, 0.785451, 0.977509], [0.605674, 0.597553, 0.760419, 0.744799], [0.400611, 0.327271, 0.487579, 0.424036], [0.48632, 0.980808, 0.606008, 0.997468], [0.542414, 0.0588853, 0.752879, 0.200775], [0.490438, 0.194659, 0.825894, 0.563959], [0.368839, 0.115654, 0.741839, 0.587659], [0.467101, 0.985155, 0.588853, 0.997708], [0.755204, 0.561319, 0.836475, 0.676249], [0.409855, 0.302322, 0.773464, 0.587772], [0.351938, 0.934163, 0.587043, 0.99954], [0.27758, 0.72402, 0.334137, 0.846945], [0.29875, 0.601199, 0.381122, 0.679323], [0.64637, 0.566566, 0.767553, 0.67331], [0.372612, 0.596795, 0.457588, 0.666544], [0.438422, 0.989558, 0.578529, 0.998366], [0.586531, 0.499894, 0.879711, 0.845526], [0.608476, 0.644501, 0.759154, 0.827037], [0.352501, 0.477601, 0.710863, 0.948605], [0.466184, 0.953443, 0.668056, 0.996681], [0.547756, 0.00152373, 0.722814, 0.150687], [0.759639, 0.548476, 0.866864, 0.722007] ], "detection_scores": [0.877304, 0.839354, 0.824509, 0.579912, 0.461549, 0.306151, 0.268687, 0.197998, 0.181444, 0.17856, 0.152705, 0.148958, 0.14726, 0.135506, 0.128483, 0.12234, 0.105697, 0.105665, 0.0941569, 0.0891062, 0.0845169, 0.0810551, 0.0794339, 0.0784486, 0.0771784, 0.0770716, 0.075339, 0.0716749, 0.0715761, 0.07108, 0.0705339, 0.0693555, 0.0677402, 0.0644643, 0.0631491, 0.062369, 0.0619523, 0.060859, 0.0601122, 0.0589799], "detection_classes_as_text": ["Tomato", "Salad", "Tomato", "Tomato", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Seafood", "Salad", "Seafood", "Seafood", "Seafood", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Tomato", "Tomato", "Seafood", "Tomato", "Salad", "Seafood", "Seafood", "Tomato", "Seafood", "Seafood", "Tomato", "Tomato", "Tomato", "Tomato", "Seafood", "Seafood", "Tomato", "Seafood", "Seafood", "Tomato", "Tomato"], "key": "1" } ] }
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de la detección de objetos de AutoML Vision, consulta las bibliotecas cliente de la detección de objetos de AutoML Vision. Para obtener más información, consulta la documentación de referencia de la API de detección de objetos de AutoML Vision Python.
Para autenticarte en la detección de objetos de AutoML Vision, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Resumen
En este instructivo, aprendiste a ejecutar modelos de Edge mediante contenedores de Docker de CPU o GPU. Ahora puedes implementar esta solución basada en contenedores en más dispositivos.
¿Qué sigue?
- Obtén más información sobre TensorFlow con la documentación de introducción.
- Obtén más información sobre Tensorflow Serving.
- Aprende a usar TensorFlow Serving con Kubernetes.