Bagikan melalui


Tutorial: Melakukan klasifikasi gambar di tepi dengan Layanan Visi Kustom

Berlaku untuk: Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Azure IoT Edge dapat membuat solusi IoT Anda lebih efisien dengan memindahkan beban kerja keluar dari cloud dan ke tepi. Kemampuan ini meminjamkan dirinya dengan baik untuk layanan yang memproses data dalam jumlah besar, seperti model visi komputer. Azure AI Custom Vision memungkinkan Anda membangun pengklasifikasi gambar kustom dan menyebarkannya ke perangkat sebagai kontainer. Bersama-sama, kedua layanan ini memungkinkan Anda menemukan insight dari gambar atau streaming video tanpa harus mentransfer semua data dari situs terlebih dahulu. Visi Kustom menyediakan pengklasifikasi yang membandingkan gambar dengan model terlatih untuk menghasilkan insight.

Misalnya, Visi Kustom pada perangkat Azure IoT Edge dapat menentukan apakah jalan raya mengalami lalu lintas yang lebih tinggi atau lebih rendah dari biasanya, atau apakah garasi parkir memiliki banyak tempat parkir yang tersedia. insight ini dapat dibagikan dengan layanan lain untuk mengambil tindakan.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membangun pengklasifikasi gambar dengan Visi Kustom.
  • Mengembangkan modul Azure IoT Edge yang meminta server web Visi Kustom di perangkat Anda.
  • mengirim hasil pengklasifikasi gambar ke Azure IoT Hub.

Diagram - Tutorial arsitektur, tahapan dan penyebaran pengklasifikasi

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

Tip

Tutorial ini adalah versi yang disederhanakan dari Visi Kustom dan Azure IoT Edge pada proyek sampel Raspberry Pi 3. Tutorial ini dirancang untuk berjalan pada komputer virtual cloud dan menggunakan gambar statis untuk melatih dan menguji pengklasifikasi gambar, yang berguna bagi seseorang yang baru saja mulai mengevaluasi Visi Kustom di Azure IoT Edge. Proyek sampel menggunakan perangkat keras fisik dan mengatur umpan kamera langsung untuk melatih dan menguji pengklasifikasi gambar, yang berguna bagi seseorang yang ingin mencoba skenario kehidupan nyata yang lebih rinci.

Membangun pengklasifikasi gambar dengan Visi Kustom

Untuk membangun pengklasifikasi gambar, Anda perlu membuat proyek Visi Kustom dan menyediakan gambar pelatihan. Untuk informasi selengkapnya tentang langkah-langkah yang Anda ambil di bagian ini, lihat Cara membuat pengklasifikasi dengan Visi Kustom.

Setelah pengklasifikasi gambar Anda dibuat dan dilatih, Anda dapat mengekspornya sebagai kontainer Docker dan menyebarkannya ke perangkat Azure IoT Edge.

Membuat proyek baru

  1. Di browser web Anda, buka halaman web Visi Kustom.

  2. Pilih Masuk dan masuk menggunakan akun yang sama dengan yang Anda gunakan untuk mengakses sumber daya Azure.

  3. Pilih Proyek baru.

  4. Buat proyek Anda dengan nilai berikut:

    Bidang Nilai
    Nama Beri nama proyek Anda, seperti EdgeTreeClassifier.
    Deskripsi Deskripsi proyek opsional.
    Sumber daya Pilih salah satu grup sumber daya Azure yang menyertakan sumber daya Layanan Visi Kustom atau buat baru jika Anda belum menambahkannya.
    Jenis Proyek Klasifikasi
    Jenis Klasifikasi Multikelas (tag tunggal per gambar)
    Domain Umum (ringkas)
    Kapabilitas Ekspor Platform dasar (Tensorflow, CoreML, ONNX, ...)
  5. Pilih Buat proyek.

Unggah gambar dan latih pengklasifikasi Anda

Membuat pengklasifikasi gambar memerlukan serangkaian gambar pelatihan dan menguji gambar.

  1. Kloning atau unduh gambar sampel dari repo Cognitive-CustomVision-Windows ke komputer pengembangan lokal Anda.

    git clone https://github.com/Microsoft/Cognitive-CustomVision-Windows.git
    
  2. Kembali ke proyek Visi Kustom Anda dan pilih Tambahkan gambar.

  3. Telusuri repo git yang Anda kloning secara lokal, dan arahkan ke folder gambar pertama, Cognitive-CustomVision-Windows / Sampel / Images / Hemlock. Pilih semua 10 gambar dalam folder lalu Buka.

  4. Tambahkan tag hemlock ke grup gambar ini dan tekan enter untuk menerapkan tag.

  5. Pilih Unggah 10 file.

    Mengunggah file dengan hemlock ke Visi Kustom

  6. Saat gambar berhasil diunggah, pilih Selesai.

  7. Pilih Tambahkan gambar lagi.

  8. Telusuri folder gambar kedua, Cognitive-CustomVision-Windows / Samples / Images / Japanese Cherry. Pilih semua 10 gambar dalam folder lalu Buka.

  9. Tambahkan tag japanese cherry ke grup gambar ini dan tekan enter untuk menerapkan tag.

  10. Pilih Unggah 10 file. Saat gambar berhasil diunggah, pilih Selesai.

  11. Saat kedua set gambar diberi tag dan diunggah, pilih Latih untuk melatih pengklasifikasi.

Mengekspor pengklasifikasi Anda

  1. Setelah melatih pengklasifikasi Anda, pilih Ekspor pada halaman Performa dari pengklasifikasi.

    Mengekspor pengklasifikasi gambar yang Anda latih

  2. Pilih DockerFile untuk platform.

  3. Pilih Linux untuk versi.

  4. Pilih Ekspor.

    Ekspor sebagai DockerFile dengan kontainer Linux

  5. Ketika ekspor selesai, pilih Unduh dan simpan paket .zip secara lokal di komputer Anda. Ekstrak semua berkas dari paket. Anda menggunakan file-file ini untuk membuat modul IoT Edge yang berisi server klasifikasi gambar.

Ketika mencapai titik ini, Anda telah selesai membuat dan melatih proyek Visi Kustom. Anda akan menggunakan file yang diekspor di bagian berikutnya, tetapi Anda sudah selesai dengan halaman web Visi Kustom.

Membuat perangkat Azure IoT Edge

Sekarang Anda memiliki file untuk versi kontainer pengklasifikasi gambar pada komputer pengembangan Anda. Di bagian ini, Anda mengonfigurasi kontainer pengklasifikasi gambar untuk dijalankan sebagai modul Azure IoT Edge. Anda juga membuat modul kedua yang disebarkan bersama pengklasifikasi gambar. Modul kedua memposting permintaan ke pengklasifikasi dan mengirimkan hasilnya sebagai pesan ke Azure IoT Hub.

Membuat solusi baru

Solusi adalah cara logis untuk mengembangkan dan mengatur beberapa modul untuk satu penyebaran Azure IoT Edge. Solusi berisi kode untuk satu atau beberapa modul dan manifes penyebaran yang menyatakan cara mengonfigurasinya pada perangkat IoT Edge.

  1. Di Visual Studio Code, pilih Tampilkan>Palet Perintah untuk membuka palet perintah Visual Studio Code.

  2. Di palet perintah, masukkan dan jalankan perintah Azure IoT Edge: Solusi Azure IoT Edge baru. Di palet perintah, berikan informasi berikut untuk membuat solusi Anda:

    Bidang Nilai
    Pilih folder Pilih lokasi pada komputer pengembangan Anda untuk Visual Studio Code guna membuat file solusi.
    Beri nama solusi Masukkan nama deskriptif untuk solusi Anda, seperti CustomVisionSolution, atau terima defaultnya.
    Memilih templat modul Pilih Modul Python.
    Beri nama modul Beri nama pengklasifikasi modul Anda.

    Penting bahwa nama modul ini adalah huruf kecil. Azure IoT Edge peka huruf besar/kecil jika mengacu pada modul, dan solusi ini menggunakan pustaka yang memformat semua permintaan dalam huruf kecil.
    Sediakan repositori gambar Docker untuk modul tersebut Repositori gambar mencakup nama registri kontainer dan nama gambar kontainer Anda. Gambar kontainer Anda sudah terisi dari langkah terakhir. Ganti localhost:5000 dengan nilai Server masuk dari registri kontainer Azure Anda. Anda dapat mengambil server Masuk dari halaman Gambaran Umum registri kontainer di portal Microsoft Azure.

    String akhir terlihat seperti <nama> registri.azurecr.io/classifier.

    Menyediakan repositori gambar Docker

Jendela Visual Studio Code memuat ruang kerja solusi Azure IoT Edge Anda.

Menambahkan informasi masuk registri

File lingkungan menyimpan informasi masuk untuk repositori kontainer Anda dan membagikannya dengan runtime Azure IoT Edge. Runtime memerlukan kredensial ini untuk menyediakan file privat Anda di perangkat IoT Edge.

Ekstensi IoT Edge mencoba menarik kredensial registri kontainer Anda dari Azure dan mengisinya dalam file lingkungan. Periksa untuk melihat apakah info masuk Anda sudah disertakan. Jika belum, tambahkan sekarang:

  1. Di penjelajah Visual Studio Code, buka file .env.
  2. Perbarui bidang dengan nilai nama pengguna dan kata sandi yang Anda salin dari registri kontainer Azure Anda.
  3. Simpan file ini.

Catatan

Tutorial ini menggunakan kredensial masuk admin untuk Azure Container Registry, yang memudahkan pengembangan dan pengujian skenario. Saat Anda siap untuk skenario produksi, kami merekomendasikan opsi autentikasi dengan hak paling rendah seperti perwakilan layanan. Untuk informasi selengkapnya, lihat Kelola akses ke registri kontainer Anda.

Memilih arsitektur target Anda

Saat ini, Visual Studio Code dapat mengembangkan modul untuk perangkat Linux AMD64 dan Linux ARM32v7. Anda harus memilih arsitektur mana yang ditargetkan dengan setiap solusi, karena kontainer dibuat dan dijalankan secara berbeda untuk setiap jenis arsitektur. Defaultnya adalah Linux AMD64, yang kami gunakan untuk tutorial ini.

  1. Buka palet perintah dan cari Azure IoT Edge: Tetapkan Platform Target Default untuk Solusi Edge, atau pilih ikon pintasan di bilang samping di bagian bawah jendela.

  2. Di palet perintah, pilih arsitektur target dari daftar opsi. Untuk tutorial ini, kami menggunakan komputer virtual Ubuntu sebagai perangkat IoT Edge, jadi pertahankan amd64 default.

Menambahkan pengklasifikasi gambar Anda

Templat modul Python di Visual Studio Code berisi beberapa kode sampel yang dapat Anda jalankan untuk menguji IoT Edge. Anda tidak akan menggunakan kode itu dalam skenario ini. Sebagai gantinya, gunakan langkah-langkah di bagian ini untuk mengganti kode sampel dengan kontainer pengklasifikasi gambar yang Anda ekspor sebelumnya.

  1. Di penjelajah file Anda, telusuri paket Visi Kustom yang Anda unduh dan ekstrak. Salin semua isi dari paket yang diekstrak. Paket berisi dua folder, aplikasi dan azureml, dan dua file, Dockerfile dan README.

  2. Di penjelajah file, telusuri direktori tempat Anda memberi tahu Visual Studio Code untuk membuat solusi Azure IoT Edge Anda.

  3. Buka folder modul pengklasifikasi. Jika menggunakan nama yang disarankan di bagian sebelumnya, struktur folder akan terlihat seperti CustomVisionSolution / modules / classifier.

  4. Tempelkan file ke folder pengklasifikasi.

  5. Kembali ke jendela Visual Studio Code. Ruang kerja solusi Anda sekarang telah menampilkan file pengklasifikasi gambar di folder modul.

    Ruang kerja solusi dengan file pengklasifikasi gambar

  6. Buka file module.json di folder pengklasifikasi.

  7. Perbarui parameter platform agar mengarah ke Dockerfile baru yang Anda tambahkan, dan hapus semua opsi selain AMD64, yang merupakan satu-satunya arsitektur yang kami gunakan untuk tutorial ini.

    "platforms": {
        "amd64": "./Dockerfile"
    }
    
  8. Simpan perubahan Anda.

Membuat modul kamera simulasi

Dalam penyebaran Visi Kustom yang sebenarnya, Anda akan memiliki kamera yang menyediakan gambar langsung atau streaming video. Untuk skenario ini, Anda akan mensimulasikan kamera dengan membuat modul yang mengirimkan gambar uji ke pengklasifikasi gambar.

Menambahkan dan mengonfigurasi modul baru

Di bagian ini, Anda menambahkan modul baru ke CustomVisionSolution yang sama dan menyediakan kode untuk membuat kamera yang disimulasikan.

  1. Di jendela Visual Studio Code yang sama, gunakan palet perintah untuk menjalankan Azure IoT Edge: Menambahkan Modul Azure IoT Edge. Di palet perintah, berikan informasi berikut untuk modul baru Anda:

    Prompt Nilai
    Pilih file templat penyebaran Pilih file deployment.template.json di folder CustomVisionSolution.
    Memilih templat modul Pilih Modul Python
    Beri nama modul Beri nama modul cameraCapture
    Sediakan repositori gambar Docker untuk modul tersebut Ganti localhost:5000 dengan nilai Server masuk untuk registri kontainer Azure Anda.

    String akhir terlihat seperti registryname.azurecr.io/cameracapture>.<

    Jendela Visual Studio Code memuat modul baru Anda di ruang kerja solusi, dan memperbarui file deployment.template.json. Sekarang Anda akan melihat dua folder modul: pengklasifikasi dan cameraCapture.

  2. Buka file main.py di folder modul / cameraCapture.

  3. Ganti semua file dengan kode berikut. Kode sampel ini mengirim permintaan POST ke layanan pemrosesan gambar yang berjalan di modul pengklasifikasi. Kami menyediakan kontainer modul ini dengan gambar sampel untuk digunakan dalam permintaan. Hal ini kemudian mengemas respons sebagai pesan Azure IoT Hub dan mengirimkannya ke antrean output.

    # Copyright (c) Microsoft. All rights reserved.
    # Licensed under the MIT license. See LICENSE file in the project root for
    # full license information.
    
    import time
    import sys
    import os
    import requests
    import json
    from azure.iot.device import IoTHubModuleClient, Message
    
    # global counters
    SENT_IMAGES = 0
    
    # global client
    CLIENT = None
    
    # Send a message to IoT Hub
    # Route output1 to $upstream in deployment.template.json
    def send_to_hub(strMessage):
        message = Message(bytearray(strMessage, 'utf8'))
        CLIENT.send_message_to_output(message, "output1")
        global SENT_IMAGES
        SENT_IMAGES += 1
        print( "Total images sent: {}".format(SENT_IMAGES) )
    
    # Send an image to the image classifying server
    # Return the JSON response from the server with the prediction result
    def sendFrameForProcessing(imagePath, imageProcessingEndpoint):
        headers = {'Content-Type': 'application/octet-stream'}
    
        with open(imagePath, mode="rb") as test_image:
            try:
                response = requests.post(imageProcessingEndpoint, headers = headers, data = test_image)
                print("Response from classification service: (" + str(response.status_code) + ") " + json.dumps(response.json()) + "\n")
            except Exception as e:
                print(e)
                print("No response from classification service")
                return None
    
        return json.dumps(response.json())
    
    def main(imagePath, imageProcessingEndpoint):
        try:
            print ( "Simulated camera module for Azure IoT Edge. Press Ctrl-C to exit." )
    
            try:
                global CLIENT
                CLIENT = IoTHubModuleClient.create_from_edge_environment()
            except Exception as iothub_error:
                print ( "Unexpected error {} from IoTHub".format(iothub_error) )
                return
    
            print ( "The sample is now sending images for processing and will indefinitely.")
    
            while True:
                classification = sendFrameForProcessing(imagePath, imageProcessingEndpoint)
                if classification:
                    send_to_hub(classification)
                time.sleep(10)
    
        except KeyboardInterrupt:
            print ( "IoT Edge module sample stopped" )
    
    if __name__ == '__main__':
        try:
            # Retrieve the image location and image classifying server endpoint from container environment
            IMAGE_PATH = os.getenv('IMAGE_PATH', "")
            IMAGE_PROCESSING_ENDPOINT = os.getenv('IMAGE_PROCESSING_ENDPOINT', "")
        except ValueError as error:
            print ( error )
            sys.exit(1)
    
        if ((IMAGE_PATH and IMAGE_PROCESSING_ENDPOINT) != ""):
            main(IMAGE_PATH, IMAGE_PROCESSING_ENDPOINT)
        else: 
            print ( "Error: Image path or image-processing endpoint missing" )
    
  4. Simpan file main.py.

  5. Buka file requirements.txt.

  6. Tambahkan baris baru pustaka untuk disertakan dalam kontainer.

    requests
    
  7. Simpan file requirements.txt.

Menambahkan gambar uji ke kontainer

Alih-alih menggunakan kamera asli untuk menyediakan umpan gambar pada skenario ini, kita akan menggunakan gambar uji tunggal. Gambar uji disertakan dalam repo GitHub yang Anda unduh untuk gambar pelatihan sebelumnya dalam tutorial ini.

  1. Buka gambar uji, yang terletak di Cognitive-CustomVision-Windows / Sampel / Gambar / Uji.

  2. Salin test_image.jpg

  3. Telusuri direktori solusi Azure IoT Edge Anda dan tempel gambar uji di folder modul / cameraCapture. Gambar harus berada di folder yang sama dengan file main.py yang Anda edit di bagian sebelumnya.

  4. Di Visual Studio Code, buka file Dockerfile.amd64 untuk modul cameraCapture.

  5. Setelah baris yang menetapkan direktori kerja, WORKDIR /app, tambahkan baris kode berikut:

    ADD ./test_image.jpg .
    
  6. Simpan Dockerfile.

Menyiapkan manifes penyebaran

Sejauh ini dalam tutorial ini Anda telah melatih model Visi Kustom untuk mengklasifikasikan gambar pohon, dan mengemas model tersebut sebagai modul Azure IoT Edge. Kemudian, Anda membuat modul kedua yang dapat membuat kueri server klasifikasi gambar dan melaporkan hasilnya kembali ke Azure IoT Hub. Sekarang, Anda siap untuk membuat manifes penyebaran yang akan memberi tahu perangkat Azure IoT Edge cara memulai dan menjalankan kedua modul ini secara bersamaan.

Ekstensi Azure IoT Edge untuk Visual Studio Code menyediakan templat di setiap solusi Azure IoT Edge untuk membantu Anda membuat manifes penyebaran.

  1. Buka deployment.template.json di folder solusi.

  2. Temukan bagianmodul, yang harus berisi tiga modul: dua yang Anda buat, pengklasifikasi dan cameraCapture, dan yang ketiga disertakan secara default, SimulatedTemperatureSensor.

  3. Hapus modul SimulatedTemperatureSensor dengan semua parameternya. Modul ini disertakan untuk menyediakan data sampel skenario pengujian, tetapi kami tidak memerlukannya dalam penyebaran ini.

  4. Jika Anda menamai modul klasifikasi gambar selain classifier, periksa namanya sekarang dan pastikan semuanya menggunakan huruf kecil. Modul cameraCapture memanggil modul pengklasifikasi menggunakan pustaka permintaan yang memformat semua permintaan dalam huruf kecil, dan Azure IoT Edge peka huruf besar/kecil.

  5. Perbarui parameter createOptions untuk modul cameraCapture dengan JSON berikut. Informasi ini membuat variabel lingkungan dalam kontainer modul yang diambil dalam proses main.py. Dengan menyertakan informasi ini dalam manifes penyebaran, Anda dapat mengubah gambar atau titik akhir tanpa harus membangun kembali gambar modul.

    "createOptions": "{\"Env\":[\"IMAGE_PATH=test_image.jpg\",\"IMAGE_PROCESSING_ENDPOINT=http://classifier/image\"]}"
    

    Jika Anda menamai modul Visi Kustom Anda selain pengklasifikasi, perbarui nilai titik akhir pemrosesan gambar agar sesuai.

  6. Di bagian bawah file, perbarui parameter rute untuk modul $edgeHub. Anda ingin merutekan hasil prediksi dari cameraCapture ke Azure IoT Hub.

        "routes": {
          "cameraCaptureToIoTHub": "FROM /messages/modules/cameraCapture/outputs/* INTO $upstream"
        },
    

    Jika Anda menamai modul kedua Anda selain cameraCapture, perbarui nilai rute yang cocok.

  7. Simpan file deployment.template.json.

Membangun dan mendorong solusi Azure IoT Edge

Dengan kedua modul yang dibuat dan template manifes penyebaran dikonfigurasi, Anda siap untuk membangun gambar kontainer dan mengirimkannya ke registri kontainer Anda.

Setelah gambar berada di registri Anda, Anda dapat menyebarkan solusi ke perangkat Azure IoT Edge. Anda dapat mengatur modul di perangkat melalui IoT Hub, tetapi Anda juga dapat mengakses IoT Hub dan perangkat melalui Visual Studio Code. Di bagian ini, Anda menyiapkan akses ke IoT Hub, lalu menggunakan Visual Studio Code untuk menyebarkan solusi Anda ke perangkat IoT Edge Anda.

Pertama, bangun dan kirim solusi Anda ke registri kontainer Anda.

  1. Buka terminal terintegrasi Visual Studio Code dengan memilih Lihat>Terminal.

  2. Masuk ke Docker dengan memasukkan perintah berikut di terminal. Masuk menggunakan nama pengguna, kata sandi, dan server masuk dari registri kontainer Azure Anda. Anda dapat mengambil nilai ini dari bagian Kunci akses registri Anda di portal Azure.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    Anda mungkin menerima peringatan keamanan yang menyarankan penggunaan --password-stdin. Meskipun praktik terbaik tersebut disarankan untuk skenario produksi, praktik terbaik berada di luar cakupan tutorial ini. Untuk mengetahui informasi selengkapnya, lihat referensi masuk docker.

  3. Di penjelajah Visual Studio Code, klik kanan file deployment.template.json dan pilih Bangun dan Dorong solusi IoT Edge.

    Perintah bangun dan dorong memulai tiga operasi. Pertama, hal ini membuat folder baru dalam solusi yang disebut konfigurasi yang menampung manifes penyebaran penuh, yang dibangun dari informasi dalam templat penyebaran dan file solusi lainnya. Kedua, perintah ini menjalankan docker build untuk membangun file kontainer, berdasarkan dockerfile yang sesuai untuk arsitektur target Anda. Kemudian, perintah ini menjalankan docker push untuk mendorong repositori gambar ke registri kontainer Anda.

    Proses ini mungkin memakan waktu beberapa menit saat pertama kali, tetapi menjadi lebih cepat saat Anda menjalankan perintah berikutnya.

Menyebarkan modul ke perangkat

Gunakan penjelajah Visual Studio Code dan ekstensi Azure IoT Edge untuk menyebarkan proyek modul ke perangkat IoT Edge Anda. Anda sudah memiliki manifes penyebaran yang disiapkan untuk skenario, file deployment.amd64.js di folder konfigurasi. Sekarang Anda hanya perlu memilih perangkat untuk menerima penyebaran.

Pastikan perangkat Azure IoT Edge Anda sudah siap dan dapat dijalankan.

  1. Di penjelajah Visual Studio Code, pada bagian Azure IoT Hub, luaskan Perangkat untuk melihat daftar perangkat IoT Anda.

  2. Klik kanan nama perangkat Azure IoT Edge, lalu pilih Buat Penyebaran untuk Perangkat Tunggal.

  3. Pilih file deployment.amd64.json di folder konfigurasi lalu Pilih Manifes Penyebaran Edge. Jangan gunakan file deployment.template.json.

  4. Pada perangkat Anda, luaskan Modul untuk melihat daftar modul yang disebarkan dan berjalan. Pilih tombol refresh. Anda akan melihat modul pengklasifikasi dan cameraCapture baru yang berjalan bersama dengan $edgeAgent dan $edgeHub.

Anda juga dapat memeriksa untuk melihat bahwa semua modul aktif dan berjalan di perangkat Anda sendiri. Pada perangkat Azure IoT Edge Anda, jalankan perintah berikut untuk melihat status modul.

iotedge list

Mungkin perlu beberapa menit untuk memulai modul. Runtime Azure IoT Edge perlu menerima manifes penyebaran barunya, menarik gambar modul dari runtime kontainer, lalu memulai setiap modul baru.

Melihat hasil klasifikasi

Ada dua cara untuk melihat hasil modul Anda, di perangkat itu sendiri saat pesan dibuat dan dikirim, atau dari Visual Studio Code saat pesan tiba di Azure IoT Hub.

Dari perangkat Anda, lihat log modul cameraCapture untuk melihat pesan yang dikirim dan konfirmasi bahwa pesan tersebut diterima oleh Azure IoT Hub.

iotedge logs cameraCapture

Misalnya, Anda akan melihat output seperti berikut:

admin@vm:~$ iotedge logs cameraCapture
Simulated camera module for Azure IoT Edge. Press Ctrl-C to exit.
The sample is now sending images for processing and will indefinitely.
Response from classification service: (200) {"created": "2023-07-13T17:38:42.940878", "id": "", "iteration": "", "predictions": [{"boundingBox": null, "probability": 1.0, "tagId": "", "tagName": "hemlock"}], "project": ""}

Total images sent: 1
Response from classification service: (200) {"created": "2023-07-13T17:38:53.444884", "id": "", "iteration": "", "predictions": [{"boundingBox": null, "probability": 1.0, "tagId": "", "tagName": "hemlock"}], "project": ""}

Anda juga dapat melihat pesan dari Visual Studio Code. Klik kanan nama perangkat Azure IoT Edge Anda dan pilih Mulai Pemantauan Titik Akhir Peristiwa Bawaan.

[IoTHubMonitor] [2:43:36 PM] Message received from [vision-device/cameraCapture]:
{
  "created": "2023-07-13T21:43:35.697782",
  "id": "",
  "iteration": "",
  "predictions": [
    {
      "boundingBox": null,
      "probability": 1,
      "tagId": "",
      "tagName": "hemlock"
    }
  ],
  "project": ""
}

Catatan

Awalnya, Anda mungkin melihat kesalahan koneksi dalam output dari modul cameraCapture. Hal ini disebabkan oleh keterlambatan antara modul yang digunakan dan dimulai.

Modul cameraCapture secara otomatis mencoba kembali koneksi sampai berhasil. Setelah koneksi berhasil, Anda akan melihat pesan klasifikasi gambar yang diharapkan.

Hasil dari modul Custom Vision yang dikirim sebagai pesan dari modul cameraCapture, mencakup probabilitas bahwa gambar berasal dari pohon hemlock atau ceri. Karena gambar adalah hemlock, Anda akan melihat probabilitas sebagai 1.0.

Membersihkan sumber daya

Jika berencana untuk melanjutkan ke artikel yang disarankan berikutnya, Anda dapat menyimpan sumber daya dan konfigurasi yang Anda buat dan menggunakannya kembali. Anda juga dapat tetap menggunakan perangkat IoT Edge yang sama sebagai perangkat uji.

Jika tidak, Anda dapat menghapus konfigurasi lokal dan sumber daya Azure yang Anda gunakan dalam artikel ini untuk menghindari tagihan.

Menghapus sumber daya Azure

Menghapus sumber daya Azure dan grup sumber daya tidak dapat diubah. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat hub IoT di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, hapus hanya sumber daya hub IoT itu sendiri, bukan grup sumber daya.

Untuk menghapus sumber daya:

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.

  2. Pilih nama grup sumber daya yang berisi sumber daya pengujian IoT Edge Anda.

  3. Tinjau daftar sumber daya yang terdapat dalam grup sumber daya Anda. Jika ingin menghapus semuanya, Anda dapat memilih Hapus grup sumber daya. Jika hanya ingin menghapus beberapa sumber daya, Anda dapat mengklik setiap sumber daya untuk menghapusnya satu per satu.

Langkah berikutnya

Dalam tutorial ini, Anda melatih model Visi Kustom dan menyebarkannya sebagai modul ke perangkat Azure IoT Edge. Kemudian Anda membangun modul yang dapat membuat kueri layanan klasifikasi gambar dan melaporkan hasilnya kembali ke Azure IoT Hub.

Lanjutkan ke tutorial berikutnya untuk mempelajari cara lain agar Azure IoT Edge dapat membantu Anda mengubah data menjadi wawasan bisnis di tepi.