Oktatóanyag: Képosztályozás végrehajtása a peremhálózaton a Custom Vision Service használatával

A következőkre vonatkozik:IoT Edge 1.4 checkmark IoT Edge 1.4

Fontos

Az IoT Edge 1.4 a támogatott kiadás. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Az Azure IoT Edge hatékonyabbá teheti IoT-megoldását a felhőben található számítási feladatok peremhálózatra történő áthelyezése által. Ez a képesség kiválóan alkalmas olyan szolgáltatásokra, amelyek nagy mennyiségű adatot dolgoznak fel, például számítógépes látásmodelleket. Az Azure AI Custom Vision lehetővé teszi egyéni rendszerkép-osztályozók készítését és tárolóként való üzembe helyezését az eszközökön. Ezzel a két szolgáltatással megállapításokat tehet képekről vagy videostreamekről anélkül, hogy az adatokat először át kellene helyeznie az oldalról. A Custom Vision egy olyan osztályozót biztosít, amely a megállapítások létrehozásához összehasonlítja a képet egy betanított modellel.

Egy IoT Edge-eszközön található Custom Vision például meg tudja határozni, hogy egy autópályán az átlagosnál nagyobb vagy kisebb-e a forgalom, vagy hogy egy parkolóház egy bizonyos sorában elérhetők-e parkolóhelyek. Ezeket a megállapításokat műveletvégzés céljából meg lehet osztani egy másik eszközzel.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Képosztályozó létrehozása a Custom Vision használatával.
  • IoT Edge-modul létrehozása, amely lekérdezi a Custom Vision eszközön található webkiszolgálót.
  • A képosztályozó eredményeinek küldése az IoT Hubnak.

Diagram - Tutorial architecture, stage and deploy classifier

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Előfeltételek

Tipp.

Ez az oktatóanyag a Custom Vision és az Azure IoT Edge egy Raspberry Pi 3-mintaprojekt egyszerűsített verziója. Ez az oktatóanyag egy felhőalapú virtuális gépen való futtatásra készült, és statikus rendszerképekkel tanítja be és teszteli a képosztályozót, ami hasznos lehet, ha valaki éppen most kezdi kiértékelni a Custom Visiont az IoT Edge-en. A mintaprojekt fizikai hardvert használ, és beállít egy élő kameracsatornát a képosztályozó betanítása és tesztelése céljából, ami hasznos lehet azoknak, akik részletesebb, valós forgatókönyvet szeretnének kipróbálni.

  • Konfigurálja a környezetet Linux-tárolók fejlesztéséhez az alábbi oktatóanyag elvégzésével : IoT Edge-modulok fejlesztése a Visual Studio Code használatával. Az oktatóanyag elvégzése után a következő előfeltételeknek kell teljesülnie a fejlesztési környezetben:

  • Ha IoT Edge-modult szeretne fejleszteni a Custom Vision szolgáltatással, telepítse a következő további előfeltételeket a fejlesztőgépre:

Képosztályozó létrehozása a Custom Vision használatával

Képosztályozó létrehozásakor létre kell hoznia egy Custom Vision-projektet, és meg kell adnia betanítási képeket. A szakaszban elvégezhető lépésekkel kapcsolatos további információkért tekintse meg az Osztályozó létrehozása a Custom Vision használatával című cikket.

A képosztályozó létrehozása és betanítása után exportálhatja azt Docker-tárolóként, és üzembe helyezheti egy IoT Edge-eszközön.

Új projekt létrehozása

  1. A webböngészőben lépjen a Custom Vision weblapjára.

  2. Válassza a Sign in (Bejelentkezés) gombot, és jelentkezzen be az Azure-erőforrásokhoz használt fiókkal.

  3. Válassza az Új projekt lehetőséget.

  4. Hozza létre a projektet az alábbi értékekkel:

    Mező Érték
    Név Adja meg a projekt nevét, például az EdgeTreeClassifier nevet.
    Leírás Választható projektleírás.
    Erőforrás Válasszon ki egy Olyan Azure-erőforráscsoportot, amely tartalmaz egy Custom Vision Service-erőforrást, vagy hozzon létre újat , ha még nem adott hozzá egyet.
    Projekttípusok Osztályozás
    Osztályozási típusok Multiclass (single tag per image) (Multiclass (egyetlen címke képenként))
    Tartományok General (compact) (Általános (kompakt))
    Exportálási képességek Alapszintű platformok (Tensorflow, CoreML, ONNX, ...)
  5. Válassza a Create project (Projekt létrehozása) lehetőséget.

Képek feltöltése és az osztályozó betanítása

A képosztályozó létrehozásához betanítási és tesztelési képekre van szükség.

  1. Klónozzon vagy töltsön le mintaképeket a Cognitive-CustomVision-Windows adattárból a helyi fejlesztői gépre.

    git clone https://github.com/Microsoft/Cognitive-CustomVision-Windows.git
    
  2. Térjen vissza a Custom Vision-projekthez, és válassza az Add images (Képek hozzáadása) lehetőséget.

  3. Tallózással keresse meg az Ön által helyileg klónozott Git-adattárat, és lépjen az első, Cognitive-CustomVision-Windows / Samples / Images / Hemlock nevű képmappára. Válassza ki a mappában található 10 képet, majd válassza az Open lehetőséget.

  4. Adja hozzá a hemlock (hemlok) címkét ehhez a képcsoporthoz, és nyomja le az enter billentyűt a címke alkalmazásához.

  5. Válassza az Upload 10 files (10 fájl feltöltése) lehetőséget.

    Upload hemlock tagged files to Custom Vision

  6. Amikor a képek feltöltése sikeresen befejeződött, válassza a Done (Kész) lehetőséget.

  7. Ismét válassza az Add images (Képek hozzáadása) lehetőséget.

  8. Tallózással keresse meg a második, Cognitive-CustomVision-Windows / Samples / Images / Japanese Cherry nevű képmappát. Válassza ki a mappában található 10 képet, majd válassza az Open lehetőséget.

  9. Adja hozzá a japanese cherry (japán cseresznye) címkét ehhez a képcsoporthoz, és nyomja le az enter billentyűt a címke alkalmazásához.

  10. Válassza az Upload 10 files (10 fájl feltöltése) lehetőséget. Amikor a képek feltöltése sikeresen befejeződött, válassza a Done (Kész) lehetőséget.

  11. A két képhalmaz címkével történő ellátása és feltöltése után válassza a Train (Betanítás) lehetőséget az osztályozó betanításához.

Az osztályozó exportálása

  1. Az osztályozó betanítását követően válassza az Export (Exportálás) lehetőséget az osztályozó Performance (Teljesítmény) lapján.

    Export your trained image classifier

  2. Platformként válassza a DockerFile lehetőséget.

  3. A verzió megadásakor válassza a Linux lehetőséget.

  4. Válassza az Exportálás lehetőséget.

    Export as DockerFile with Linux containers

  5. Ha az exportálás befejeződött, válassza a Download (Letöltés) lehetőséget, és mentse a .zip csomagot helyileg a számítógépre. Bontsa ki a fájlokat a csomagból. Ezekkel a fájlokkal létrehozhat egy IoT Edge-modult, amely tartalmazza a képosztályozási kiszolgálót.

Ha elérte ezt a pontot, befejezte a Custom Vision-projekt létrehozását és betanítását. Az exportált fájlokat a következő szakaszban használhatja, a Custom Vision weblappal azonban már elkészült.

IoT Edge-megoldás létrehozása

Most már rendelkezik a képosztályozó tárolóverziójához szükséges fájlokkal a fejlesztői gépen. Ebben a szakaszban úgy konfigurálhatja a képosztályozó-tárolót, hogy IoT Edge-modulként fusson. Emellett létrehoz egy második modult is, amely a képosztályozó mellett van üzembe helyezve. A második modul kéréseket tesz közzé az osztályozó számára, és elküldi az eredményeket üzenetekként az IoT Hubnak.

Új megoldás létrehozása

Egy megoldás logikus módját jelenti több modul fejlesztésének és megszervezésének egyetlen IoT Edge üzemelő példány számára. A megoldás egy vagy több modul kódját és az üzembe helyezési jegyzéket tartalmazza, amely deklarálja, hogyan konfigurálhatja őket egy IoT Edge-eszközön.

  1. A Visual Studio Code-ban válassza a Parancskatalógus megtekintése>lehetőséget a Visual Studio Code parancskatalógusának megnyitásához.

  2. A parancskatalógusban írja be és futtassa az Azure IoT Edge: New IoT Edge solution parancsot. A parancskatalógusban adja meg az alábbi információkat a megoldás létrehozásához:

    Mező Érték
    Mappa kiválasztása Válassza ki a fejlesztési gép helyét a Visual Studio Code-hoz a megoldásfájlok létrehozásához.
    Provide a solution name (Megoldásnév megadása) Adjon leíró jellegű nevet a megoldásnak, például a CustomVisionSolution nevet, vagy fogadja el az alapértelmezett nevet.
    Select module template (Modulsablon kiválasztása) Válassza a Python Module (Python-modul) lehetőséget.
    Provide a module name (Modulnév megadása) Adja a modulnak a classifier nevet.

    Fontos, hogy ez a modulnév kisbetűs legyen. Az IoT Edge a modulokra történő hivatkozáskor megkülönbözteti a kis- és nagybetűket, és ez a megoldás egy olyan kódtárat használ, amely minden kérést kisbetűs formátumúvá konvertál.
    Provide Docker image repository for the module (Docker-rendszerkép adattárának megadása a modulhoz) Egy rendszerképadattár a tárolóregisztrációs adatbázis nevét és a tárolórendszerkép nevét tartalmazza. A tárolórendszerkép előre fel van töltve az előző lépésből. Cserélje le a localhost:5000 értéket az Azure-tárolóregisztrációs adatbázis bejelentkezési kiszolgálójának értékére. A bejelentkezési kiszolgáló az Azure Portal tárolóregisztrációs adatbázisának Áttekintés oldaláról kérhető le.

    Az utolsó sztring úgy néz ki, mint a beállításjegyzék neve.azurecr.io/classifier>.<

    Provide Docker image repository

A Visual Studio Code-ablak betölti az IoT Edge-megoldás munkaterületét.

A regisztrációs adatbázis hitelesítő adatainak hozzáadása

A környezeti fájl tárolja a tárolóregisztrációs adatbázis hitelesítő adatait, és megosztja őket az IoT-Edge futtatókörnyezettel. A futtatókörnyezetnek szüksége van ezekre a hitelesítő adatokra a privát rendszerképek letöltéséhez az IoT Edge-eszközre.

Az IoT Edge-bővítmény megpróbálja lekérni a tárolóregisztrációs adatbázis hitelesítő adatait az Azure-ból, és feltölti őket a környezeti fájlban. Ellenőrizze, hogy a hitelesítő adatok már szerepelnek-e benne. Ha nem, vegye fel őket most:

  1. A Visual Studio Code Explorerben nyissa meg az .env fájlt.
  2. Adja meg az Azure Container Registryből kimásolt felhasználónevet és jelszót a megfelelő mezőkben.
  3. Mentse el ezt a fájlt.

Feljegyzés

Ez az oktatóanyag rendszergazdai bejelentkezési hitelesítő adatokat használ az Azure Container Registryhez, amelyek fejlesztési és tesztelési forgatókönyvek esetén kényelmesek. Ha készen áll az éles helyzetekre, javasoljuk a minimális jogosultságú hitelesítési lehetőséget, például a szolgáltatásnevek használatát. További információ: A tárolóregisztrációs adatbázishoz való hozzáférés kezelése.

A célarchitektúra kiválasztása

A Visual Studio Code jelenleg linuxos AMD64- és Linux ARM32v7-eszközökhöz fejleszthet modulokat. Ki kell választania az egyes megoldásokkal megcélzott architektúrát, mert a tároló minden architektúratípushoz más-más módon van felépítve és futtatva. Az alapértelmezett a Linux AMD64, amelyet ebben az oktatóanyagban használunk.

  1. Nyissa meg a parancskatalógust, és keresse meg az Azure IoT Edge: Set Default Target Platform for Edge Solution (Alapértelmezett célplatform beállítása edge-megoldáshoz) parancskatalógust, vagy válassza a parancsikon ikont az ablak alján található oldalsávon.

  2. A parancskatalógusban válassza ki a célarchitektúrát a lehetőségek listájából. Ebben az oktatóanyagban egy Ubuntu virtuális gépet használunk IoT Edge-eszközként, ezért tartsa meg az alapértelmezett amd64-et.

A képosztályozó hozzáadása

A Visual Studio Code Python-modulsablonja tartalmaz néhány mintakódot, amelyet az IoT Edge teszteléséhez futtathat. Ebben a forgatókönyvben ezt a kódot nem fogja használni. Helyette a jelen szakaszban leírt lépésekkel cserélje le a mintakódot a korábban exportált képosztályozó-tárolóra.

  1. A fájlkezelőben tallózással keresse meg a letöltött és kibontott Custom Vision-csomagot. Másolja a tartalmakat a kibontott csomagból. Ez az app és az azureml mappákat, valamint a Dockerfile és a README fájlokat jelenti.

  2. A fájlkezelőben tallózással keresse meg azt a könyvtárat, ahol a Visual Studio Code létrehozta az IoT Edge-megoldást.

  3. Nyissa meg az osztályozó modulmappáját. Ha az előző szakaszban a javasolt értékeket használta, a mappastruktúrának a következőhöz hasonlóan kell kinéznie: CustomVisionSolution / modules / classifier.

  4. Illessze be a fájlokat a classifier mappába.

  5. Térjen vissza a Visual Studio Code-ablakhoz. A megoldás munkaterületének most a modulmappában található képosztályozó-fájlokat kell mutatnia.

    Solution workspace with image classifier files

  6. Nyissa meg a module.json fájlt az osztályozó mappájában.

  7. Frissítse a platformparamétert , hogy a hozzáadott új Dockerfile-ra mutasson, és távolítsa el az AMD64 mellett minden lehetőséget, amely az oktatóanyag egyetlen architektúrája.

    "platforms": {
        "amd64": "./Dockerfile"
    }
    
  8. Mentse a módosításokat.

Szimulált kameramodul létrehozása

Egy valós Custom Vision-beli üzemelő példányban rendelkezik egy kamerával, amely élő képeket és videostreameket biztosít. Ebben a forgatókönyvben szimulálhatja a kamerát egy olyan modul létrehozásával, amely egy tesztképet küld a képosztályozónak.

Új modul hozzáadása és konfigurálása

Ebben a szakaszban hozzáadhatja az új modult a meglévő CustomVisionSolution megoldáshoz, és létrehozhatja a kóddal a szimulált kamerát.

  1. Ugyanabban a Visual Studio Code-ablakban, a parancskatalógusban futtassa az Azure IoT Edge: Add IoT Edge Module (Azure IoT Edge: Hozzáadás az IoT Edge modulhoz) parancsot. A parancskatalógusban adja meg az alábbi információkat az új modul létrehozásához:

    Adatkérés Érték
    Select deployment template file (Üzembehelyezési sablonfájl kiválasztása) Válassza ki a deployment.template.json fájlt a CustomVisionSolution mappában.
    Select module template (Modulsablon kiválasztása) Válassza a Python Module (Python-modul) lehetőséget
    Provide a module name (Modulnév megadása) Adja a modulnak a cameraCapture nevet
    Provide Docker image repository for the module (Docker-rendszerkép adattárának megadása a modulhoz) Cserélje le a localhost:5000 értéket az Azure Container Registry bejelentkezési kiszolgálói értékére.

    A sztring végül a következőképpen néz ki: <tárolóregisztrációs adatbázis neve>.azurecr.io/cameracapture.

    A Visual Studio Code ablak betölti az új modult a megoldás-munkaterületen, és frissíti a deployment.template.json fájlt. Most két modulmappát kell látnia: a classifier és a cameraCapture mappákat.

  2. Nyissa meg a modules / cameraCapture mappa main.py fájlját.

  3. Cserélje le a teljes fájlt az alábbi kódra. A mintakód POST kéréseket küld az osztályozómodulban futó rendszerkép-feldolgozó szolgáltatásnak. Ehhez a modultárolóhoz adjon hozzá egy mintaképet, amelyet a modultároló a kérésekben fog használni. A modultároló ezután becsomagolja a választ IoT Hub-üzenetként, és elküldi azt egy kimeneti üzenetsornak.

    # 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. Mentse a main.py fájlt.

  5. Nyissa meg a requirements.txt fájlt.

  6. Adjon meg egy új sort, amelyet egy kódtár tartalmazni fog a tárolóban.

    requests
    
  7. Mentse a requirements.txt fájlt.

Tesztkép hozzáadása a tárolóhoz

Ebben a forgatókönyvben ahelyett, hogy valódi kamerát használnánk egy képcsatorna biztosításához, egyetlen tesztképet használunk. A tesztképet az a GitHub-adattár tartalmazza, amelyet a betanítási képekhez töltött le korábban ebben az oktatóanyagban.

  1. Lépjen a tesztképhez, amely a következő helyen található: Cognitive-CustomVision-Windows / Samples / Images / Test.

  2. Másolja a test_image.jpg fájlt

  3. Tallózással keresse meg az IoT Edge-megoldáskönyvtárat, és illessze be a tesztképet a modules / cameraCapture mappába. A képnek ugyanabban a mappában kell lennie, mint ahol az előző szakaszban szerkesztett main.py fájl található.

  4. A Visual Studio Code-ban nyissa meg a cameraCapture modul Dockerfile.amd64 fájlját.

  5. A WORKDIR /app munkakönyvtárat létrehozó sor után adja hozzá az alábbi kódsort:

    ADD ./test_image.jpg .
    
  6. Mentse a Dockerfile-t.

Üzembehelyezési jegyzék előkészítése

Ebben az oktatóanyagban eddig betanított egy Custom Vision-modellt a fákat ábrázoló képek osztályozására, valamint becsomagolta a modellt IoT Edge-modulként. Ezután létrehozott egy második modult, amely le tudja kérdezni a képosztályozási kiszolgálót, és jelenteni tudja az eredményeket az IoT Hubnak. Ezzel készen áll az üzembehelyezési jegyzék létrehozására, amely jelzi egy IoT Edge-eszköznek, hogyan indítsa el és futtassa a két modult együtt.

A Visual Studio Code-hoz készült IoT Edge-bővítmény egy sablont biztosít az egyes IoT Edge-megoldásokban, amelynek segítségével üzembehelyezési jegyzéket hozhat létre.

  1. Nyissa meg a deployment.template.json fájlt a megoldás mappájában.

  2. Keresse meg a modulok szakaszt, amelynek három modult kell tartalmaznia: a kettőt, amelyet létrehozott, az osztályozót és a cameraCapture-t, valamint egy harmadikat, amely alapértelmezés szerint tartalmazza a SimulatedTemperatureSensort.

  3. Törölje a SimulatedTemperatureSensor modult az összes paraméterével. Ez a modul azért szerepel, hogy mintaadatokat biztosítson a tesztelési forgatókönyvekben, azonban ebben az üzembe helyezésben nem lesz rá szükségünk.

  4. Ha a képosztályozó modulnak nem a classifier nevet adta, ellenőrizze a nevet, és győződjön meg arról, hogy csak kisbetűket tartalmaz. A cameraCapture modul meghívja az osztályozómodult egy kéréskódtár használatával, amely az összes kérést kisbetűs formátumúvá konvertálja, és az IoT Edge megkülönböztetni a kis- és nagybetűket.

  5. Frissítse a cameraCapture modul createOptions paraméterét az alábbi JSON használatával. Ez az információ olyan környezeti változókat hoz létre a modultárolóban, amelyek a main.py folyamatban vannak lekérve. Azáltal, hogy belefoglalja ezt az információt az üzembehelyezési jegyzékbe, módosíthatja a képet vagy a végpontot anélkül, hogy a modulképet újra létre kellene hoznia.

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

    Ha a Custom Vision-modulnak nem a classifier nevet adta, frissítse úgy a képfeldolgozó végpont értékét, hogy megegyezzen a modul nevével.

  6. A fájl alján frissítse a $edgeHub modul routes paraméterét. Az előrejelzés eredményeit javasolt a cameraCapture modulból az IoT Hubba irányítani.

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

    Ha a második modulnak nem a cameraCapture nevet adta, frissítse úgy az átirányítás értékét, hogy megegyezzen a modul nevével.

  7. Mentse a deployment.template.json fájlt.

Az IoT Edge-megoldás létrehozása és leküldése

Most, hogy mindkét modult létrehozta, és az üzembehelyezési jegyzék sablonja konfigurálva van, készen áll a tárolórendszerkép létrehozására és azok leküldésére a tárolóregisztrációs adatbázisba.

Amikor a rendszerképek a beállításjegyzékben vannak, üzembe helyezheti a megoldást az IoT Edge-eszközön. Az IoT Hub felületén keresztül modulokat állíthat be egy eszközön, de az IoT Hubhoz és az eszközökhöz a Visual Studio Code felületén keresztül is hozzáférhet. Ebben a szakaszban be kell állítania az IoT Hubhoz való hozzáférést, majd a Visual Studio Code használatával üzembe helyezheti a megoldást az IoT Edge-eszközön.

Először hozza létre, és küldje le a megoldást a tárolóregisztrációs adatbázisba.

  1. Nyissa meg a Visual Studio Code integrált terminálját a Terminál megtekintése>lehetőséget választva.

  2. Jelentkezzen be a Dockerbe az alábbi parancs beírásával a terminálon. Jelentkezzen be a felhasználónévvel, jelszóval és bejelentkezési kiszolgálóval az Azure-tárolóregisztrációs adatbázisból. Ezeket az értékeket lekérheti a beállításjegyzék Access-kulcsok szakaszából az Azure Portalon.

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

    Biztonsági figyelmeztetést kaphat, amely a használatát --password-stdinjavasolja. Bár ez az ajánlott eljárás éles forgatókönyvekhez ajánlott, az oktatóanyag hatókörén kívül esik. További információkért tekintse meg a Docker bejelentkezési referenciát.

  3. A Visual Studio Code Explorerben kattintson a jobb gombbal a deployment.template.json fájlra, és válassza az IoT Edge-megoldás összeállítása és leküldése lehetőséget.

    A buildelési és leküldéses parancs három műveletet indít el. Először létrehoz egy új mappát a konfiguráció nevű megoldásban, amely tartalmazza a teljes üzembehelyezési jegyzékfájlt, amely az üzembehelyezési sablonban és más megoldásfájlokban található információkból épül fel. Másodszor, a tárolórendszerkép létrehozásához fut docker build a célarchitektúra megfelelő dockerfile-fájlja alapján. Ezután leküldi docker push a rendszerkép-adattárat a tárolóregisztrációs adatbázisba.

    Ez a folyamat első alkalommal több percet is igénybe vehet, de a parancsok legközelebbi futtatása gyorsabb lesz.

Modulok üzembe helyezése az eszközön

A Visual Studio Code Explorer és az Azure IoT Edge bővítmény használatával helyezze üzembe a modulprojektet az IoT Edge-eszközön. Már van egy üzembehelyezési jegyzék a forgatókönyvhöz, a deployment.amd64.json fájlhoz a konfigurációs mappában. Most csak ki kell választania az üzemelő példányt fogadó eszközt.

Győződjön meg arról, hogy az IoT Edge-eszköz működik.

  1. A Visual Studio Code Explorer Azure IoT Hub szakaszában bontsa ki az Eszközök elemet az IoT-eszközök listájának megtekintéséhez.

  2. Kattintson a jobb gombbal az IoT Edge-eszköz nevére, majd válassza a Create Deployment for Single Device (Üzembe helyezés létrehozása egyetlen eszközhöz) parancsot.

  3. Válassza ki a deployment.amd64.json fájlt a konfigurációs mappában, majd válassza ki az Edge üzembehelyezési jegyzékfájlt. Ne használja a deployment.template.json fájlt.

  4. Az eszköz alatt bontsa ki a Modulok elemet az üzembe helyezett és a futó modulok listájának megtekintéséhez. Válassza a frissítés gombot. A $edgeAgent és a $edgeHub együtt futó új osztályozó- és cameraCapture-modulokat is látnia kell.

Azt is ellenőrizheti, hogy működik-e az összes modul magán az eszközön. Futtassa az alábbi parancsot az IoT Edge-eszközön a modulok állapotának megtekintéséhez.

iotedge list

A modulok elindítása eltarthat néhány percig. Az IoT Edge-futtatókörnyezetnek meg kell kapnia az új üzembehelyezési jegyzékfájlt, le kell húznia a modul lemezképeit a tároló futtatókörnyezetéből, majd el kell indítania minden új modult.

Osztályozási eredmények megtekintése

A modulok eredményeit kétféleképpen tekintheti meg: magán az eszközön az üzenetek létrehozásakor és küldésekor, vagy a Visual Studio Code-ban az üzenetek IoT Hubhoz történő megérkezésekor.

Ha az eszközön tekinti meg az eredményeket, tekintse meg a cameraCapture modul naplóit, illetve azokon belül az elküldött üzeneteket, és a megerősítést arról, hogy az IoT Hub fogadta őket.

iotedge logs cameraCapture

Például a következőhöz hasonló kimenetnek kell megjelennie:

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": ""}

A Visual Studio Code üzeneteit is megtekintheti. Kattintson a jobb gombbal az IoT Edge-eszköz nevére, és válassza a Beépített eseményvégpont figyelésének indítása lehetőséget.

[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": ""
}

Feljegyzés

Kezdetben csatlakozási hibák léphetnek fel a cameraCapture modul kimenetében. Ennek oka az üzembe helyezett modulok és az indítás közötti késés.

A cameraCapture modul a sikerességig automatikusan újra megismétli a kapcsolatot. A sikeres kapcsolat után megjelennek a várt képosztályozási üzenetek.

A CameraCapture modul üzenetként küldött Custom Vision-modul eredményei közé tartozik annak a valószínűsége, hogy a kép hemlock vagy cseresznyefa. Mivel a kép egy hemlokfenyőt ábrázol, a valószínűségnek 1,0 értéket kell mutatnia.

Az erőforrások eltávolítása

Ha azt tervezi, hogy a következő ajánlott cikkel folytatja, megtarthatja és újból felhasználhatja a létrehozott erőforrásokat és konfigurációkat. Azt is megteheti, hogy ugyanezt az IoT Edge-eszközt használja teszteszközként.

Ellenkező esetben törölheti a cikkben használt helyi konfigurációkat és Azure-erőforrásokat a díjak elkerülése érdekében.

Azure-erőforrások törlése

Az Azure-erőforrások és -erőforráscsoportok törlése visszafordíthatatlan. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha egy meglévő erőforráscsoporton belül hozta létre az IoT Hubot, amelynek erőforrásait meg szeretné tartani, csak magát az IoT Hub-erőforrást törölje, nem pedig az erőforráscsoportot.

Az erőforrások törlése:

  1. Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.

  2. Válassza ki az IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.

  3. Tekintse át az erőforráscsoportban található erőforrások listáját. Ha mindet törölni szeretné, válassza az Erőforráscsoport törlése lehetőséget. Ha csak bizonyos elemeket szeretne törölni, az egyes erőforrásokra kattintva külön törölheti őket.

Következő lépések

Ebben az oktatóanyagban betanított egy Custom Vision-modellt, és modulként üzembe helyezte azt egy IoT Edge-eszközön. Ezután létrehozott egy modult, amely le tudja kérdezni a képosztályozási szolgáltatást, és visszajelzést tud küldeni az eredményekről az IoT Hubnak.

Folytassa a következő oktatóanyagokkal, amelyekből megtudhatja, hogy az Azure IoT Edge hogyan segíthet az adatok üzleti elemzésekké alakításában a peremhálózaton.