Kurz: Rozpoznávání obrázků přihlášení k zastavení pomocí Model Builderu
Zjistěte, jak pomocí ML.NET Model Builder a služby Azure Machine Learning vytvořit model detekce objektů k detekci a vyhledání obrázků se značkami Stop.
V tomto kurzu se naučíte:
- Příprava dat a jejich pochopení
- Vytvoření konfiguračního souboru Tvůrce modelů
- Volba scénáře
- Volba trénovacího prostředí
- Načtení dat
- Trénování modelu
- Vyhodnocení modelu
- Použití modelu pro predikce
Požadavky
Seznam požadavků a pokyny k instalaci najdete v průvodci instalací Model Builderu.
Přehled rozpoznávání objektů v Model Builderu
Rozpoznávání objektů je problém počítačového zpracování obrazu. I když detekce objektů úzce souvisí se klasifikací obrázků, provádí klasifikaci obrázků v podrobnějším měřítku. Rozpoznávání objektů vyhledá a zařadí entity v obrázcích. Modely rozpoznávání objektů se běžně trénují pomocí hlubokého učení a neurálních sítí. Další informace najdete v tématu Hluboké učení vs. Strojové učení .
Rozpoznávání objektů použijte, když obrázky obsahují více objektů různých typů.
Mezi případy použití pro detekci objektů patří:
- Self-Driving Auta
- Robotika
- Detekce obličeje
- Bezpečnost na pracovišti
- Počítání objektů
- Rozpoznávání aktivit
Tato ukázka vytvoří konzolovou aplikaci jazyka C# .NET Core, která pomocí modelu strojového učení vytvořeného pomocí Model Builderu detekuje obrázky se zastavovacími přihlášeními. Zdrojový kód pro tento kurz najdete v úložišti GitHubu dotnet/machinelearning-samples .
Příprava dat a jejich pochopení
Datová sada stop sign se skládá z 50 obrázků stažených z unsplash, z nichž každý obsahuje alespoň jednu značku stop.
Vytvoření nového projektu VoTT
Stáhněte si datovou sadu 50 obrázků stopových znaménka a rozbalte ji.
Stáhněte si nástroj VoTT (Visual Object Tagging Tool).
Otevřete VoTT a vyberte Nový projekt.
V nastavení projektu změňte zobrazovaný název na StopSignObjDetection.
Změňte token zabezpečení tak, aby vygeneroval nový token zabezpečení.
Vedle položky Zdrojové připojení vyberte Přidat připojení.
V nastavení připojení změňte Zobrazovaný název zdrojového připojení na StopSignImages a jako zprostředkovatele vyberte Místní systém souborů. V části Cesta ke složce vyberte složku Stop-Signs , která obsahuje 50 trénovacích obrázků, a pak vyberte Uložit připojení.
V nastavení projektu změňte zdrojové připojení na StopSignImages (připojení, které jste právě vytvořili).
Změňte také cílové připojení na StopSignImages . Nastavení projektu by teď mělo vypadat podobně jako na tomto snímku obrazovky:
Vyberte Uložit projekt.
Přidání obrázků značek a popisků
Teď byste měli vidět okno s náhledem všech trénovacích obrázků na levé straně, náhledem vybraného obrázku uprostřed a sloupcem Značky vpravo. Tato obrazovka je editor značek.
Výběrem první ikony (ve tvaru plus) na panelu nástrojů Značky přidejte novou značku.
Pojmenujte značku Stop-Sign a stiskněte enter na klávesnici.
Kliknutím a tažením nakreslete obdélník kolem každé značky zastavení na obrázku. Pokud vám kurzor neumožňuje nakreslit obdélník, zkuste vybrat nástroj Kreslení obdélníku na panelu nástrojů nahoře nebo použijte klávesovou zkratku R.
Po nakreslení obdélníku vyberte značku Stop-Sign , kterou jste vytvořili v předchozích krocích, a přidejte značku do ohraničujícího rámečku.
Klikněte na obrázek náhledu dalšího obrázku v datové sadě a opakujte tento postup.
Pokračujte kroky 3 až 4 pro každou značku stop na každém obrázku.
Export kódu JSON VoTT
Jakmile označíte všechny své trénovací obrázky, můžete exportovat soubor, který bude Tvůrce modelů používat pro trénování.
Výběrem čtvrté ikony na levém panelu nástrojů (ta s diagonální šipkou v poli) přejděte na Nastavení exportu.
Poskytovatele ponechte ve formátu JSON VoTT.
Změňte stav majetku na Pouze označené prostředky.
Zrušte zaškrtnutí políčka Zahrnout obrázky. Pokud zahrnete obrázky, zkopírují se trénovací obrázky do vygenerované složky exportu, což není nutné.
Vyberte Uložit nastavení exportu.
Zpět do editoru značek (druhá ikona na levém panelu nástrojů ve tvaru pásu karet). Na horním panelu nástrojů vyberte ikonu Exportovat projekt (poslední ikona ve tvaru šipky v poli) nebo použijte klávesovou zkratku Ctrl+E.
Při tomto exportu se ve složce Stop-Sign-Images vytvoří nová složka s názvem vott-json-export a v této nové složce se vygeneruje soubor JSON s názvem StopSignObjDetection-export. Tento soubor JSON použijete v dalších krocích k trénování modelu rozpoznávání objektů v Tvůrci modelů.
Vytvoření konzolové aplikace
V sadě Visual Studio vytvořte konzolovou aplikaci C# .NET Cores názvem StopSignDetection.
Vytvoření mbconfig
souboru
- V Průzkumník řešení klikněte pravým tlačítkem na projekt StopSignDetection a výběrem možnosti Přidat>model strojového učení... otevřete uživatelské rozhraní Tvůrce modelů.
- V dialogovém okně pojmenujte projekt Tvůrce modelů StopSignDetection a klikněte na Přidat.
Volba scénáře
V této ukázce je scénářem detekce objektů. V kroku Scénář v Tvůrci modelů vyberte scénář Detekce objektů .
Pokud rozpoznávání objektů v seznamu scénářů nevidíte, možná budete muset aktualizovat verzi Tvůrce modelů.
Volba trénovacího prostředí
V současné době Model Builder podporuje trénování modelů rozpoznávání objektů pouze pomocí Služby Azure Machine Learning, takže ve výchozím nastavení je vybrané trénovací prostředí Azure.
Pokud chcete vytrénovat model pomocí Azure ML, musíte vytvořit experiment Azure ML z Model Builderu.
Experiment Azure ML je prostředek, který zapouzdřuje konfiguraci a výsledky pro jeden nebo více spuštění trénování strojového učení.
Pokud chcete vytvořit experiment Azure ML, musíte nejprve nakonfigurovat prostředí v Azure. Experiment potřebuje ke spuštění následující:
- Předplatné Azure
- Pracovní prostor: Prostředek Azure ML, který poskytuje centrální místo pro všechny prostředky a artefakty Azure ML vytvořené jako součást trénovacího běhu.
- Výpočetní prostředky: Výpočetní prostředky služby Azure Machine Learning jsou cloudový virtuální počítač s Linuxem, který se používá k trénování. Přečtěte si další informace o typech výpočetních prostředků podporovaných Tvůrcem modelů.
Nastavení pracovního prostoru Azure ML
Konfigurace prostředí:
Vyberte tlačítko Nastavit pracovní prostor .
V dialogovém okně Vytvořit nový experiment vyberte své předplatné Azure.
Vyberte existující pracovní prostor nebo vytvořte nový pracovní prostor Azure ML.
Při vytváření nového pracovního prostoru se zřídí následující prostředky:
- Pracovní prostor služby Azure Machine Learning
- Azure Storage
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
V důsledku toho může tento proces trvat několik minut.
Vyberte existující výpočetní prostředky nebo vytvořte nový výpočetní objekt Azure ML. Tento proces může trvat několik minut.
Ponechte výchozí název experimentu a vyberte Vytvořit.
Vytvoří se první experiment a název experimentu se zaregistruje v pracovním prostoru. Všechna následná spuštění (pokud se používá stejný název experimentu) se protokolují jako součást stejného experimentu. V opačném případě se vytvoří nový experiment.
Pokud jste s konfigurací spokojeni, přejděte výběrem tlačítka Další krok v Tvůrci modelů na krok Data .
Načtení dat
V kroku Data v Tvůrci modelů vyberete trénovací datovou sadu.
Důležité
Tvůrce modelů v současné době přijímá pouze formát JSON vygenerovaný nástrojem VoTT.
Vyberte tlačítko v části Vstup a pomocí Průzkumník souborů vyhledejte, které by se mělo nacházet
StopSignObjDetection-export.json
v adresáři Stop-Signs/vott-json-export.Pokud vaše data v náhledu dat vypadají správně, vyberte Další krok a přejděte ke kroku Trénovat .
Trénování modelu
Dalším krokem je trénování modelu.
Na obrazovce Model Builder Train (Train ) vyberte tlačítko Spustit trénování .
V tomto okamžiku se vaše data nahrají do Služby Azure Storage a proces trénování začne v Azure ML.
Proces trénování nějakou dobu trvá a doba se může lišit v závislosti na velikosti vybraného výpočetního prostředí a množství dat. Při prvním trénování modelu v Azure můžete očekávat trochu delší dobu trénování, protože je potřeba zřídit prostředky. U této ukázky 50 obrázků trvalo trénování přibližně 16 minut.
Průběh spuštění můžete sledovat na portálu Azure Machine Learning tak, že v sadě Visual Studio vyberete odkaz Monitorovat aktuální spuštění v Azure Portal.
Po dokončení trénování vyberte tlačítko Další krok a přejděte ke kroku Vyhodnocení .
Vyhodnocení modelu
Na obrazovce Vyhodnocení získáte přehled výsledků z trénovacího procesu, včetně přesnosti modelu.
V tomto případě je přesnost 100 %, což znamená, že model je více než pravděpodobné přetěžování z důvodu příliš malého počtu obrázků v datové sadě.
Pomocí možnosti Vyzkoušet model můžete rychle zkontrolovat, jestli váš model funguje podle očekávání.
Vyberte Procházet obrázek a zadejte testovací obrázek, nejlépe takový, který model nepoužil jako součást trénování.
Skóre zobrazené na každém zjištěném ohraničujícím rámečku označuje spolehlivost zjištěného objektu. Například na výše uvedeném snímku obrazovky skóre na ohraničujícím rámečku kolem symbolu stop značí, že model má 99 % jistotu, že zjištěný objekt je znakem stopy.
Prahová hodnota skóre, kterou lze zvýšit nebo snížit pomocí posuvníku prahové hodnoty, přidá a odebere zjištěné objekty na základě jejich skóre. Pokud je například prahová hodnota 0,51, pak model zobrazí pouze objekty, které mají skóre spolehlivosti 0,51 nebo vyšší. Když prahovou hodnotu zvýšíte, uvidíte méně zjištěných objektů, a když prahovou hodnotu snížíte, uvidíte více zjištěných objektů.
Pokud nejste spokojení s metrikami přesnosti, jedním ze snadných způsobů, jak se pokusit o zlepšení přesnosti modelu, je použít více dat. V opačném případě vyberte odkaz Další krok a přejděte ke kroku Spotřebovat v Tvůrci modelů.
(Volitelné) Využití modelu
Tento krok bude obsahovat šablony projektů, které můžete použít k využití modelu. Tento krok je volitelný a můžete zvolit metodu, která nejlépe vyhovuje vašim potřebám, a určit, jak model obsloužíte.
- Konzolová aplikace
- Webové rozhraní API
Konzolová aplikace
Při přidávání konzolové aplikace do řešení se zobrazí výzva k pojmenování projektu.
Projekt konzoly pojmenujte StopSignDetection_Console.
Kliknutím na Přidat do řešení přidejte projekt do aktuálního řešení.
Spusťte aplikaci.
Výstup vygenerovaný programem by měl vypadat podobně jako následující fragment kódu:
Predicted Boxes: Top: 73.225296, Left: 256.89764, Right: 533.8884, Bottom: 484.24243, Label: stop-sign, Score: 0.9970765
Webové rozhraní API
Při přidávání webového rozhraní API do řešení se zobrazí výzva k pojmenování projektu.
Pojmenujte projekt webového rozhraní API StopSignDetection_API.
Kliknutím na Přidat do řešení přidejte projekt do aktuálního řešení.
Spusťte aplikaci.
Otevřete PowerShell a zadejte následující kód, kde PORT je port, na kterém vaše aplikace naslouchá.
$body = @{ ImageSource = <Image location on your local machine> } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
V případě úspěchu by měl výstup vypadat podobně jako následující text.
boxes labels scores boundingBoxes ----- ------ ------ ------------- {339.97797, 154.43184, 472.6338, 245.0796} {1} {0.99273646} {}
- Sloupec
boxes
obsahuje souřadnice ohraničujícího rámečku zjištěného objektu. Hodnoty v tomto pořadí patří do souřadnic vlevo, nahoře, vpravo a dole. - Jsou
labels
indexem předpověděných popisků. V tomto případě je hodnota 1 znakem stop. - Definuje
scores
, jak je model jistý, že ohraničující rámeček patří k danému popisku.
Poznámka
(Volitelné) Souřadnice ohraničujícího rámečku jsou normalizovány pro šířku 800 pixelů a výšku 600 pixelů. Pokud chcete škálovat souřadnice ohraničujícího rámečku pro obrázek v dalším následném zpracování, musíte:
- Vynásobte horní a dolní souřadnice původní výškou obrázku a vynásobte levé a pravé souřadnice původní šířkou obrázku.
- Vydělte horní a dolní souřadnice 600 a vydělte levé a pravé souřadnice 800.
Například s ohledem na rozměry
actualImageHeight
původního obrázku aactualImageWidth
, aModelOutput
s názvemprediction
následující fragment kódu ukazuje, jak škálovatBoundingBox
souřadnice:var top = originalImageHeight * prediction.Top / 600; var bottom = originalImageHeight * prediction.Bottom / 600; var left = originalImageWidth * prediction.Left / 800; var right = originalImageWidth * prediction.Right / 800;
Obrázek může mít více ohraničující rámeček, takže stejný postup je potřeba použít u každého ohraničujícího rámečku na obrázku.
- Sloupec
Gratulujeme! Úspěšně jste vytvořili model strojového učení, který pomocí Tvůrce modelů rozpozná známky zastavení v obrázcích. Zdrojový kód pro tento kurz najdete v úložišti GitHubu dotnet/machinelearning-samples .
Další materiály
Další informace o tématech uvedených v tomto kurzu najdete v následujících zdrojích informací: