

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi [Migrasi dari AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konektor Klasifikasi Citra ML
<a name="image-classification-connector"></a>

**Awas**  <a name="connectors-extended-life-phase-warning"></a>
Konektor ini telah pindah ke *fase umur yang diperpanjang*, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat [AWS IoT Greengrass Version 1 kebijakan pemeliharaan](maintenance-policy.md).

[Konektor](connectors.md) Klasifikasi Gambar ML menyediakan layanan inferensi pembelajaran mesin (ML) yang berjalan pada AWS IoT Greengrass inti. Layanan inferensi lokal ini melakukan klasifikasi gambar menggunakan model yang dilatih oleh algoritma klasifikasi gambar SageMaker AI.

Fungsi Lambda yang ditentukan pengguna menggunakan Machine Learning AWS IoT Greengrass SDK untuk mengirimkan permintaan inferensi ke layanan inferensi lokal. Layanan ini berjalan inferensi lokal dan mengembalikan probabilitas bahwa gambar input milik kategori tertentu.

AWS IoT Greengrass menyediakan versi berikut dari konektor ini, yang tersedia untuk berbagai platform.

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


| Konektor | Deskripsi dan ARN | 
| --- | --- | 
| Klasifikasi Gambar ML Aarch64 JTX2 |  Layanan inferensi klasifikasi gambar untuk NVIDIA TX2 Jetson. Mendukung akselerasi GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2` | 
| Klasifikasi Citra ML x86\$164 |  Layanan inferensi klasifikasi citra untuk platform x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2` | 
| Klasifikasi Gambar ML ARMv7 |  Layanan inferensi klasifikasi gambar untuk ARMv7 platform. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2` | 

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


| Konektor | Deskripsi dan ARN | 
| --- | --- | 
| Klasifikasi Gambar ML Aarch64 JTX2 |  Layanan inferensi klasifikasi gambar untuk NVIDIA TX2 Jetson. Mendukung akselerasi GPU. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1` | 
| Klasifikasi Citra ML x86\$164 |  Layanan inferensi klasifikasi citra untuk platform x86\$164. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1` | 
| Klasifikasi Citra ML Armv7 |  Layanan inferensi klasifikasi citra untuk platform Armv7. **ARN:** `arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1` | 

------

Untuk informasi tentang perubahan versi, lihat [Changelog](#image-classification-connector-changelog).

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

Konektor-konektor ini memiliki persyaratan sebagai berikut:

------
#### [ Version 2 ]
+ AWS IoT Greengrass Perangkat Lunak Inti v1.9.3 atau yang lebih baru.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
**catatan**  <a name="use-runtime-py3.8"></a>
Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.
+ <a name="req-image-classification-framework"></a>Dependensi untuk MXNet kerangka Apache yang diinstal pada perangkat inti. Untuk informasi selengkapnya, lihat [Menginstal MXNet dependensi pada inti AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>[Sumber daya ML](ml-inference.md#ml-resources) dalam grup Greengrass yang mereferensikan sumber model AI. SageMaker Model ini harus dilatih oleh algoritma klasifikasi gambar SageMaker AI. Untuk informasi selengkapnya, lihat [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) di *Panduan Pengembang Amazon SageMaker AI*.
+ <a name="req-image-classification-feedback"></a>[Konektor Umpan balik ML](ml-feedback-connector.md) ditambahkan ke grup Greengrass dan dikonfigurasi. Hal ini diperlukan hanya jika Anda ingin menggunakan konektor untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.
+ <a name="req-image-classification-policy"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan tindakan `sagemaker:DescribeTrainingJob` pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ 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>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 diperlukan untuk berinteraksi dengan konektor ini.

------
#### [ Version 1 ]
+ AWS IoT Greengrass Perangkat Lunak Inti v1.7 atau yang lebih baru.
+ [Python](https://www.python.org/) versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.
+ <a name="req-image-classification-framework"></a>Dependensi untuk MXNet kerangka Apache yang diinstal pada perangkat inti. Untuk informasi selengkapnya, lihat [Menginstal MXNet dependensi pada inti AWS IoT Greengrass](#image-classification-connector-config).
+ <a name="req-image-classification-resource"></a>[Sumber daya ML](ml-inference.md#ml-resources) dalam grup Greengrass yang mereferensikan sumber model AI. SageMaker Model ini harus dilatih oleh algoritma klasifikasi gambar SageMaker AI. Untuk informasi selengkapnya, lihat [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) di *Panduan Pengembang Amazon SageMaker AI*.
+ <a name="req-image-classification-policy"></a>[Peran grup Greengrass](group-role.md) dikonfigurasi untuk mengizinkan tindakan `sagemaker:DescribeTrainingJob` pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

------
#### [ 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>Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat [Mengelola peran grup Greengrass (konsol)](group-role.md#manage-group-role-console) atau [Mengelola peran grup Greengrass (CLI)](group-role.md#manage-group-role-cli).

  Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard \$1). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.
+ [AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.0.0 atau yang lebih baru diperlukan untuk berinteraksi dengan konektor ini.

------

## Parameter Konektor
<a name="image-classification-connector-param"></a>

Konektor-konektor ini menyediakan parameter berikut.

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.  
Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.
Nama tampilan di AWS IoT konsol: **Jalur tujuan model**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID dari sumber daya ML yang mereferensikan model sumber.  
Nama tampilan di AWS IoT konsol: sumber daya **ARN SageMaker pekerjaan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
ARN dari pekerjaan pelatihan SageMaker AI yang mewakili sumber model SageMaker AI. Model harus dilatih oleh algoritma klasifikasi gambar SageMaker AI.  
Nama tampilan di AWS IoT konsol: **SageMaker pekerjaan ARN**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^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>
Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan meneruskan nama ke fungsi Machine Learning `invoke_inference_service` SDK. AWS IoT Greengrass Sebagai contoh, lihat [Contoh Penggunaan](#image-classification-connector-usage).  
Nama tampilan di AWS IoT konsol: Nama **layanan inferensi lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Timeout (second)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Batas memori (KB)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk JTX2 konektor ML Image Classification Aarch64.  
Nama tampilan di AWS IoT konsol: Akselerasi **GPU**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `CPU` or `GPU`

`MLFeedbackConnectorConfigId`  <a name="param-image-classification-feedbackconfigid"></a>
ID dari konfigurasi umpan balik untuk digunakan untuk mengunggah model data input. Ini harus sesuai dengan ID dari konfigurasi umpan balik yang ditetapkan untuk [Konektor Umpan balik ML](ml-feedback-connector.md).  
Parameter ini diperlukan hanya jika Anda ingin menggunakan konektor Umpan balik ML untuk mengunggah model data input dan menerbitkan prediksi untuk topik MQTT.  
Nama tampilan di AWS IoT konsol: **ID konfigurasi konektor Umpan Balik**  
Wajib: `false`  
Jenis: `string`  
Pola yang valid: `^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`

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

`MLModelDestinationPath`  <a name="param-image-classification-mdlpath"></a>
Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.  
Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.
Nama tampilan di AWS IoT konsol: **Jalur tujuan model**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `.+`

`MLModelResourceId`  <a name="param-image-classification-mdlresourceid"></a>
ID dari sumber daya ML yang mereferensikan model sumber.  
Nama tampilan di AWS IoT konsol: sumber daya **ARN SageMaker pekerjaan**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9:_-]+`

`MLModelSageMakerJobArn`  <a name="param-image-classification-mdljobarn"></a>
ARN dari pekerjaan pelatihan SageMaker AI yang mewakili sumber model SageMaker AI. Model harus dilatih oleh algoritma klasifikasi gambar SageMaker AI.  
Nama tampilan di AWS IoT konsol: **SageMaker pekerjaan ARN**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `^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>
Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan meneruskan nama ke fungsi Machine Learning `invoke_inference_service` SDK. AWS IoT Greengrass Sebagai contoh, lihat [Contoh Penggunaan](#image-classification-connector-usage).  
Nama tampilan di AWS IoT konsol: Nama **layanan inferensi lokal**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[a-zA-Z0-9][a-zA-Z0-9-]{1,62}`

`LocalInferenceServiceTimeoutSeconds`  <a name="param-image-classification-svctimeout"></a>
Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Timeout (second)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`LocalInferenceServiceMemoryLimitKB`  <a name="param-image-classification-svcmemorylimit"></a>
Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.  
Nama tampilan di AWS IoT konsol: **Batas memori (KB)**  
Wajib: `true`  
Jenis: `string`  
Pola yang valid: `[1-9][0-9]*`

`GPUAcceleration`  <a name="param-image-classification-gpuacceleration"></a>
CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk JTX2 konektor ML Image Classification Aarch64.  
Nama tampilan di AWS IoT konsol: Akselerasi **GPU**  
Wajib: `true`  
Jenis: `string`  
Nilai yang valid: `CPU` or `GPU`

------

### Buat Contoh Konektor (AWS CLI)
<a name="image-classification-connector-create"></a>

Perintah CLI berikut membuat `ConnectorDefinition` dengan versi awal yang berisi konektor Klasifikasi Citra ML.

**Contoh: Instans CPU**  
Contoh ini membuat sebuah instans dari konektor Armv7l Klasifikasi Citra 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"
            }
        }
    ]
}'
```

**Contoh: Instans GPU**  
Contoh ini membuat instance JTX2 konektor Aarch64 Klasifikasi Gambar ML, yang mendukung akselerasi GPU pada papan 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"
            }
        }
    ]
}'
```

**catatan**  
Fungsi Lambda dalam konektor-konektor mempunyai siklus hidup yang [berumur panjang](lambda-functions.md#lambda-lifecycle) ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman **Konektor** grup. Untuk informasi selengkapnya, lihat [Memulai dengan konektor Greengrass (konsol)](connectors-console.md).

## Data input
<a name="image-classification-connector-data-input"></a>

 Konektor ini menerima file gambar sebagai input. Input file gambar harus dalam `jpeg` atau `png` format. Untuk informasi selengkapnya, lihat [Contoh Penggunaan](#image-classification-connector-usage). 

Konektor-konektor ini tidak menerima pesan MQTT sebagai data input.

## Data output
<a name="image-classification-connector-data-output"></a>

Konektor ini mengembalikan prediksi diformat untuk objek diidentifikasi dalam gambar input:

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

Prediksi berisi daftar nilai yang sesuai dengan kategori yang digunakan dalam dataset pelatihan selama pelatihan model. Setiap nilai mewakili probabilitas bahwa gambar jatuh di bawah kategori yang sesuai. Kategori dengan probabilitas tertinggi adalah prediksi dominan.

Konektor ini tidak menerbitkan pesan MQTT sebagai data output.

## Contoh Penggunaan
<a name="image-classification-connector-usage"></a>

Contoh fungsi Lambda berikut menggunakan [Machine Learning SDK AWS IoT Greengrass](lambda-functions.md#lambda-sdks-ml) untuk berinteraksi dengan konektor Klasifikasi Citra ML.

**catatan**  
 Anda dapat mengunduh SDK dari halaman unduh [AWS IoT Greengrass Machine Learning SDK](what-is-gg.md#gg-ml-sdk-download) ini.

Contoh menginisialisasi klien SDK dan serentak menghubungi fungsi SDK `invoke_inference_service` untuk memanggil layanan inferensi lokal. Ini melewati jenis algoritme, nama layanan, jenis citra, dan konten citra. Kemudian, contoh mengurai respon layanan untuk mendapatkan hasil probabilitas (prediksi).

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

------

`invoke_inference_service`Fungsi dalam AWS IoT Greengrass Machine Learning SDK menerima argumen berikut.


| Pendapat | Deskripsi | 
| --- | --- | 
| `AlgoType` | Nama jenis algoritme yang digunakan untuk inferensi. Saat ini, hanya `image-classification` didukung. Wajib: `true` Jenis: `string` Nilai yang valid: `image-classification` | 
| `ServiceName` | Nama layanan inferensi lokal. Gunakan nama yang Anda tentukan untuk parameter `LocalInferenceServiceName` ketika Anda mengonfigurasi konektor. Wajib: `true` Jenis: `string` | 
| `ContentType` | Jenis mime dari gambar input. Wajib: `true` Jenis: `string` Nilai yang valid: `image/jpeg, image/png` | 
| `Body` | Konten dari file citra input. Wajib: `true` Jenis: `binary` | 

## Menginstal MXNet dependensi pada inti AWS IoT Greengrass
<a name="image-classification-connector-config"></a>

Untuk menggunakan konektor Klasifikasi Gambar ML, Anda harus menginstal dependensi untuk MXNet kerangka Apache pada perangkat inti. Konektor menggunakan kerangka kerja untuk melayani model ML.

**catatan**  
Konektor ini dibundel dengan MXNet pustaka yang telah dikompilasi sebelumnya, jadi Anda tidak perlu menginstal MXNet kerangka kerja pada perangkat inti. 

AWS IoT Greengrass menyediakan skrip untuk menginstal dependensi untuk platform dan perangkat umum berikut (atau untuk digunakan sebagai referensi untuk menginstalnya). Jika Anda menggunakan platform atau perangkat lain, lihat [MXNet dokumentasi](https://mxnet.apache.org/) untuk konfigurasi Anda.

Sebelum menginstal MXNet dependensi, pastikan [pustaka sistem](#image-classification-connector-logging) yang diperlukan (dengan versi minimum yang ditentukan) ada di perangkat.

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

1. Instal CUDA Toolkit 9.0 dan cuDNN 7.0. Anda bisa mengikuti petunjuk dalam [Mengatur perangkat lain](setup-filter.other.md) dalam tutorial Memulai Dengan.

1. Aktifkan repositori universal sehingga konektor dapat menginstal perangkat lunak terbuka yang dikelola komunitas. Untuk informasi lebih lanjut, lihat [ Repositori/Ubuntu](https://help.ubuntu.com/community/Repositories/Ubuntu) dalam dokumentasi Ubuntu.

   1. Buka file `/etc/apt/sources.list` ini.

   1. Pastikan bahwa baris berikut tidak berkomentar.

      ```
      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. Simpan salinan skrip penginstalan berikut ke file bernama `nvidiajtx2.sh` pada perangkat core.

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

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ 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. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo nvidiajtx2.sh
   ```

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

1. Simpan salinan skrip penginstalan berikut ke file bernama `x86_64.sh` pada perangkat core.

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

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ 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. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo x86_64.sh
   ```

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

1. Simpan salinan skrip penginstalan berikut ke file bernama `armv7l.sh` pada perangkat core.

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

**catatan**  
<a name="opencv-build-from-source"></a>Jika [OpenCV](https://github.com/opencv/opencv) tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat [ Instalasi dalam Linux](https://docs.opencv.org/4.1.0/d7/d9f/tutorial_linux_install.html) dalam dokumentasi OpenCV, atau lihat sumber daya online lainnya untuk platform Anda.

------
#### [ 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. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

   ```
   sudo bash armv7l.sh
   ```
**catatan**  
Pada Raspberry Pi, menggunakan `pip` untuk menginstal dependensi machine learning adalah operasi intensif memori yang dapat menyebabkan perangkat kehabisan memori dan menjadi tidak responsif. Sebagai solusi, Anda dapat sementara meningkatkan ukuran swap:  
Di `/etc/dphys-swapfile`, tingkatkan nilai variabel `CONF_SWAPSIZE` dan kemudian jalankan perintah berikut untuk restart `dphys-swapfile`.  

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

------

## Pencatatan dan pemecahan masalah
<a name="image-classification-connector-logging"></a>

Bergantung pada pengaturan grup Anda, log peristiwa dan kesalahan ditulis ke CloudWatch Log, sistem file lokal, atau keduanya. Catatan dari konektor ini menggunakan prefix `LocalInferenceServiceName`. Jika konektor berperilaku tidak terduga, periksa log konektor. Ini biasanya berisi informasi debugging yang berguna, seperti dependensi perpustakaan ML yang hilang atau penyebab kegagalan startup konektor.

Jika AWS IoT Greengrass grup dikonfigurasi untuk menulis log lokal, konektor akan menulis file log ke`greengrass-root/ggc/var/log/user/region/aws/`. Untuk informasi lebih lanjut tentang Greengrass pencatatan, lihat [Pemantauan dengan AWS IoT Greengrass log](greengrass-logs-overview.md).

Gunakan informasi berikut untuk membantu memecahkan masalah dengan konektor Klasifikasi Citra ML.

**Pustaka sistem yang diperlukan**

Tab berikut mencantumkan sistem perpustakaan yang diperlukan untuk setiap konektor Klasifikasi Citra ML.

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


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-aarch64.jadi.1 | GLIBC\$12.17 | 
| libc.so.6 | GLIBC\$12.17 | 
| libcublas.so.9.0 | tidak berlaku | 
| libcudart.so.9.0 | tidak berlaku | 
| libcudnn.so.7 | tidak berlaku | 
| libcufft.so.9.0 | tidak berlaku | 
| libcurand.so.9.0 | tidak berlaku | 
| libcusolver.so.9.0 | tidak berlaku | 
| 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 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-x86-64.jadi.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 ]


| Perpustakaan | Versi Minimum | 
| --- | --- | 
| ld-linux-armhf.jadi.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 | 

------

**Masalah**


| Gejala | Solusi | 
| --- | --- | 
|  Pada Raspberry Pi, pesan eror berikut dicatat dan Anda tidak menggunakan kamera: `Failed to initialize libdc1394`   |  Jalankan perintah berikut untuk menonaktifkan driver: <pre>sudo ln /dev/null /dev/raw1394</pre> Operasi ini bersifat sementara dan tautan simbolis akan hilang setelah reboot. Konsultasikan manual distribusi OS Anda untuk mempelajari cara membuat tautan secara otomatis ketika reboot.  | 

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

Konektor Klasifikasi Citra ML mencakup perangkat lunak/lisensi pihak ketiga berikut:<a name="boto-3-licenses"></a>
+ [AWS SDK untuk Python (Boto3)](https://pypi.org/project/boto3/)/Lisensi 2.0 Apache
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF License
+ [docutils](https://pypi.org/project/docutils/)/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik
+ [jmespath](https://pypi.org/project/jmespath/)/MIT License
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Lisensi MIT
+ [Deep Neural Network Library (DNNL)](https://github.com/intel/mkl-dnn)/Lisensi 2.0 Apache
+ [OpenMP\$1 Perpustakaan Waktu Aktif](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)/See [Lisensi Intel OpenMP Perpustakaan Waktu Aktif](#openmp-license).
+ [mxnet](https://pypi.org/project/mxnet/)/Lisensi 2.0 Apache
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

**Lisensi Perpustakaan Waktu Aktif Intel OpenMP**. Intel® OpenMP\$1 runtume memiliki lisensi ganda, dengan lisensi komersial (COM) sebagai bagian dari produk Intel® Parallel Studio XE Suite, dan lisensi BSD open source (OSS).

Konektor ini dirilis di bawah [Perjanjian Lisensi Perangkat lunak core Greengrass](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

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

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.


| Versi | Perubahan | 
| --- | --- | 
| 2 | Menambahkan `MLFeedbackConnectorConfigId` parameter untuk mendukung penggunaan [konektor Umpan Balik ML](ml-feedback-connector.md) untuk mengunggah data input model, mempublikasikan prediksi ke topik MQTT, dan mempublikasikan metrik ke Amazon. CloudWatch  | 
| 1 | Pelepasan awal.  | 

<a name="one-conn-version"></a>Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat [Versi upgrade konektor](connectors.md#upgrade-connector-versions).

## Lihat juga
<a name="image-classification-connector-see-also"></a>
+ [Integrasikan dengan layanan dan protokol menggunakan konektor Greengrass](connectors.md)
+ [Memulai dengan konektor Greengrass (konsol)](connectors-console.md)
+ [Memulai dengan konektor Greengrass (CLI)](connectors-cli.md)
+ [Lakukan inferensi machine learning](ml-inference.md)
+ [Algoritma klasifikasi gambar](https://docs.aws.amazon.com/sagemaker/latest/dg/image-classification.html) dalam *Panduan Pengembang Amazon SageMaker AI*