

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ML イメージ分類コネクタ
<a name="image-classification-connector"></a>

**警告**  <a name="connectors-extended-life-phase-warning"></a>
このコネクタは延長ライフサイクルフェーズに移行しており、 AWS IoT Greengrass では、機能、既存機能の拡張、セキュリティパッチ、バグ修正を提供するアップデートはリリースされません。詳細については、「[AWS IoT Greengrass Version 1 メンテナンスポリシー](maintenance-policy.md)」を参照してください。

ML イメージ分類[コネクタ](connectors.md)は、 AWS IoT Greengrass コアで実行される機械学習 (ML) 推論サービスを提供します。このローカル推論サービスは、SageMaker AI イメージ分類アルゴリズムによってトレーニングされたモデルを使用してイメージ分類を実行します。

ユーザー定義の Lambda 関数は、 AWS IoT Greengrass Machine Learning SDK を使用してローカル推論サービスに推論リクエストを送信します。このサービスは、推論をローカルで実行し、入力イメージが特定のカテゴリに属する確率を返します。

AWS IoT Greengrass には、複数のプラットフォームで使用できるこのコネクタの次のバージョンが用意されています。

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


| コネクタ | 説明と ARN | 
| --- | --- | 
| ML イメージ分類 Aarch64 JTX2 |  NVIDIA Jetson TX2 のイメージ分類推論サービス。GPU アクセラレーションをサポートします。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| ML イメージ分類 x86\$164 |  x86\$164 プラットフォーム用のイメージ分類推論サービス。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| ML イメージ分類 ARMv7 |  ARMv7 プラットフォーム用のイメージ分類推論サービス。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

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


| コネクタ | 説明と ARN | 
| --- | --- | 
| ML イメージ分類 Aarch64 JTX2 |  NVIDIA Jetson TX2 のイメージ分類推論サービス。GPU アクセラレーションをサポートします。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| ML イメージ分類 x86\$164 |  x86\$164 プラットフォーム用のイメージ分類推論サービス。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| ML イメージ分類 Armv7 |  Armv7 プラットフォーム用のイメージ分類推論サービス。 **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

バージョンの変更については、「[Changelog](#image-classification-connector-changelog)」を参照してください。

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

これらのコネクタには以下の要件があります。

------
#### [ Version 2 ]
+ AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) バージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
**注記**  <a name="use-runtime-py3.8"></a>
Python 3.8 を使用するには、次のコマンドを実行して、Python 3.7 のデフォルトのインストールフォルダからインストール済みの Python 3.8 バイナリへのシンボリックリンクを作成します。  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。
+ <a name="req-image-classification-framework"></a>Core デバイスにインストールされた Apache MXNet フレームワークの依存関係。詳細については、「[AWS IoT Greengrass コアへの MXNet 依存関係のインストール](#image-classification-connector-config)」を参照してください。
+ <a name="req-image-classification-resource"></a>SageMaker AI モデルソースを参照する Greengrass グループの [ML リソース](ml-inference.md#ml-resources)。このモデルは、SageMaker AI イメージ分類アルゴリズムによってトレーニングされる必要があります。詳細については、*Amazon SageMakerデベロッパーガイド*」の[「イメージ分類アルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html)」を参照してください。
+ <a name="req-image-classification-feedback"></a>[ML フィードバックコネクタ](ml-feedback-connector.md)が Greengrass グループに追加され、設定されている。これは、コネクタを使用してモデル入力データをアップロードし、予測を MQTT トピックに発行する場合にのみ必要です。
+ <a name="req-image-classification-policy"></a>以下の IAM ポリシーの例に示すように、ターゲットトレーニングジョブで `sagemaker:DescribeTrainingJob` アクションを許可するために [Greengrass グループロール](group-role.md)が設定されている。

------
#### [ 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>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。

  リソースにきめ細かいアクセス権限または条件付きアクセス権限を付与できます (例えば、ワイルドカード \$1 命名スキームを使用)。ターゲットトレーニングジョブを今後変更する場合は、グループロールを更新してください。
+ このコネクタを操作するには、[AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 が必要です。

------
#### [ Version 1 ]
+ AWS IoT Greengrass Core ソフトウェア v1.7 以降。
+ [Python](https://www.python.org/) バージョン 2.7 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
+ <a name="req-image-classification-framework"></a>Core デバイスにインストールされた Apache MXNet フレームワークの依存関係。詳細については、「[AWS IoT Greengrass コアへの MXNet 依存関係のインストール](#image-classification-connector-config)」を参照してください。
+ <a name="req-image-classification-resource"></a>SageMaker AI モデルソースを参照する Greengrass グループの [ML リソース](ml-inference.md#ml-resources)。このモデルは、SageMaker AI イメージ分類アルゴリズムによってトレーニングされる必要があります。詳細については、*Amazon SageMakerデベロッパーガイド*」の[「イメージ分類アルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html)」を参照してください。
+ <a name="req-image-classification-policy"></a>以下の IAM ポリシーの例に示すように、ターゲットトレーニングジョブで `sagemaker:DescribeTrainingJob` アクションを許可するために [Greengrass グループロール](group-role.md)が設定されている。

------
#### [ 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>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。

  リソースにきめ細かいアクセス権限または条件付きアクセス権限を付与できます (例えば、ワイルドカード \$1 命名スキームを使用)。ターゲットトレーニングジョブを今後変更する場合は、グループロールを更新してください。
+ このコネクタを操作するには、[AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.0.0 以降が必要です。

------

## コネクタパラメータ
<a name="image-classification-connector-param"></a>

これらのコネクタでは、以下のパラメータを使用できます。

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Lambda 環境内の ML リソースの絶対ローカルパス。これは、ML リソースに指定されたターゲットパスです。  
コンソールに ML リソースを作成した場合、これはローカルパスです。
 AWS IoT コンソールの表示名: **モデル送信先パス**  
必須: `true`  
型: `string`  
有効なパターン: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ソースモデルを参照する ML リソースの ID。  
 AWS IoT コンソールでの名前の表示: **SageMaker ジョブ ARN リソース**  
必須: `true`  
型: `string`  
有効なパターン: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
SageMaker AI モデルソースを表す SageMaker AI トレーニングジョブの ARN。モデルは SageMaker AI イメージ分類アルゴリズムによってトレーニングされる必要があります。  
 AWS IoT コンソールの表示名: **SageMaker ジョブ ARN**  
必須: `true`  
型: `string`  
有効なパターン: `^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>
ローカル推論サービスの名前。ユーザー定義の Lambda 関数は、 AWS IoT Greengrass Machine Learning SDK の `invoke_inference_service`関数に名前を渡すことでサービスを呼び出します。例については、[使用例](#image-classification-connector-usage)を参照してください。  
 AWS IoT コンソールでの名前の表示: **ローカル推論サービス名**  
必須: `true`  
型: `string`  
有効なパターン: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
推論リクエストが終了するまでの時間 (秒単位)。最小値は 1 です。  
 AWS IoT コンソールの表示名: **タイムアウト (秒)**  
必須: `true`  
型: `string`  
有効なパターン: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
サービスがアクセスできるメモリの量 (KB 単位)。最小値は 1 です。  
 AWS IoT コンソールの表示名: **メモリ制限 (KB)**  
必須: `true`  
型: `string`  
有効なパターン: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU または GPU (アクセラレーション) コンピューティングの場合。このプロパティは ML イメージ分類 Aarch64 JTX2 コネクタにのみ適用されます。  
 AWS IoT コンソールの表示名: **GPU アクセラレーション**  
必須: `true`  
型: `string`  
有効な値: `CPU` または `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
モデル入力データのアップロードに使用するフィードバック設定の ID。これは、[ML フィードバックコネクタ](ml-feedback-connector.md)に定義されたフィードバック設定の ID と一致する必要があります。  
この パラメータは、ML フィードバックコネクタを使用してモデル入力データをアップロードし、予測を MQTT トピックに発行する場合にのみ必要です。  
 AWS IoT コンソールの表示名: **ML フィードバックコネクタ設定 ID**  
必須: `false`  
型: `string`  
有効なパターン: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Lambda 環境内の ML リソースの絶対ローカルパス。これは、ML リソースに指定されたターゲットパスです。  
コンソールに ML リソースを作成した場合、これはローカルパスです。
 AWS IoT コンソールの表示名: **モデル送信先パス**  
必須: `true`  
型: `string`  
有効なパターン: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ソースモデルを参照する ML リソースの ID。  
 AWS IoT コンソールでの名前の表示: **SageMaker ジョブ ARN リソース**  
必須: `true`  
型: `string`  
有効なパターン: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
SageMaker AI モデルソースを表す SageMaker AI トレーニングジョブの ARN。モデルは SageMaker AI イメージ分類アルゴリズムによってトレーニングされる必要があります。  
 AWS IoT コンソールの表示名: **SageMaker ジョブ ARN**  
必須: `true`  
型: `string`  
有効なパターン: `^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>
ローカル推論サービスの名前。ユーザー定義の Lambda 関数は、 AWS IoT Greengrass Machine Learning SDK の `invoke_inference_service`関数に名前を渡すことでサービスを呼び出します。例については、[使用例](#image-classification-connector-usage)を参照してください。  
 AWS IoT コンソールでの名前の表示: **ローカル推論サービス名**  
必須: `true`  
型: `string`  
有効なパターン: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
推論リクエストが終了するまでの時間 (秒単位)。最小値は 1 です。  
 AWS IoT コンソールの表示名: **タイムアウト (秒)**  
必須: `true`  
型: `string`  
有効なパターン: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
サービスがアクセスできるメモリの量 (KB 単位)。最小値は 1 です。  
 AWS IoT コンソールの表示名: **メモリ制限 (KB)**  
必須: `true`  
型: `string`  
有効なパターン: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU または GPU (アクセラレーション) コンピューティングの場合。このプロパティは ML イメージ分類 Aarch64 JTX2 コネクタにのみ適用されます。  
 AWS IoT コンソールの表示名: **GPU アクセラレーション**  
必須: `true`  
型: `string`  
有効な値: `CPU` または `GPU`

------

### サンプルコネクタを作成する (AWS CLI)
<a name="image-classification-connector-create"></a>

以下の CLI コマンドは、ML イメージ分類コネクタを含む初期バージョンで `ConnectorDefinition` を作成します。

**例: CPU インスタンス**  
この例では、ML イメージ分類 Armv7l コネクタのインスタンスを作成します。  

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

**例: GPU インスタンス**  
この例では、NVIDIA Jetson TX2 ボードで GPU アクセラレーションをサポートする ML イメージ分類 Aarch64 JTX2 コネクタのインスタンスを作成します。  

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

**注記**  
これらのコネクタの Lambda 関数には、[存続期間の長い](lambda-functions.md#lambda-lifecycle)ライフサイクルがあります。

 AWS IoT Greengrass コンソールでは、グループのコネクタページから**コネクタ**を追加できます。詳細については、「[Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)」を参照してください。

## 入力データ
<a name="image-classification-connector-data-input"></a>

 これらのコネクタは、イメージファイルを入力として受け入れます。入力イメージファイルは `jpeg` または `png` 形式である必要があります。詳細については、「[使用例](#image-classification-connector-usage)」を参照してください。

これらのコネクタは MQTT メッセージを入力データとして受け入れません。

## 出力データ
<a name="image-classification-connector-data-output"></a>

これらのコネクタは、入力イメージで識別されたオブジェクトのフォーマットされた予測を返します。

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

予測には、モデルトレーニング中にトレーニングデータセットで使用されたカテゴリに対応する値のリストが含まれます。各値は、イメージが対応するカテゴリに分類される確率を表します。確率が最も高いカテゴリが主要な予測です。

これらのコネクタは MQTT メッセージを出力データとして公開しません。

## 使用例
<a name="image-classification-connector-usage"></a>

次の Lambda 関数の例は、[AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) を使用して、ML イメージ分類コネクタと対話します。

**注記**  
 この SDK は、[AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) のダウンロードページからダウンロードできます。

この例では、SDK クライアントを初期化し、SDK の `invoke_inference_service` 関数の同期呼び出しにより、ローカル推論サービスを呼び出します。次に、アルゴリズムタイプ、サービス名、イメージタイプ、イメージコンテンツを渡します。その後、サービスのレスポンスを解析して、確率の結果 (予測) を取得します。

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

------

Machine AWS IoT Greengrass Machine Learning SDK の `invoke_inference_service`関数は、次の引数を受け入れます。


| 引数 | 説明 | 
| --- | --- | 
| `AlgoType` | 推論に使用するアルゴリズムタイプの名前。現在は、`image-classification` のみがサポートされます。 必須: `true` 型: `string` 有効な値: `image-classification` | 
| `ServiceName` | ローカル推論サービスの名前。コネクタを設定したときに `LocalInferenceServiceName` パラメータに指定した名前を使用します。 必須: `true` 型: `string` | 
| `ContentType` | 入力イメージの MIME タイプ。 必須: `true` 型: `string` 有効な値: `image/jpeg, image/png` | 
| `Body` | 入力イメージファイルの内容。 必須: `true` 型: `binary` | 

## AWS IoT Greengrass コアへの MXNet 依存関係のインストール
<a name="image-classification-connector-config"></a>

ML イメージ分類コネクタを使用するには、Apache MXNet フレームワークの依存関係をコアデバイスにインストールする必要があります。コネクタは、このフレームワークを使用して ML モデルを提供します。

**注記**  
これらのコネクタは、プリコンパイルされた MXNet ライブラリにバンドルされているため、MXNet フレームワークをコアデバイスにインストールする必要はありません。

AWS IoT Greengrass は、次の一般的なプラットフォームとデバイスの依存関係をインストールするためのスクリプトを提供します (またはインストールのリファレンスとして使用）。別のプラットフォームやデバイスを使用している場合は、設定に応じた [MXNet ドキュメント](https://mxnet.apache.org/)を参照してください。

MXNet の依存関係をインストールする前に、必要な[システムライブラリ](#image-classification-connector-logging) (指定された最小バージョン) がデバイスに存在することを確認してください。

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

1. CUDA Toolkit 9.0 と cuDNN 7.0 をインストールします。開始方法チュートリアルの「[他のデバイスの設定](setup-filter.other.md)」の手順に従うことができます。

1. コネクタでコミュニティ管理のオープンなソフトウェアをインストールできるように、ユニバースリポジトリを有効にします。詳細については、Ubuntu ドキュメントの [ Repositories/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) を参照してください。

   1. `/etc/apt/sources.list` ファイルを開きます。

   1. 以下の行のコメントが解除されていることを確認してください。

      ```
      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. 以下のインストールスクリプトのコピーを Core デバイス上の `nvidiajtx2.sh` というファイルに保存します。

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

**注記**  
<a name="opencv-build-from-source"></a>[OpenCV](https://github.com/opencv/opencv) がこのスクリプトを使用して正常にインストールしない場合、ソースからビルドしてみることができます。詳細については、OpenCV ドキュメントの「[Linux でのインストール](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html)」、またはお使いのプラットフォーム用の他のオンラインリソースを参照してください。

------
#### [ 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. ファイルを保存したディレクトリから、次のコマンドを実行します。

   ```
   sudo nvidiajtx2.sh
   ```

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

1. 以下のインストールスクリプトのコピーを Core デバイス上の `x86_64.sh` というファイルに保存します。

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

**注記**  
<a name="opencv-build-from-source"></a>[OpenCV](https://github.com/opencv/opencv) がこのスクリプトを使用して正常にインストールしない場合、ソースからビルドしてみることができます。詳細については、OpenCV ドキュメントの「[Linux でのインストール](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html)」、またはお使いのプラットフォーム用の他のオンラインリソースを参照してください。

------
#### [ 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. ファイルを保存したディレクトリから、次のコマンドを実行します。

   ```
   sudo x86_64.sh
   ```

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

1. 以下のインストールスクリプトのコピーを Core デバイス上の `armv7l.sh` というファイルに保存します。

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

**注記**  
<a name="opencv-build-from-source"></a>[OpenCV](https://github.com/opencv/opencv) がこのスクリプトを使用して正常にインストールしない場合、ソースからビルドしてみることができます。詳細については、OpenCV ドキュメントの「[Linux でのインストール](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html)」、またはお使いのプラットフォーム用の他のオンラインリソースを参照してください。

------
#### [ 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. ファイルを保存したディレクトリから、次のコマンドを実行します。

   ```
   sudo bash armv7l.sh
   ```
**注記**  
Raspberry Pi では、`pip` を使用して機械学習の依存関係をインストールすると、メモリを大量に消費し、デバイスがメモリ不足になって応答しなくなる可能性があります。回避策として、スワップサイズを一時的に増やすことができます。  
`/etc/dphys-swapfile` で、`CONF_SWAPSIZE` 変数の値を増やし、次のコマンドを実行して `dphys-swapfile` を再起動します。  

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

------

## ログ記録とトラブルシューティング
<a name="image-classification-connector-logging"></a>

グループ設定に応じて、イベントログとエラーログは、CloudWatch ログ、ローカルファイルシステム、またはその両方に書き込まれます。このコネクタのログにはプレフィックス `LocalInferenceServiceName` が使用されます。コネクタが予期しない動作を示した場合は、コネクタのログを確認します。このログには、通常、ML ライブラリの依存関係の不足やコネクタの起動失敗の原因など、デバッグに役立つ情報が含まれています。

 AWS IoT Greengrass グループがローカルログを書き込むように設定されている場合、コネクタはログファイルを に書き込みます`greengrass-root/ggc/var/log/user/region/aws/`。Greengrass のログ記録の詳細については、「[AWS IoT Greengrass ログによるモニタリング](greengrass-logs-overview.md)」を参照してください。

ML イメージ分類コネクタの問題のトラブルシューティングには、以下の情報が役立ちます。

**必須のシステムライブラリ**

以下の各タブは、ML イメージ分類コネクタごとに必要なシステムライブラリを一覧表示します。

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


| ライブラリ | 最小バージョン | 
| --- | --- | 
| ld-linux-aarch64.so.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | 該当なし | 
| libcudart.so.9.0 | 該当なし | 
| libcudnn.so.7 | 該当なし | 
| libcufft.so.9.0 | 該当なし | 
| libcurand.so.9.0 | 該当なし | 
| libcusolver.so.9.0 | 該当なし | 
| 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 ]


| ライブラリ | 最小バージョン | 
| --- | --- | 
| 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 ]


| ライブラリ | 最小バージョン | 
| --- | --- | 
| 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 | 

------

**問題**


| 症状 | ソリューション | 
| --- | --- | 
|  Raspberry Pi で、次のエラーメッセージがログに記録される。カメラは使用していない。`Failed to initialize libdc1394`  |  次のコマンドを実行してドライバーを無効にします。 <pre>sudo ln /dev/null /dev/raw1394</pre> このオペレーションは一時的なものであり、シンボリックリンクは再起動後に消えます。再起動時にリンクを自動的に作成する方法については、OS ディストリビューションのマニュアルを参照してください。  | 

## ライセンス
<a name="image-classification-connector-license"></a>

ML イメージ分類コネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。<a name="boto-3-licenses"></a>
+ [AWS SDK for Python (Boto3)](https://pypi.org/project/boto3/)/Apache License 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF ライセンス
+ [docutils](https://pypi.org/project/docutils/)/BSD ライセンス、GNU 一般パブリックライセンス (GPL)、Python Software Foundation ライセンス、パブリックドメイン
+ [jmespath](https://pypi.org/project/jmespath/)/MIT ライセンス
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT ライセンス
+ [Deep Neural Network Library (DNNL)](https://github.com/intel/mkl-dnn)/Apache License 2.0
+ [OpenMP\$1 ランタイムライブラリ](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)/「[Intel OpenMP ランタイムライブラリのライセンス](#openmp-license)」を参照してください。
+ [mxnet](https://pypi.org/project/mxnet/)/Apache License 2.0
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Intel OpenMP ランタイムライブラリのライセンス**。Intel® OpenMP\$1 ランタイムはデュアルライセンスで、Intel® Parallel Studio XE Suite 製品の一部としての商用 (COM) ライセンスと、BSD オープンソース (OSS) ライセンスがあります。

このコネクタは、[Greengrass Core ソフトウェアライセンス契約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)に従ってリリースされます。

## 変更ログ
<a name="image-classification-connector-changelog"></a>

次の表に、コネクタの各バージョンにおける変更点を示します。


| バージョン | 変更 | 
| --- | --- | 
| 2 | モデル入力データのアップロード、MQTT トピックへの予測の発行、Amazon CloudWatch へのメトリクスの発行のために [ML フィードバックコネクタ](ml-feedback-connector.md)の使用をサポートする `MLFeedbackConnectorConfigId` パラメータが追加されました。  | 
| 1 | 初回リリース。  | 

<a name="one-conn-version"></a>Greengrass グループには、一度に 1 つのバージョンのコネクタしか含めることができません。コネクタのバージョンのアップグレードについては、「[コネクタのバージョンのアップグレード](connectors.md#upgrade-connector-versions)」を参照してください。

## 関連情報
<a name="image-classification-connector-see-also"></a>
+ [Greengrass コネクタを使用したサービスおよびプロトコルとの統合](connectors.md)
+ [Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)
+ [Greengrass コネクタの開始方法 (CLI)](connectors-cli.md)
+ [機械学習の推論を実行する](ml-inference.md)
+ *Amazon SageMaker AI デベロッパーガイド*」の[「イメージ分類アルゴリズム](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html)」