Après avoir créé un modèle AutoML Vision Edge et l'avoir exporté vers un bucket Google Cloud Storage, vous pouvez utiliser les services RESTful avec vos modèles AutoML Vision Edge et vos images Docker TF Serving.
Objectifs du tutoriel
Les conteneurs Docker peuvent vous aider à déployer facilement des modèles Edge sur différents appareils. Vous pouvez exécuter les modèles Edge en appelant des API REST à partir de conteneurs dans le langage de votre choix, avec l'avantage supplémentaire de ne pas avoir à installer de dépendances ou à trouver les versions appropriées de TensorFlow.
Dans ce tutoriel, vous expérimenterez pas à pas l'exécution de modèles Edge sur des appareils à l'aide de conteneurs Docker.
Plus précisément, ce tutoriel vous guidera à travers trois étapes :
- Obtenir des conteneurs préconfigurés
- Exécuter des conteneurs avec des modèles Edge pour démarrer les API REST
- Faire des prédictions
De nombreux appareils ne disposent que de processeurs, tandis que certains peuvent s'appuyer sur des GPU pour obtenir des prédictions plus rapides. Nous proposons donc des tutoriels avec des conteneurs de processeur et de GPU préconfigurés.
Objectifs
Dans ce tutoriel d'introduction détaillé, vous allez utiliser des exemples de code pour effectuer les opérations suivantes :
- Obtenir le conteneur Docker
- Démarrer les API REST à l'aide de conteneurs Docker avec des modèles Edge
- Faire des prédictions pour obtenir des résultats analysés
Avant de commencer
Pour réaliser ce tutoriel, vous devez effectuer les opérations suivantes :
- Entraîner un modèle Edge exportable. Suivez le guide de démarrage rapide sur les modèles d'appareils Edge pour entraîner un modèle Edge.
- Exporter un modèle AutoML Vision Edge. Ce modèle sera diffusé avec des conteneurs en tant qu'API REST.
- Installer Docker. Il s'agit du logiciel requis pour exécuter les conteneurs Docker.
- (Facultatif) Installer NVIDIA Docker et le pilote NVIDIA. Il s'agit d'une étape facultative si vous possédez des appareils avec GPU et que vous souhaitez obtenir des prédictions plus rapides.
- Préparer des images de test. Ces images seront envoyées dans les requêtes pour obtenir les résultats analysés.
Les détails concernant l'exportation de modèles et l'installation des logiciels nécessaires se trouvent dans la section suivante.
Exporter le modèle AutoML Vision Edge
Après avoir entraîné un modèle Edge, vous pouvez l'exporter vers différents appareils.
Les conteneurs acceptent les modèles TensorFlow, qui sont nommés saved_model.pb
lors de l'exportation.
Pour exporter un modèle AutoML Vision Edge pour les conteneurs, sélectionnez l'onglet Container (Conteneur) dans l'interface utilisateur, puis exportez le modèle vers ${YOUR_MODEL_PATH} sur Google Cloud Storage. Ce modèle exporté sera diffusé ultérieurement avec des conteneurs en tant qu'API REST.
Pour télécharger le modèle exporté en local, exécutez la commande suivante.
Où :
- ${YOUR_MODEL_PATH} est l'emplacement du modèle sur Google Cloud Storage (par exemple,
gs://my-bucket-vcm/models/edge/ICN4245971651915048908/2020-01-20_01-27-14-064_tf-saved-model/
) - ${YOUR_LOCAL_MODEL_PATH} est le chemin d'accès local vers lequel vous souhaitez télécharger votre modèle (par exemple,
/tmp
)
gsutil cp ${YOUR_MODEL_PATH} ${YOUR_LOCAL_MODEL_PATH}/saved_model.pb
Installer Docker
Docker est un logiciel utilisé pour déployer et exécuter des applications à l'intérieur de conteneurs.
Installez Docker Community Edition (CE) sur votre système. Vous l'utiliserez pour diffuser les modèles Edge en tant qu'API REST.
Installer le pilote NVIDIA et NVIDIA DOCKER (facultatif, pour les GPU uniquement)
Certains appareils disposent de GPU pour fournir des prédictions plus rapides. Le conteneur Docker de GPU est directement compatible avec les GPU NVIDIA.
Pour exécuter des conteneurs de GPU, vous devez installer le pilote NVIDIA et NVIDIA Docker sur votre système.
Exécuter l'inférence de modèle à l'aide du processeur
Cette section vous donne des instructions pas à pas pour exécuter des inférences de modèle à l'aide de conteneurs de processeur. Vous allez utiliser le logiciel Docker installé pour obtenir et exécuter le conteneur de processeur afin de diffuser les modèles Edge exportés en tant qu'API REST, puis envoyer des requêtes d'image de test aux API REST afin d'obtenir les résultats analysés.
Extraire l'image Docker
Tout d'abord, vous allez utiliser Docker pour obtenir un conteneur de processeur préconfiguré. Le conteneur de processeur préconfiguré possède déjà l'ensemble de l'environnement permettant de diffuser les modèles Edge exportés, mais celui-ci ne contient pas encore de modèles Edge.
Le conteneur de processeur préconfiguré est stocké dans Google Container Registry. Avant de demander le conteneur, définissez une variable d'environnement pour l'emplacement du conteneur dans Google Container Registry :
export CPU_DOCKER_GCS_PATH=gcr.io/cloud-devrel-public-resources/gcloud-container-1.14.0:latest
Après avoir défini la variable d'environnement pour le chemin d'accès Container Registry, exécutez la ligne de commande suivante pour obtenir le conteneur de processeur :
sudo docker pull ${CPU_DOCKER_GCS_PATH}
Exécuter le conteneur Docker
Après avoir obtenu le conteneur existant, vous allez exécuter ce conteneur de processeur pour diffuser les inférences de modèle Edge avec les API REST.
Avant de démarrer le conteneur de processeur, vous devez définir des variables système :
- ${CONTAINER_NAME} : chaîne indiquant le nom du conteneur lors de son exécution, par exemple
CONTAINER_NAME=automl_high_accuracy_model_cpu
- ${PORT} : numéro indiquant le port de votre appareil qui acceptera ensuite les appels d'API REST, tel que
PORT=8501
Après avoir défini les variables, exécutez Docker en ligne de commande pour diffuser les inférences de modèle Edge avec les API REST :
sudo docker run --rm --name ${CONTAINER_NAME} -p ${PORT}:8501 -v ${YOUR_MODEL_PATH}:/tmp/mounted_model/0001 -t ${CPU_DOCKER_GCS_PATH}
Une fois le conteneur exécuté, les API REST sont prêtes pour diffusion sur http://localhost:${PORT}/v1/models/default:predict
. La section suivante explique comment envoyer des requêtes de prédiction à cet emplacement.
Envoyer une requête de prédiction
Maintenant que le conteneur s'exécute correctement, vous pouvez envoyer une requête de prédiction sur une image de test aux API REST.
Ligne de commande
Le corps de la requête de ligne de commande contient image_bytes
encodé en base64 ainsi qu'une chaîne key
identifiant l'image concernée. Pour en savoir plus sur l'encodage d'images, consultez la page Encodage Base64. Le format du fichier de requête JSON est le suivant :
/tmp/request.json
{ "instances": [ { "image_bytes": { "b64": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "key": "your-chosen-image-key" } ] }
Après avoir créé un fichier de requête JSON local, vous pouvez envoyer votre requête de prédiction.
Exécutez la commande suivante pour envoyer la requête de prédiction :
curl -X POST -d @/tmp/request.json http://localhost:${PORT}/v1/models/default:predictRéponse
La sortie obtenue doit ressembler à ceci :
{ "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
Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Vision Object Detection, consultez la page Bibliothèques clientes AutoML Vision Object Detection. Pour en savoir plus, consultez la documentation de référence de l'API Python AutoML Vision Object Detection en langage.
Pour vous authentifier auprès d'AutoML Vision Object Detection, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Exécuter l'inférence de modèle à l'aide de conteneurs de GPU (facultatif)
Cette section vous montre comment exécuter des inférences de modèle à l'aide de conteneurs de GPU. Ce processus ressemble beaucoup à l'exécution d'inférences de modèle à l'aide d'un processeur. Les principales différences sont le chemin d'accès au conteneur de GPU et la façon dont vous démarrez les conteneurs de GPU.
Extraire l'image Docker
Tout d'abord, vous allez utiliser Docker pour obtenir un conteneur de GPU préconfiguré. Le conteneur de GPU préconfiguré possède déjà l'environnement permettant de diffuser les modèles Edge exportés avec les GPU, mais celui-ci ne contient pas encore de modèles Edge ni de pilotes.
Le conteneur de processeur préconfiguré est stocké dans Google Container Registry. Avant de demander le conteneur, définissez une variable d'environnement pour l'emplacement du conteneur dans Google Container Registry :
export GPU_DOCKER_GCS_PATH=gcr.io/cloud-devrel-public-resources/gcloud-container-1.14.0-gpu:latest
Exécutez la ligne de commande suivante pour obtenir le conteneur de GPU :
sudo docker pull ${GPU_DOCKER_GCS_PATH}
Exécuter le conteneur Docker
À cette étape, vous allez exécuter le conteneur de GPU pour diffuser les inférences de modèle Edge avec les API REST. Vous devez installer le pilote NVIDIA et Docker comme mentionné ci-dessus. Vous devez également définir les variables système suivantes :
- ${CONTAINER_NAME} : chaîne indiquant le nom du conteneur lors de son exécution, par exemple
CONTAINER_NAME=automl_high_accuracy_model_gpu
- ${PORT} : numéro indiquant le port de votre appareil qui acceptera ensuite les appels d'API REST, tel que
PORT=8502
Après avoir défini les variables, exécutez Docker en ligne de commande pour diffuser les inférences de modèle Edge avec les API 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}
Une fois le conteneur exécuté, les API REST sont prêtes pour diffusion sur http://localhost:${PORT}/v1/models/default:predict
. La section suivante explique comment envoyer des requêtes de prédiction à cet emplacement.
Envoyer une requête de prédiction
Maintenant que le conteneur s'exécute correctement, vous pouvez envoyer une requête de prédiction sur une image de test aux API REST.
Ligne de commande
Le corps de la requête de ligne de commande contient image_bytes
encodé en base64 ainsi qu'une chaîne key
identifiant l'image concernée. Pour en savoir plus sur l'encodage d'images, consultez la page Encodage Base64. Le format du fichier de requête JSON est le suivant :
/tmp/request.json
{ "instances": [ { "image_bytes": { "b64": "/9j/7QBEUGhvdG9zaG9...base64-encoded-image-content...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "key": "your-chosen-image-key" } ] }
Après avoir créé un fichier de requête JSON local, vous pouvez envoyer votre requête de prédiction.
Exécutez la commande suivante pour envoyer la requête de prédiction :
curl -X POST -d @/tmp/request.json http://localhost:${PORT}/v1/models/default:predictRéponse
La sortie obtenue doit ressembler à ceci :
{ "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
Pour savoir comment installer et utiliser la bibliothèque cliente pour AutoML Vision Object Detection, consultez la page Bibliothèques clientes AutoML Vision Object Detection. Pour en savoir plus, consultez la documentation de référence de l'API Python AutoML Vision Object Detection en langage.
Pour vous authentifier auprès d'AutoML Vision Object Detection, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Résumé
Dans ce tutoriel, vous avez découvert l'exécution de modèles Edge à l'aide de conteneurs Docker de processeur ou de GPU. Vous pouvez désormais déployer cette solution basée sur des conteneurs sur d'autres appareils.
Étapes suivantes
- Obtenez des informations générales sur TensorFlow avec la documentation de mise en route de TensorFlow.
- Apprenez-en davantage sur TensorFlow Serving.
- Découvrez comment utiliser TensorFlow Serving avec Kubernetes.