Sdílet prostřednictvím


HoloLens (1. generace) a Azure 307: Strojové učení


Poznámka

Kurzy Mixed Reality Academy byly navrženy s ohledem na HoloLens (1. generace) a Mixed Reality Asistivní náhlavní soupravy. Proto se domníváme, že je důležité ponechat tyto kurzy pro vývojáře, kteří stále hledají pokyny k vývoji pro tato zařízení. Tyto kurzy nebudou aktualizovány nejnovějšími sadami nástrojů nebo interakcemi používanými pro HoloLens 2. Budou zachovány, aby mohly pokračovat v práci na podporovaných zařízeních. V budoucnu bude k dispozici nová série kurzů, které předvedou, jak vyvíjet pro HoloLens 2. Toto oznámení bude aktualizováno odkazem na tyto kurzy, jakmile budou publikovány.


final product -start

V tomto kurzu se dozvíte, jak přidat funkce Strojového učení (ML) do aplikace hybridní reality pomocí nástroje Azure Machine Learning Studio (Classic).

Azure Machine Learning Studio (Classic) je služba Microsoftu, která vývojářům poskytuje velké množství algoritmů strojového učení, které můžou pomoct se vstupem, výstupem, přípravou a vizualizací dat. Z těchto komponent je pak možné vyvinout experiment prediktivní analýzy, iterovat na něm a použít ho k trénování modelu. Po trénování můžete model zprovoznit v cloudu Azure, aby pak mohl vyhodnotit nová data. Další informace najdete na stránce Azure Machine Learning Studio (classic).

Po dokončení tohoto kurzu budete mít imerzivní aplikaci náhlavní soupravy pro hybridní realitu a naučíte se, jak postupovat následovně:

  1. Poskytněte tabulku dat o prodeji na portálu Azure Machine Learning Studio (Classic) a navrhněte algoritmus pro předpověď budoucího prodeje oblíbených položek.
  2. Vytvořte projekt Unity, který může přijímat a interpretovat data predikce ze služby ML.
  3. Zobrazte predikační data vizuálně v rámci projektu Unity prostřednictvím poskytování nejoblíbenějších prodejních položek na poličce.

Ve vaší aplikaci je na vás, jak do návrhu integrujete výsledky. Tento kurz je navržený tak, aby vás naučil integrovat službu Azure s projektem Unity. Vaším úkolem je využít znalosti, které z tohoto kurzu získáte, k vylepšení aplikace hybridní reality.

Tento kurz je samostatný kurz, který přímo nezahrnuje žádné další Mixed Reality Labs.

Podpora zařízení

Kurz HoloLens Imerzivní náhlavní soupravy
MR a Azure 307: Machine Learning ✔️ ✔️

Poznámka

I když se tento kurz primárně zaměřuje na Windows Mixed Reality imerzivní náhlavní soupravy (VR), můžete také použít to, co se v tomto kurzu naučíte, na Microsoft HoloLens. V průběhu kurzu uvidíte poznámky ke všem změnám, které budete muset použít k podpoře HoloLensu. Při používání HoloLensu si můžete všimnout určité ozvěny během zachytávání hlasu.

Požadavky

Poznámka

Tento kurz je určený pro vývojáře, kteří mají základní zkušenosti s Unity a C#. Mějte také na paměti, že požadavky a písemné pokyny v tomto dokumentu představují to, co bylo testováno a ověřeno v době psaní tohoto dokumentu (květen 2018). Můžete používat nejnovější software, jak je uvedeno v článku instalace nástrojů, i když by se nemělo předpokládat, že informace v tomto kurzu budou dokonale odpovídat tomu, co najdete v novějším softwaru, než je uvedeno níže.

Pro tento kurz doporučujeme následující hardware a software:

Než začnete

Aby nedocházelo k problémům při sestavování tohoto projektu, důrazně doporučujeme vytvořit projekt uvedený v tomto kurzu v kořenové nebo téměř kořenové složce (dlouhé cesty ke složkám můžou způsobovat problémy v době sestavení).

Kapitola 1 – Nastavení účtu služby Azure Storage

Pokud chcete používat rozhraní API služby Azure Translator, budete muset nakonfigurovat instanci služby tak, aby byla vaše aplikace dostupná.

  1. Přihlaste se k webu Azure Portal.

    Poznámka

    Pokud ještě účet Azure nemáte, budete si ho muset vytvořit. Pokud tento kurz sledujete v situaci ve třídě nebo v testovacím prostředí, požádejte o pomoc s nastavením nového účtu svého instruktora nebo některého z proktorů.

  2. Po přihlášení klikněte v nabídce vlevo na Účty úložiště .

    Snímek obrazovky s oknem Microsoft Azure, které v levé navigační nabídce zobrazuje položku Účty úložiště

    Poznámka

    Slovo Nový mohlo být na novějších portálech nahrazeno slovem Vytvořit prostředek.

  3. Na kartě Účty úložiště klikněte na Přidat.

    Snímek obrazovky s oknem Microsoft Azure, které zobrazuje obrazovku Účty úložiště a zvýrazněné tlačítko Přidat

  4. Na panelu Vytvořit účet úložiště :

    1. Vložte název účtu. Mějte na paměti, že toto pole přijímá jenom čísla a malá písmena.

    2. Jako Model nasazení vyberteResource Manager.

    3. V části Druh účtu vyberte Úložiště (pro obecné účely v1).

    4. Výkon – vyberte Standard.

    5. V části Replikace vyberte Úložiště pro čtení, přístup k geograficky redundantnímu úložišti (RA-GRS).

    6. Možnost Zabezpečený přenos ponechte jako Zakázáno.

    7. Vyberte předplatné.

    8. Zvolte skupinu prostředků nebo vytvořte novou. Skupina prostředků poskytuje způsob, jak monitorovat, řídit přístup, zřizovat a spravovat fakturaci kolekce prostředků Azure. Doporučuje se zachovat všechny služby Azure přidružené k jednomu projektu (například tato testovací prostředí) ve společné skupině prostředků.

      Pokud si chcete přečíst další informace o skupinách prostředků Azure, navštivte prosím článek o skupinách prostředků.

    9. Určete umístění vaší skupiny prostředků (pokud vytváříte novou skupinu prostředků). Umístění by v ideálním případě bylo v oblasti, kde by aplikace běžela. Některé prostředky Azure jsou dostupné jenom v určitých oblastech.

  5. Budete také muset potvrdit, že rozumíte podmínkám a ujednáním, které se na tuto službu vztahují.

    Snímek obrazovky s dialogovým oknem Vytvořit účet úložiště, které zobrazuje informace, které uživatel vyplnil do požadovaných textových polí

  6. Po kliknutí na Vytvořit budete muset počkat na vytvoření služby, což může chvíli trvat.

  7. Po vytvoření instance služby se na portálu zobrazí oznámení.

    Snímek obrazovky s oznámením Nasazení bylo úspěšné, které uživatele informuje, že nasazení do skupiny prostředků proběhlo úspěšně

Kapitola 2 – Azure Machine Learning Studio (classic)

Pokud chcete používat Azure Machine Learning, budete muset nakonfigurovat instanci služby Machine Learning, aby byla k dispozici vaší aplikaci.

  1. Na webu Azure Portal klikněte v levém horním rohu na Nový a vyhledejte Pracovní prostor Machine Learning Studio a stiskněte Enter.

    Snímek obrazovky s oknem Microsoft Azure, které zobrazuje pracovní prostor Machine Learning Studio v podokně obsahu

  2. Na nové stránce najdete popis služby Machine Learning Studio Workspace Service. V levém dolním rohu této výzvy klikněte na tlačítko Vytvořit a vytvořte přidružení k této službě.

  3. Po kliknutí na Vytvořit se zobrazí panel, kde potřebujete zadat podrobnosti o nové službě Machine Learning Studio:

    1. Vložte požadovaný název pracovního prostoru pro tuto instanci služby.

    2. Vyberte předplatné.

    3. Zvolte skupinu prostředků nebo vytvořte novou. Skupina prostředků poskytuje způsob, jak monitorovat, řídit přístup, zřizovat a spravovat fakturaci kolekce prostředků Azure. Doporučuje se zachovat všechny služby Azure přidružené k jednomu projektu (například tato testovací prostředí) ve společné skupině prostředků.

      Pokud si chcete přečíst další informace o skupinách prostředků Azure, navštivte prosím článek o skupinách prostředků.

    4. Určete umístění vaší skupiny prostředků (pokud vytváříte novou skupinu prostředků). Umístění by v ideálním případě bylo v oblasti, kde by aplikace běžela. Některé prostředky Azure jsou dostupné jenom v určitých oblastech. Měli byste použít stejnou skupinu prostředků, kterou jste použili k vytvoření služby Azure Storage v předchozí kapitole.

    5. V části Účet úložiště klikněte na Použít existující, potom klikněte na rozevírací nabídku a odtud klikněte na účet úložiště , který jste vytvořili v poslední kapitole.

    6. V rozevírací nabídce vyberte příslušnou cenovou úroveň pracovního prostoru .

    7. V části Plán webové služby klikněte na Vytvořitnový a pak do textového pole vložte název.

    8. V části Cenová úroveň plánu webové služby vyberte cenovou úroveň podle svého výběru. Testovací úroveň pro vývoj s názvem DEVTEST Standard byste měli mít k dispozici zdarma.

    9. Budete také muset potvrdit, že rozumíte podmínkám a ujednáním, které se na tuto službu vztahují.

    10. Klikněte na Vytvořit.

      Snímek obrazovky s dialogovým oknem Azure Machine Learning Studio zobrazící informace, které uživatel zadal do textových polí

  4. Po kliknutí na Vytvořit budete muset počkat na vytvoření služby, což může chvíli trvat.

  5. Po vytvoření instance služby se na portálu zobrazí oznámení.

    Snímek obrazovky s oknem Microsoft Azure, které zobrazuje nepřečtené oznámení v navigační nabídce

  6. Kliknutím na oznámení prozkoumejte novou instanci služby.

    Snímek obrazovky s oznámením Nasazení bylo úspěšné, které uživatele informuje o úspěšném nasazení pracovního prostoru do skupiny prostředků

  7. V oznámení klikněte na tlačítko Přejít k prostředku a prozkoumejte novou instanci služby.

  8. Na zobrazené stránce v části Další odkazy klikněte na Spustit Machine Learning Studio. Tím se váš prohlížeč nasměruje na portál Machine Learning Studio .

    Snímek obrazovky s oknem Microsoft Azure, které zobrazuje zvýrazněný odkaz Spustit Machine Learning Studio v podokně obsahu

  9. Pomocí tlačítka Přihlásit se v pravém horním rohu nebo uprostřed se přihlaste k nástroji Machine Learning Studio (classic).

    Snímek obrazovky s oknem Machine Learning Studio se zvýrazněným tlačítkem Přihlásit se

Kapitola 3 – Machine Learning Studio (klasické): Nastavení datové sady

Jedním ze způsobů, jak algoritmy Machine Learning fungují, je analýza existujících dat a následné pokusy o predikci budoucích výsledků na základě existující datové sady. Obecně to znamená, že čím více existujících dat máte, tím lépe bude algoritmus při předpovídání budoucích výsledků.

V tomto kurzu máte k dispozici ukázkovou tabulku s názvem ProductsTableCSV a můžete si ji stáhnout tady.

Důležité

Výše uvedený .zip soubor obsahuje productsTableCSV i .unitypackage, které budete potřebovat v Kapitole 6. Tento balíček je také k dispozici v rámci této kapitoly, ale odděleně od souboru CSV.

Tato ukázková datová sada obsahuje záznam nejprodávanějších objektů v každé hodině každého dne v roce 2017.

Snímek obrazovky s oknem Microsoft Excelu, které zobrazuje ukázkovou datovou sadu nejprodávanějších objektů v každé hodině každého dne v roce 2017

Například 1. den roku 2017 ve 13. hodině byla nejprodávanější položkou sůl a pepř.

Tato ukázková tabulka obsahuje 9998 položek.

  1. Vraťte se na portál Machine Learning Studio (Classic) a přidejte tuto tabulku jako datovou sadu pro vaše strojové učení. Uděláte to kliknutím na tlačítko + Nový v levém dolním rohu obrazovky.

    Snímek obrazovky klasického portálu Microsoft Azure Machine Learning Studio se zvýrazněným tlačítkem Nový v nabídce

  2. Zespoda přijde oddíl, ve které je na levé straně navigační panel. Klikněte na Datová sada a pak napravo od položky Z místního souboru.

    Snímek obrazovky s dialogovým oknem Nový, které zobrazuje zvýrazněné položky nabídky Datová sada a Z místního souboru

  3. Nahrajte novou datovou sadu následujícím postupem:

    1. Zobrazí se okno pro nahrání, kde můžete vyhledat novou datovou sadu na pevném disku.

      Snímek obrazovky s dialogovým oknem Nahrát novou datovou sadu, které zobrazuje tlačítko Procházet, aby uživatel našel a vybral data k nahrání.

    2. Po výběru a zpět v okně pro nahrání nechte políčko nezaškrtané.

    3. Do textového pole níže zadejte jako název datové sady ProductsTableCSV.csv (měl by se ale přidat automaticky).

    4. V rozevírací nabídce Typ vyberte Obecný soubor CSV s záhlavím (.csv).

    5. Stiskněte tlačítko v pravém dolním rohu okna pro nahrání a vaše datová sada se nahraje.

Kapitola 4 : Machine Learning Studio (klasické): Experiment

Než budete moct sestavit systém strojového učení, budete muset vytvořit experiment, abyste ověřili svoji teorii o datech. Díky výsledkům budete vědět, jestli potřebujete více dat, nebo jestli mezi daty a možným výsledkem neexistuje žádná korelace.

Zahájení vytváření experimentu:

  1. Znovu klikněte na tlačítko + Nový v levém dolním rohu stránky a pak klikněte na Experiment>Prázdný experiment.

    Snímek obrazovky s oknem Microsoft Azure Machine Learning Studio, ve kterém je vybraná položka nabídky Experiment

  2. Zobrazí se nová stránka s prázdným experimentem:

  3. Z panelu vlevo rozbalte Uložené datové sady>Moje datové sady a přetáhněte ProductsTableCSV na plátno experimentu.

    Snímek obrazovky s oknem Experiment, které zobrazuje rozbalenou složku Moje datové sady v nabídce a tabulku produktů C S V na plátně experimentu

  4. Na panelu vlevo rozbalte položku Ukázka transformace>dat a rozdělení. Potom přetáhněte položku Rozdělit data na plátno experimentu. Položka Rozdělit data rozdělí datovou sadu na dvě části. Jednu část použijete k trénování algoritmu strojového učení. Druhá část se použije k vyhodnocení přesnosti vygenerovaného algoritmu.

    Snímek obrazovky s oknem Experiment, které zobrazuje položky Oddíl a Ukázková a Rozdělená data v nabídce s položkou Rozdělit data použitou pro plátno

  5. V pravém panelu (zatímco je vybraná položka Rozdělit data na plátně) upravte část Zlomek řádků v první výstupní datové sadě na 0,7. Tím se data rozdělí na dvě části, první část bude 70 % dat a druhá část bude zbývajících 30 %. Pokud chcete zajistit náhodné rozdělení dat, ujistěte se, že políčko Randomized split (Náhodné rozdělení ) zůstává zaškrtnuté.

    Snímek obrazovky s panelem Vlastnosti, který zobrazuje vyplněné zaškrtávací políčko Náhodné rozdělení a pole Zlomek řádků bylo nastaveno na 0 bod 7.

  6. Přetáhněte připojení ze základny položky ProductsTableCSV na plátně do horní části položky Rozdělit data. Tím se položky propojí a výstup datové sady ProductsTableCSV (data) se odešle na vstup Rozdělit data.

    Snímek obrazovky s plátnem experimentu, který znázorňuje spojení nakreslené mezi tabulkou produktů C S V, tečkou c s v a rozdělenými daty

  7. Na panelu Experimenty na levé straně rozbalteMožnost Machine Learning Train (Trénovatstrojové učení>). Přetáhněte položku Trénování modelu na plátno experimentu. Plátno by mělo vypadat stejně jako níže uvedené.

    Snímek obrazovky s plátnem experimentu, který znázorňuje spojení nakreslené mezi tabulkami produktů C S V a rozdělenými daty s trénovacím modelem níže

  8. Z levého dolního rohu položky Rozdělit data přetáhněte připojení do pravého horního rohu položky Trénování modelu . Prvních 70% rozdělení z datové sady použije trénování modelu k trénování algoritmu.

    Snímek obrazovky s plátnem experimentu, který znázorňuje propojení mezi tabulkami produktů C S V, rozdělenými daty a trénovacím modelem

  9. Vyberte položku Train Model (Trénovat model ) na plátně a na panelu Vlastnosti (na pravé straně okna prohlížeče) klikněte na tlačítko Spustit výběr sloupců .

  10. Do textového pole zadejte product a stiskněte Enter. Produkt se nastaví jako sloupec pro trénovací predikce. Potom kliknutím na tlačítko v pravém dolním rohu zavřete dialogové okno výběru.

    Snímek obrazovky s dialogovým oknem Vybrat jeden sloupec, které zobrazuje zvýrazněný sloupec produktu v nabídce sloupců

  11. Vytrénujete algoritmus logistické regrese s více třídami , který bude predikovat nejprodádanější produkt na základě hodiny dne a data. Vysvětlení podrobností o různých algoritmech poskytovaných studio Azure Machine Learning je nad rámec tohoto dokumentu. Další informace ale najdete v stručné nápovědě k algoritmům strojového učení.

  12. Na panelu položek experimentu na levé straně rozbalte položku Machine Learning>Initialize Model Classification (Inicializovat klasifikaci modelu>) a přetáhněte položku LogisticKá regrese s více třídami na plátno experimentu.

  13. Připojte výstup z dolní části logistické regrese s více třídami k levému hornímu vstupu položky Trénování modelu .

    Snímek obrazovky s plátnem experimentu, který ukazuje trénování modelu připojeného k logistickou regresi a rozdělení dat s více třídami

  14. V seznamu položek experimentů na panelu vlevo rozbalteMachine Learning Score (Skórestrojového učení>) a přetáhněte položku Score Model (Určení skóre modelu) na plátno.

  15. Připojte výstup z dolní části trénování modelu k levému hornímu vstupu určení skóre modelu.

  16. Připojte výstup z rozdělení dat z pravého dolního rohu k pravému hornímu vstupu položky Určení skóre modelu .

    Snímek obrazovky s plátnem experimentu, který zobrazuje skóre modelu připojeného k trénování modelu a rozdělení dat

  17. V seznamu položek experimentu na panelu vlevo rozbalte položku Machine Learning>Evaluate a přetáhněte položku Evaluate Model (Vyhodnotit model ) na plátno.

  18. Připojte výstup ze skóre modelu k levému hornímu vstupu vyhodnocení modelu.

    Snímek obrazovky s plátnem experimentu, který zobrazuje vyhodnocení modelu připojeného k určení skóre modelu

  19. Vytvořili jste svůj první experiment strojového učení. Experiment teď můžete uložit a spustit. V nabídce v dolní části stránky kliknutím na tlačítko Uložit experiment uložte a kliknutím na Spustit experiment spusťte .

    Snímek obrazovky s nabídkou Plátno experimentu se zvýrazněnými tlačítky Uložit a Spustit

  20. Stav experimentu můžete vidět v pravém horním rohu plátna. Chvíli počkejte, než se experiment dokončí.

    Pokud máte velkou datovou sadu (v reálném světě), je pravděpodobné, že spuštění experimentu může trvat hodiny.

    Snímek obrazovky s oknem Plátno experimentu, které zobrazuje stav experimentu v pravém horním rohu

  21. Klikněte pravým tlačítkem na položku Vyhodnotit model na plátně a v místní nabídce najeďte myší na Výsledky vyhodnocení a pak vyberte Vizualizovat.

    Snímek obrazovky s nabídkou po kliknutí pravým tlačítkem myši na položku Vyhodnotit model, která zobrazuje zvýrazněné výsledky vyhodnocení a položky nabídky Vizualizovat

  22. Výsledky vyhodnocení se zobrazí s předpovězenými výsledky a skutečnými výsledky. K vyhodnocení modelu se používá 30 % původní datové sady, která byla dříve rozdělena. Vidíte, že výsledky nejsou skvělé. V ideálním případě byste měli mít nejvyšší číslo v každém řádku zvýrazněnou položkou ve sloupcích.

    Snímek obrazovky s grafem Výsledky, který zobrazuje výsledky experimentu v grafu polí s procenty

  23. Zavřete výsledky.

  24. Pokud chcete použít nově vytrénovaný model strojového učení, musíte ho zveřejnit jako webovou službu. Uděláte to tak, že v nabídce v dolní části stránky kliknete na položku nabídky Nastavit webovou službu a kliknete na Prediktivní webová služba.

    Snímek obrazovky s nabídkou Experiment, která zobrazuje zvýrazněnou položku nabídky Nastavit webovou službu

  25. Vytvoří se nová karta a model trénování se sloučí a vytvoří novou webovou službu.

  26. V nabídce v dolní části stránky klikněte na Uložit a pak klikněte na Spustit. Stav se aktualizuje v pravém horním rohu plátna experimentu.

    Snímek obrazovky s nabídkou Experiment, která zobrazuje zvýrazněné tlačítko nabídky Spustit a položku nabídky Spustit

  27. Po dokončení se v dolní části stránky zobrazí tlačítko Nasadit webovou službu . Jste připraveni nasadit webovou službu. V nabídce v dolní části stránky klikněte na Nasadit webovou službu (Classic).

    Snímek obrazovky s nabídkou Experiment, která zobrazuje zvýrazněnou položku nabídky Nasadit webovou službu Classic z tlačítka nabídky Nasadit webovou službu

    Prohlížeč může zobrazit výzvu k povolení automaticky otevíraných oken, které byste měli povolit, ale pokud se stránka nasazení nezobrazí, možná budete muset znovu stisknout tlačítko Deploy Web Service (Nasadit webovou službu ).

  28. Po vytvoření experimentu budete přesměrováni na stránku řídicího panelu , kde se zobrazí klíč rozhraní API . Zkopírujte ho do poznámkového bloku, budete ho brzy potřebovat v kódu. Jakmile si klíč rozhraní API poznamenáte, klikněte na tlačítko REQUEST/RESPONSE v části Výchozí koncový bod pod klíčem.

    Snímek obrazovky s oknem Microsoft Azure Machine Learning Studio, které zobrazuje klíč A P I a zvýrazněný odkaz Na lomítko žádosti

    Poznámka

    Pokud na této stránce kliknete na Test, budete moct zadat vstupní data a zobrazit výstup. Zadejte den a hodinu. Položku produktu nechejte prázdnou. Potom klikněte na tlačítko Potvrdit . Ve výstupu v dolní části stránky se zobrazí JSON představující pravděpodobnost, že je každý produkt volbou.

  29. Otevře se nová webová stránka s pokyny a příklady týkající se struktury požadavků vyžadované nástrojem Machine Learning Studio (classic). Zkopírujte identifikátor URI požadavku zobrazený na této stránce do poznámkového bloku.

    Snímek obrazovky se stránkou Dokumentace žádosti o odpověď A PI, která zobrazuje zvýrazněnou žádost U R I

Právě jste vytvořili systém strojového učení, který poskytuje nejpravděpodobnější produkt, který se bude prodávat na základě historických dat o nákupech v korelaci s denním časem a dnem v roce.

K volání webové služby budete potřebovat adresu URL koncového bodu služby a klíč rozhraní API pro službu. V horní nabídce klikněte na kartu Consume (Spotřebovat ).

Na stránce Informace o spotřebě se zobrazí informace, které budete potřebovat k volání webové služby z vašeho kódu. Pořiďte kopii primárního klíče a adresy URL požadavku a odpovědi . Budete je potřebovat v další kapitole.

Kapitola 5 – Nastavení projektu Unity

Nastavte a otestujte imerzivní náhlavní soupravu Mixed Reality.

Poznámka

Pro tento kurz nebudete potřebovat ovladače pohybu. Pokud potřebujete podporu pro nastavení imerzivní náhlavní soupravy, klikněte sem.

  1. Otevřete Unity a vytvořte nový projekt Unity s názvem MR_MachineLearning. Ujistěte se, že je typ projektu nastavený na 3D.

  2. Když je Unity otevřená, stojí za to zkontrolovat, jestli je výchozí Editor skriptů nastavený na Visual Studio. Přejděte na Upravit>předvolby a v novém okně přejděte na Externí nástroje. Změňte Editor externích skriptů na Visual Studio 2017. Zavřete okno Předvolby .

  3. Pak přejděte naNastavení sestavenísouboru> a kliknutím na tlačítko Přepnout platformu přepněte na Univerzální platforma Windows.

  4. Ujistěte se také, že:

    1. Cílové zařízení je nastavené na Libovolné zařízení.

      Pro Microsoft HoloLens nastavte Cílové zařízení na HoloLens.

    2. Typ sestavení je nastavený na D3D.

    3. Sada SDK je nastavená na nejnovější nainstalovanou verzi.

    4. Verze sady Visual Studio je nastavená na nejnovější nainstalovanou verzi.

    5. Sestavení a spuštění je nastavené na Místní počítač.

    6. Nemusíte si dělat starosti s nastavením scén hned teď, protože jsou k dispozici později.

    7. Zbývající nastavení by prozatím měla zůstat ve výchozím nastavení.

      Snímek obrazovky s dialogovým oknem Nastavení sestavení, ve kterém je vybraná položka nabídky Univerzální platforma Windows

  5. V okně Build Settings (Nastavení sestavení ) klikněte na tlačítko Player Settings (Nastavení přehrávače ). Tím se otevře související panel v prostoru, kde se inspektor nachází.

  6. Na tomto panelu je potřeba ověřit několik nastavení:

    1. Na kartě Další nastavení :

      1. Skriptovacíruntime verze by měla být experimentální (ekvivalentní verze .NET 4.6).

      2. Skriptovací back-end by měl být .NET.

      3. Úroveň kompatibility rozhraní API by měla být .NET 4.6.

        Snímek obrazovky s kartou Další nastavení, která zobrazuje nastavení, která jsou povolená podle uvedených kroků

    2. Na kartě Nastavení publikování v části Schopnosti zaškrtněte:

      • InternetClient

        Snímek obrazovky s kartou Nastavení publikování, která ukazuje, že možnost internetového klienta je povolená v části Schopnosti

    3. Dále na panelu v Nastavení XR (najdete pod nastavením publikování) zaškrtněte možnost Podporuje se virtuální realita. Ujistěte se, že je přidaná sada Windows Mixed Reality SDK.

      Snímek obrazovky s kartou Nastavení X R, která zobrazuje Windows Mixed Reality S D K pod virtuální realitou je povolená.

  7. Zpět v nastavení sestaveníProjekty Unity C# už nejsou neaktivní; zaškrtněte políčko vedle této položky.

  8. Zavřete okno Nastavení sestavení.

  9. Uložte projekt (FILE > SAVE PROJECT).

Kapitola 6 – Import balíčku Unity mlProducts

Pro účely tohoto kurzu si budete muset stáhnout balíček prostředků Unity s názvem Azure-MR-307.unitypackage. Součástí tohoto balíčku je scéna se všemi objekty v předem připraveném balíčku, takže se můžete soustředit na to, aby všechno fungovalo. Skript ShelfKeeper je k dispozici, i když obsahuje pouze veřejné proměnné, pro účely struktury nastavení scény. Budete muset provést všechny ostatní části.

Import tohoto balíčku:

  1. Když máte řídicí panel Unity před sebou, klikněte v nabídce v horní části obrazovky na Assets (Prostředky ) a pak klikněte na Import Package (Importovat balíček), Custom Package (Vlastní balíček).

    Snímek obrazovky řídicího panelu Unity, který zobrazuje zvýrazněné položky nabídky Importovat balíček a Vlastní balíček

  2. Pomocí nástroje pro výběr souborů vyberte balíček Azure-MR-307.unitypackage a klikněte na Otevřít.

  3. Zobrazí se vám seznam součástí tohoto prostředku. Potvrďte import kliknutím na Importovat.

    Snímek obrazovky s dialogovým oknem Importovat balíček Unity, který ukazuje import balíčku Azure Machine Learning

  4. Po dokončení importu si všimnete, že se na panelu projektu Unity objevily některé nové složky. Jedná se o 3D modely a příslušné materiály, které jsou součástí předpřipravené scény, na které budete pracovat. V tomto kurzu napíšete většinu kódu.

    Snímek obrazovky s panelem projektu Unity, který zobrazuje nově importované složky ve složce Assets

  5. Ve složce Panel projektu klikněte na složku Scény a poklikejte na vnitřní scénu (označovanou jako MR_MachineLearningScene). Scéna se otevře (viz obrázek níže). Pokud chybí červené kosočtverce, jednoduše klikněte na tlačítko Gizmos v pravém horním rohu herního panelu.

    Snímek obrazovky s oknem Unity Scene, které zobrazuje zvýrazněnou položku nabídky Gizmos v horní navigaci

Kapitola 7 – Kontrola knihoven DLL v Unity

Pro využití knihoven JSON (používaných pro serializaci a deserializaci) byla implementována knihovna DLL Newtonsoft s balíčkem, který jste přinesli. Knihovna by měla mít správnou konfiguraci, ale stojí za to ji zkontrolovat (zejména pokud máte problémy s nefunkčním kódem).

Postupujte následovně:

  • Klikněte levým tlačítkem na soubor Newtonsoft ve složce Plugins a podívejte se na panel inspektoru. Ujistěte se, že je zaškrtnuté políčko Libovolná platforma . Přejděte na kartu UPW a ujistěte se, že je zaškrtnuté políčko Nezpracovát .

    Import knihoven DLL v Unity

Kapitola 8 – Vytvoření třídy ShelfKeeper

Třída ShelfKeeper hostuje metody, které řídí uživatelské rozhraní a produkty vytvářené ve scéně.

Jako součást importovaného balíčku dostanete tuto třídu, i když je neúplná. Teď je čas dokončit danou třídu:

  1. Poklikáním na skript ShelfKeeper ve složce Scripts ho otevřete v sadě Visual Studio 2017.

  2. Nahraďte veškerý kód existující ve skriptu následujícím kódem, který nastaví čas a datum a má metodu pro zobrazení produktu.

    using UnityEngine;
    
    public class ShelfKeeper : MonoBehaviour
    {
        /// <summary>
        /// Provides this class Singleton-like behavior
        /// </summary>
        public static ShelfKeeper instance;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for data
        /// </summary>
        public TextMesh dateText;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for time
        /// </summary>
        public TextMesh timeText;
    
        /// <summary>
        /// Provides references to the spawn locations for the products prefabs
        /// </summary>
        public Transform[] spawnPoint;
    
        private void Awake()
        {
            instance = this;
        }
    
        /// <summary>
        /// Set the text of the date in the scene
        /// </summary>
        public void SetDate(string day, string month)
        {
            dateText.text = day + " " + month;
        }
    
        /// <summary>
        /// Set the text of the time in the scene
        /// </summary>
        public void SetTime(string hour)
        {
            timeText.text = hour + ":00";
        }
    
        /// <summary>
        /// Spawn a product on the shelf by providing the name and selling grade
        /// </summary>
        /// <param name="name"></param>
        /// <param name="sellingGrade">0 being the best seller</param>
        public void SpawnProduct(string name, int sellingGrade)
        {
            Instantiate(Resources.Load(name),
                spawnPoint[sellingGrade].transform.position, spawnPoint[sellingGrade].transform.rotation);
        }
    }
    
  3. Před návratem do Unity nezapomeňte uložit změny v sadě Visual Studio.

  4. V Editoru Unity zkontrolujte, že třída ShelfKeeper vypadá takto:

    Snímek obrazovky třídy Shelf Keeper, která ukazuje, že referenční cíle jsou nastaveny na Date Text Mesh a Time Text Mesh

    Důležité

    Pokud váš skript nemá referenční cíle (tj. Datum (textová síť)), jednoduše přetáhněte odpovídající objekty z panelu hierarchie do cílových polí. Vysvětlení najdete v případě potřeby níže:

    1. Kliknutím levým tlačítkem myši otevřete pole Spawn Point ve skriptu komponenty ShelfKeeper . Zobrazí se podsekci s názvem Velikost, která označuje velikost pole. Do textového pole vedle Položky Velikost zadejte 3 a stiskněte Enter a pod ním se vytvoří tři sloty.

    2. V hierarchii rozbalte objekt Zobrazení času (kliknutím levým tlačítkem myši na šipku vedle něj). Potom v hierarchii klikněte na hlavní kameru, aby inspektor zobrazoval její informace.

    3. Na panelu hierarchie vyberte hlavní kameru. Přetáhněte objekty Date a Time z panelu hierarchie do slotů Text data a Času v inspektoruhlavní kamery v komponentě ShelfKeeper .

    4. Přetáhněte body tření z panelu hierarchie (pod objekt Police ) na referenční cíle 3elementů pod polem Bodu tření , jak je znázorněno na obrázku.

      Snímek obrazovky panelu hierarchie, který ukazuje, že datum, čas a tři položky nabídky Místo tření jsou ve třídě Police Keeper.

Kapitola 9 – Vytvoření třídy ProductPrediction

Další třídou, kterou vytvoříte, je třída ProductPrediction .

Tato třída zodpovídá za:

  • Dotazování instance služby Machine Learning Service s uvedením aktuálního data a času

  • Deserializace odpovědi JSON na použitelná data

  • Interpretace dat a načtení 3 doporučených produktů

  • Volání metod třídy ShelfKeeper k zobrazení dat ve scéně.

Vytvoření této třídy:

  1. Na panelu projektu přejděte do složky Skripty.

  2. Klikněte pravým tlačítkem do složky Vytvořit>skript jazyka C#. Zavolejte skript ProductPrediction.

  3. Poklikáním na nový skript ProductPrediction ho otevřete v sadě Visual Studio 2017.

  4. Pokud se zobrazí dialogové okno Zjištění změny souboru , klikněte na *Znovu načíst řešení.

  5. Do horní části třídy ProductPrediction přidejte následující obory názvů:

    using System;
    using System.Collections.Generic;
    using UnityEngine;
    using System.Linq;
    using Newtonsoft.Json;
    using UnityEngine.Networking;
    using System.Runtime.Serialization;
    using System.Collections;
    
  6. Do třídy ProductPrediction vložte následující dva objekty, které se skládají z řady vnořených tříd. Tyto třídy se používají k serializaci a deserializaci JSON pro službu Machine Learning Service.

        /// <summary>
        /// This object represents the Prediction request
        /// It host the day of the year and hour of the day
        /// The product must be left blank when serialising
        /// </summary>
        public class RootObject
        {
            public Inputs Inputs { get; set; }
        }
    
        public class Inputs
        {
            public Input1 input1 { get; set; }
        }
    
        public class Input1
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
        /// <summary>
        /// This object containing the deserialised Prediction result
        /// It host the list of the products
        /// and the likelihood of them being sold at current date and time
        /// </summary>
        public class Prediction
        {
            public Results Results { get; set; }
        }
    
        public class Results
        {
            public Output1 output1;
        }
    
        public class Output1
        {
            public string type;
            public Value value;
        }
    
        public class Value
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
  7. Pak přidejte následující proměnné nad předchozí kód (aby byl kód související s JSON v dolní části skriptu, pod všemi ostatními kódy a mimo cestu):

        /// <summary>
        /// The 'Primary Key' from your Machine Learning Portal
        /// </summary>
        private string authKey = "-- Insert your service authentication key here --";
    
        /// <summary>
        /// The 'Request-Response' Service Endpoint from your Machine Learning Portal
        /// </summary>
        private string serviceEndpoint = "-- Insert your service endpoint here --";
    
        /// <summary>
        /// The Hour as set in Windows
        /// </summary>
        private string thisHour;
    
        /// <summary>
        /// The Day, as set in Windows
        /// </summary>
        private string thisDay;
    
        /// <summary>
        /// The Month, as set in Windows
        /// </summary>
        private string thisMonth;
    
        /// <summary>
        /// The Numeric Day from current Date Conversion
        /// </summary>
        private string dayOfTheYear;
    
        /// <summary>
        /// Dictionary for holding the first (or default) provided prediction 
        /// from the Machine Learning Experiment
        /// </summary>    
        private Dictionary<string, string> predictionDictionary;
    
        /// <summary>
        /// List for holding product prediction with name and scores
        /// </summary>
        private List<KeyValuePair<string, double>> keyValueList;
    

    Důležité

    Nezapomeňte do proměnných vložit primární klíč a koncový bod žádosti a odpovědi z portálu Machine Learning. Následující obrázky ukazují, odkud byste klíč a koncový bod vzali.

    Snímek obrazovky aplikace Microsoft Azure Machine Learning Studio s odkazem Odpověď lomítka na žádost pod stránkou nápovědy

    Snímek obrazovky se stránkou Dokumentace k žádosti o odpověď P I, která zobrazuje zvýrazněnou žádost POST U R I.

  8. Vložte tento kód do metody Start(). Metoda Start() je volána, když třída inicializuje:

        void Start()
        {
            // Call to get the current date and time as set in Windows
            GetTodayDateAndTime();
    
            // Call to set the HOUR in the UI
            ShelfKeeper.instance.SetTime(thisHour);
    
            // Call to set the DATE in the UI
            ShelfKeeper.instance.SetDate(thisDay, thisMonth);
    
            // Run the method to Get Predication from Azure Machine Learning
            StartCoroutine(GetPrediction(thisHour, dayOfTheYear));
        }
    
  9. Následuje metoda, která shromažďuje datum a čas z Windows a převede je do formátu, který může experiment služby Machine Learning použít k porovnání s daty uloženými v tabulce.

        /// <summary>
        /// Get current date and hour
        /// </summary>
        private void GetTodayDateAndTime()
        {
            // Get today date and time
            DateTime todayDate = DateTime.Now;
    
            // Extrapolate the HOUR
            thisHour = todayDate.Hour.ToString();
    
            // Extrapolate the DATE
            thisDay = todayDate.Day.ToString();
            thisMonth = todayDate.ToString("MMM");
    
            // Extrapolate the day of the year
            dayOfTheYear = todayDate.DayOfYear.ToString();
        }
    
  10. Můžete odstranit metodu Update(), protože tato třída ji nebude používat.

  11. Přidejte následující metodu, která koncovému bodu služby Machine Learning sdělí aktuální datum a čas a obdrží odpověď ve formátu JSON.

        private IEnumerator GetPrediction(string timeOfDay, string dayOfYear)
        {
            // Populate the request object 
            // Using current day of the year and hour of the day
            RootObject ro = new RootObject
            {
                Inputs = new Inputs
                {
                    input1 = new Input1
                    {
                        ColumnNames = new List<string>
                        {
                            "day",
                            "hour",
                        "product"
                        },
                        Values = new List<List<string>>()
                    }
                }
            };
    
            List<string> l = new List<string>
            {
                dayOfYear,
                timeOfDay,
                ""
            };
    
            ro.Inputs.input1.Values.Add(l);
    
            Debug.LogFormat("Score request built");
    
            // Serialize the request
            string json = JsonConvert.SerializeObject(ro);
    
            using (UnityWebRequest www = UnityWebRequest.Post(serviceEndpoint, "POST"))
            {
                byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
                www.uploadHandler = new UploadHandlerRaw(jsonToSend);
    
                www.downloadHandler = new DownloadHandlerBuffer();
                www.SetRequestHeader("Authorization", "Bearer " + authKey);
                www.SetRequestHeader("Content-Type", "application/json");
                www.SetRequestHeader("Accept", "application/json");
    
                yield return www.SendWebRequest();
                string response = www.downloadHandler.text;
    
                // Deserialize the response
                DataContractSerializer serializer;
                serializer = new DataContractSerializer(typeof(string));
                DeserialiseJsonResponse(response);
            }
        }
    
  12. Přidejte následující metodu, která je zodpovědná za deserializaci odpovědi JSON a za sdělení výsledku deserializace do třídy ShelfKeeper . Výsledkem budou názvy tří položek, u které se předpokládá, že se prodají nejvíce k aktuálnímu datu a času. Vložte kód níže do třídy ProductPrediction pod předchozí metodu.

        /// <summary>
        /// Deserialize the response received from the Machine Learning portal
        /// </summary>
        public void DeserialiseJsonResponse(string jsonResponse)
        {
            // Deserialize JSON
            Prediction prediction = JsonConvert.DeserializeObject<Prediction>(jsonResponse);
            predictionDictionary = new Dictionary<string, string>();
    
            for (int i = 0; i < prediction.Results.output1.value.ColumnNames.Count; i++)
            {
                if (prediction.Results.output1.value.Values[0][i] != null)
                {
                    predictionDictionary.Add(prediction.Results.output1.value.ColumnNames[i], prediction.Results.output1.value.Values[0][i]);
                }
            }
    
            keyValueList = new List<KeyValuePair<string, double>>();
    
            // Strip all non-results, by adding only items of interest to the scoreList
            for (int i = 0; i < predictionDictionary.Count; i++)
            {
                KeyValuePair<string, string> pair = predictionDictionary.ElementAt(i);
                if (pair.Key.StartsWith("Scored Probabilities"))
                {
                    // Parse string as double then simplify the string key so to only have the item name
                    double scorefloat = 0f;
                    double.TryParse(pair.Value, out scorefloat);
                    string simplifiedName =
                        pair.Key.Replace("\"", "").Replace("Scored Probabilities for Class", "").Trim();
                    keyValueList.Add(new KeyValuePair<string, double>(simplifiedName, scorefloat));
                }
            }
    
            // Sort Predictions (results will be lowest to highest)
            keyValueList.Sort((x, y) => y.Value.CompareTo(x.Value));
    
            // Spawn the top three items, from the keyValueList, which we have sorted
            for (int i = 0; i < 3; i++)
            {
                ShelfKeeper.instance.SpawnProduct(keyValueList[i].Key, i);
            }
    
            // Clear lists in case of reuse
            keyValueList.Clear();
            predictionDictionary.Clear();
        }
    
  13. Uložte Visual Studio a vraťte se do Unity.

  14. Přetáhněte skript třídy ProductPrediction ze složky Script do objektu Main Camera .

  15. Uložte svou scénu a projekt File>Save Scene /File>Save Project.

Kapitola 10 – Sestavení řešení pro UPW

Teď je čas sestavit projekt jako řešení UPW, aby mohl běžet jako samostatná aplikace.

Sestavení:

  1. Uložte aktuální scénu kliknutím na Soubor>Uložit scény.

  2. Přejděte naNastavení sestavenísouboru.>

  3. Zaškrtněte políčko Projekty Unity C# (to je důležité, protože vám umožní upravovat třídy po dokončení sestavení).

  4. Klikněte na Přidat otevřené scény.

  5. Klikněte na Sestavit.

    Snímek obrazovky s dialogovým oknem Nastavení sestavení, ve kterém je zvýrazněná položka nabídky Univerzální platforma Windows

  6. Zobrazí se výzva k výběru složky, ve které chcete vytvořit řešení.

  7. Vytvořte složku BUILDS a v této složce vytvořte další složku s odpovídajícím názvem podle vašeho výběru.

  8. Klikněte na novou složku a potom klikněte na Vybrat složku, aby se sestavení zahájilo v daném umístění.

    Snímek obrazovky s oknem Průzkumník souborů se zvýrazněnou složkou Builds

    Snímek obrazovky s oknem Průzkumník souborů, které zobrazuje obsah složky Builds a zvýrazněné tlačítko Vybrat složku

  9. Jakmile Unity dokončí sestavování (může to nějakou dobu trvat), otevře se okno Průzkumník souborů v umístění vašeho buildu (zkontrolujte hlavní panel, protože se nemusí vždy zobrazovat nad vašimi okny, ale upozorní vás na přidání nového okna).

Kapitola 11 – Nasazení aplikace

Nasazení aplikace:

  1. Přejděte do nového sestavení Unity (složka Aplikace ) a otevřete soubor řešení v sadě Visual Studio.

  2. Když máte otevřenou sadu Visual Studio, musíte obnovit balíčky NuGet, což můžete provést kliknutím pravým tlačítkem na MachineLearningLab_Build řešení v Průzkumník řešení (nachází se napravo od sady Visual Studio) a následným kliknutím na Obnovit balíčky NuGet:

    Snímek obrazovky s oknem sady Visual Studio se zvýrazněnou položkou nabídky Obnovit balíčky Nu Get

  3. V části Konfigurace řešení vyberte Ladit.

  4. Na platformě řešení vyberte x86, Místní počítač.

    Pro Microsoft HoloLens může být jednodušší nastavit tuto možnost na Vzdálený počítač, abyste nebyli připojení k počítači. Budete ale muset také provést následující akce:

    • Znát IP adresu vašeho HoloLensu, kterou najdete v nastavení > sítě & internetu > Wi-Fi > Upřesnit možnosti. IPv4 je adresa, kterou byste měli použít.
    • Ujistěte se, že vývojářský režim je Zapnuto; najdete v části Aktualizace nastavení > & zabezpečení > pro vývojáře.

    Snímek obrazovky s nabídkou sady Microsoft Visual Studio, která ukazuje, že v platformě řešení je vybraný místní počítač

  5. Přejděte do nabídky Build (Sestavení ) a klikněte na Deploy Solution (Nasadit řešení ) a načtěte aplikaci do počítače bokem.

  6. Vaše aplikace by se teď měla zobrazit v seznamu nainstalovaných aplikací připravených ke spuštění.

Když spustíte aplikaci Mixed Reality, uvidíte lavičku, která byla nastavena ve scéně Unity, a z inicializace se načte data, která jste nastavili v Azure. Data budou v rámci vaší aplikace deserializována a tři nejlepší výsledky pro aktuální datum a čas se zobrazí vizuálně jako tři modely na stole.

Dokončená aplikace Machine Learning

Blahopřejeme, vytvořili jste aplikaci hybridní reality, která využívá Azure Machine Learning k vytváření předpovědí dat a jejich zobrazení na vaší scéně.

Snímek obrazovky s oknem sady Microsoft Visual Studio, které zobrazuje polici se třemi objekty a kartou s textem 15 hodin 23. února

Cvičení

Cvičení 1

Experimentujte s pořadím řazení vaší aplikace a nechte, aby se v poličce zobrazily tři nejnižší předpovědi, protože tato data by mohla být také užitečná.

Cvičení 2

Pomocí tabulek Azure naplníte novou tabulku informacemi o počasí a pomocí dat vytvořte nový experiment.