

Aviso de fim do suporte: em 7 de outubro de 2026, AWS o suporte para o. AWS IoT Greengrass Version 1 Depois de 7 de outubro de 2026, você não poderá mais acessar os AWS IoT Greengrass V1 recursos. Para obter mais informações, visite [Migrar de AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conector de classificação de imagem do ML
<a name="image-classification-connector"></a>

**Atenção**  <a name="connectors-extended-life-phase-warning"></a>
Esse conector passou para a * fase de vida útil estendida* e AWS IoT Greengrass não lançará atualizações que forneçam atributos, aprimoramentos para atributos existentes, patches de segurança ou correções de erros. Para obter mais informações, consulte [AWS IoT Greengrass Version 1 política de manutenção](maintenance-policy.md).

Os [conectores](connectors.md) ML Image Classification fornecem um serviço de inferência de aprendizado de máquina (ML) executado no AWS IoT Greengrass núcleo. Esse serviço de inferência local realiza a classificação de imagens usando um modelo treinado pelo algoritmo de classificação de imagens de SageMaker IA.

As funções Lambda definidas pelo usuário usam o Machine AWS IoT Greengrass Learning SDK para enviar solicitações de inferência ao serviço de inferência local. O serviço executa inferência localmente e retorna probabilidades de a imagem de entrada pertencer às categorias específicas.

AWS IoT Greengrass fornece as seguintes versões desse conector, que está disponível para várias plataformas.

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


| Conector | Descrição e ARN | 
| --- | --- | 
| Classificação de imagens ML Aarch64 JTX2 |  Serviço de inferência de classificação de imagens para NVIDIA Jetson. TX2 Compatível com a aceleração de GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| Classificação de imagens do ML x86\$164 |  Serviço de inferência de classificação de imagem para plataformas x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| Classificação de imagens de ML ARMv7 |  Serviço de inferência de classificação de imagens para ARMv7 plataformas. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

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


| Conector | Descrição e ARN | 
| --- | --- | 
| Classificação de imagens ML Aarch64 JTX2 |  Serviço de inferência de classificação de imagens para NVIDIA Jetson. TX2 Compatível com a aceleração de GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| Classificação de imagens do ML x86\$164 |  Serviço de inferência de classificação de imagem para plataformas x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| Classificação de imagens do ML Armv7 |  Serviço de inferência de classificação de imagem para plataformas Armv7. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

Para obter informações sobre alterações de versão, consulte o [Changelog](#image-classification-connector-changelog).

## Requisitos
<a name="image-classification-connector-req"></a>

Esses conectores têm os seguintes requisitos:

------
#### [ Version 2 ]
+ AWS IoT Greengrass Core Software v1.9.3 ou posterior.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/), versão 3.7 ou 3.8, instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
**nota**  <a name="use-runtime-py3.8"></a>
Para usar o Python 3.8, execute o comando a seguir para criar um symblink da pasta de instalação padrão do Python 3.7 para os binários instalados do Python 3.8.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass.
+ <a name="req-image-classification-framework"></a>Dependências da MXNet estrutura Apache instalada no dispositivo principal. Para obter mais informações, consulte [Instalando MXNet dependências no núcleo AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Um [recurso de ML](ml-inference.md#ml-resources) no grupo Greengrass que faz referência a uma fonte de modelo de SageMaker IA. Esse modelo deve ser treinado pelo algoritmo de classificação de imagens de SageMaker IA. Para obter mais informações, consulte [Algoritmo de classificação de imagens](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) no *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-feedback"></a>O [conector de feedback do ML](ml-feedback-connector.md) adicionado ao grupo do Greengrass e configurado. Isso será necessário somente se você quiser usar o conector para fazer upload de dados de entrada do modelo e publicar previsões em um tópico MQTT.
+ <a name="req-image-classification-policy"></a>A [função de grupo do Greengrass](group-role.md) configurada para permitir a ação `sagemaker:DescribeTrainingJob` no trabalho de treinamento de destino, conforme mostrado no seguinte exemplo de política do IAM.

------
#### [ 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>Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para acessar mais informações, consulte [Gerenciar a função de grupo do Greengrass (console)](group-role.md#manage-group-role-console) ou [Gerenciar a função de grupo do Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Você pode conceder acesso granular ou condicional aos recursos (por exemplo, usando um esquema de nomeação \$1 curinga). Se você alterar o trabalho de treinamento de destino no futuro, certifique-se de atualizar a função do grupo, conforme necessário.
+ AWS IoT Greengrass O [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 é necessário para interagir com esse conector.

------
#### [ Version 1 ]
+ AWS IoT Greengrass Core Software v1.7 ou posterior.
+ [Python](https://www.python.org/) versão 2.7 instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH.
+ <a name="req-image-classification-framework"></a>Dependências da MXNet estrutura Apache instalada no dispositivo principal. Para obter mais informações, consulte [Instalando MXNet dependências no núcleo AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>Um [recurso de ML](ml-inference.md#ml-resources) no grupo Greengrass que faz referência a uma fonte de modelo de SageMaker IA. Esse modelo deve ser treinado pelo algoritmo de classificação de imagens de SageMaker IA. Para obter mais informações, consulte [Algoritmo de classificação de imagens](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) no *Amazon SageMaker AI Developer Guide*.
+ <a name="req-image-classification-policy"></a>A [função de grupo do Greengrass](group-role.md) configurada para permitir a ação `sagemaker:DescribeTrainingJob` no trabalho de treinamento de destino, conforme mostrado no seguinte exemplo de política do IAM.

------
#### [ 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>Para o requisito de função de grupo, você deve configurar a função para conceder as permissões necessárias e certificar-se de que a função tenha sido adicionada ao grupo. Para acessar mais informações, consulte [Gerenciar a função de grupo do Greengrass (console)](group-role.md#manage-group-role-console) ou [Gerenciar a função de grupo do Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Você pode conceder acesso granular ou condicional aos recursos (por exemplo, usando um esquema de nomeação \$1 curinga). Se você alterar o trabalho de treinamento de destino no futuro, certifique-se de atualizar a função do grupo, conforme necessário.
+ AWS IoT Greengrass O [Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.0.0 ou posterior é necessário para interagir com esse conector.

------

## Parâmetros do conector
<a name="image-classification-connector-param"></a>

Esses conectores fornecem os parâmetros a seguir.

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
O caminho local absoluto do recurso do ML dentro do ambiente do Lambda. Esse é o caminho de destino especificado para o recurso de ML.  
Se você criou o recurso de ML no console, este é o caminho local.
Nome de exibição no AWS IoT console: **caminho de destino do modelo**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
O ID do recurso de ML que faz referência ao modelo de origem.  
Nome de exibição no AWS IoT console: recurso **ARN do SageMaker job**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
O ARN do trabalho de treinamento de SageMaker IA que representa a fonte do modelo de SageMaker IA. O modelo deve ser treinado pelo algoritmo de classificação de imagens de SageMaker IA.  
Nome de exibição no AWS IoT console: **SageMaker job ARN**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `^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>
O nome para o serviço de inferência local. As funções Lambda definidas pelo usuário invocam o serviço passando o nome para a função do SDK `invoke_inference_service` do Machine AWS IoT Greengrass Learning. Para ver um exemplo, consulte [Exemplo de uso](#image-classification-connector-usage).  
Nome de exibição no AWS IoT console: nome do **serviço de inferência local**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
O tempo (em segundos) até que a solicitação de inferência seja encerrada. O valor mínimo é 1.  
Nome de exibição no AWS IoT console: **Tempo limite (segundo)**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
A quantidade de memória (em KB) que o serviço tem acesso. O valor mínimo é 1.  
Nome de exibição no AWS IoT console: **limite de memória (KB)**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
O contexto de computação CPU ou GPU (acelerada). Essa propriedade se aplica somente ao JTX2 conector ML Image Classification Aarch64.  
Nome de exibição no AWS IoT console: aceleração de **GPU**  
Obrigatório: `true`  
Digite: `string`  
Valores válidos: `CPU` ou `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
O ID da configuração de feedback a ser usada para fazer upload dos dados de entrada do modelo. Ele deve corresponder ao ID de uma configuração de feedback definida para o [conector ML Feedback](ml-feedback-connector.md).  
Esse parâmetro é necessário somente se você quiser usar o conector ML Feedback para fazer upload de dados de entrada do modelo e publicar previsões em um tópico MQTT.  
Nome de exibição no AWS IoT console: **ID de configuração do conector ML Feedback**  
Obrigatório: `false`  
Digite: `string`  
Padrão válido: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
O caminho local absoluto do recurso do ML dentro do ambiente do Lambda. Esse é o caminho de destino especificado para o recurso de ML.  
Se você criou o recurso de ML no console, este é o caminho local.
Nome de exibição no AWS IoT console: **caminho de destino do modelo**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
O ID do recurso de ML que faz referência ao modelo de origem.  
Nome de exibição no AWS IoT console: recurso **ARN do SageMaker job**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
O ARN do trabalho de treinamento de SageMaker IA que representa a fonte do modelo de SageMaker IA. O modelo deve ser treinado pelo algoritmo de classificação de imagens de SageMaker IA.  
Nome de exibição no AWS IoT console: **SageMaker job ARN**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `^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>
O nome para o serviço de inferência local. As funções Lambda definidas pelo usuário invocam o serviço passando o nome para a função do SDK `invoke_inference_service` do Machine AWS IoT Greengrass Learning. Para ver um exemplo, consulte [Exemplo de uso](#image-classification-connector-usage).  
Nome de exibição no AWS IoT console: nome do **serviço de inferência local**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
O tempo (em segundos) até que a solicitação de inferência seja encerrada. O valor mínimo é 1.  
Nome de exibição no AWS IoT console: **Tempo limite (segundo)**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
A quantidade de memória (em KB) que o serviço tem acesso. O valor mínimo é 1.  
Nome de exibição no AWS IoT console: **limite de memória (KB)**  
Obrigatório: `true`  
Digite: `string`  
Padrão válido: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
O contexto de computação CPU ou GPU (acelerada). Essa propriedade se aplica somente ao JTX2 conector ML Image Classification Aarch64.  
Nome de exibição no AWS IoT console: aceleração de **GPU**  
Obrigatório: `true`  
Digite: `string`  
Valores válidos: `CPU` ou `GPU`

------

### Exemplo de criação de conector (AWS CLI)
<a name="image-classification-connector-create"></a>

Os seguintes comandos da CLI criam um `ConnectorDefinition` com uma versão inicial que contém um conector de classificação de imagem do ML.

**Exemplo: instância de CPU**  
Este exemplo cria uma instância do conector Armv7l de classificação de imagem do ML.  

```
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"
            }
        }
    ]
}'
```

**Exemplo: instância de GPU**  
Este exemplo cria uma instância do JTX2 conector ML Image Classification Aarch64, que suporta aceleração de GPU em uma placa NVIDIA Jetson. TX2   

```
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"
            }
        }
    ]
}'
```

**nota**  
A função do Lambda nesses conectores tem um ciclo de vida [longo](lambda-functions.md#lambda-lifecycle).

No AWS IoT Greengrass console, você pode adicionar um conector na página **Conectores** do grupo. Para obter mais informações, consulte [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md).

## Dados de entrada
<a name="image-classification-connector-data-input"></a>

 Esses conectores aceitam um arquivo de imagem como entrada. Os arquivos de imagem de entrada devem estar no formato `jpeg` ou `png`. Para obter mais informações, consulte [Exemplo de uso](#image-classification-connector-usage). 

Esses conectores não aceitam mensagens MQTT como dados de entrada.

## Dados de saída
<a name="image-classification-connector-data-output"></a>

Esses conectores retornam uma previsão formatada para o objeto identificado na imagem de entrada:

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

A previsão contém uma lista de valores que correspondem às categorias usadas no conjunto de dados de treinamento durante o treinamento do modelo. Cada valor representa a probabilidade de a imagem ficar na categoria correspondente. A categoria com a probabilidade mais alta é a previsão dominante.

Esses conectores não publicam mensagens MQTT como dados de saída.

## Exemplo de uso
<a name="image-classification-connector-usage"></a>

O exemplo de função do Lambda a seguir usa o [SDK AWS IoT Greengrass de Machine Learning](lambda-functions.md#lambda-sdks-ml) para interagir com um conector de classificação de imagem do ML.

**nota**  
 Você pode baixar o SDK na página de downloads do ‭[AWS IoT Greengrass ‬SDK de Machine Learning](what-is-gg.md#gg-ml-sdk-download)‭.

O exemplo inicializa um cliente do SDK e de forma síncrona chama a função `invoke_inference_service` do SDK para invocar o serviço de inferência local. Ela passa o tipo de algoritmo, o nome do serviço, o tipo de imagem e o conteúdo da imagem. Em seguida, o exemplo analisa a resposta do serviço para obter os resultados de probabilidade (previsões).

------
#### [ 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
```

------

A `invoke_inference_service` função no SDK do AWS IoT Greengrass Machine Learning aceita os seguintes argumentos.


| Argumento | Description | 
| --- | --- | 
| `AlgoType` | O nome do tipo de algoritmo a ser usado para inferência. No momento, só há compatibilidade com `image-classification`. Obrigatório: `true` Digite: `string` Valores válidos: `image-classification` | 
| `ServiceName` | O nome do serviço de inferência local. Use o nome que você especificou para o parâmetro `LocalInferenceServiceName` quando você configurou o conector. Obrigatório: `true` Digite: `string` | 
| `ContentType` | O tipo de mime da imagem de entrada. Obrigatório: `true` Digite: `string` Valores válidos: `image/jpeg, image/png` | 
| `Body` | O conteúdo do arquivo de imagem de entrada. Obrigatório: `true` Digite: `binary` | 

## Instalando MXNet dependências no núcleo AWS IoT Greengrass
<a name="image-classification-connector-config"></a>

Para usar um conector ML Image Classification, você deve instalar as dependências da MXNet estrutura Apache no dispositivo principal. Os conectores usam a estrutura para fornecer o modelo de ML.

**nota**  
Esses conectores são fornecidos com uma MXNet biblioteca pré-compilada, portanto, você não precisa instalar a MXNet estrutura no dispositivo principal. 

AWS IoT Greengrass fornece scripts para instalar as dependências das seguintes plataformas e dispositivos comuns (ou para usar como referência para instalá-los). Se você estiver usando uma plataforma ou dispositivo diferente, consulte a [MXNet documentação](https://mxnet.apache.org/) da sua configuração.

Antes de instalar as MXNet dependências, verifique se as [bibliotecas do sistema](#image-classification-connector-logging) necessárias (com as versões mínimas especificadas) estão presentes no dispositivo.

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

1. Instale CUDA Toolkit 9.0 e cuDNN 7.0. Você pode seguir as instruções em [Configurar outros dispositivos](setup-filter.other.md) no tutorial Conceitos básicos.

1. Habilite repositórios universe para que o conector possa instalar softwares livres mantidos pela comunidade. Para obter mais informações, consulte [ Repositórios/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) na documentação do Ubuntu.

   1. Abra o arquivo `/etc/apt/sources.list`.

   1. Certifique-se de que as seguintes linhas permaneçam sem comentário.

      ```
      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. Salve uma cópia do script de instalação a seguir em um arquivo denominado `nvidiajtx2.sh` no dispositivo de núcleo.

------
#### [ 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.'
   ```

**nota**  
<a name="opencv-build-from-source"></a>Se o [OpenCV](https://github.com/opencv/opencv) não for instalado com êxito usando esse script, você poderá tentar compilar a partir do código-fonte. Para obter mais informações, consulte [ Instalação no Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) na documentação do OpenCV ou consulte outros recursos online da sua plataforma.

------
#### [ 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. A partir do diretório em que você salvou o arquivo, execute o seguinte comando:

   ```
   sudo nvidiajtx2.sh
   ```

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

1. Salve uma cópia do script de instalação a seguir em um arquivo denominado `x86_64.sh` no dispositivo de núcleo.

------
#### [ 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.'
   ```

**nota**  
<a name="opencv-build-from-source"></a>Se o [OpenCV](https://github.com/opencv/opencv) não for instalado com êxito usando esse script, você poderá tentar compilar a partir do código-fonte. Para obter mais informações, consulte [ Instalação no Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) na documentação do OpenCV ou consulte outros recursos online da sua plataforma.

------
#### [ 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. A partir do diretório em que você salvou o arquivo, execute o seguinte comando:

   ```
   sudo x86_64.sh
   ```

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

1. Salve uma cópia do script de instalação a seguir em um arquivo denominado `armv7l.sh` no dispositivo de núcleo.

------
#### [ 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.'
   ```

**nota**  
<a name="opencv-build-from-source"></a>Se o [OpenCV](https://github.com/opencv/opencv) não for instalado com êxito usando esse script, você poderá tentar compilar a partir do código-fonte. Para obter mais informações, consulte [ Instalação no Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) na documentação do OpenCV ou consulte outros recursos online da sua plataforma.

------
#### [ 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. A partir do diretório em que você salvou o arquivo, execute o seguinte comando:

   ```
   sudo bash armv7l.sh
   ```
**nota**  
Em um Raspberry Pi, usar o `pip` para instalar dependências de machine learning é uma operação com uso intensivo de memória que pode fazer com que o dispositivo fique sem memória e deixe de responder. Como alternativa, você pode aumentar temporariamente o tamanho da permuta:  
Em `/etc/dphys-swapfile`, aumente o valor da variável `CONF_SWAPSIZE` e, em seguida, execute o seguinte comando para reiniciar `dphys-swapfile`.  

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

------

## Registro em log e solução de problemas
<a name="image-classification-connector-logging"></a>

Dependendo das configurações do seu grupo, os registros de eventos e erros são gravados CloudWatch nos Registros, no sistema de arquivos local ou em ambos. Os logs desse conector usam o prefixo `LocalInferenceServiceName`. Se o conector se comportar de forma inesperada, verifique os logs do conector. Normalmente, eles contêm informações úteis de depuração, como uma dependência de biblioteca de ML ausente ou a causa de uma falha de startup do conector.

Se o AWS IoT Greengrass grupo estiver configurado para gravar registros locais, o conector grava arquivos de log em`greengrass-root/ggc/var/log/user/region/aws/`. Para obter mais informações sobre o registro em log do Greengrass, consulte [Monitoramento com AWS IoT Greengrass registros](greengrass-logs-overview.md).

Use as informações a seguir para ajudar a solucionar os problemas com os conectores de classificação de imagem do ML.

**Bibliotecas do sistema necessárias**

As guias a seguir listam as bibliotecas do sistema necessárias para cada conector de classificação de imagem do ML.

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


| Biblioteca | Versão mínima | 
| --- | --- | 
| ld-linux-aarch64.so.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | não aplicável | 
| libcudart.so.9.0 | não aplicável | 
| libcudnn.so.7 | não aplicável | 
| libcufft.so.9.0 | não aplicável | 
| libcurand.so.9.0 | não aplicável | 
| libcusolver.so.9.0 | não aplicável | 
| 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 ]


| Biblioteca | Versão mínima | 
| --- | --- | 
| 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 ]


| Biblioteca | Versão mínima | 
| --- | --- | 
| 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 | 

------

**Problemas**


| Sintomas | Solução | 
| --- | --- | 
|  Em um Raspberry Pi, a mensagem de erro a seguir será registrada em log e você não está usando a câmera: `Failed to initialize libdc1394`   |  Execute o comando a seguir para desabilitar o driver: <pre>sudo ln /dev/null /dev/raw1394</pre> Essa operação é temporária e o symblink desaparecerá após a reinicialização. Consulte o manual de distribuição do seu sistema operacional para saber como criar automaticamente o link na reinicialização.  | 

## Licenças
<a name="image-classification-connector-license"></a>

Os conector de classificação de imagem do ML incluem o seguinte licenciamento/software de terceiros:<a name="boto-3-licenses"></a>
+ [AWS SDK para Python (Boto3)](https://pypi.org/project/boto3/)/Licença Apache 2.0
+ [botocore](https://pypi.org/project/botocore/)/Licença Apache 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/Licença PSF
+ [docutils](https://pypi.org/project/docutils/)/Licença BSD, GNU Licença pública geral (GPL), Licença Python Software Foundation, Domínio público
+ [jmespath](https://pypi.org/project/jmespath/)/Licença MIT
+ [s3transfer](https://pypi.org/project/s3transfer/)/Licença Apache 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Licença MIT
+ [Deep Neural Network Library (DNNL)](https://github.com/intel/mkl-dnn)/Licença 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)/Consulte o [licenciamento da Intel OpenMP Runtime Library](#openmp-license).
+ [mxnet](https://pypi.org/project/mxnet/)/Licença Apache 2.0
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Licenciamento da Intel OpenMP Runtime Library**. O runtime Intel® OpenMP\$1 tem licença dupla, com uma licença comercial (COM) como parte dos produtos Intel® Parallel Studio XE Suite e uma licença de código aberto (OSS) BSD.

Esse conector é liberado de acordo com o [Contrato de licença de software do Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Changelog
<a name="image-classification-connector-changelog"></a>

A tabela a seguir descreve as alterações em cada versão do conector.


| Versão | Alterações | 
| --- | --- | 
| 2 | Foi adicionado o `MLFeedbackConnectorConfigId` parâmetro para suportar o uso do [conector ML Feedback](ml-feedback-connector.md) para carregar dados de entrada do modelo, publicar previsões em um tópico do MQTT e publicar métricas na Amazon. CloudWatch  | 
| 1 | Versão inicial.  | 

<a name="one-conn-version"></a>Um grupo do Greengrass só pode conter uma versão do conector por vez. Para obter informações sobre como fazer upgrade de uma versão do conector, consulte [Atualizar a versões do conector](connectors.md#upgrade-connector-versions).

## Consulte também
<a name="image-classification-connector-see-also"></a>
+ [Integrar a serviços e protocolos usando conectores do Greengrass](connectors.md)
+ [Conceitos básicos de conectores do Greengrass (console)](connectors-console.md)
+ [Conceitos básicos de conectores do Greengrass (CLI)](connectors-cli.md)
+ [Executar a inferência de machine learning](ml-inference.md)
+ [Algoritmo de classificação de imagens](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) no *Amazon SageMaker AI Developer Guide*