

Avis de fin de support : le 31 mai 2026, AWS le support de AWS Panorama. Après le 31 mai 2026, vous ne pourrez plus accéder à la AWS Panorama console ni aux AWS Panorama ressources. Pour plus d'informations, voir [AWS Panorama fin du support](https://docs.aws.amazon.com/panorama/latest/dev/panorama-end-of-support.html). 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Commencer avec AWS Panorama
<a name="panorama-gettingstarted"></a>

Pour commencer AWS Panorama, découvrez d'abord les [concepts du service](gettingstarted-concepts.md) et la terminologie utilisés dans ce guide. Vous pouvez ensuite utiliser la AWS Panorama console pour [enregistrer votre AWS Panorama appliance](gettingstarted-setup.md) et [créer une application](gettingstarted-deploy.md). En une heure environ, vous pouvez configurer l'appareil, mettre à jour son logiciel et déployer un exemple d'application. Pour suivre les didacticiels de cette section, vous utilisez l' AWS Panorama appliance et une caméra qui diffuse des vidéos sur un réseau local.

**Note**  
Pour acheter un AWS Panorama appareil, rendez-vous [sur la AWS Panorama console](https://console.aws.amazon.com/panorama/home#get-device-quote).

L'[AWS Panorama exemple d'application](gettingstarted-sample.md) montre l'utilisation des AWS Panorama fonctionnalités. Il inclut un modèle entraîné à l'aide de l' SageMaker IA et un exemple de code qui utilise le SDK de l' AWS Panorama application pour exécuter des inférences et produire des vidéos. L'exemple d'application inclut un CloudFormation modèle et des scripts qui montrent comment automatiser les flux de travail de développement et de déploiement à partir de la ligne de commande.

Les deux dernières rubriques de ce chapitre détaillent [les exigences relatives aux modèles et aux caméras](gettingstarted-compatibility.md), ainsi que les [spécifications matérielles de l' AWS Panorama appliance](gettingstarted-hardware.md). Si vous n'avez pas encore acheté d'appareil et de caméras, ou si vous envisagez de développer vos propres modèles de vision par ordinateur, consultez d'abord ces rubriques pour plus d'informations.

**Topics**
+ [Concepts d'AWS Panorama](gettingstarted-concepts.md)
+ [Configuration de l'appliance AWS Panorama](gettingstarted-setup.md)
+ [Déploiement de l'exemple d'application AWS Panorama](gettingstarted-deploy.md)
+ [Développement d'applications AWS Panorama](gettingstarted-sample.md)
+ [Modèles de vision par ordinateur et caméras pris en charge](gettingstarted-compatibility.md)
+ [Spécifications de l'appliance AWS Panorama](gettingstarted-hardware.md)
+ [Quotas de service](gettingstarted-quotas.md)

# Concepts d'AWS Panorama
<a name="gettingstarted-concepts"></a>

Dans AWS Panorama, vous créez des applications de vision par ordinateur et vous les déployez sur l'appliance AWS Panorama ou sur un appareil compatible pour analyser les flux vidéo provenant de caméras réseau. Vous écrivez du code d'application en Python et vous créez des conteneurs d'applications avec Docker. Vous utilisez l'interface de ligne de commande de l'application AWS Panorama pour importer des modèles de machine learning localement ou depuis Amazon Simple Storage Service (Amazon S3). Les applications utilisent le SDK d'applications AWS Panorama pour recevoir des entrées vidéo d'une caméra et interagir avec un modèle.

**Topics**
+ [L'appliance AWS Panorama](#gettingstarted-concepts-appliance)
+ [Appareils compatibles](#gettingstarted-concepts-devices)
+ [Applications](#gettingstarted-concepts-application)
+ [Nœuds](#gettingstarted-concepts-node)
+ [Modèles](#gettingstarted-concepts-model)

## L'appliance AWS Panorama
<a name="gettingstarted-concepts-appliance"></a>

L'appliance AWS Panorama est le matériel qui exécute vos applications. Vous utilisez la console AWS Panorama pour enregistrer une appliance, mettre à jour son logiciel et y déployer des applications. Le logiciel de l'appliance AWS Panorama se connecte aux flux de caméras, envoie des images vidéo à votre application et affiche la sortie vidéo sur un écran connecté.

L'appliance AWS Panorama est un *appareil de pointe* [alimenté par Nvidia Jetson AGX Xavier](gettingstarted-hardware.md). Au lieu d'envoyer des images vers le AWS cloud pour traitement, il exécute les applications localement sur du matériel optimisé. Cela vous permet d'analyser la vidéo en temps réel et de traiter les résultats localement. L'appliance a besoin d'une connexion Internet pour signaler son état, télécharger des journaux et effectuer des mises à jour logicielles et des déploiements.

Pour de plus amples informations, veuillez consulter [Gestion de l' AWS Panorama appliance](panorama-appliance.md).

## Appareils compatibles
<a name="gettingstarted-concepts-devices"></a>

Outre l'appliance AWS Panorama, AWS Panorama prend en charge les appareils compatibles des AWS partenaires. Les appareils compatibles prennent en charge les mêmes fonctionnalités que l'appliance AWS Panorama. Vous enregistrez et gérez des appareils compatibles avec la console et l'API AWS Panorama, et vous créez et déployez des applications de la même manière.

****
+ [Lenovo ThinkEdge® SE7 0](https://techtoday.lenovo.com/us/en/solutions/smb/thinkedge) — Propulsé par Nvidia Jetson Xavier NX

Le contenu et les exemples d'applications de ce guide sont développés avec l'appliance AWS Panorama. Pour plus d'informations sur les fonctionnalités matérielles et logicielles spécifiques de votre appareil, consultez la documentation du fabricant.

## Applications
<a name="gettingstarted-concepts-application"></a>

Les applications s'exécutent sur l'appliance AWS Panorama pour effectuer des tâches de vision par ordinateur sur des flux vidéo. Vous pouvez créer des applications de vision par ordinateur en combinant du code Python et des modèles d'apprentissage automatique, puis les déployer sur l'appliance AWS Panorama via Internet. Les applications peuvent envoyer des vidéos sur un écran ou utiliser le SDK AWS pour envoyer les résultats aux services AWS.

Pour créer et déployer des applications, vous utilisez la CLI d'application AWS Panorama. L'AWS Panorama Application CLI est un outil de ligne de commande qui génère des dossiers d'applications et des fichiers de configuration par défaut, crée des conteneurs avec Docker et télécharge des actifs. Vous pouvez exécuter plusieurs applications sur un seul appareil.

Pour de plus amples informations, veuillez consulter [Gestion des AWS Panorama applications](panorama-applications.md).

## Nœuds
<a name="gettingstarted-concepts-node"></a>

Une application comprend plusieurs composants appelés *nœuds*, qui représentent les entrées, les sorties, les modèles et le code. Un nœud peut être configuré uniquement (entrées et sorties) ou inclure des artefacts (modèles et code). Les nœuds de code d'une application sont regroupés dans des *packages de nœuds* que vous téléchargez sur un point d'accès Amazon S3, où l'appliance AWS Panorama peut y accéder. Un *manifeste d'application* est un fichier de configuration qui définit les connexions entre les nœuds.

Pour de plus amples informations, veuillez consulter [Nœuds d'application](applications-nodes.md).

## Modèles
<a name="gettingstarted-concepts-model"></a>

Un modèle de vision par ordinateur est un réseau d'apprentissage automatique formé pour traiter des images. Les modèles de vision par ordinateur peuvent effectuer diverses tâches telles que la classification, la détection, la segmentation et le suivi. Un modèle de vision par ordinateur prend une image en entrée et produit des informations sur l'image ou les objets de l'image.

AWS Panorama prend en charge les modèles PyTorch créés avec MXNet, Apache et TensorFlow. Vous pouvez créer des modèles avec Amazon SageMaker AI ou dans votre environnement de développement. Pour de plus amples informations, veuillez consulter [Modèles de vision par ordinateur](applications-models.md).

# Configuration de l'appliance AWS Panorama
<a name="gettingstarted-setup"></a>

Pour commencer à utiliser votre appareil AWS Panorama ou [appareil compatible](gettingstarted-concepts.md#gettingstarted-concepts-devices), enregistrez-le dans la console AWS Panorama et mettez à jour son logiciel. Au cours du processus de configuration, vous créez une *ressource* d'appliance dans AWS Panorama qui représente l'appliance physique, et vous copiez des fichiers sur l'appliance à l'aide d'une clé USB. L'appliance utilise ces certificats et fichiers de configuration pour se connecter au service AWS Panorama. Vous utilisez ensuite la console AWS Panorama pour mettre à jour le logiciel de l'appliance et enregistrer les caméras.

**Topics**
+ [Prérequis](#gettingstarted-prerequisites)
+ [Enregistrez et configurez l'appliance AWS Panorama](#gettingstarted-device)
+ [Mettre à niveau le logiciel de l'appliance](#gettingstarted-upgrade)
+ [Ajouter un flux de caméra](#gettingstarted-setup-camera)
+ [Étapes suivantes](#gettingstarted-setup-nextsteps)

## Prérequis
<a name="gettingstarted-prerequisites"></a>

Pour suivre ce didacticiel, vous avez besoin d'une appliance AWS Panorama ou d'un appareil compatible et du matériel suivant :

****
+ **Affichage : écran** doté d'une entrée HDMI permettant de visualiser la sortie d'exemple de l'application.
+ **Clé USB** (incluse avec l'appliance AWS Panorama) : clé USB 3.0 FAT32 formatée avec au moins 1 Go de stockage, pour transférer une archive contenant des fichiers de configuration et un certificat vers l'appliance AWS Panorama.
+ **Caméra : caméra** IP qui émet un flux vidéo RTSP.

Utilisez les outils et les instructions fournis par le fabricant de votre caméra pour identifier son adresse IP et son chemin de diffusion. Vous pouvez utiliser un lecteur vidéo tel que [VLC](https://www.videolan.org/) pour vérifier l'URL du flux, en l'ouvrant en tant que source multimédia réseau :

![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/vlc-stream.png)


La console AWS Panorama utilise d'autres services AWS pour assembler les composants de l'application, gérer les autorisations et vérifier les paramètres. Pour enregistrer un dispositif et déployer l'exemple d'application, vous devez disposer des autorisations suivantes :

****
+ [AWSPanoramaFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSPanoramaFullAccess)— Fournit un accès complet à AWS Panorama, aux points d'accès AWS Panorama dans Amazon S3, aux informations d'identification de l'appliance et aux journaux de l'appliance sur Amazon CloudWatch. AWS Secrets Manager Inclut l'autorisation de créer un [rôle lié à un service](permissions-services.md) pour AWS Panorama.
+ **Gestion des identités et des accès AWS (IAM)** — Lors de la première exécution, pour créer des rôles utilisés par le service AWS Panorama et l'appliance AWS Panorama.

Si vous n'êtes pas autorisé à créer des rôles dans IAM, demandez à un administrateur d'ouvrir [la console AWS Panorama](https://console.aws.amazon.com/panorama/home) et d'accepter l'invite de création de rôles de service.

## Enregistrez et configurez l'appliance AWS Panorama
<a name="gettingstarted-device"></a>

L'appliance AWS Panorama est un appareil matériel qui se connecte à des caméras connectées au réseau via une connexion réseau locale. Il utilise un système d'exploitation basé sur Linux qui inclut le SDK d'applications AWS Panorama et des logiciels de support pour exécuter des applications de vision par ordinateur.

Pour se connecter à des AWS fins de gestion et de déploiement d'applications, l'appliance utilise un certificat d'appareil. Vous utilisez la console AWS Panorama pour générer un certificat d'approvisionnement. L'appliance utilise ce certificat temporaire pour terminer la configuration initiale et télécharger un certificat d'appareil permanent.

**Important**  
Le certificat de provisionnement que vous générez dans cette procédure n'est valide que pendant 5 minutes. Si vous ne terminez pas le processus d'inscription dans ce délai, vous devez recommencer à zéro.

**Pour enregistrer un appareil**

1. Connectez la clé USB à votre ordinateur. Préparez l'appliance en connectant le réseau et les câbles d'alimentation. L'appareil s'allume et attend qu'une clé USB soit connectée.

1. Ouvrez la [page de démarrage](https://console.aws.amazon.com/panorama/home#getting-started) de la console AWS Panorama.

1. Choisissez **Ajouter un appareil**.

1. Choisissez **Commencer la configuration**.

1. Entrez un nom et une description pour la ressource de l'appareil qui représente l'appliance dans AWS Panorama. Choisissez **Next** (Suivant)  
![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/setup-name.png)

1. Si vous devez attribuer manuellement une adresse IP, un serveur NTP ou des paramètres DNS, choisissez **Paramètres réseau avancés**. Sinon, choisissez **Next (Suivant)**.

1. Choisissez **Télécharger l'archive**. Choisissez **Suivant**.

1. Copiez l'archive de configuration dans le répertoire racine de la clé USB.

1. Connectez la clé USB au port USB 3.0 situé à l'avant de l'appareil, à côté du port HDMI.

   Lorsque vous connectez la clé USB, l'appliance copie l'archive de configuration et le fichier de configuration réseau sur elle-même et se connecte au AWS Cloud. Le voyant d'état de l'appliance passe du vert au bleu lorsque la connexion est terminée, puis redevient vert.

1. Pour continuer, choisissez **Suivant**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/setup-poweron.png)

1. Sélectionnez **Exécuté**.

## Mettre à niveau le logiciel de l'appliance
<a name="gettingstarted-upgrade"></a>

L'appliance AWS Panorama comporte plusieurs composants logiciels, notamment un système d'exploitation Linux, le [SDK de l'application AWS Panorama](applications-panoramasdk.md), ainsi que des bibliothèques et des frameworks de vision par ordinateur compatibles. Pour vous assurer de pouvoir utiliser les fonctionnalités et applications les plus récentes avec votre appliance, mettez à niveau son logiciel après l'installation et chaque fois qu'une mise à jour est disponible.

**Pour mettre à jour le logiciel de l'appliance**

1. Ouvrez la [page Appareils](https://console.aws.amazon.com/panorama/home#devices) de la console AWS Panorama.

1. Choisissez un appareil.

1. Choisissez **les paramètres**

1. Sous **Logiciel système**, choisissez **Installer la mise à jour logicielle**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/setup-upgrade.png)

1. Choisissez une nouvelle version, puis choisissez **Installer**.

**Important**  
Avant de continuer, retirez la clé USB de l'appliance et formatez-la pour en supprimer le contenu. L'archive de configuration contient des données sensibles et n'est pas supprimée automatiquement.

Le processus de mise à niveau peut prendre 30 minutes ou plus. Vous pouvez suivre sa progression dans la console AWS Panorama ou sur un moniteur connecté. Lorsque le processus est terminé, l'appliance redémarre.

## Ajouter un flux de caméra
<a name="gettingstarted-setup-camera"></a>

Enregistrez ensuite un flux de caméra avec la console AWS Panorama.

**Pour enregistrer un flux de caméra**

1. Ouvrez la [page des sources de données](https://console.aws.amazon.com/panorama/home#data-sources) de la console AWS Panorama.

1. Choisissez **Add data source**.  
![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/setup-addstream.png)

1. Configurez les paramètres suivants.

****
   + **Nom** : nom du flux de caméra.
   + **Description** : brève description de la caméra, de son emplacement ou d'autres détails.
   + **URL RTSP** : URL qui spécifie l'adresse IP de la caméra et le chemin d'accès au flux. Par exemple, `rtsp://192.168.0.77/live/mpeg4/`
   + **Informations d'identification** — Si le flux de caméra est protégé par mot de passe, spécifiez le nom d'utilisateur et le mot de passe.

1. Choisissez **Save** (Enregistrer).

 AWS Panorama stocke les informations d'identification de votre caméra en toute sécurité dans AWS Secrets Manager. Plusieurs applications peuvent traiter le même flux de caméra simultanément.

## Étapes suivantes
<a name="gettingstarted-setup-nextsteps"></a>

Si vous avez rencontré des erreurs lors de l'installation, consultez[Résolution des problèmes](panorama-troubleshooting.md).

Pour déployer un exemple d'application, passez à [la rubrique suivante](gettingstarted-deploy.md).

# Déploiement de l'exemple d'application AWS Panorama
<a name="gettingstarted-deploy"></a>

Après avoir [configuré votre appliance AWS Panorama ou votre appareil compatible](gettingstarted-setup.md) et mis à jour son logiciel, déployez un exemple d'application. Dans les sections suivantes, vous allez importer un exemple d'application avec la CLI d'application AWS Panorama et le déployer avec la console AWS Panorama.

L'exemple d'application utilise un modèle d'apprentissage automatique pour classer les objets dans des images vidéo provenant d'une caméra réseau. Il utilise le SDK d'application AWS Panorama pour charger un modèle, obtenir des images et exécuter le modèle. L'application superpose ensuite les résultats sur la vidéo d'origine et les affiche sur un écran connecté.

Dans un environnement de vente au détail, l'analyse des modèles de trafic piétonnier vous permet de prévoir les niveaux de trafic. En combinant l'analyse avec d'autres données, vous pouvez planifier l'augmentation des besoins en personnel pendant les fêtes et autres événements, mesurer l'efficacité des publicités et des promotions des ventes, ou optimiser le placement des présentoirs et la gestion des stocks.

**Topics**
+ [Prérequis](#gettingstarted-deploy-prerequisites)
+ [Importer l'exemple d'application](#gettingstarted-deploy-import)
+ [Déployer l'application](#gettingstarted-deploy-deploy)
+ [Afficher le résultat](#gettingstarted-deploy-view)
+ [Activer le SDK pour Python](#gettingstarted-deploy-redeploy)
+ [Nettoyage](#gettingstarted-deploy-cleanup)
+ [Étapes suivantes](#gettingstarted-deploy-next)

## Prérequis
<a name="gettingstarted-deploy-prerequisites"></a>

Pour suivre les procédures décrites dans ce didacticiel, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes de codes, les commandes sont précédées d'un symbole d'invite (\$1) et du nom du répertoire actuel, le cas échéant.

```
~/panorama-project$ this is a command
this is output
```

Pour les commandes longues, nous utilisons un caractère d'échappement (`\`) pour diviser une commande sur plusieurs lignes.

Sur Linux et macOS, utilisez votre gestionnaire de shell et de package préféré. Sur Windows 10, vous pouvez [installer le sous-système Windows pour Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) afin d'obtenir une version intégrée à Windows d'Ubuntu et Bash. Pour obtenir de l'aide sur la configuration d'un environnement de développement sous Windows, consultez[Configuration d'un environnement de développement sous Windows](applications-devenvwindows.md).

Vous utilisez Python pour développer des applications AWS Panorama et installer des outils avec pip, le gestionnaire de packages de Python. Si vous n'avez pas encore Python, [installez la dernière version](https://www.python.org/downloads/). Si vous avez Python 3 mais pas pip, installez pip avec le gestionnaire de paquets de votre système d'exploitation ou installez une nouvelle version de Python, fournie avec pip.

Dans ce didacticiel, vous utiliserez Docker pour créer le conteneur qui exécute le code de votre application. [Installez Docker depuis le site Web de Docker : Get Docker](https://docs.docker.com/get-docker/)

Ce didacticiel utilise la CLI d'application AWS Panorama pour importer l'exemple d'application, créer des packages et télécharger des artefacts. La CLI de l'application AWS Panorama utilise le AWS Command Line Interface (AWS CLI) pour appeler les opérations de l'API de service. Si vous l'avez déjà AWS CLI, mettez-le à niveau vers la dernière version. Pour installer la CLI de l'application AWS Panorama et AWS CLI utilisez`pip`.

```
$ pip3 install --upgrade awscli panoramacli
```

Téléchargez l'exemple d'application et extrayez-le dans votre espace de travail.

****
+ **Exemple d'application** : [aws-panorama-sample.zip](https://github.com/awsdocs/aws-panorama-developer-guide/releases/download/v1.0-ga/aws-panorama-sample.zip)

## Importer l'exemple d'application
<a name="gettingstarted-deploy-import"></a>

Pour importer l'exemple d'application à utiliser dans votre compte, utilisez l'interface de ligne de commande de l'application AWS Panorama. Les dossiers et le manifeste de l'application contiennent des références à un numéro de compte fictif. Pour les mettre à jour avec votre numéro de compte, exécutez la `panorama-cli import-application` commande.

```
aws-panorama-sample$ panorama-cli import-application
```

Le `SAMPLE_CODE` package, dans le `packages` répertoire, contient le code et la configuration de l'application, y compris un Dockerfile qui utilise l'image de base de l'application. `panorama-application` Pour créer le conteneur d'applications qui s'exécute sur l'appliance, utilisez la `panorama-cli build-container` commande.

```
aws-panorama-sample$ ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account')
aws-panorama-sample$ panorama-cli build-container --container-asset-name code_asset --package-path packages/${ACCOUNT_ID}-SAMPLE_CODE-1.0
```

La dernière étape avec la CLI d'application AWS Panorama consiste à enregistrer le code et les nœuds de modèle de l'application, puis à télécharger les ressources vers un point d'accès Amazon S3 fourni par le service. Les actifs incluent l'image du conteneur du code, le modèle et un fichier descripteur pour chacun d'eux. Pour enregistrer les nœuds et télécharger des actifs, exécutez la `panorama-cli package-application` commande.

```
aws-panorama-sample$ panorama-cli package-application
Uploading package model
Registered model with patch version bc9c58bd6f83743f26aa347dc86bfc3dd2451b18f964a6de2cc4570cb6f891f9
Uploading package code
Registered code with patch version 11fd7001cb31ea63df6aaed297d600a5ecf641a987044a0c273c78ceb3d5d806
```

## Déployer l'application
<a name="gettingstarted-deploy-deploy"></a>

Utilisez la console AWS Panorama pour déployer l'application sur votre appliance.

**Pour déployer l'application**

1. Ouvrez la [page des applications déployées](https://console.aws.amazon.com/panorama/home#deployed-applications) de la console AWS Panorama.

1. Choisissez **Déployer l'application**.

1. Collez le contenu du manifeste de l'application dans l'éditeur de texte. `graphs/aws-panorama-sample/graph.json` Choisissez **Suivant**.

1. Pour **Nom de l’application**, saisissez `aws-panorama-sample`.

1. Choisissez **Proceed to deploy**.

1. Choisissez **Commencer le déploiement**.

1. Choisissez **Next** sans sélectionner de rôle.

1. Choisissez **Sélectionner un appareil**, puis choisissez votre appareil. Choisissez **Suivant**.

1. À l'étape **Sélectionner les sources de données**, choisissez **Afficher les entrées** et ajoutez le flux de votre caméra en tant que source de données. Choisissez **Suivant**.

1. À l'étape **Configurer**, choisissez **Next**.

1. Choisissez **Déployer**, puis cliquez sur **Terminé**.

1. Dans la liste des applications déployées, sélectionnez **aws-panorama-sample**.

Actualisez cette page pour les mises à jour ou utilisez le script suivant pour surveiller le déploiement à partir de la ligne de commande.

**Example monitor-deployment.sh**  

```
while true; do
  aws panorama list-application-instances --query 'ApplicationInstances[?Name==`aws-panorama-sample`]'
  sleep 10
done
```

```
[
    {
        "Name": "aws-panorama-sample",
        "ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
        "DefaultRuntimeContextDeviceName": "my-appliance",
        "Status": "DEPLOYMENT_PENDING",
        "HealthStatus": "NOT_AVAILABLE",
        "StatusDescription": "Deployment Workflow has been scheduled.",
        "CreatedTime": 1630010747.443,
        "Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
        "Tags": {}
    }
]
[
    {
        "Name": "aws-panorama-sample",
        "ApplicationInstanceId": "applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
        "DefaultRuntimeContextDeviceName": "my-appliance",
        "Status": "DEPLOYMENT_PENDING",
        "HealthStatus": "NOT_AVAILABLE",
        "StatusDescription": "Deployment Workflow has completed data validation.",
        "CreatedTime": 1630010747.443,
        "Arn": "arn:aws:panorama:us-west-2:123456789012:applicationInstance/applicationInstance-x264exmpl33gq5pchc2ekoi6uu",
        "Tags": {}
    }
]
...
```

Si l'application ne démarre pas, consultez les [journaux de l'application et de l'appareil](monitoring-logging.md) dans Amazon CloudWatch Logs.

## Afficher le résultat
<a name="gettingstarted-deploy-view"></a>

 Lorsque le déploiement est terminé, l'application commence à traiter le flux vidéo et envoie les journaux à CloudWatch.

**Pour afficher les journaux dans CloudWatch Logs**

1. Ouvrez la [page Groupes de journaux de la console CloudWatch Logs](https://console.aws.amazon.com/cloudwatch/home#logsV2:log-groups).

1. Trouvez les journaux de l'application et de l'appliance AWS Panorama dans les groupes suivants :

****
   + **Journaux de l'appareil** — `/aws/panorama/devices/device-id`
   + **Journaux des applications** — `/aws/panorama/devices/device-id/applications/instance-id`

```
2022-08-26 17:43:39 INFO     INITIALIZING APPLICATION
2022-08-26 17:43:39 INFO     ## ENVIRONMENT VARIABLES
{'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'TERM': 'xterm', 'container': 'podman'...}
2022-08-26 17:43:39 INFO     Configuring parameters.
2022-08-26 17:43:39 INFO     Configuring AWS SDK for Python.
2022-08-26 17:43:39 INFO     Initialization complete.
2022-08-26 17:43:39 INFO     PROCESSING STREAMS
2022-08-26 17:46:19 INFO     epoch length: 160.183 s (0.936 FPS)
2022-08-26 17:46:19 INFO     avg inference time: 805.597 ms
2022-08-26 17:46:19 INFO     max inference time: 120023.984 ms
2022-08-26 17:46:19 INFO     avg frame processing time: 1065.129 ms
2022-08-26 17:46:19 INFO     max frame processing time: 149813.972 ms
2022-08-26 17:46:29 INFO     epoch length: 10.562 s (14.202 FPS)
2022-08-26 17:46:29 INFO     avg inference time: 7.185 ms
2022-08-26 17:46:29 INFO     max inference time: 15.693 ms
2022-08-26 17:46:29 INFO     avg frame processing time: 66.561 ms
2022-08-26 17:46:29 INFO     max frame processing time: 123.774 ms
```

Pour afficher la sortie vidéo de l'application, connectez l'appareil à un moniteur à l'aide d'un câble HDMI. Par défaut, l'application affiche tout résultat de classification dont le niveau de confiance est supérieur à 20 %.

**Example [squeezenet\$1classes.json](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/squeezenet_classes.json)**  

```
["tench", "goldfish", "great white shark", "tiger shark",
"hammerhead", "electric ray", "stingray", "cock", "hen", "ostrich",
"brambling", "goldfinch", "house finch", "junco", "indigo bunting",
"robin", "bulbul", "jay", "magpie", "chickadee", "water ouzel",
"kite", "bald eagle", "vulture", "great grey owl",
"European fire salamander", "common newt", "eft",
"spotted salamander", "axolotl", "bullfrog", "tree frog",
...
```

Le modèle d'échantillon comprend 1 000 classes comprenant de nombreux animaux, de la nourriture et des objets courants. Essayez de diriger votre appareil photo vers un clavier ou une tasse à café.

![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/mug.jpg)


Pour des raisons de simplicité, l'exemple d'application utilise un modèle de classification léger. Le modèle produit un seul tableau avec une probabilité pour chacune de ses classes. Les applications du monde réel utilisent plus fréquemment des modèles de détection d'objets dotés d'une sortie multidimensionnelle. Pour des exemples d'applications avec des modèles plus complexes, voir[Exemples d'applications, de scripts et de modèles](panorama-samples.md).

## Activer le SDK pour Python
<a name="gettingstarted-deploy-redeploy"></a>

L'exemple d'application utilise le AWS SDK pour Python (Boto) pour envoyer des métriques à Amazon CloudWatch. Pour activer cette fonctionnalité, créez un rôle qui autorise l'application à envoyer des métriques, puis redéployez l'application avec le rôle associé.

L'exemple d'application inclut un CloudFormation modèle qui crée un rôle doté des autorisations nécessaires. Pour créer le rôle, utilisez la `aws cloudformation deploy` commande.

```
$ aws cloudformation deploy --template-file aws-panorama-sample.yml --stack-name aws-panorama-sample-runtime --capabilities CAPABILITY_NAMED_IAM
```



**Pour redéployer l'application**

1. Ouvrez la [page des applications déployées](https://console.aws.amazon.com/panorama/home#deployed-applications) de la console AWS Panorama.

1. Choisissez une application.

1. Choisissez **Remplacer**.

1. Suivez les étapes pour déployer l'application. Dans le champ **Spécifier le rôle IAM**, choisissez le rôle que vous avez créé. Son nom commence par `aws-panorama-sample-runtime`.

1. Lorsque le déploiement est terminé, ouvrez la [CloudWatchconsole](https://console.aws.amazon.com/cloudwatch/home#metricsV2:graph=~();namespace=~'AWSPanoramaApplication) et consultez les métriques dans l'espace de `AWSPanoramaApplication` noms. Toutes les 150 images, l'application enregistre et télécharge des métriques pour le traitement des images et le temps d'inférence.

## Nettoyage
<a name="gettingstarted-deploy-cleanup"></a>

Si vous avez terminé d'utiliser l'exemple d'application, vous pouvez utiliser la console AWS Panorama pour le supprimer de l'appliance.

**Pour supprimer l'application de l'appliance**

1. Ouvrez la [page des applications déployées](https://console.aws.amazon.com/panorama/home#deployed-applications) de la console AWS Panorama.

1. Choisissez une application.

1. Choisissez **Supprimer de l'appareil**.

## Étapes suivantes
<a name="gettingstarted-deploy-next"></a>

Si vous avez rencontré des erreurs lors du déploiement ou de l'exécution de l'exemple d'application, consultez[Résolution des problèmes](panorama-troubleshooting.md).

Pour en savoir plus sur les fonctionnalités et la mise en œuvre de l'exemple d'application, passez à [la rubrique suivante](gettingstarted-sample.md).

# Développement d'applications AWS Panorama
<a name="gettingstarted-sample"></a>

Vous pouvez utiliser l'exemple d'application pour en savoir plus sur la structure de l'application AWS Panorama et comme point de départ pour votre propre application.

Le schéma suivant montre les principaux composants de l'application exécutée sur une appliance AWS Panorama. Le code de l'application utilise le SDK d'application AWS Panorama pour obtenir des images et interagir avec le modèle, auquel il n'a pas d'accès direct. L'application émet une vidéo sur un écran connecté mais n'envoie pas de données d'image en dehors de votre réseau local.

![\[\]](http://docs.aws.amazon.com/fr_fr/panorama/latest/dev/images/sample-app.png)


Dans cet exemple, l'application utilise le SDK de l'application AWS Panorama pour obtenir des images vidéo d'une caméra, prétraiter les données vidéo et les envoyer à un modèle de vision par ordinateur qui détecte des objets. L'application affiche le résultat sur un écran HDMI connecté à l'appareil.

**Topics**
+ [Le manifeste de l'application](#gettingstarted-sample-manifest)
+ [Création à l'aide de l'exemple d'application](#gettingstarted-sample-adapting)
+ [Modification du modèle de vision par ordinateur](#gettingstarted-sample-model)
+ [Prétraitement des images](#gettingstarted-sample-preprocessing)
+ [Téléchargement de métriques avec le SDK pour Python](#gettingstarted-sample-metrics)
+ [Étapes suivantes](#gettingstarted-sample-nextsteps)

## Le manifeste de l'application
<a name="gettingstarted-sample-manifest"></a>

Le manifeste de l'application est un fichier nommé `graph.json` dans le `graphs` dossier. Le manifeste définit les composants de l'application, à savoir les packages, les nœuds et les arêtes.

Les packages sont des fichiers de code, de configuration et binaires pour le code d'application, les modèles, les caméras et les écrans. L'exemple d'application utilise 4 packages :

**Example `graphs/aws-panorama-sample/graph.json`— Forfaits**  

```
        "packages": [
            {
                "name": "123456789012::SAMPLE_CODE",
                "version": "1.0"
            },
            {
                "name": "123456789012::SQUEEZENET_PYTORCH_V1",
                "version": "1.0"
            },
            {
                "name": "panorama::abstract_rtsp_media_source",
                "version": "1.0"
            },
            {
                "name": "panorama::hdmi_data_sink",
                "version": "1.0"
            }
        ],
```

Les deux premiers packages sont définis dans l'application, dans le `packages` répertoire. Ils contiennent le code et le modèle spécifiques à cette application. Les deux autres packages sont des packages de caméra et d'écran génériques fournis par le service AWS Panorama. Le `abstract_rtsp_media_source` package est un espace réservé pour une caméra que vous pouvez remplacer lors du déploiement. Le `hdmi_data_sink` boîtier représente le connecteur de sortie HDMI de l'appareil.

Les nœuds sont des interfaces vers des packages, ainsi que des paramètres autres que les packages qui peuvent avoir des valeurs par défaut que vous pouvez remplacer au moment du déploiement. Les packages de code et de modèle définissent des interfaces dans `package.json` des fichiers qui spécifient les entrées et les sorties, qui peuvent être des flux vidéo ou un type de données de base tel qu'un flottant, un booléen ou une chaîne.

Par exemple, le `code_node` nœud fait référence à une interface du `SAMPLE_CODE` package.

```
        "nodes": [
            {
                "name": "code_node",
                "interface": "123456789012::SAMPLE_CODE.interface",
                "overridable": false,
                "launch": "onAppStart"
            },
```

Cette interface est définie dans le fichier de configuration du package,`package.json`. L'interface indique que le package est basé sur la logique métier et qu'il prend en entrée un flux vidéo nommé `video_in` et un nombre à virgule flottante `threshold` nommé. L'interface indique également que le code nécessite un tampon de flux vidéo nommé `video_out` pour afficher la vidéo sur un écran.

**Example `packages/123456789012-SAMPLE_CODE-1.0/package.json`**  

```
{
    "nodePackage": {
        "envelopeVersion": "2021-01-01",
        "name": "SAMPLE_CODE",
        "version": "1.0",
        "description": "Computer vision application code.",
        "assets": [],
        "interfaces": [
            {
                "name": "interface",
                "category": "business_logic",
                "asset": "code_asset",
                "inputs": [
                    {
                        "name": "video_in",
                        "type": "media"
                    },
                    {
                        "name": "threshold",
                        "type": "float32"
                    }
                ],
                "outputs": [
                    {
                        "description": "Video stream output",
                        "name": "video_out",
                        "type": "media"
                    }
                ]
            }
        ]
    }
}
```

De retour dans le manifeste de l'application, le `camera_node` nœud représente un flux vidéo provenant d'une caméra. Il inclut un décorateur qui apparaît dans la console lorsque vous déployez l'application et vous invite à choisir un flux de caméra.

**Example `graphs/aws-panorama-sample/graph.json`— Nœud de caméra**  

```
            {
                "name": "camera_node",
                "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface",
                "overridable": true,
                "launch": "onAppStart",
                "decorator": {
                    "title": "Camera",
                    "description": "Choose a camera stream."
                }
            },
```

Un nœud de paramètres définit `threshold_param` le paramètre de seuil de confiance utilisé par le code de l'application. Il a une valeur par défaut de 60 et peut être remplacé lors du déploiement.

**Example `graphs/aws-panorama-sample/graph.json`— Nœud de paramètres**  

```
            {
                "name": "threshold_param",
                "interface": "float32",
                "value": 60.0,
                "overridable": true,
                "decorator": {
                    "title": "Confidence threshold",
                    "description": "The minimum confidence for a classification to be recorded."
                }
            }
```

La dernière section du manifeste de l'application établit `edges` les connexions entre les nœuds. Le flux vidéo de la caméra et le paramètre de seuil sont connectés à l'entrée du nœud de code, tandis que la sortie vidéo du nœud de code est connectée à l'écran.

**Example `graphs/aws-panorama-sample/graph.json`— Bords**  

```
        "edges": [
            {
                "producer": "camera_node.video_out",
                "consumer": "code_node.video_in"
            },
            {
                "producer": "code_node.video_out",
                "consumer": "output_node.video_in"
            },
            {
                "producer": "threshold_param",
                "consumer": "code_node.threshold"
            }
        ]
```

## Création à l'aide de l'exemple d'application
<a name="gettingstarted-sample-adapting"></a>

Vous pouvez utiliser l'exemple d'application comme point de départ pour votre propre application.

Le nom de chaque package doit être unique dans votre compte. Si vous et un autre utilisateur de votre compte utilisez un nom de package générique tel que `code` ou`model`, il est possible que vous obteniez la mauvaise version du package lors du déploiement. Remplacez le nom du package de code par un nom qui représente votre application.

**Pour renommer le package de code**

1. Renommez le dossier du package :`packages/123456789012-SAMPLE_CODE-1.0/`.

1. Mettez à jour le nom du package aux emplacements suivants.

****
   + **Manifeste de candidature** — `graphs/aws-panorama-sample/graph.json`
   + **Configuration du package** — `packages/123456789012-SAMPLE_CODE-1.0/package.json`
   + **Script de construction** — `3-build-container.sh`

**Pour mettre à jour le code de l'application**

1. Modifiez le code de l'application dans`packages/123456789012-SAMPLE_CODE-1.0/src/application.py`.

1. Pour créer le conteneur, exécutez`3-build-container.sh`.

   ```
   aws-panorama-sample$ ./3-build-container.sh
   TMPDIR=$(pwd) docker build -t code_asset packages/123456789012-SAMPLE_CODE-1.0
   Sending build context to Docker daemon  61.44kB
   Step 1/2 : FROM public.ecr.aws/panorama/panorama-application
    ---> 9b197f256b48
   Step 2/2 : COPY src /panorama
    ---> 55c35755e9d2
   Successfully built 55c35755e9d2
   Successfully tagged code_asset:latest
   docker export --output=code_asset.tar $(docker create code_asset:latest)
   gzip -9 code_asset.tar
   Updating an existing asset with the same name
   {
       "name": "code_asset",
       "implementations": [
           {
               "type": "container",
               "assetUri": "98aaxmpl1c1ef64cde5ac13bd3be5394e5d17064beccee963b4095d83083c343.tar.gz",
               "descriptorUri": "1872xmpl129481ed053c52e66d6af8b030f9eb69b1168a29012f01c7034d7a8f.json"
           }
       ]
   }
   Container asset for the package has been succesfully built at  ~/aws-panorama-sample-dev/assets/98aaxmpl1c1ef64cde5ac13bd3be5394e5d17064beccee963b4095d83083c343.tar.gz
   ```

   La CLI supprime automatiquement l'ancien actif de conteneur du `assets` dossier et met à jour la configuration du package.

1. Pour télécharger les packages, exécutez`4-package-application.py`.

1. Ouvrez la [page des applications déployées](https://console.aws.amazon.com/panorama/home#deployed-applications) de la console AWS Panorama.

1. Choisissez une application.

1. Choisissez **Remplacer**.

1. Suivez les étapes pour déployer l'application. Si nécessaire, vous pouvez apporter des modifications au manifeste de l'application, aux flux de caméra ou aux paramètres.

## Modification du modèle de vision par ordinateur
<a name="gettingstarted-sample-model"></a>

L'exemple d'application inclut un modèle de vision par ordinateur. Pour utiliser votre propre modèle, modifiez la configuration du nœud du modèle et utilisez la CLI d'application AWS Panorama pour l'importer en tant que ressource.

[L'exemple suivant utilise un modèle MXNet SSD ResNet 50 que vous pouvez télécharger depuis le GitHub dépôt de ce guide : ssd\$1512\$1resnet50\$1v1\$1voc.tar.gz](https://github.com/awsdocs/aws-panorama-developer-guide/releases/download/v0.1-preview/ssd_512_resnet50_v1_voc.tar.gz)

**Pour modifier le modèle de l'application d'exemple**

1. Renommez le dossier du package en fonction de votre modèle. Par exemple, pour`packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/`.

1. Mettez à jour le nom du package aux emplacements suivants.

****
   + **Manifeste de candidature** — `graphs/aws-panorama-sample/graph.json`
   + **Configuration du package** — `packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/package.json`

1. Dans le fichier de configuration du package (`package.json`). Remplacez la `assets` valeur par un tableau vide.

   ```
   {
       "nodePackage": {
           "envelopeVersion": "2021-01-01",
           "name": "SSD_512_RESNET50_V1_VOC",
           "version": "1.0",
           "description": "Compact classification model",
           "assets": [],
   ```

1. Ouvrez le fichier descripteur du package (`descriptor.json`). Mettez à jour les `shape` valeurs `framework` et pour qu'elles correspondent à votre modèle.

   ```
   {
       "mlModelDescriptor": {
           "envelopeVersion": "2021-01-01",
           "framework": "MXNET",
           "inputs": [
               {
                   "name": "data",
                   "shape": [ 1, 3, 512, 512 ]
               }
           ]
       }
   }
   ```

   La valeur de la **forme** indique le nombre d'images que le modèle prend en entrée (1), le nombre de canaux dans chaque image (3 : rouge, vert et bleu) et les dimensions de l'image (512 x 512). `1,3,512,512` Les valeurs et l'ordre du tableau varient selon les modèles.

1. Importez le modèle à l'aide de l'interface de ligne de commande de l'application AWS Panorama. La CLI de l'application AWS Panorama copie les fichiers de modèle et de descripteur dans le `assets` dossier avec des noms uniques, et met à jour la configuration du package.

   ```
   aws-panorama-sample$ panorama-cli add-raw-model --model-asset-name model-asset \
   --model-local-path ssd_512_resnet50_v1_voc.tar.gz \
   --descriptor-path packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0/descriptor.json \
   --packages-path packages/123456789012-SSD_512_RESNET50_V1_VOC-1.0
   {
       "name": "model-asset",
       "implementations": [
           {
               "type": "model",
               "assetUri": "b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz",
               "descriptorUri": "a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json"
           }
       ]
   }
   ```

1. Pour télécharger le modèle, exécutez`panorama-cli package-application`.

   ```
   $ panorama-cli package-application
   Uploading package SAMPLE_CODE
   Patch Version 1844d5a59150d33f6054b04bac527a1771fd2365e05f990ccd8444a5ab775809 already registered, ignoring upload
   Uploading package SSD_512_RESNET50_V1_VOC
   Patch version for the package 244a63c74d01e082ad012ebf21e67eef5d81ce0de4d6ad1ae2b69d0bc498c8fd
   upload: assets/b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz to s3://arn:aws:s3:us-west-2:454554846382:accesspoint/panorama-123456789012-wc66m5eishf4si4sz5jefhx
   63a/123456789012/nodePackages/SSD_512_RESNET50_V1_VOC/binaries/b1a1589afe449b346ff47375c284a1998c3e1522b418a7be8910414911784ce1.tar.gz
   upload: assets/a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json to s3://arn:aws:s3:us-west-2:454554846382:accesspoint/panorama-123456789012-wc66m5eishf4si4sz5jefhx63
   a/123456789012/nodePackages/SSD_512_RESNET50_V1_VOC/binaries/a6a9508953f393f182f05f8beaa86b83325f4a535a5928580273e7fe26f79e78.json
   {
       "ETag": "\"2381dabba34f4bc0100c478e67e9ab5e\"",
       "ServerSideEncryption": "AES256",
       "VersionId": "KbY5fpESdpYamjWZ0YyGqHo3.LQQWUC2"
   }
   Registered SSD_512_RESNET50_V1_VOC with patch version 244a63c74d01e082ad012ebf21e67eef5d81ce0de4d6ad1ae2b69d0bc498c8fd
   Uploading package SQUEEZENET_PYTORCH_V1
   Patch Version 568138c430e0345061bb36f05a04a1458ac834cd6f93bf18fdacdffb62685530 already registered, ignoring upload
   ```

1. Mettez à jour le code de l'application. La majeure partie du code peut être réutilisée. Le code spécifique à la réponse du modèle se trouve dans la `process_results` méthode.

   ```
       def process_results(self, inference_results, stream):
           """Processes output tensors from a computer vision model and annotates a video frame."""
           for class_tuple in inference_results:
               indexes = self.topk(class_tuple[0])
           for j in range(2):
               label = 'Class [%s], with probability %.3f.'% (self.classes[indexes[j]], class_tuple[0][indexes[j]])
               stream.add_label(label, 0.1, 0.25 + 0.1*j)
   ```

   En fonction de votre modèle, vous devrez peut-être également mettre à jour la `preprocess` méthode.

## Prétraitement des images
<a name="gettingstarted-sample-preprocessing"></a>

Avant que l'application n'envoie une image au modèle, elle la prépare pour l'inférence en la redimensionnant et en normalisant les données de couleur. Le modèle utilisé par l'application nécessite une image de 224 x 224 pixels avec trois canaux de couleur, pour correspondre au nombre d'entrées de sa première couche. L'application ajuste chaque valeur de couleur en la convertissant en un nombre compris entre 0 et 1, en soustrayant la valeur moyenne de cette couleur et en la divisant par l'écart type. Enfin, il combine les canaux de couleur et les convertit en un NumPy tableau que le modèle peut traiter.

**Example [application.py](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/application.py) — Prétraitement**  

```
    def preprocess(self, img, width):
        resized = cv2.resize(img, (width, width))
        mean = [0.485, 0.456, 0.406]
        std = [0.229, 0.224, 0.225]
        img = resized.astype(np.float32) / 255.
        img_a = img[:, :, 0]
        img_b = img[:, :, 1]
        img_c = img[:, :, 2]
        # Normalize data in each channel
        img_a = (img_a - mean[0]) / std[0]
        img_b = (img_b - mean[1]) / std[1]
        img_c = (img_c - mean[2]) / std[2]
        # Put the channels back together
        x1 = [[[], [], []]]
        x1[0][0] = img_a
        x1[0][1] = img_b
        x1[0][2] = img_c
        return np.asarray(x1)
```

Ce processus fournit les valeurs du modèle dans une plage prévisible centrée autour de 0. Il correspond au prétraitement appliqué aux images de l'ensemble de données d'apprentissage, qui est une approche standard mais qui peut varier selon le modèle.

## Téléchargement de métriques avec le SDK pour Python
<a name="gettingstarted-sample-metrics"></a>

L'exemple d'application utilise le SDK pour Python pour télécharger des métriques sur Amazon CloudWatch.

**Example [application.py](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/application.py) — SDK pour Python**  

```
    def process_streams(self):
        """Processes one frame of video from one or more video streams."""
        ...
            logger.info('epoch length: {:.3f} s ({:.3f} FPS)'.format(epoch_time, epoch_fps))
            logger.info('avg inference time: {:.3f} ms'.format(avg_inference_time))
            logger.info('max inference time: {:.3f} ms'.format(max_inference_time))
            logger.info('avg frame processing time: {:.3f} ms'.format(avg_frame_processing_time))
            logger.info('max frame processing time: {:.3f} ms'.format(max_frame_processing_time))
            self.inference_time_ms = 0
            self.inference_time_max = 0
            self.frame_time_ms = 0
            self.frame_time_max = 0
            self.epoch_start = time.time()
            self.put_metric_data('AverageInferenceTime', avg_inference_time)
            self.put_metric_data('AverageFrameProcessingTime', avg_frame_processing_time)
 
    def put_metric_data(self, metric_name, metric_value):
        """Sends a performance metric to CloudWatch."""
        namespace = 'AWSPanoramaApplication'
        dimension_name = 'Application Name'
        dimension_value = 'aws-panorama-sample'
        try:
            metric = self.cloudwatch.Metric(namespace, metric_name)
            metric.put_data(
                Namespace=namespace,
                MetricData=[{
                    'MetricName': metric_name,
                    'Value': metric_value,
                    'Unit': 'Milliseconds',
                    'Dimensions': [
                        {
                            'Name': dimension_name,
                            'Value': dimension_value
                        },
                        {
                            'Name': 'Device ID',
                            'Value': self.device_id
                        }
                    ]
                }]
            )
            logger.info("Put data for metric %s.%s", namespace, metric_name)
        except ClientError:
            logger.warning("Couldn't put data for metric %s.%s", namespace, metric_name)
        except AttributeError:
            logger.warning("CloudWatch client is not available.")
```

Il obtient l'autorisation d'un rôle d'exécution que vous attribuez lors du déploiement. Le rôle est défini dans le `aws-panorama-sample.yml` CloudFormation modèle.

**Example [aws-panorama-sample.yml](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/aws-panorama-sample.yml)**  

```
Resources:
  runtimeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"		 	 	 
        Statement:
          -
            Effect: Allow
            Principal:
              Service:
                - panorama.amazonaws.com
            Action:
              - sts:AssumeRole
      Policies:
        - PolicyName: cloudwatch-putmetrics
          PolicyDocument:
            Version: 2012-10-17		 	 	 
            Statement:
              - Effect: Allow
                Action: 'cloudwatch:PutMetricData'
                Resource: '*'
      Path: /service-role/
```

L'exemple d'application installe le SDK pour Python et les autres dépendances avec pip. Lorsque vous créez le conteneur d'applications, il `Dockerfile` exécute des commandes pour installer des bibliothèques au-dessus de ce qui est fourni avec l'image de base.

**Example [Dockerfile](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/sample-apps/aws-panorama-sample/packages/123456789012-SAMPLE_CODE-1.0/Dockerfile)**  

```
FROM public.ecr.aws/panorama/panorama-application
WORKDIR /panorama
COPY . .
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt
```

Pour utiliser le AWS SDK dans le code de votre application, modifiez d'abord le modèle afin d'ajouter des autorisations pour toutes les actions d'API utilisées par l'application. Mettez à jour la CloudFormation pile en l'exécutant à `1-create-role.sh` chaque fois que vous apportez une modification. Déployez ensuite les modifications apportées au code de votre application.

Pour les actions qui modifient ou utilisent des ressources existantes, il est recommandé de minimiser la portée de cette politique en spécifiant un nom ou un modèle pour la cible `Resource` dans une déclaration séparée. Pour plus de détails sur les actions et les ressources prises en charge par chaque service, consultez la section [Actions, ressources et clés de condition](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) dans la référence d'autorisation de service

## Étapes suivantes
<a name="gettingstarted-sample-nextsteps"></a>

Pour obtenir des instructions sur l'utilisation de la CLI d'application AWS Panorama pour créer des applications et créer des packages à partir de zéro, consultez le fichier README de l'interface de ligne de commande.

****
+ [github. com/aws/aws-panorama-cli](https://github.com/aws/aws-panorama-cli)

Pour obtenir d'autres exemples de code et un utilitaire de test que vous pouvez utiliser pour valider le code de votre application avant le déploiement, consultez le référentiel d'exemples AWS Panorama.

****
+ [github. com/aws-samples/aws-échantillons panoramiques](https://github.com/aws-samples/aws-panorama-samples)

# Modèles de vision par ordinateur et caméras pris en charge
<a name="gettingstarted-compatibility"></a>

AWS Panorama prend en charge les modèles PyTorch créés avec MXNet, Apache et TensorFlow. Lorsque vous déployez une application, AWS Panorama compile votre modèle dans SageMaker AI Neo. Vous pouvez créer des modèles dans Amazon SageMaker AI ou dans votre environnement de développement, à condition d'utiliser des couches compatibles avec SageMaker AI Neo. 

Pour traiter des vidéos et obtenir des images à envoyer à un modèle, l'appliance AWS Panorama se connecte à un flux vidéo encodé H.264 avec le protocole RTSP. AWS Panorama teste la compatibilité de diverses caméras courantes.

**Topics**
+ [Modèles pris en charge](#gettingstarted-compatibility-models)
+ [Caméras compatibles](#gettingstarted-compatibility-cameras)

## Modèles pris en charge
<a name="gettingstarted-compatibility-models"></a>

Lorsque vous créez une application pour AWS Panorama, vous fournissez un modèle d'apprentissage automatique que l'application utilise pour la vision par ordinateur. Vous pouvez utiliser des modèles prédéfinis et préentraînés fournis par des cadres de modèles, [un modèle d'exemple](gettingstarted-sample.md#gettingstarted-sample-model) ou un modèle que vous créez et entraînez vous-même.

**Note**  
Pour obtenir la liste des modèles prédéfinis qui ont été testés avec AWS Panorama, consultez la section [Compatibilité des modèles](https://github.com/awsdocs/aws-panorama-developer-guide/blob/main/resources/model-compatibility.md).

Lorsque vous déployez une application, AWS Panorama utilise le compilateur SageMaker AI Neo pour compiler votre modèle de vision par ordinateur. SageMaker AI Neo est un compilateur qui optimise les modèles pour qu'ils s'exécutent efficacement sur une plate-forme cible, qui peut être une instance dans Amazon Elastic Compute Cloud (Amazon EC2) ou un appareil périphérique tel que l'appliance AWS Panorama.

AWS Panorama prend en charge les versions PyTorch d'Apache MXNet et TensorFlow celles prises en charge par SageMaker AI Neo pour les appareils de pointe. Lorsque vous créez votre propre modèle, vous pouvez utiliser les versions du framework répertoriées dans les [notes de mise à jour d'SageMaker AI Neo](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/). Dans SageMaker AI, vous pouvez utiliser l'[algorithme de classification d'images](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) intégré.

Pour plus d'informations sur l'utilisation de modèles dans AWS Panorama, consultez[Modèles de vision par ordinateur](applications-models.md).

## Caméras compatibles
<a name="gettingstarted-compatibility-cameras"></a>

L'appliance AWS Panorama prend en charge les flux vidéo H.264 provenant de caméras qui émettent du RTSP sur un réseau local. Pour les flux de caméra supérieurs à 2 mégapixels, l'appliance réduit l'image à 1920 x 1080 pixels ou à une taille équivalente qui préserve le rapport hauteur/largeur du flux.

La compatibilité des modèles de caméras suivants avec l'appliance AWS Panorama a été testée :
+ [Axe](https://www.axis.com/) : M3057-PLVE, M3058-PLVE, P1448-LE, P3225-LV Mk II
+ [LaView](https://www.laviewsecurity.com/)— LV-400 W PB3
+ [Vivotek — 0-H](https://www.vivotek.com/) IB936
+ [Amcrest — M-841B](https://amcrest.com/) IP2
+ Informations — **IPC-B850W-S-3X, IPC-D250W-S**
+ **WGCC** — Dôme PoE 4MP ONVIF

Pour connaître les caractéristiques matérielles de l'appliance, consultez[Spécifications de l'appliance AWS Panorama](gettingstarted-hardware.md).

# Spécifications de l'appliance AWS Panorama
<a name="gettingstarted-hardware"></a>

L'appliance AWS Panorama possède les caractéristiques matérielles suivantes. Pour les autres [appareils compatibles](gettingstarted-concepts.md#gettingstarted-concepts-devices), reportez-vous à la documentation du fabricant.


| Composant | Spécification de  | 
| --- | --- | 
|  Processeur et GPU  |  [Nvidia Jetson AGX Xavier](https://developer.nvidia.com/embedded/jetson-agx-xavier-developer-kit) avec 32 Go de RAM  | 
|  Ethernet  |  2 x 1000 Base-T (gigaoctet)  | 
|  USB  |  1 port USB 2.0 et 1 port USB 3.0 type A femelle  | 
|  sortie HDMI  |  2,0 a  | 
|  Dimensions  |  7,75 pouces x 9,6 pouces x 1,6 pouces (197 mm x 243 mm x 40 mm)  | 
|  Weight  |  1,7 kg (3,7 livres)  | 
|  alimentation  |  100 V à 240 V, 50 à 60 Hz AC, 65 W  | 
|  Entrée d'alimentation  |  Réceptacle IEC 60320 C6 (3 broches)  | 
|  Protection contre la poussière et les liquides  |  IP-62  | 
|  Conformité aux réglementations EMI/EMC  |  FCC Part-15 (États-Unis)   | 
|  Limites thermiques au toucher  |  IEC-62368  | 
|  Température de fonctionnement  |  -20 °C à 60 °C  | 
|  Humidité de fonctionnement  |  0 % à 95 % d'humidité relative  | 
|  Température de stockage  |  -20 °C à 85 °C  | 
|  Humidité de stockage  |  Non contrôlé en cas de basse température. 90 % HR à haute température   | 
|  refroidissement  |  Extraction de chaleur à air forcé (ventilateur)  | 
|  Options de montage  |  Montage en rack ou autoportant  | 
|  Cordon d'alimentation  |  1,8 mètre (6 pieds)  | 
|  Contrôle de puissance  |  bouton-poussoir  | 
|  Reset  |  Interrupteur momentané  | 
|  État et réseau LEDs  |  LED RGB tricolore programmable  | 

Le Wi-Fi, le Bluetooth et le stockage sur carte SD sont présents sur l'appareil mais ne sont pas utilisables.

L'appliance AWS Panorama inclut deux vis pour le montage sur un rack de serveur. Vous pouvez monter deux appareils side-by-side sur un rack de 19 pouces.

# Quotas de service
<a name="gettingstarted-quotas"></a>

AWS Panorama applique des quotas aux ressources que vous créez dans votre compte et aux applications que vous déployez. Si vous utilisez AWS Panorama dans plusieurs AWS régions, les quotas s'appliquent séparément à chaque région. Les quotas AWS Panorama ne sont pas ajustables.

Les ressources d'AWS Panorama incluent les appareils, les packages de nœuds d'applications et les instances d'applications.

****
+ **Appareils** — Jusqu'à 50 appareils enregistrés par région.
+ **Packages de nœuds** : 50 packages par région, avec jusqu'à 20 versions par package.
+ **Instances d'applications** : jusqu'à 10 applications par appareil. Chaque application peut surveiller jusqu'à 8 flux de caméras. Les déploiements sont limités à 200 par jour pour chaque appareil.

Lorsque vous utilisez l'interface de ligne de commande (CLI) ou le AWS SDK d'application AWS Panorama avec le service AWS Panorama, des quotas s'appliquent au nombre d'appels d'API que vous effectuez. AWS Command Line Interface Vous pouvez effectuer jusqu'à 5 demandes par seconde au total. Un sous-ensemble d'opérations d'API qui créent ou modifient des ressources applique une limite supplémentaire d'une demande par seconde.

Pour obtenir la liste complète des quotas, rendez-vous sur la [console Service Quotas](https://console.aws.amazon.com/servicequotas/home/services/panorama/quotas) ou consultez les [points de terminaison et quotas AWS Panorama](https://docs.aws.amazon.com/general/latest/gr/panorama.html) dans le Référence générale d'Amazon Web Services.