Kurz: použití Custom Vision se zařízením IoT k hlášení vizuálních stavů
Tato ukázková aplikace ukazuje, jak použít Custom Vision k tomu, abyste mohli pomocí kamery naučit zařízení detekovat vizuální stavy. Tento scénář zjišťování můžete spustit na zařízení IoT pomocí exportovaného modelu ONNX.
Vizuální stav popisuje obsah obrázku: prázdná místnost nebo místnost s lidmi, prázdná příjezdky nebo vjezd s nákladním vozíkem atd. Na následujícím obrázku vidíte, že aplikace se detekuje, když se před fotoaparátem nachází banán nebo Apple.

V tomto kurzu se dozvíte, jak:
- Nakonfigurujte ukázkovou aplikaci tak, aby používala vlastní Custom Vision a prostředky IoT Hub.
- Použijte aplikaci ke školení Custom Visionho projektu.
- Použijte aplikaci k vyhodnocení nových imagí v reálném čase a odeslání výsledků do Azure.
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
- Pokud chcete použít Custom Vision Service, budete muset vytvořit Custom Vision školení a předpovědi prostředků v Azure. Provedete to tak, že v Azure Portal vyplníte dialogové okno na stránce vytvořit Custom Vision , kde vytvoříte školicí a předpovědný prostředek.
Důležité
Tento projekt musí být projekt klasifikace kompaktních imagí, protože model budeme exportovat do ONNX později.
- Budete také muset vytvořit prostředek IoT Hub v Azure.
- Visual Studio 2015 nebo novější
- Volitelně je zařízení IoT s Windows 10 IoT Core verze 17763 nebo vyšší. Aplikaci můžete také spustit přímo z počítače.
- Pro maliny pi 2 a 3 můžete nastavit Windows 10 přímo z aplikace řídicího panelu IoT. Pro jiná zařízení, jako je například DrangonBoard, je třeba ji Flash použít metodou EMMC. Pokud potřebujete pomáhat s nastavením nového zařízení, přečtěte si téma nastavení zařízení v dokumentaci k Windows IoT.
O aplikaci vizuálních výstrah
Aplikace pro vizuální výstrahy IoT se spouští v souvislé smyčce, přičemž podle potřeby přepíná mezi čtyřmi různými stavy:
- Žádný model: stav no-op. Aplikace se nepřetržitě dokončí po dobu jedné sekundy a zkontroluje kameru.
- Zachytávání školicích imagí: v tomto stavu aplikace zachytí obrázek a nahraje ho jako školicí obrázek do cílového Custom Vision projektu. Aplikace se pak přejde do režimu spánku po 500 ms a operace se opakuje, dokud se nezachytí cílový počet imagí. Potom aktivuje školení modelu Custom Vision.
- Čekání na vyškolený model: v tomto stavu aplikace volá rozhraní API Custom Vision každou sekundu, aby zkontrolovala, jestli cílový projekt obsahuje proškolenou iteraci. Když ho najde, stáhne odpovídající model ONNX do místního souboru a přepne do stavu bodování .
- Bodování: v tomto stavu aplikace používá Windows ml k vyhodnocení jednoho snímku z fotoaparátu proti místnímu ONNX modelu. Výsledná klasifikace obrázku se zobrazí na obrazovce a odešle se jako zpráva do IoT Hub. Aplikace se pak před vyhodnocením nové image do režimu spánku za jednu sekundu.
Kontrola struktury kódu
Následující soubory zpracovávají hlavní funkce aplikace.
| Soubor | Description |
|---|---|
| MainPage. XAML | Tento soubor definuje uživatelské rozhraní XAML. Je hostitelem ovládacího prvku webové kamery a obsahuje popisky používané pro aktualizace stavu. |
| MainPage.xaml.cs | Tento kód řídí chování uživatelského rozhraní XAML. Obsahuje kód pro zpracování stavového stroje. |
| CustomVision\CustomVisionServiceWrapper.cs | Tato třída je obálkou, která zpracovává integraci s Custom Vision Service. |
| CustomVision\CustomVisionONNXModel.cs | Tato třída je obálkou, která zpracovává integraci s Windows ML pro načtení modelu ONNX a vyhodnocování imagí. |
| IoTHub\IotHubWrapper.cs | Tato třída je obálkou, která zpracovává integraci s IoT Hub pro nahrávání výsledků bodování do Azure. |
Nastavení aplikace vizuálních výstrah
Pomocí těchto kroků můžete aplikaci IoT vizuální výstrahy spuštěné na vašem počítači nebo zařízení IoT zobrazit.
- Naklonujte nebo Stáhněte si ukázku IoTVisualAlerts na GitHubu.
- Otevřete řešení IoTVisualAlerts. sln v aplikaci Visual Studio
- Integrujte svůj Custom Vision projekt:
- V CustomVision\CustomVisionServiceWrapper.cs skriptu aktualizujte
ApiKeyproměnnou pomocí školicího klíče. - Pak proměnnou aktualizujte
Endpointpomocí adresy URL koncového bodu přidruženého k vašemu klíči. - Aktualizujte
targetCVSProjectGuidproměnnou odpovídajícím ID Custom Vision projektu, který chcete použít.
- V CustomVision\CustomVisionServiceWrapper.cs skriptu aktualizujte
- Nastavte prostředek IoT Hub:
- V IoTHub\IotHubWrapper.cs skriptu aktualizujte
s_connectionStringproměnnou pomocí správného připojovacího řetězce pro vaše zařízení. - Na Azure Portal načtěte instanci IoT Hub, v části Průzkumník klikněte na zařízení IoT , v nabídce Nástroje vyberte cílové zařízení (nebo v případě potřeby vytvořte) a v části primární připojovací řetězec Najděte připojovací řetězec. Řetězec bude obsahovat váš název IoT Hub, ID zařízení a sdílený přístupový klíč. má následující formát:
{your iot hub name}.azure-devices.net;DeviceId={your device id};SharedAccessKey={your access key}.
- V IoTHub\IotHubWrapper.cs skriptu aktualizujte
Spuštění aplikace
Pokud aplikaci spouštíte na počítači, vyberte v aplikaci Visual Studio místní počítač pro cílové zařízení a jako cílovou platformu vyberte x64 nebo x86 . Pak stiskněte klávesu F5 ke spuštění programu. Aplikace by měla začít a zobrazovat živý kanál z kamery a stavové zprávy.
Pokud nasazujete do zařízení IoT s procesorem ARM, budete muset jako cílové zařízení vybrat ARM jako cílovou platformu a vzdálený počítač . Po zobrazení výzvy zadejte IP adresu zařízení (musí se nacházet ve stejné síti jako váš počítač). Po spuštění zařízení a jeho připojení k síti můžete získat IP adresu z výchozí aplikace Windows IoT. Stisknutím klávesy F5 program spusťte.
Při prvním spuštění aplikace nebude mít žádné znalosti o vizuálních stavech. Zobrazí se stavová zpráva, že žádný model není k dispozici.
Zachytit školicí snímky
Chcete-li nastavit model, je nutné aplikaci umístit do stavu zachycení školicích imagí . Proveďte jeden z následujících kroků:
- Pokud používáte aplikaci na počítači PC, použijte tlačítko v pravém horním rohu uživatelského rozhraní.
- Pokud spouštíte aplikaci na zařízení IoT, zavolejte
EnterLearningModemetodu na zařízení prostřednictvím IoT Hub. Můžete ji volat pomocí položky zařízení v nabídce IoT Hub v Azure Portal nebo pomocí nástroje, jako je například Device Explorer IoT Hub.
Když aplikace vstoupí do stavu zachycení školicích imagí , zachytí o dvou obrázcích každou sekundu, dokud nedosáhne cílového počtu imagí. Ve výchozím nastavení je cílem 30 imagí, ale tento parametr můžete nastavit předáním požadovaného čísla jako argumentu EnterLearningMode metodě IoT Hub.
I když aplikace zachytí image, je nutné ji zveřejnit pro typy vizuálních stavů, které chcete detekovat (například prázdná místnost, místnost s lidmi, prázdná stůl, stůl s automobilem a tak dále).
Výuka Custom Visionho modelu
Jakmile aplikace dokončí zachycení imagí, nahraje je a pak přepne na stav čekání na vyškolený model . V tuto chvíli potřebujete přejít na web Custom Vision a vytvořit model založený na nových školicích obrázcích. Příklad tohoto procesu znázorňuje následující animace.

Postup opakování tohoto procesu ve vlastním scénáři:
- Přihlaste se k webu Custom Vision.
- Vyhledejte cílový projekt, který by teď měl mít všechny školicí materiály, které nahrála aplikace.
- U každého vizuálního stavu, který chcete identifikovat, vyberte příslušné bitové kopie a ručně použijte značku.
- Například pokud váš cíl rozlišuje mezi prázdnou místností a místností s lidmi, doporučujeme označit pět nebo více obrázků s lidmi jako novou třídu, lidi a označením pěti nebo více obrázků, aniž by bylo nutné používat jako zápornou značku. To vám pomůže model odlišit mezi oběma stavy.
- Dalším příkladem je, že pokud máte v cíli přibližný způsob, jakým je plná police, můžete použít značky jako EmptyShelf, PartiallyFullShelf a FullShelf.
- Až budete hotovi, vyberte tlačítko výuka .
- Po dokončení školení aplikace zjistí, že je k dispozici vyškolená iterace. Spustí proces exportu trained model, který ONNX a stáhne do zařízení.
Použití vytrénovaného modelu
Jakmile aplikace stáhne model trained, přepne do stavu bodování a spustí snímky z kamery v souvislé smyčce.
U každého zaznamenaného obrázku aplikace zobrazí horní značku na obrazovce. Pokud nerozpozná vizuální stav, nezobrazí se žádné shody. Aplikace také pošle tyto zprávy do IoT Hub a pokud je zjištěna třída, bude zpráva zahrnovat popisek, skóre spolehlivosti a vlastnost s názvem detectedClassAlert , kterou mohou používat IoT Hub klienti, kteří mají zájem o rychlé směrování zpráv na základě vlastností.
Kromě toho je v ukázce k detekci, kdy je spuštěná na Malině PI s smyslovou jednotkou HAT, použitou knihovnu HAT Hat , takže ji můžete použít jako zobrazení výstupu nastavením všech indikátorů zobrazení na červenou, kdykoli detekuje třídu a prázdné, když nedetekuje cokoli.
Opětovné použití aplikace
Pokud byste chtěli obnovit aplikaci zpátky do původního stavu, můžete tak učinit kliknutím na tlačítko v pravém horním rohu uživatelského rozhraní nebo vyvoláním metody DeleteCurrentModel prostřednictvím IoT Hub.
V libovolném okamžiku můžete opakovat krok nahrávání školicích imagí kliknutím na tlačítko pravého horního tlačítka uživatelského rozhraní nebo volání EnterLearningMode metody znovu.
Pokud aplikaci spouštíte na zařízení a potřebujete znovu načíst IP adresu (například k navázání vzdáleného připojení prostřednictvím vzdáleného klienta Windows IoT), můžete GetIpAddress metodu volat prostřednictvím IoT Hub.
Vyčištění prostředků
Pokud už projekt Custom Vision nechcete udržovat, odstraňte ho. Na webu Custom Visionpřejděte na projekty a v rámci nového projektu vyberte odpadkový koš.

Další kroky
V tomto kurzu nastavíte a spustíte aplikaci, která detekuje informace o vizuálním stavu na zařízení IoT a pošle výsledky do IoT Hub. Dále si podrobněji prozkoumejte zdrojový kód nebo proveďte jednu z navrhovaných úprav níže.
- Přidejte metodu IoT Hub pro přepínání aplikace přímo na stav čekání na vyškolený model . Tímto způsobem můžete model proškolit s imagemi, které nejsou zachyceny samotným zařízením, a potom vložit nový model do zařízení v příkazu.
- Postupujte podle kurzu vizualizace dat snímače v reálném čase a vytvořte řídicí panel Power BI, který vizualizuje IoT Hub výstrahy odesílané ukázkou.
- Postupujte podle kurzu vzdáleného monitorování IoT a vytvořte aplikaci logiky, která reaguje na IoT Hub výstrahy při zjištění vizuálních stavů.