

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.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.

# Connecteur de classification d'images ML
<a name="image-classification-connector"></a>

**Avertissement**  <a name="connectors-extended-life-phase-warning"></a>
Ce connecteur est passé à la *phase de durée de vie prolongée* et AWS IoT Greengrass ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour de plus amples informations, veuillez consulter [AWS IoT Greengrass Version 1 politique de maintenance](maintenance-policy.md).

Les [connecteurs](connectors.md) ML Image Classification fournissent un service d'inférence d'apprentissage automatique (ML) qui s'exécute sur le AWS IoT Greengrass cœur. Ce service d'inférence local effectue la classification des images à l'aide d'un modèle entraîné par l'algorithme de classification d'images SageMaker AI.

Les fonctions Lambda définies par l'utilisateur utilisent le SDK Machine AWS IoT Greengrass Learning pour envoyer des demandes d'inférence au service d'inférence local. Le service exécute l'inférence localement et renvoie les probabilités que l'image d'entrée appartient à certaines catégories.

AWS IoT Greengrass fournit les versions suivantes de ce connecteur, qui est disponible pour plusieurs plateformes.

------
#### [ Version 2 ]


| Connecteur | Description et ARN | 
| --- | --- | 
| Classification d'images XML Aarch64 JTX2 |  Service d'inférence de classification d'images pour NVIDIA TX2 Jetson. Prend en charge l'accélération GPU. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| Classification d'images ML x86\$164 |  Service d'inférence de classification d'images pour les plateformes x86\$164. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| Classification des images ML ARMv7 |  Service d'inférence de classification d'images pour ARMv7 plateformes. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

------
#### [ Version 1 ]


| Connecteur | Description et ARN | 
| --- | --- | 
| Classification d'images XML Aarch64 JTX2 |  Service d'inférence de classification d'images pour NVIDIA TX2 Jetson. Prend en charge l'accélération GPU. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| Classification d'images ML x86\$164 |  Service d'inférence de classification d'images pour les plateformes x86\$164. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| Classification d'images ML Armv7 |  Service d'inférence de classification d'images pour les plateformes Armv7. **ARN** : `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

Pour obtenir des informations sur les changements apportés aux versions, veuillez consulter le [Journal des modifications](#image-classification-connector-changelog).

## Prérequis
<a name="image-classification-connector-req"></a>

Ces connecteurs possèdent les exigences suivantes :

------
#### [ Version 2 ]
+ AWS IoT Greengrass Core Software v1.9.3 ou version ultérieure.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) version 3.7 ou 3.8 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
**Note**  <a name="use-runtime-py3.8"></a>
Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation par défaut de Python 3.7 et les fichiers binaires Python 3.8 installés.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.
+ <a name="req-image-classification-framework"></a>Dépendances du MXNet framework Apache installé sur le périphérique principal. Pour de plus amples informations, veuillez consulter [Installation de MXNet dépendances sur le AWS IoT Greengrass noyau](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Une [ressource ML](ml-inference.md#ml-resources) du groupe Greengrass qui fait référence à une source de modèle d' SageMaker IA. Ce modèle doit être entraîné par l'algorithme de classification d'images SageMaker AI. Pour plus d'informations, consultez la section [Algorithme de classification des images](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) dans le manuel *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-feedback"></a>Le [connecteur ML Feedback](ml-feedback-connector.md) a été ajouté au groupe Greengrass et configuré. Cette opération est obligatoire uniquement si vous souhaitez utiliser le connecteur pour charger les données d'entrée de modèle et publier les prédictions dans une rubrique MQTT.
+ <a name="req-image-classification-policy"></a>Le [rôle de groupe Greengrass](group-role.md) est configuré pour autoriser l'`sagemaker:DescribeTrainingJob`action sur la tâche de formation cible, comme illustré dans l'exemple de politique IAM suivant.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).

  Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique \$1). Si vous modifiez le poste de formation cible à l'avenir, veillez à mettre à jour le rôle du groupe.
+ AWS IoT Greengrass Le [SDK Machine Learning](lambda-functions.md#lambda-sdks-ml) v1.1.0 est requis pour interagir avec ce connecteur.

------
#### [ Version 1 ]
+ AWS IoT Greengrass Core Software v1.7 ou version ultérieure.
+ [Python](https://www.python.org/) version 2.7 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
+ <a name="req-image-classification-framework"></a>Dépendances du MXNet framework Apache installé sur le périphérique principal. Pour de plus amples informations, veuillez consulter [Installation de MXNet dépendances sur le AWS IoT Greengrass noyau](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Une [ressource ML](ml-inference.md#ml-resources) du groupe Greengrass qui fait référence à une source de modèle d' SageMaker IA. Ce modèle doit être entraîné par l'algorithme de classification d'images SageMaker AI. Pour plus d'informations, consultez la section [Algorithme de classification des images](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) dans le manuel *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-policy"></a>Le [rôle de groupe Greengrass](group-role.md) est configuré pour autoriser l'`sagemaker:DescribeTrainingJob`action sur la tâche de formation cible, comme illustré dans l'exemple de politique IAM suivant.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "sagemaker:DescribeTrainingJob"
              ],
              "Resource": "arn:aws:sagemaker:us-east-1:123456789012:training-job/training-job-name"
          }
      ]
  }
  ```

------

  <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).

  Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique \$1). Si vous modifiez le poste de formation cible à l'avenir, veillez à mettre à jour le rôle du groupe.
+ AWS IoT Greengrass Le [SDK Machine Learning](lambda-functions.md#lambda-sdks-ml) v1.0.0 ou version ultérieure est requis pour interagir avec ce connecteur.

------

## Paramètres du connecteur
<a name="image-classification-connector-param"></a>

Ces connecteurs fournissent les paramètres suivants.

------
#### [ Version 2 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Le chemin local absolu de la ressource ML dans l'environnement Lambda. Il s'agit du chemin de destination spécifié pour la ressource de ML.  
Si vous avez créé la ressource de ML dans la console, il s'agit du chemin d'accès local.
Nom d'affichage dans la AWS IoT console : **chemin de destination du modèle**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID de la ressource de ML qui référence le modèle de source.  
Nom affiché dans la AWS IoT console : **ressource ARN du SageMaker job**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
L'ARN de la tâche de formation à l' SageMaker IA qui représente la source du modèle d' SageMaker IA. Le modèle doit être entraîné par l'algorithme de classification d'images SageMaker AI.  
Nom affiché dans la AWS IoT console : **SageMaker job ARN**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Nom du service d'inférence local. Les fonctions Lambda définies par l'utilisateur appellent le service en transmettant le nom à `invoke_inference_service` la fonction du SDK Machine AWS IoT Greengrass Learning. Pour obtenir un exemple, consultez [Exemple d'utilisation](#image-classification-connector-usage).  
Nom affiché dans la AWS IoT console : nom du **service d'inférence local**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Durée (en secondes) avant laquelle la demande d'inférence est interrompue. La valeur minimale est de 1.  
Nom affiché dans la AWS IoT console : **Timeout (seconde)**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Quantité de mémoire (en Ko) à laquelle le service a accès. La valeur minimale est de 1.  
Nom affiché dans la AWS IoT console : **Limite de mémoire (Ko)**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
Contexte de calcul de l'UC ou du GPU (accéléré). Cette propriété s'applique uniquement au JTX2 connecteur ML Image Classification Aarch64.  
Nom affiché dans la AWS IoT console : **accélération du processeur graphique**  
Nécessaire : `true`  
Type : `string`  
Valeurs valides : `CPU` ou `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
ID de la configuration de commentaire à utiliser pour charger les données d'entrée du modèle. Cela doit correspondre à l'ID d'une configuration de commentaire définie pour le [connecteur ML Feedback](ml-feedback-connector.md).  
Ce paramètre est obligatoire uniquement si vous souhaitez utiliser le connecteur ML Feedback pour charger les données d'entrée du modèle et publier des prédictions dans une rubrique MQTT.  
Nom affiché dans la AWS IoT console : **ID de configuration du connecteur ML Feedback**  
Nécessaire : `false`  
Type : `string`  
Modèle valide : `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

------
#### [ Version 1 ]

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Le chemin local absolu de la ressource ML dans l'environnement Lambda. Il s'agit du chemin de destination spécifié pour la ressource de ML.  
Si vous avez créé la ressource de ML dans la console, il s'agit du chemin d'accès local.
Nom d'affichage dans la AWS IoT console : **chemin de destination du modèle**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID de la ressource de ML qui référence le modèle de source.  
Nom affiché dans la AWS IoT console : **ressource ARN du SageMaker job**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
L'ARN de la tâche de formation à l' SageMaker IA qui représente la source du modèle d' SageMaker IA. Le modèle doit être entraîné par l'algorithme de classification d'images SageMaker AI.  
Nom affiché dans la AWS IoT console : **SageMaker job ARN**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$`

`LocalInferenceServiceName`  <a name="param-image-classification-svcname"></a>
Nom du service d'inférence local. Les fonctions Lambda définies par l'utilisateur appellent le service en transmettant le nom à `invoke_inference_service` la fonction du SDK Machine AWS IoT Greengrass Learning. Pour obtenir un exemple, consultez [Exemple d'utilisation](#image-classification-connector-usage).  
Nom affiché dans la AWS IoT console : nom du **service d'inférence local**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Durée (en secondes) avant laquelle la demande d'inférence est interrompue. La valeur minimale est de 1.  
Nom affiché dans la AWS IoT console : **Timeout (seconde)**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Quantité de mémoire (en Ko) à laquelle le service a accès. La valeur minimale est de 1.  
Nom affiché dans la AWS IoT console : **Limite de mémoire (Ko)**  
Nécessaire : `true`  
Type : `string`  
Modèle valide : `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
Contexte de calcul de l'UC ou du GPU (accéléré). Cette propriété s'applique uniquement au JTX2 connecteur ML Image Classification Aarch64.  
Nom affiché dans la AWS IoT console : **accélération du processeur graphique**  
Nécessaire : `true`  
Type : `string`  
Valeurs valides : `CPU` ou `GPU`

------

### Exemple de création de connecteur (AWS CLI)
<a name="image-classification-connector-create"></a>

Les commandes CLI suivantes créent un `ConnectorDefinition` avec une version initiale contenant un connecteur de classification d'images ML.

**Exemple : instance d'UC**  
Cet exemple crée une instance du connecteur ARMv7L ML Image Classification.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**Exemple : instance de GPU**  
Cet exemple crée une instance du JTX2 connecteur ML Image Classification Aarch64, qui prend en charge l'accélération du GPU sur une carte NVIDIA TX2 Jetson.  

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyImageClassificationConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2",
            "Parameters": {
                "MLModelDestinationPath": "/path-to-model",
                "MLModelResourceId": "my-ml-resource",
                "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
                "LocalInferenceServiceName": "imageClassification",
                "LocalInferenceServiceTimeoutSeconds": "10",
                "LocalInferenceServiceMemoryLimitKB": "500000",
                "GPUAcceleration": "GPU",
                "MLFeedbackConnectorConfigId": "MyConfig0"
            }
        }
    ]
}'
```

**Note**  
La fonction Lambda de ces connecteurs a une [longue durée](lambda-functions.md#lambda-lifecycle) de vie.

Dans la AWS IoT Greengrass console, vous pouvez ajouter un connecteur depuis la page **Connecteurs** du groupe. Pour de plus amples informations, veuillez consulter [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md).

## Données d'entrée
<a name="image-classification-connector-data-input"></a>

 Ces connecteurs acceptent un fichier image comme entrée. Les fichiers image d'entrée doivent être au format `jpeg` ou `png`. Pour de plus amples informations, veuillez consulter [Exemple d'utilisation](#image-classification-connector-usage). 

Ces connecteurs n'acceptent pas les messages MQTT comme données d'entrée.

## Données de sortie
<a name="image-classification-connector-data-output"></a>

Ces connecteurs renvoient une prédiction formatée pour l'objet identifié dans l'image d'entrée :

```
[0.3,0.1,0.04,...]
```

La prédiction contient une liste de valeurs qui correspondent aux catégories utilisées dans l'ensemble de données de formation pendant la formation du modèle. Chaque valeur représente la probabilité que l'image relève de la catégorie correspondante. La catégorie avec la plus haute probabilité est la prédiction dominante.

Ces connecteurs ne publient pas les messages MQTT sous forme de données de sortie.

## Exemple d'utilisation
<a name="image-classification-connector-usage"></a>

L'exemple de fonction Lambda suivant utilise le [SDK AWS IoT Greengrass Machine Learning](lambda-functions.md#lambda-sdks-ml) pour interagir avec un connecteur ML Image Classification.

**Note**  
 Vous pouvez télécharger le SDK depuis la page de téléchargement du [SDK AWS IoT Greengrass Machine Learning](what-is-gg.md#gg-ml-sdk-download).

L'exemple initialise un client de kit de développement logiciel et appelle de façon synchrone la fonction `invoke_inference_service` du SDK pour appeler le service d'inférence local. Il transmet le type d'algorithme, le nom de service, le type d'image et le contenu de l'image. Ensuite, l'exemple analyse la réponse du service pour obtenir les résultats probables (prédictions).

------
#### [ Python 3.7 ]

```
import logging
from threading import Timer

import numpy as np

import greengrass_machine_learning_sdk as ml

# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
    content = bytearray(f.read())

client = ml.client('inference')

def infer():
    logging.info('invoking Greengrass ML Inference service')

    try:
        resp = client.invoke_inference_service(
            AlgoType='image-classification',
            ServiceName='imageClassification',
            ContentType='image/jpeg',
            Body=content
        )
    except ml.GreengrassInferenceException as e:
        logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
        return
    except ml.GreengrassDependencyException as e:
        logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
        return

    logging.info('resp: {}'.format(resp))
    predictions = resp['Body'].read().decode("utf-8")
    logging.info('predictions: {}'.format(predictions))
    
    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    count = len(predictions.split(','))
    predictions_arr = np.fromstring(predictions, count=count, sep=',')

    # Perform business logic that relies on the predictions_arr, which is an array
    # of probabilities.
    
    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()
    return

infer()

def function_handler(event, context):
    return
```

------
#### [ Python 2.7 ]

```
import logging
from threading import Timer

import numpy

import greengrass_machine_learning_sdk as gg_ml

# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
    content = f.read()

client = gg_ml.client("inference")


def infer():
    logging.info("Invoking Greengrass ML Inference service")

    try:
        resp = client.invoke_inference_service(
            AlgoType="image-classification",
            ServiceName="imageClassification",
            ContentType="image/jpeg",
            Body=content,
        )
    except gg_ml.GreengrassInferenceException as e:
        logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
        return
    except gg_ml.GreengrassDependencyException as e:
        logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
        return

    logging.info("Response: %s", resp)
    predictions = resp["Body"].read()
    logging.info("Predictions: %s", predictions)

    # The connector output is in the format: [0.3,0.1,0.04,...]
    # Remove the '[' and ']' at the beginning and end.
    predictions = predictions[1:-1]
    predictions_arr = numpy.fromstring(predictions, sep=",")
    logging.info("Split into %s predictions.", len(predictions_arr))

    # Perform business logic that relies on predictions_arr, which is an array
    # of probabilities.

    # Schedule the infer() function to run again in one second.
    Timer(1, infer).start()


infer()


# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
    return
```

------

La `invoke_inference_service` fonction du SDK AWS IoT Greengrass Machine Learning accepte les arguments suivants.


| Argument | Description | 
| --- | --- | 
| `AlgoType` | Nom du type d'algorithme à utiliser pour l'inférence. Actuellement, seul `image-classification` est pris en charge. Nécessaire : `true` Type : `string` Valeurs valides : `image-classification` | 
| `ServiceName` | Nom du service d'inférence local. Utilisez le nom que vous avez spécifié pour le paramètre `LocalInferenceServiceName` lorsque vous avez configuré le connecteur. Nécessaire : `true` Type : `string` | 
| `ContentType` | Nom du type mime de l'image d'entrée. Nécessaire : `true` Type : `string` Valeurs valides : `image/jpeg, image/png` | 
| `Body` | Contenu du type mime de l'image d'entrée. Nécessaire : `true` Type : `binary` | 

## Installation de MXNet dépendances sur le AWS IoT Greengrass noyau
<a name="image-classification-connector-config"></a>

Pour utiliser un connecteur de classification d'images ML, vous devez installer les dépendances du MXNet framework Apache sur le périphérique principal. Le connecteur utilise l'infrastructure pour servir le modèle ML.

**Note**  
Ces connecteurs sont fournis avec une MXNet bibliothèque précompilée, vous n'avez donc pas besoin d'installer le MXNet framework sur le périphérique principal. 

AWS IoT Greengrass fournit des scripts permettant d'installer les dépendances pour les plates-formes et appareils courants suivants (ou de les utiliser comme référence pour les installer). Si vous utilisez une autre plate-forme ou un autre appareil, consultez la [MXNet documentation](https://mxnet.apache.org/) de votre configuration.

Avant d'installer les MXNet dépendances, assurez-vous que les [bibliothèques système](#image-classification-connector-logging) requises (avec les versions minimales spécifiées) sont présentes sur le périphérique.

------
#### [ NVIDIA Jetson TX2 ]

1. Installer CUDA Toolkit 9.0 et cuDNN 7.0. Vous pouvez suivre les instructions de [Configuration d'autres appareils](setup-filter.other.md) dans le didacticiel Démarrez.

1. Activez les référentiels univers de sorte que le connecteur peut installer les logiciels open source maintenus par la communauté. Pour plus d'informations, consultez [ Repositories/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) dans la documentation Ubuntu.

   1. Ouvrez le fichier `/etc/apt/sources.list`.

   1. Vérifiez que les lignes suivantes ne sont pas commentées :

      ```
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
      deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
      ```

1. Enregistrez une copie du script d'installation suivant dans un fichier nommé `nvidiajtx2.sh` sur l'appareil principal.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Note**  
<a name="opencv-build-from-source"></a>Si [OpenCV](https://github.com/opencv/opencv) ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez [ Installation sous Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   echo 'Assuming that universe repos are enabled and checking dependencies...'
   apt-get -y update
   apt-get -y dist-upgrade
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install numpy==1.15.0 scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :

   ```
   sudo nvidiajtx2.sh
   ```

------
#### [ x86\$164 (Ubuntu or Amazon Linux)  ]

1. Enregistrez une copie du script d'installation suivant dans un fichier nommé `x86_64.sh` sur l'appareil principal.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
     apt-get install -y python3.7 python3.7-dev
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Note**  
<a name="opencv-build-from-source"></a>Si [OpenCV](https://github.com/opencv/opencv) ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez [ Installation sous Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
   
   if [ "$release" == '"Ubuntu"' ]; then
     # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
     # this is mostly to prepare dependencies on Ubuntu EC2 instance.
     apt-get -y update
     apt-get -y dist-upgrade
   
     apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
   elif [ "$release" == '"Amazon Linux"' ]; then
     # Amazon Linux. Expect python to be installed already
     yum -y update
     yum -y upgrade
   
     yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
   else
     echo "OS Release not supported: $release"
     exit 1
   fi
   
   pip install numpy==1.15.0 scipy opencv-python
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :

   ```
   sudo x86_64.sh
   ```

------
#### [ Armv7 (Raspberry Pi) ]

1. Enregistrez une copie du script d'installation suivant dans un fichier nommé `armv7l.sh` sur l'appareil principal.

------
#### [ Python 3.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev
   apt-get install -y python3.7 python3.7-dev
   
   python3.7 -m pip install --upgrade pip
   python3.7 -m pip install numpy==1.15.0
   python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
   
   echo 'Dependency installation/upgrade complete.'
   ```

**Note**  
<a name="opencv-build-from-source"></a>Si [OpenCV](https://github.com/opencv/opencv) ne s'installe pas correctement à l'aide de ce script, vous pouvez essayer de générer à partir de la source. Pour plus d'informations, consultez [ Installation sous Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dans la documentation OpenCV ou consultez d'autres ressources en ligne pour votre plateforme.

------
#### [ Python 2.7 ]

   ```
   #!/bin/bash
   set -e
   
   echo "Installing dependencies on the system..."
   
   apt-get update
   apt-get -y upgrade
   
   apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
   
   # python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
   # This script installs python-numpy first so that python-opencv can be installed, and then install the latest
   # numpy-1.15.x with pip
   apt-get install -y python-numpy python-opencv
   dpkg --remove --force-depends python-numpy
   
   echo 'Install latest pip...'
   wget https://bootstrap.pypa.io/get-pip.py
   python get-pip.py
   rm get-pip.py
   
   pip install --upgrade numpy==1.15.0 picamera scipy
   
   echo 'Dependency installation/upgrade complete.'
   ```

------

1. Dans le répertoire où vous avez enregistré le fichier, exécutez la commande suivante :

   ```
   sudo bash armv7l.sh
   ```
**Note**  
Sur un Raspberry Pi, l'utilisation de `pip` pour installer des dépendances d'apprentissage automatique est une opération gourmande en mémoire qui peut entraîner un dépassement de la capacité mémoire de l'appareil et une absence de réponse. Pour contourner ce problème, vous pouvez augmenter temporairement l'espace d'échange :  
Dans `/etc/dphys-swapfile`, augmentez la valeur de la variable `CONF_SWAPSIZE`, puis exécutez la commande suivante pour redémarrer `dphys-swapfile`.  

   ```
   /etc/init.d/dphys-swapfile restart
   ```

------

## Journalisation et résolution des problèmes
<a name="image-classification-connector-logging"></a>

Selon les paramètres de votre groupe, les journaux d'événements et d'erreurs sont écrits dans CloudWatch Logs, dans le système de fichiers local, ou dans les deux. Les journaux de ce connecteur utilisent le préfixe `LocalInferenceServiceName`. Si le connecteur se comporte de manière inattendue, vérifiez les journaux du connecteur. Ces derniers contiennent généralement des informations de débogage utiles, telles que les dépendances de bibliothèque ML manquantes ou la cause d'une panne de démarrage d'un connecteur.

Si le AWS IoT Greengrass groupe est configuré pour écrire des journaux locaux, le connecteur écrit des fichiers journaux dans`greengrass-root/ggc/var/log/user/region/aws/`. Pour plus d'informations sur la journalisation de Greengrass, consultez. [Surveillance à l'aide de AWS IoT Greengrass journaux](greengrass-logs-overview.md)

Utilisez les informations suivantes pour résoudre les problèmes liés aux connecteurs ML Image Classification.

**Bibliothèques système requises**

Les onglets suivants répertorient les bibliothèques système requises pour chaque connecteur de classification d'images ML.

------
#### [ ML Image Classification Aarch64 JTX2 ]


| Bibliothèque | Version minimale | 
| --- | --- | 
| ld-linux-aarch64. so.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | non applicable | 
| libcudart.so.9.0 | non applicable | 
| libcudnn.so.7 | non applicable | 
| libcufft.so.9.0 | non applicable | 
| libcurand.so.9.0 | non applicable | 
| libcusolver.so.9.0 | non applicable | 
| libgcc\$1s.so.1 | GCC\$14.2.0 | 
| libgomp.so.1 | GOMP\$14.0, OMP\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.17 | 
| librt.so.1 | GLIBC\$12.17 | 
| libstdc\$1\$1.so.6 | GLIBCXX\$13.4.21, CXXABI\$11.3.8 | 

------
#### [ ML Image Classification x86\$164 ]


| Bibliothèque | Version minimale | 
| --- | --- | 
| ld-linux-x86-64. so.2 | GCC\$14.0.0 | 
| libc.so.6 | GLIBC\$12.4 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.23 | 
| libpthread.so.0 | GLIBC\$12.2.5 | 
| librt.so.1 | GLIBC\$12.2.5 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, GLIBCXX\$13.4.21 | 

------
#### [ ML Image Classification Armv7 ]


| Bibliothèque | Version minimale | 
| --- | --- | 
| ld-linux-armhf.so.3 | GLIBC\$12.4 | 
| libc.so.6 | GLIBC\$12.7 | 
| libgcc\$1s.so.1 | GCC\$14.0.0 | 
| libgfortran.so.3 | GFORTRAN\$11.0 | 
| libm.so.6 | GLIBC\$12.4 | 
| libpthread.so.0 | GLIBC\$12.4 | 
| librt.so.1 | GLIBC\$12.4 | 
| libstdc\$1\$1.so.6 | CXXABI\$11.3.8, CXXABI\$1ARM\$11.3.3, GLIBCXX\$13.4.20 | 

------

**Problèmes**


| Symptôme | Solution | 
| --- | --- | 
|  Sur un appareil Raspberry Pi, le message d'erreur suivant est consigné, et vous n'utilisez pas la caméra : `Failed to initialize libdc1394`   |  Exécutez la commande suivante pour désactiver le pilote : <pre>sudo ln /dev/null /dev/raw1394</pre> Cette opération est éphémère et le lien symbolique disparaîtra après le redémarrage. Consultez le manuel de distribution de votre système d'exploitation pour savoir comment créer automatiquement le lien au redémarrage.  | 

## Licences
<a name="image-classification-connector-license"></a>

Les connecteurs ML Image Classification incluent les logiciels/licences tiers suivants :<a name="boto-3-licenses"></a>
+ [AWS SDK pour Python (Boto3)](https://pypi.org/project/boto3/)/Licence Apache 2.0
+ [botocore](https://pypi.org/project/botocore/)/Licence Apache 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/Licence PSF
+ [docutils](https://pypi.org/project/docutils/)/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public
+ [jmespath](https://pypi.org/project/jmespath/)/Licence MIT
+ [s3transfer](https://pypi.org/project/s3transfer/)/Licence Apache 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Licence MIT
+ [Bibliothèque DNNL (Deep Neural Network Library)](https://github.com/intel/mkl-dnn)/Licence Apache 2.0
+ [OpenMP\$1 Runtime Library](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/optimization-and-programming-guide/openmp-support/openmp-library-support/openmp-run-time-library-routines.html)/Voir [Intel OpenMP Runtime Library licensing](#openmp-license).
+ [mxnet](https://pypi.org/project/mxnet/)/Licence Apache 2.0
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Intel OpenMP Runtime Library licensing**. Le moteur d'exécution Intel® OpenMP\$1 est doté de deux licences, une licence commerciale (COM) faisant partie des produits de la suite Intel® Parallel Studio XE et une licence open source (OSS) BSD.

Ce connecteur est publié dans le cadre du contrat de [licence logicielle Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Journal des modifications
<a name="image-classification-connector-changelog"></a>

Le tableau suivant décrit les modifications apportées à chaque version du connecteur.


| Version | Modifications | 
| --- | --- | 
| 2 | Ajout du `MLFeedbackConnectorConfigId` paramètre permettant d'utiliser le [connecteur ML Feedback](ml-feedback-connector.md) pour charger les données d'entrée du modèle, publier des prédictions sur un sujet MQTT et publier des métriques sur Amazon CloudWatch.  | 
| 1 | Première version.  | 

<a name="one-conn-version"></a>Un groupe Greengrass ne peut contenir qu'une seule version du connecteur à la fois. Pour de plus amples informations sur la mise à niveau d'une version de connecteur, veuillez consulter [Mise à niveau des versions du connecteur](connectors.md#upgrade-connector-versions).

## Consultez aussi
<a name="image-classification-connector-see-also"></a>
+ [Intégrer à des services et protocoles à l'aide de connecteurs Greengrass](connectors.md)
+ [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md)
+ [Démarrage avec les connecteurs Greengrass (CLI)](connectors-cli.md)
+ [Exécuter l'inférence de Machine Learning](ml-inference.md)
+ [Algorithme de classification des images](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) dans le manuel *Amazon SageMaker AI Developer Guide*