Oktatóanyag: A Custom Vision használata IoT-eszközzel vizualizációs állapotok jelentésére

Ez a mintaalkalmazás bemutatja, hogyan taníthat be egy eszközt kamerával a vizuális állapotok észlelésére a Custom Vision használatával. Ezt az észlelési forgatókönyvet egy exportált ONNX-modellel futtathatja egy IoT-eszközön.

A vizualizációs állapot egy kép tartalmát írja le: egy üres helyiséget vagy egy embert tartalmazó szobát, egy üres felhajtót vagy egy teherautóval rendelkező felhajtót stb. Az alábbi képen látható, hogy az alkalmazás észleli, ha egy banán vagy egy alma kerül a kamera elé.

Animation of a UI labeling fruit in front of the camera

Ez az oktatóanyag a következőket mutatja be:

  • Konfigurálja a mintaalkalmazást saját Custom Vision- és IoT Hub-erőforrások használatára.
  • Az alkalmazással betanítsa a Custom Vision-projektet.
  • Az alkalmazással valós időben hozhat létre új képeket, és elküldheti az eredményeket az Azure-nak.

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

  • A Custom Vision Service használatához Custom Vision Training és Prediction-erőforrásokat kell létrehoznia az Azure-ban. Ehhez az Azure Portalon töltse ki a Custom Vision létrehozása lapon található párbeszédpanelt, és hozzon létre egy betanítási és előrejelzési erőforrást is.

    Fontos

    Ennek a projektnek kompakt képosztályozási projektnek kell lennie, mert a modellt később exportáljuk az ONNX-be.

  • IoT Hub-erőforrást is létre kell hoznia az Azure-ban.
  • Visual Studio 2015 vagy újabb
  • Opcionálisan a Windows 10 IoT Core 17763-es vagy újabb verzióját futtató IoT-eszköz. Az alkalmazást közvetlenül a pc-ről is futtathatja.
    • Raspberry Pi 2 és 3 esetén a Windows 10-et közvetlenül az IoT Irányítópult alkalmazásból állíthatja be. Más eszközök, például a DrangonBoard esetében az eMMC metódussal kell villognia. Ha segítségre van szüksége egy új eszköz beállításához, tekintse meg az eszköz beállítását a Windows IoT dokumentációjában.

Tudnivalók a Visual Alerts alkalmazásról

Az IoT Visual Alerts alkalmazás folyamatos ciklusban fut, és szükség szerint négy különböző állapot között vált:

  • Nincs modell: Művelet nélküli állapot. Az alkalmazás folyamatosan alszik egy másodpercig, és ellenőrzi a kamerát.
  • Betanítási képek rögzítése: Ebben az állapotban az alkalmazás rögzít egy képet, és feltölti betanítási képként a cél Custom Vision-projektbe. Az alkalmazás ezután 500 ms-ra alvó állapotba kerül, és megismétli a műveletet, amíg meg nem rögzíti a megadott célszámú képeket. Ezután elindítja a Custom Vision-modell betanítását.
  • Várakozás a betanított modellre: Ebben az állapotban az alkalmazás másodpercenként meghívja a Custom Vision API-t, hogy ellenőrizze, hogy a célprojekt tartalmaz-e betanított iterációt. Ha talál egyet, letölti a megfelelő ONNX-modellt egy helyi fájlba, és átvált a pontozási állapotra.
  • Pontozás: Ebben az állapotban az alkalmazás a Windows ML használatával értékeli ki a kamerából származó egyetlen keretet a helyi ONNX-modellel szemben. Az eredményül kapott képbesorolás megjelenik a képernyőn, és üzenetet küld az IoT Hubnak. Az alkalmazás ezután egy másodpercig alvó állapotban van egy új kép pontozása előtt.

A kódszerkezet vizsgálata

Az alábbi fájlok kezelik az alkalmazás fő funkcióit.

Fájl Leírás
MainPage.xaml Ez a fájl határozza meg az XAML felhasználói felületet. Ez üzemelteti a webes kamera vezérlőt, és tartalmazza az állapotfrissítésekhez használt címkéket.
MainPage.xaml.cs Ez a kód szabályozza az XAML felhasználói felület viselkedését. Az állapotgép-feldolgozási kódot tartalmazza.
CustomVision\CustomVisionServiceWrapper.cs Ez az osztály egy burkoló, amely kezeli a Custom Vision Service-vel való integrációt.
CustomVision\CustomVisionONNXModel.cs Ez az osztály egy burkoló, amely kezeli a Windows ML-vel való integrációt az ONNX-modell betöltéséhez és a képek pontozásához.
IoTHub\IotHubWrapper.cs Ez az osztály egy burkoló, amely kezeli az IoT Hub-integrációt a pontozási eredmények Azure-ba való feltöltéséhez.

A Visual Alerts alkalmazás beállítása

Kövesse az alábbi lépéseket az IoT Visual Alerts alkalmazás pc-n vagy IoT-eszközön való futtatásához.

  1. Klónozza vagy töltse le az IoTVisualAlerts-mintát a GitHubon.
  2. A megoldás IoTVisualAlerts.sln megnyitása a Visual Studióban
  3. A Custom Vision-projekt integrálása:
    1. A CustomVision\CustomVisionServiceWrapper.cs szkriptben frissítse a változót a ApiKey betanítási kulccsal.
    2. Ezután frissítse a változót Endpoint a kulcshoz társított végponti URL-címmel.
    3. Frissítse a változót targetCVSProjectGuid a használni kívánt Custom Vision-projekt megfelelő azonosítójával.
  4. Az IoT Hub-erőforrás beállítása:
    1. Az IoTHub\IotHubWrapper.cs szkriptben frissítse a változót s_connectionString az eszköz megfelelő kapcsolati sztring.
    2. Az Azure Portalon töltse be az IoT Hub-példányt, válassza ki az IoT-eszközöket az Explorers alatt, válassza ki a céleszközt (vagy hozzon létre egyet, ha szükséges), és keresse meg a kapcsolati sztring az Elsődleges Csatlakozás ion-sztring alatt. A sztring tartalmazza az IoT Hub nevét, az eszközazonosítót és a megosztott hozzáférési kulcsot; a következő formátummal rendelkezik: {your iot hub name}.azure-devices.net;DeviceId={your device id};SharedAccessKey={your access key}.

Az alkalmazás futtatása

Ha az alkalmazást a pc-n futtatja, válassza a Céleszköz helyi gépe lehetőséget a Visual Studióban, és válassza az x64 vagy x86 lehetőséget a célplatformhoz. Ezután nyomja le az F5 billentyűt a program futtatásához. Az alkalmazásnak el kell indítania és meg kell jelenítenie az élő hírcsatornát a kamerából, és egy állapotüzenetet kell megjelenítenie.

Ha ARM-processzorral rendelkező IoT-eszközön helyezi üzembe, akkor az ARM-t kell kiválasztania célplatformként, céleszközként pedig távoli gépet. Amikor a rendszer kéri, adja meg az eszköz IP-címét (a számítógépével megegyező hálózaton kell lennie). Az ip-címet a Windows IoT alapértelmezett alkalmazásból szerezheti be, miután elindította az eszközt, és csatlakoztatta a hálózathoz. Nyomja le az F5 billentyűt a program futtatásához.

Amikor első alkalommal futtatja az alkalmazást, az nem ismeri a vizualizációs állapotokat. Megjelenik egy állapotüzenet, amely szerint nincs elérhető modell.

Betanítási képek rögzítése

A modell beállításához az alkalmazást be kell állítania a Betanítási képek rögzítése állapotba. Hajtsa végre az alábbi lépések egyikét:

  • Ha pc-n futtatja az alkalmazást, használja a felhasználói felület jobb felső sarkában található gombot.
  • Ha IoT-eszközön futtatja az alkalmazást, hívja meg az EnterLearningMode eszközön lévő metódust az IoT Hubon keresztül. Meghívhatja az Azure Portal IoT Hub menüjében található eszközbejegyzésen keresztül, vagy egy olyan eszközzel, mint az IoT Hub Eszközkezelő.

Amikor az alkalmazás belép a Betanítási képek rögzítése állapotba, másodpercenként körülbelül két képet fog rögzíteni, amíg el nem éri a képek célszámát. Alapértelmezés szerint a cél 30 kép, de ezt a paramétert úgy állíthatja be, hogy argumentumként adja át a kívánt számot az EnterLearningMode IoT Hub metódusnak.

Miközben az alkalmazás képeket rögzít, el kell helyeznie a kamerát az észlelni kívánt vizualizációs állapotoknak (például egy üres helyiségnek, egy személyekkel rendelkező szobának, egy üres asztalnak, egy asztalnak egy toy teherautóval stb.).

A Custom Vision-modell betanítása

Miután az alkalmazás befejezte a képek rögzítését, feltölti őket, majd átvált a Betanított modell várakozási állapotára. Ezen a ponton meg kell jelennie a Custom Vision webhelyén , és létre kell készítenie egy modellt az új betanítási képek alapján. Az alábbi animáció egy példát mutat be erre a folyamatra.

Animation: tagging multiple images of bananas

A folyamat megismétlése a saját forgatókönyvével:

  1. Jelentkezzen be a Custom Vision webhelyére.
  2. Keresse meg a célprojektet, amelynek most már rendelkeznie kell az alkalmazás által feltöltött összes betanítási képével.
  3. Minden azonosítani kívánt vizualizációs állapothoz válassza ki a megfelelő képeket, és alkalmazza manuálisan a címkét.
    • Ha például az a cél, hogy különbséget tegyen egy üres szoba és egy olyan helyiség között, amelyben emberek vannak, javasoljuk, hogy jelöljön meg öt vagy több képet új osztályként, Kapcsolatok, és jelöljön meg öt vagy több képet anélkül, hogy negatív címke lenne. Ez segít a modellnek megkülönböztetni a két állapotot.
    • Egy másik példa, ha a cél egy polc teljes értékének közelítése, akkor olyan címkéket használhat, mint a EmptyShelf, a PartiallyFullShelf és a FullShelf.
  4. Ha végzett, válassza a Betanítása gombot.
  5. A betanítás befejezése után az alkalmazás észleli, hogy elérhető egy betanított iteráció. Elindítja a betanított modell ONNX-be való exportálásának és az eszközre való letöltésének folyamatát.

A betanított modell használata

Miután az alkalmazás letölti a betanított modellt, átvált a pontozási állapotra, és folyamatos ciklusban elkezdi a képek pontozását a kameráról.

Minden rögzített képnél az alkalmazás megjeleníti a felső címkét a képernyőn. Ha nem ismeri fel a vizualizáció állapotát, akkor nem jelenik meg egyezés. Az alkalmazás ezeket az üzeneteket is elküldi az IoT Hubnak, és ha egy osztályt észlel, az üzenet tartalmazza a címkét, a megbízhatósági pontszámot és a tulajdonságot detectedClassAlert, amelyet az IoT Hub-ügyfelek a tulajdonságok alapján történő gyors üzenet-útválasztásban szeretnének használni.

Emellett a minta Egy Sense HAT-kódtár használatával észleli, hogy mikor fut egy Raspberry Pi-n egy Sense HAT-egységtel, így kimeneti kijelzőként is használhatja, ha az osztály észlelésekor az összes kijelző fénye pirosra van állítva, és üres, ha nem észlel semmit.

Az alkalmazás újrafelhasználása

Ha vissza szeretné állítani az alkalmazást az eredeti állapotába, ezt a felhasználói felület jobb felső sarkában található gombra kattintva vagy a metódus DeleteCurrentModel IoT Hubon keresztüli meghívásával teheti meg.

Bármikor megismételheti a betanítási képek feltöltésének lépését a jobb felső felhasználói felület gombra kattintva vagy a EnterLearningMode metódus ismételt meghívásával.

Ha egy eszközön futtatja az alkalmazást, és újra le kell kérnie az IP-címet (például a Távoli Windows IoT-ügyfélen keresztüli távoli kapcsolat létrehozásához), meghívhatja a metódust az GetIpAddress IoT Hubon keresztül.

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

Törölje a Custom Vision-projektet, ha már nem szeretné fenntartani. A Custom Vision webhelyén lépjen a Projektek elemre, és válassza a kuka ikont az új projekt alatt.

Screenshot of a panel labeled My New Project with a trash can icon

Következő lépések

Ebben az oktatóanyagban egy olyan alkalmazást állított be és futtatott, amely észleli a vizualizáció állapotadatait egy IoT-eszközön, és elküldi az eredményeket az IoT Hubnak. Ezután ismerkedjen meg a forráskóddal, vagy végezze el az alábbi javasolt módosításokat.

  • Adjon hozzá egy IoT Hub-metódust, amely az alkalmazást közvetlenül a Betanított modell várakozási állapotára váltja. Ily módon betanítheti a modellt olyan képekkel, amelyeket maga az eszköz nem rögzít, majd parancsra küldi az új modellt az eszköznek.
  • Kövesse a Valós idejű érzékelőadatok vizualizációja oktatóanyagot egy Power BI-irányítópult létrehozásához a minta által küldött IoT Hub-riasztások megjelenítéséhez.
  • Kövesse az IoT távoli monitorozási oktatóanyagát egy logikai alkalmazás létrehozásához, amely a vizualizációs állapotok észlelésekor reagál az IoT Hub-riasztásokra.