Konektor Klasifikasi Citra ML - AWS IoT Greengrass

AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.

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

Konektor Klasifikasi Citra ML

Awas

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 1kebijakan pemeliharaan.

Konektor Klasifikasi Citra ML menyediakan layanan inferensi machine learning (ML) yang berjalan dalam AWS IoT Greengrass core. Layanan inferensi lokal ini melakukan klasifikasi gambar menggunakan model yang dilatih oleh algoritma klasifikasi SageMaker gambar.

Fungsi Lambda yang ditetapkan pengguna menggunakan Machine Learning SDK AWS IoT Greengrass 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 beberapa platform.

Version 2

Konektor

Deskripsi dan ARN

Klasifikasi Citra ML Aarch64 JTX2

Layanan inferensi klasifikasi citra untuk NVIDIA Jetson TX2. Mendukung akselerasi GPU.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2

Klasifikasi Citra ML x86_64

Layanan inferensi klasifikasi citra untuk platform x86_64.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2

Klasifikasi Citra ML ARMv7

Layanan inferensi klasifikasi citra untuk platform ARMv7.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2

Version 1

Konektor

Deskripsi dan ARN

Klasifikasi Citra ML Aarch64 JTX2

Layanan inferensi klasifikasi citra untuk NVIDIA Jetson TX2. Mendukung akselerasi GPU.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1

Klasifikasi Citra ML x86_64

Layanan inferensi klasifikasi citra untuk platform x86_64.

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.

Persyaratan

Konektor-konektor ini memiliki persyaratan sebagai berikut:

Version 2
  • AWS IoT Greengrass perangkat lunak Core v1.9.3 atau yang lebih baru.

  • Python versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

    catatan

    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.

  • Ketergantungan untuk kerangka Apache MXNet diinstal pada perangkat core. Untuk informasi selengkapnya, lihat Menginstal dependensi MXNet pada AWS IoT Greengrass core.

  • Sumber daya ML dalam grup Greengrass yang mereferensikan sumber model. SageMaker Model ini harus dilatih oleh algoritma klasifikasi SageMaker gambar. Untuk informasi selengkapnya, lihat Algoritma klasifikasi gambar di Panduan SageMaker Pengembang Amazon.

  • Konektor Umpan balik ML 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.

  • Peran grup Greengrass dikonfigurasi untuk mengizinkan tindakan sagemaker:DescribeTrainingJob pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeTrainingJob" ], "Resource": "arn:aws:sagemaker:region:account-id:training-job:training-job-name" } ] }

    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) atau Mengelola peran grup Greengrass (CLI).

    Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard *). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.

  • AWS IoT Greengrass Machine Learning SDK v1.1.0 diperlukan untuk berinteraksi dengan konektor ini.

Version 1
  • AWS IoT Greengrass perangkat lunak Core v1.7 atau yang lebih baru.

  • Python versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

  • Ketergantungan untuk kerangka Apache MXNet diinstal pada perangkat core. Untuk informasi selengkapnya, lihat Menginstal dependensi MXNet pada AWS IoT Greengrass core.

  • Sumber daya ML dalam grup Greengrass yang mereferensikan sumber model. SageMaker Model ini harus dilatih oleh algoritma klasifikasi SageMaker gambar. Untuk informasi selengkapnya, lihat Algoritma klasifikasi gambar di Panduan SageMaker Pengembang Amazon.

  • Peran grup Greengrass dikonfigurasi untuk mengizinkan tindakan sagemaker:DescribeTrainingJob pada tugas pelatihan target, seperti yang ditunjukkan dalam contoh kebijakan IAM berikut.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeTrainingJob" ], "Resource": "arn:aws:sagemaker:region:account-id:training-job:training-job-name" } ] }

    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) atau Mengelola peran grup Greengrass (CLI).

    Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard *). Jika Anda mengubah target pekerjaan pelatihan dalam masa depan, pastikan untuk memperbarui peran grup.

  • AWS IoT Greengrass Machine Learning SDK v1.0.0 atau yang lebih baru diperlukan untuk berinteraksi dengan konektor ini.

Parameter Konektor

Konektor-konektor ini menyediakan parameter berikut.

Version 2
MLModelDestinationPath

Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.

catatan

Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.

Nama tampilan pada konsol AWS IoT tersebut: Model jalur tujuan

Wajib: true

Jenis: string

Pola yang valid: .+

MLModelResourceId

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

ARN dari pekerjaan SageMaker pelatihan yang mewakili sumber SageMaker model. Model harus dilatih oleh algoritma klasifikasi SageMaker gambar.

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

Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan melewatkan nama ke fungsi invoke_inference_service dari AWS IoT Greengrass Machine Learning SDK. Sebagai contoh, lihat Contoh Penggunaan.

Nama tampilan pada konsol AWS IoT tersebut: Nama layanan inferensi lokal

Wajib: true

Jenis: string

Pola yang valid: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}

LocalInferenceServiceTimeoutSeconds

Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.

Nama tampilan pada konsol AWS IoT tersebut: Timeout (detik)

Wajib: true

Jenis: string

Pola yang valid: [1-9][0-9]*

LocalInferenceServiceMemoryLimitKB

Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.

Nama tampilan pada konsol AWS IoT tersebut: Batas memori (KB)

Wajib: true

Jenis: string

Pola yang valid: [1-9][0-9]*

GPUAcceleration

CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk konektor Klasifikasi Citra ML Aarch64 JTX2.

Nama tampilan pada konsol AWS IoT tersebut: Akselerasi GPU

Wajib: true

Jenis: string

Nilai yang valid: CPU or GPU

MLFeedbackConnectorConfigId

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.

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 pada konsol AWS IoT tersebut: ID konfigurasi konektor umpan balik ML

Wajib: false

Jenis: string

Pola yang valid: ^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$

Version 1
MLModelDestinationPath

Jalur lokal absolut dari sumber daya ML dalam lingkungan Lambda. Ini adalah jalur tujuan yang ditentukan untuk sumber daya ML.

catatan

Jika Anda membuat sumber daya ML dalam konsol, ini adalah jalur lokal.

Nama tampilan pada konsol AWS IoT tersebut: Model jalur tujuan

Wajib: true

Jenis: string

Pola yang valid: .+

MLModelResourceId

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

ARN dari pekerjaan SageMaker pelatihan yang mewakili sumber SageMaker model. Model harus dilatih oleh algoritma klasifikasi SageMaker gambar.

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

Nama untuk layanan inferensi lokal. Fungsi Lambda yang ditentukan pengguna memanggil layanan dengan melewatkan nama ke fungsi invoke_inference_service dari AWS IoT Greengrass Machine Learning SDK. Sebagai contoh, lihat Contoh Penggunaan.

Nama tampilan pada konsol AWS IoT tersebut: Nama layanan inferensi lokal

Wajib: true

Jenis: string

Pola yang valid: [a-zA-Z0-9][a-zA-Z0-9-]{1,62}

LocalInferenceServiceTimeoutSeconds

Jumlah waktu (dalam detik) sebelum permintaan kesimpulan dihentikan. Nilai minimum adalah 1.

Nama tampilan pada konsol AWS IoT tersebut: Timeout (detik)

Wajib: true

Jenis: string

Pola yang valid: [1-9][0-9]*

LocalInferenceServiceMemoryLimitKB

Jumlah memori (dalam KB) bahwa layanan memiliki akses ke. Nilai minimum adalah 1.

Nama tampilan pada konsol AWS IoT tersebut: Batas memori (KB)

Wajib: true

Jenis: string

Pola yang valid: [1-9][0-9]*

GPUAcceleration

CPU atau GPU (dipercepat) konteks komputasi. Properti ini hanya berlaku untuk konektor Klasifikasi Citra ML Aarch64 JTX2.

Nama tampilan pada konsol AWS IoT tersebut: Akselerasi GPU

Wajib: true

Jenis: string

Nilai yang valid: CPU or GPU

Buat Contoh Konektor (AWS CLI)

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 menciptakan sebuah permintaan dari konektor Klasifikasi Citra ML Aarch64 JTX2, 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 ini.

Di konsol AWS IoT Greengrass tersebut, Anda dapat menambahkan konektor dari halaman grup Konektor ini. Untuk informasi lebih lanjut, lihat Memulai dengan konektor Greengrass (konsol).

Data input

Konektor ini menerima file gambar sebagai input. Input file gambar harus dalam jpeg atau png format. Untuk informasi selengkapnya, lihat Contoh Penggunaan.

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

Data output

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

Contoh fungsi Lambda berikut menggunakan Machine Learning SDK AWS IoT Greengrass untuk berinteraksi dengan konektor Klasifikasi Citra ML.

catatan

Anda dapat mengunduh SDK dari halaman unduh AWS IoT Greengrass Machine Learning SDK 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

Fungsi invoke_inference_service dalam Machine Learning SDK AWS IoT Greengrass 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 dependensi MXNet pada AWS IoT Greengrass core

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

catatan

Konektor ini dibundel dengan perpustakaan MXNet yang telah dikompilasi sebelumnya, sehingga Anda tidak perlu menginstal kerangka kerja MXNet pada perangkat core.

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 dokumentasi MXNet untuk konfigurasi Anda.

Sebelum menginstal dependensi MXNet, pastikan bahwa sistem perpustakaan yang diperlukan (dengan versi minimum yang ditentukan) ada pada perangkat.

NVIDIA Jetson TX2
  1. Instal CUDA Toolkit 9.0 dan cuDNN 7.0. Anda bisa mengikuti petunjuk dalam Mengatur perangkat lain dalam tutorial Memulai Dengan.

  2. Aktifkan repositori universal sehingga konektor dapat menginstal perangkat lunak terbuka yang dikelola komunitas. Untuk informasi lebih lanjut, lihat Repositori/Ubuntu dalam dokumentasi Ubuntu.

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

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

    Python 3.7Python 2.7
    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

    Jika OpenCV tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat Instalasi dalam Linux 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.'
  4. Dari direktori tempat Anda menyimpan file, jalankan perintah berikut:

    sudo nvidiajtx2.sh
x86_64 (Ubuntu or Amazon Linux)
  1. Simpan salinan skrip penginstalan berikut ke file bernama x86_64.sh pada perangkat core.

    Python 3.7Python 2.7
    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

    Jika OpenCV tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat Instalasi dalam Linux 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.'
  2. 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.7Python 2.7
    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

    Jika OpenCV tidak berhasil menginstal menggunakan skrip ini, Anda dapat mencoba membangun dari sumber. Untuk informasi lebih lanjut, lihat Instalasi dalam Linux 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.'
  2. 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

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 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.

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.1GLIBC_2.17
libc.so.6GLIBC_2.17
libcublas.so.9.0tidak berlaku
libcudart.so.9.0tidak berlaku
libcudnn.so.7tidak berlaku
libcufft.so.9.0tidak berlaku
libcurand.so.9.0tidak berlaku
libcusolver.so.9.0tidak berlaku
libgcc_s.so.1GCC_4.2.0
libgomp.so.1GOMP_4.0, OMP_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.17
librt.so.1GLIBC_2.17
libstdc++.so.6GLIBCXX_3.4.21, CXXABI_1.3.8
ML Image Classification x86_64
Perpustakaan Versi Minimum
ld-linux-x86-64.jadi.2GCC_4.0.0
libc.so.6GLIBC_2.4
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.2.5
librt.so.1GLIBC_2.2.5
libstdc++.so.6CXXABI_1.3.8, GLIBCXX_3.4.21
ML Image Classification Armv7
Perpustakaan Versi Minimum
ld-linux-armhf.jadi.3GLIBC_2.4
libc.so.6GLIBC_2.7
libgcc_s.so.1GCC_4.0.0
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.4
libpthread.so.0GLIBC_2.4
librt.so.1GLIBC_2.4
libstdc++.so.6CXXABI_1.3.8, CXXABI_ARM_1.3.3, GLIBCXX_3.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:

sudo ln /dev/null /dev/raw1394

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

Konektor Klasifikasi Citra ML mencakup perangkat lunak/lisensi pihak ketiga berikut:

Lisensi Perpustakaan Waktu Aktif Intel OpenMP. IntelĀ® OpenMP* 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.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

2

Menambahkan MLFeedbackConnectorConfigId parameter untuk mendukung penggunaan konektor Umpan Balik ML untuk mengunggah data input model, mempublikasikan prediksi ke topik MQTT, dan menerbitkan metrik ke Amazon. CloudWatch

1

Pelepasan .

Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.

Lihat juga